# Documentation Versions Source: https://docs.encoreos.io/VERSIONS Recent updates (2026-06-11): docs/DOCUMENTATION_STANDARDS.md advanced to v2.2.0 — new "Editorial Rules for Published Pages" section: de-numbering rule (no spec… **Last Updated:** 2026-06-19 **Recent updates (2026-06-19):** `CLAUDE.md` advanced to **v1.10.1** — freshness pass against the live codebase: `src/platform/` module count `~101 → ~103`, package.json script count `~496 → ~535`, and Node runtime note clarified (`.nvmrc` 24; `engines` pins `>=24 <25`); registry row below synced. **Recent updates (2026-06-15):** Constitution **v1.18.0** — §13 Definition of Done trimmed to its non-negotiable security guardrails (RLS + RLS tests, `organization_id` on mutations, no PHI/PII, SECURITY DEFINER, WITH CHECK) plus a pointer to [DEFINITION\_OF\_DONE.md](/development/DEFINITION_OF_DONE), now the operational DoD source of truth. The operational checklists (quality/tests/docs/process) moved to the spine so they evolve without a constitutional amendment; resolves the prior triple-definition DoD drift. Canonical mirror re-synced. **Recent updates (2026-06-13):** `docs/DOCUMENTATION_STANDARDS.md` advanced to **v2.3.0** — Editorial Rules gained the `description` SEO-summary rule (a human \~150–160-char summary, no document-header metadata cruft; enforced by `docs:check-frontmatter`) and the single `Planned` convention (`tag: "Planned"` frontmatter + the reusable `/snippets/planned.mdx` badge linking the changelog), replacing ad-hoc "Coming Soon" prose. **Recent updates (2026-06-13):** `CLAUDE.md` advanced to **v1.10.0** — freshness pass: Platform Version → `0.1.0-beta` (matches `package.json`, was `0.9.0-alpha`), package.json script count `~375 → ~496`, `lint:ci` warning ceiling `1600 → 480`, and the `validate` pipeline expanded to include `typecheck:evals`, `typecheck:eos-spec`, and `test:eos-spec`; registry row below synced. **Recent updates (2026-06-11):** `docs/DOCUMENTATION_STANDARDS.md` advanced to **v2.2.0** — new "Editorial Rules for Published Pages" section: de-numbering rule (no spec IDs in `title`/`sidebarTitle`/`description`/H1 on Product/Guides/Trust-tab pages; traceability via new `spec:` frontmatter field), duplicate-title pattern (short `sidebarTitle`, module-qualified `title`), module nav skeleton. `docs/development/MINTLIFY_SETUP.md` §3 frontmatter contract gained `spec:` and `noindex:` fields plus the "redirects are born permanent" policy. Enforced by `docs:check-frontmatter` + the new `denumber` curator sweep. **Recent updates (2026-06-04):** Constitution **v1.17.2** — §6 trim pass (ADR-023 extraction): §6.3.1 Breadcrumb code patterns → [breadcrumb-implementation-guide.md](/development/breadcrumb-implementation-guide); §6.8 wizard help-component table + checklist → [WIZARD\_UX\_STANDARD.md](/development/WIZARD_UX_STANDARD) + [WIZARD\_DEVELOPMENT\_GUIDE.md](/development/WIZARD_DEVELOPMENT_GUIDE). Guardrails (when-to-show, mobile-CRITICAL, prohibited patterns, REQUIRED wizard/help standards) kept. \~69 lines out. **Recent updates (2026-06-04):** Constitution **v1.17.1** — §5.2 trim pass (ADR-023 extraction, continuing the v1.14/v1.15 pattern): §5.2.3/§5.2.4/§5.2.5/§5.2.6 reduced to guardrail + existing target links (settings-pattern-guide.md, DATABASE\_DEVELOPMENT\_GUIDE.md, PF-15/16/17 specs); \~125 lines moved out, all guardrails kept. Canonical mirror re-synced. **Recent updates (2026-06-11):** Product-version governance: `package.json.version` is now the single source of truth for the platform version (currently **0.1.0-beta**); new `validate-product-version-sync` gate (in `validate:governance`) enforces parity across `README.md` and `CLAUDE.md`, and the running app now surfaces the product version separately from the per-deploy build ID. Corrected stale `0.9.0-alpha` references. See `docs/development/RELEASING.md`. **Recent updates (2026-05-31):** `CLAUDE.md` advanced to **v1.9.1** — freshness pass correcting the `src/platform/` module count (\~98 → \~101) and the package.json script count (\~480 → \~375); registry row below synced. **Recent updates (2026-05-27):** `docs/development/supabase/2026-05-26-prod-forward-alignment-plan.md` extended with a live read-only MCP dev↔prod catalog comparison: a "Convergent prod-only hotfixes (regression risk)" section (verified — only the `pf_has_permission` admin-bypass reorder is release-blocking, added as Phase A.0 + a hard precondition), a "prod-only objects that are renames (do not recreate)" section (e.g. prod `fpl_thresholds` ↔ dev `pm_fpl_thresholds`), repo-tooling reconciliation (`db:catalog:remote:*`, `db:check:promotion-lineage`, `db:check:prod-collision`, `validate-migration`, `db:check:migration-lane`), and a read-only verification-queries appendix. **Recent updates (2026-05-25):** Dual-axis spec status convention propagation: `AGENTS.md` v1.26.0 → **v1.26.1** (spec checklist notes `status:` + `pipeline_status:` are orthogonal), `.claude/rules/governance.md` Status-taxonomy section and `specs/_templates/SPEC_FRONTMATTER_REFERENCE.md` clarify the two axes, and `docs/development/SPEC_STATUS_TAXONOMY.md` gained the canonical "Two orthogonal axes" section. **Recent updates (2026-05-25):** MCP onboarding alignment pass: `docs/development/MCP_USAGE.md` advanced from v1.1.0 to v1.3.0 (minor version bumped for breaking onboarding changes) with `encore-api-surface` setup/troubleshooting, `.cursor/mcp.json.example` now includes `encore-api-surface`, and related Cursor/cloud guidance updated in `SETUP_QUICK_START.md`, `AGENTS.md`, `TSDOC_JSDOC_COVERAGE_STANDARD.md`, `CURSOR_CLOUD_WORKFLOW.md`, and `.agents/skills/cloud-runbook/SKILL.md`. **Recent updates (2026-05-25):** `docs/DOCUMENTATION_STANDARDS.md` advanced to v2.1.0 — added Structure Allowlist & Guards section documenting `specs/{core}/` sanctioned subfolders, `docs/` top-level rules, `.scratch/` and `docs/_working/` transient analysis homes, and the four structure-guard scripts wired into pre-commit. **Recent updates (2026-05-15):** Regulatory readiness expansion pass: `AGENTS.md` updated to v1.26.0, CL/PM module AGENTS ONC constraints refreshed, ONC readiness roadmap/gap/tracker docs expanded, and new ONC/DS4P/EPCS/HITRUST/Contexture skill+spec artifacts added across `.agents/skills`, `.cursor/skills`, and `specs/`. **Recent updates (2026-05-07):** `src/cores/it/AGENTS.md` implementation status wording refreshed during dead-code remediation audit reconciliation. **Recent updates (2026-05-13):** Documentation freshness + Docusaurus governance alignment pass: `docs/DOCUMENTATION_STANDARDS.md` advanced to v2.0.1 (explicit source-of-truth policy for root docs vs Docusaurus), and Docusaurus docs references updated for current package/runtime versions. > **Single Source of Truth:** This file is the authoritative source for all documentation versions. **Recent updates (2026-04-28):** New `.agents/skills/cloud-runbook/SKILL.md` v1.0.0 — practical Cloud agent startup guide covering env vars, login, per-area test commands, MSW mocking, E2E auth, DB/migration workflow, and self-update protocol. `AGENTS.md` v1.24.3 (Document Map + Cursor Cloud section updated to reference new skill). `.cursor/skills/README.md` updated to list skill. **Recent updates (2026-04-24):** Supabase promotion verification: `docs/development/supabase/MIGRATION_LANES.md`, `BRANCHING_CI_SPIKE.md`, `SUPABASE_MULTI_ENV_SETUP.md` (v2.2.1 — production CLI examples aligned to `aximlomrwfuhctxjhrsf` + branch `production`), `VERCEL_SUPABASE_ENV_ALIGNMENT.md` (section 2.3 promotion order) — all added to version tracking below. **Recent updates (2026-04-24, declarative schemas):** New `docs/development/supabase/DECLARATIVE_SCHEMA_GUIDE.md` v1.0.0; `SUPABASE_CLI_LOCAL_WORKFLOW.md` v1.3.0 (declarative workflow + `db diff`); `DATABASE_DEVELOPMENT_GUIDE.md` v1.2.0; `AGENTS.md` v1.24.2 / `CLAUDE.md` v1.7.3; `@supabase/pg-delta` + `@supabase/pg-topo` devDependencies; `scripts/database/pgdelta-run.ts`, `validate-schemas.ts`, `supabase-db-diff-from-schemas.ts`; non-blocking `db:schemas:lint` step in `db-migration-guard.yml`. **Recent updates (2026-04-18, color-system follow-ups):** Token-parity drift fully reconciled — all 10 PF-95 fields show 10/10 ✅ across runtime ↔ PF-95 ↔ edge sources after PR A.1 (`DEFAULT_THEME_COLORS` aligned to runtime: `colorPrimary`, `colorSecondary`, `colorSuccess`, `colorWarning`) + PR A.2 (edge `PLATFORM_DEFAULTS` aligned). New `npm run audit:chart-palette-colorblind` script (Brettel-Viénot-Mollon simulation) surfaces 9 fail / 25 warn chart-palette pairs across 3 dichromacy profiles. `docs/development/SEMANTIC_COLORS.md` v1.4.0 → **v1.4.1** (Chart Palette § Colorblind safety updated with audit results, known problem pairs table, deferred swap action items, and a mandatory color-plus-shape/label rule for category encoding). Two new specs authored: PF-95-EN-02 (expanded tenant color palette) and PF-95-EN-03 (module identity colors in nav). **Recent updates (2026-04-18, color-system review):** Platform-wide color design system review (see `reports/ux/ux-implementation-plan-20260418.md`). `docs/development/SEMANTIC_COLORS.md` v1.3.1 → **v1.4.0** (new Token Catalog Reference, Module Identity Tokens, expanded Chart Palette, PF-95 Mapping Table, PF-91-EN-01 Compliance Theming Mapping, regression note for the `info.full` dark-mode WCAG fix). `docs/development/UI_UX_STANDARDS.md` v1.6.0 → **v1.6.1** (link-outs to expanded SEMANTIC\_COLORS catalog; new Module Identity Colors and Chart Palette subsections; info-foreground guidance). `docs/development/DESIGN_TOKEN_SYNC_POLICY.md` v1.0.0 → **v1.1.0** (Tri-Source Parity Contract, Deprecated/Reserved Tokens table, Audit Scripts section). `AGENTS.md` v1.24.0 → **v1.24.1** (Quick Reference items 12+13 for charts + tenant-rebrandable surfaces; Top 10 Common Mistakes color-system row). Code: `info.full` semantic class fixed (`bg-info text-info-foreground`); last 3 `bg-black/via-white` escapes replaced with `--overlay-scrim` and new `--shimmer-highlight` token. **Recent updates (2026-04-18):** Platform-wide UI/UX deep review + tab consistency audit (`reports/ux/`). `docs/development/UI_UX_STANDARDS.md` v1.5.0 → **v1.6.0** (new Tabs section + variant decision table; reconciliation note for Button sizes; SEMANTIC\_COLORS link drift fixed). `docs/development/SEMANTIC_COLORS.md` row corrected to **v1.3.1** (header was v1.3.1 since 2026-04-10; VERSIONS.md was stale at v1.3.0). New canonical implementation plan at `reports/ux/ux-implementation-plan-20260418.md`. **Recent updates (2026-04-17):** New strategic-review command `recommend-module-specs` (`.cursor/commands/specs/recommend-module-specs.md`) — full single-module review + cross-module comparative scan + external research → prioritized **New Spec Proposals** and **Enhancement Recommendations** tables. The existing **module-strategic-reviewer** agent now implements both `deep-module-review` (single-module) and `recommend-module-specs` (cross-module + research). Module spec-authoring skill gains a "Step 0: Where did this spec idea come from?" section pointing to recommendations reports as the upstream source. `.cursor/README.md` inventory synced to **74** command files; `AGENTS.md` v1.23.2; `SPEC_WORKFLOW.md` and `SPEC_COMMAND_CHEATSHEET.md` updated. **Recent updates (2026-04-13):** Tenant configurability workflow: new Cursor command `audit-tenant-configurability`, rule `.cursor/rules/tenant-configurability.md`, optional Bugbot check for business literals (`.cursor/BUGBOT.md` v1.1.0); `SPEC_TEMPLATE.md` Settings Considerations cross-ref fixed to constitution §5.2.3; `.cursor/README.md` inventory synced to **73** command files and **36** rule files; `AGENTS.md` v1.23.1 pre-flight; skills index links command to **module-database-design**. **Recent updates (2026-04-12):** Documentation hierarchy cleanup pass: deleted `plan.md` and `.pr-body-dependabot.md` (stale root files); deleted `LOVABLE_KNOWLEDGE.md` (redirect-only; all \~100 references updated to point directly to `AGENTS.md`); archived 5 deprecated docs (`ENTRA_ID_GAP_ANALYSIS.md`, `HR-20-checkr-background-check-INTEGRATION.md`, `CORE-MODULES-DEFERRED-PHASES-PRIORITIZED.md`, `CORE-MODULES-DEFERRED-PHASES-MASTER-SUMMARY.md`, `STORYBOOK_QUICK_START.md`); moved `docs/testing/uat/lovable-prompts/` to `docs/archive/testing/uat/lovable-prompts/`; archived historical docs in `docs/architecture/analysis/`, `docs/architecture/reviews/`, `docs/architecture/recommendations/`; renamed `.cursor/skills/vercel-react-best-practices/AGENTS.md` to `REFERENCE.md`; added tier annotations to `docs/README.md`; inventoried and archived cursorignored directories. Governance enhancement pass: `AI_GUIDE.md` corrected to **v2.11.0** (was v2.10.0 — version drift fix); ADR index at `docs/architecture/decisions/README.md`; governance entry point at `docs/governance/README.md`; compliance evidence workflow at `docs/compliance/evidence/README.md`; `.claude/settings.json` SessionStart hook path fixed; PR template expanded; `scripts/audit/audit-compliance-evidence.ts` added; `scripts/governance/governance-report.ts` added; HIPAA compliance tests scaffolded at `tests/compliance/hipaa/`; AI platform parity matrix at `docs/development/AI_PLATFORM_PARITY.md`; constitution TOC added; pre-commit governance-doc version-sync check added. **Recent updates (2026-04-11):** Governance refresh: constitution **v1.16.1** (§4.3 heading hierarchy under Data Security); `docs/development/SPEC_WORKFLOW.md` **v1.0.0** now version-tracked; `docs/VERSIONS.md` compliance table expanded to all primary compliance trackers; Platform Integration table lists **ADR-001** through **ADR-006** (ADR-004 remains **Proposed** — accept/supersede is a product decision); CodeRabbit `.coderabbit.yaml` tools/features refresh; `AGENTS.md` / Copilot MCP baseline clarification; `CLAUDE.md` Claude Code inventory sync; `CODERABBIT_GUIDE.md`, `CODE_REVIEW_PROCESS.md`, `.cursor/BUGBOT.md` doc hygiene; `.github/instructions/*` last-updated markers. **Recent updates (2026-04-10):** Aggressive documentation consolidation: merged 7 meta-docs into 3 (DOCUMENTATION\_STANDARDS absorbs MAINTENANCE, MODULE\_GUIDE, SPECS\_AND\_DOCS, PUBLISHED\_DOCS, REFERENCE\_MAP); archived 62 Lovable prompt files and 3 obsolete Cursor workflow guides; merged UAT\_QUICK\_REFERENCE + UAT\_TEST\_DATA\_GUIDE into UAT\_GUIDE; deleted 3 redirect stubs; fixed broken Supabase CLI link; added cursor.md to version tracking; moved AI\_DOC\_MANIFEST.yaml from \_inventory/ to docs/. **Recent updates (2026-04-01):** Docs hub refresh: taxonomy table and `docs/audits/` clarification in `docs/README.md`; `docs/_inventory/INVENTORY.md` and new `REFERENCE_MAP.md`; EHR/PM ingest corpus under `docs/ehr_pm/_artifacts/`; symlinks `docs/ehr_pm/ehr_research*.md` → `docs/archive/ehr_pm/`; archived stale architecture analysis and duplicate navigation checklist; new `docs/development/CI_PIPELINE.md`; `docs/testing/README.md` E2E section aligned with Playwright; Lovable rules point to `.cursor/rules`. **Recent updates (2026-04-08):** Docs streamline pass: fixed broken testing links, reduced duplicated AI review guidance, refreshed setup command guidance to `npm ci --legacy-peer-deps`, and tightened version/index consistency. **Recent updates (2026-03-29):** Constitution v1.16.0 adds jurisdiction scope language for multi-state Medicaid compliance (PF-96): §1.1, §4.3.7, §5.1, §5.2.2, §5.2.3, §7.2. Spec workflow commands updated with jurisdiction scope prompts (10 commands). **Recent updates (2026-04-01):** Design system parity governance docs added. DESIGN\_TOKEN\_SYNC\_POLICY.md v1.0.0 created and linked from standards docs. SEMANTIC\_COLORS updated to v1.3.0 with canonical token-source policy. UI\_UX\_STANDARDS updated to v1.5.0 with design-token governance references. **Recent updates (2026-04-01):** Typography contract parity update (Phase 2). `src/index.css` and `index.html` now use canonical Inter + Space Grotesk defaults with tenant override fallback (`--tenant-font-family`, `--tenant-font-heading`). `src/platform/theming/types.ts` approved fonts updated to include Space Grotesk constant. **Recent updates (2026-04-01):** Tailwind v4 migration documentation sync. CLAUDE.md updated to v1.7.0 (Tailwind CSS 4.2.2). UI\_UX\_STANDARDS updated to v1.4.0 for Tailwind CSS v4 CSS-first token mapping. SEMANTIC\_COLORS updated to v1.2.0 for v4 token references. **Recent updates (2026-03-19):** Constitution v1.15.0 trims §6.6 Authentication State Management code blocks to bullets + playbook links (react-patterns.md, AGENTS.md); adds DATABASE\_DEVELOPMENT\_GUIDE.md to CodeRabbit knowledge base filePatterns. Constitution v1.14.0 consolidated §5.2 SQL playbooks into `docs/development/DATABASE_DEVELOPMENT_GUIDE.md` (new "Constitution playbook: PF DDL templates" section); trimmed §6.5 in favor of AGENTS/quick-reference links; reordered §5.2.9 after §5.2.8. DATABASE\_DEVELOPMENT\_GUIDE v1.1.0. **Recent updates (2026-03-06):** Public API documentation governance alignment. Constitution v1.13.0 adds §3.4 Public API Documentation Coverage and 100% baseline requirement for in-scope exported function-like declarations. AGENTS.md v1.21.0 adds pre-flight + rules summary requirements for `docs:comments:audit:changed`. Coverage standard updated to v1.1.0 with 100% policy. **Recent updates (2026-03-05):** AGENTS.md v1.20.0: expanded Cursor Cloud-specific instructions with GUI testing guidance (computerUse subagent), structured environment/validation/testing/onboarding sub-sections, and references to new `pre-commit-check` and `project-setup` skills. **Recent updates (2026-02-25):** CL-PM architecture formalization. Constitution v1.12.0: encounter entity (§1.2), cross-core FK exception and ADR requirement (§1.3), §5.2.7 Cross-Core Database References. ADR template and ADR-002 (CL-PM cross-core FKs). Platform: `@/platform/types` (clinical-billing), `@/platform/clinical` and `@/platform/scheduling` contracts. AGENTS.md v1.19.0, CLAUDE.md v1.3.0. Integration docs: encounter lifecycle diagram, FK exception reference. **Recent updates (2026-02-20):** Navigation docs (README, mobile guide, NAVIGATION\_STANDARD, constitution §6.3, NAVIGATION\_GUIDE\_INDEX) updated for Desktop Dock/Sidebar/Taskbar, SidebarNav, NavModeContext, theme in header. > All documents should reference this file or use versions from here. > Use the pattern `(current: see docs/VERSIONS.md)` in cross-references instead of hardcoding version numbers. This file tracks current versions of all documentation files. When updating versions, update this file first, then update all references. ## Core Documentation | Document | Version | Last Updated | Status | | ------------------------------------------------------------- | ------- | ------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | constitution.md | v1.18.0 | 2026-06-15 | Current (§13 trimmed to security guardrails + pointer to DEFINITION\_OF\_DONE.md; operational DoD now lives in the spine) | | AI\_GUIDE.md | v2.12.0 | 2026-05-13 | Current | | ~~LOVABLE\_KNOWLEDGE.md~~ | v5.0.0 | 2026-04-12 | Deleted (redirect; all refs updated to AGENTS.md) | | AGENTS.md | v1.26.1 | 2026-05-25 | Current (spec-authoring checklist notes the two orthogonal status axes: `status:` + `pipeline_status:`) | | CLAUDE.md | v1.10.1 | 2026-06-19 | Current (freshness pass: platform modules \~103, scripts \~535, Node engines >=24 \<25) | | cursor.md | v2.0.0 | 2026-03-19 | Current | | .github/copilot-instructions.md | v1.23.1 | 2026-04-13 | Current | | docs/development/UI\_UX\_STANDARDS.md | v1.6.1 | 2026-04-18 | Current (link-outs to expanded SEMANTIC\_COLORS catalog; module + chart subsections) | | docs/development/SPACING\_AND\_UX\_STANDARDS.md | v1.1.0 | 2026-04-08 | Current | | docs/development/SEMANTIC\_COLORS.md | v1.4.1 | 2026-04-18 | Current (chart palette colorblind audit results + known problem pairs + mandatory pairing rule) | | docs/development/DESIGN\_TOKEN\_SYNC\_POLICY.md | v1.1.0 | 2026-04-18 | Current (tri-source parity contract, deprecated/reserved tokens, audit scripts) | | docs/index.md | v1.1.0 | 2026-04-10 | Current | | docs/DOCUMENTATION\_STANDARDS.md | v2.3.0 | 2026-06-13 | Current (v2.3.0: `description` SEO-summary rule + single `Planned` convention; v2.2.0: Editorial Rules for Published Pages — de-numbering, `spec:` frontmatter, duplicate-title pattern, module nav skeleton; v2.1.0: Structure Allowlist & Guards added) | | ~~docs/DOCUMENTATION\_MAINTENANCE.md~~ | v1.3.0 | 2026-04-10 | Deleted (merged into DOCUMENTATION\_STANDARDS.md) | | docs/AI\_DOC\_MANIFEST.yaml | v1.0.0 | 2026-04-10 | Current (moved from \_inventory/) | | docs/development/index.md | v1.1.0 | 2026-04-01 | Current | | docs/development/SETUP\_QUICK\_START.md | v1.0.0 | 2026-04-08 | Current | | docs/development/DEVELOPMENT\_QUICK\_REFERENCE.md | v1.0.0 | 2026-04-08 | Current | | docs/development/CODERABBIT\_CURSOR\_REVIEW\_CONTEXT.md | v3.0.0 | 2026-04-10 | Current | | docs/development/CODERABBIT\_GUIDE.md | v3.2.0 | 2026-04-11 | Current | | docs/development/CODE\_REVIEW\_PROCESS.md | v1.0.0 | 2026-04-11 | Current | | .cursor/BUGBOT.md | v1.1.0 | 2026-04-13 | Current | | docs/development/AGENTS\_MAINTENANCE\_GUIDE.md | v1.0.1 | 2026-04-10 | Current | | .agents/skills/cloud-runbook/SKILL.md | v1.0.0 | 2026-04-28 | Current (Cloud agent startup guide: env vars, login, per-area test commands, MSW mocking, E2E auth, DB/migration workflow, self-update protocol) | | .cursor/skills/README.md | — | 2026-04-28 | Current (skill manifest; updated to list cloud-runbook) | | ~~docs/development/CURSOR\_AI\_GUIDE.md~~ | — | 2026-04-10 | Deleted (was redirect → CODERABBIT\_CURSOR\_REVIEW\_CONTEXT.md) | | ~~docs/development/AGENTS\_QUICK\_REFERENCE.md~~ | — | 2026-04-10 | Deleted (was redirect → AGENTS\_MAINTENANCE\_GUIDE.md) | | docs/development/CI\_PIPELINE.md | v1.0.0 | 2026-04-01 | Current | | docs/development/SPEC\_WORKFLOW\.md | v1.0.0 | 2026-04-17 | Current | | docs/development/SPEC\_COMMAND\_CHEATSHEET.md | v1.0.0 | 2026-04-17 | Current | | docs/development/CURSOR\_CLOUD\_WORKFLOW\.md | v1.0.0 | 2026-04-08 | Current | | docs/development/VERCEL\_BUILD\_IMPROVEMENT\_PLAN.md | v1.0.0 | 2026-04-01 | Current | | docs/ehr\_pm/\_artifacts/README.md | v1.0.1 | 2026-04-10 | Current | | docs/testing/index.md | v1.1.0 | 2026-04-01 | Current | | docs/testing/TESTSPRITE\_SETUP.md | v1.0.0 | 2026-04-10 | Current | | ~~docs/testing/TESTSPRITE.md~~ | — | 2026-04-10 | Deleted (was redirect → TESTSPRITE\_SETUP.md) | | docs/development/breadcrumb-implementation-guide.md | v1.3.0 | 2026-04-18 | Current | | docs/development/mobile-navigation-guide.md | v1.4.0 | 2025-12-31 | Current | | docs/development/settings-pattern-guide.md | v1.1.0 | 2025-12-31 | Current | | docs/development/dashboard-pattern-guide.md | v1.0.0 | 2025-12-31 | Current | | docs/development/mobile-gesture-guide.md | v1.0.0 | 2025-12-31 | Current | | docs/development/PAGE\_MIGRATION\_CHECKLIST.md | v1.0.0 | 2025-12-31 | Current | | docs/development/DATABASE\_DEVELOPMENT\_GUIDE.md | v1.2.0 | 2026-04-24 | Current | | docs/development/supabase/DECLARATIVE\_SCHEMA\_GUIDE.md | v1.0.0 | 2026-04-24 | Current | | docs/development/supabase/SUPABASE\_CLI\_LOCAL\_WORKFLOW\.md | v1.3.0 | 2026-04-24 | Current | | docs/development/supabase/MIGRATION\_LANES.md | v1.0.1 | 2026-04-24 | Current | | docs/development/supabase/BRANCHING\_CI\_SPIKE.md | v1.0.1 | 2026-04-24 | Current | | docs/development/supabase/SUPABASE\_MULTI\_ENV\_SETUP.md | v2.2.1 | 2026-04-24 | Current | | docs/development/VERCEL\_SUPABASE\_ENV\_ALIGNMENT.md | v1.0.0 | 2026-04-24 | Current | | docs/development/MCP\_USAGE.md | v1.3.0 | 2026-05-25 | Current (v1.2.0 skipped — breaking onboarding changes) | | docs/development/TSDOC\_JSDOC\_COVERAGE\_STANDARD.md | v1.1.0 | 2026-03-06 | Current | | docs/architecture/index.md | v1.0.0 | 2025-12-31 | Current | | docs/architecture/CORE\_DEPENDENCIES.md | v1.0.0 | 2025-12-31 | Current | | docs/architecture/DATA\_FLOW\.md | v1.0.0 | 2025-12-31 | Current | | docs/architecture/ORGANIZATIONAL\_DATA.md | v1.0.0 | 2025-12-31 | Current | | docs/architecture/TERMINOLOGY.md | v1.0.0 | 2025-12-31 | Current | | docs/architecture/CUSTOM\_FIELDS\_GUIDE.md | v1.0.0 | 2025-12-31 | Current | | docs/architecture/analysis/AI\_INTEGRATION\_STRATEGY\_2026.md | v1.2.0 | 2025-12-31 | Current | | docs/architecture/integrations/index.md | v2.1.0 | 2025-12-31 | Current | | docs/VERSIONING\_RECOMMENDATIONS.md | v1.1.0 | 2025-01-22 | Current | ## Compliance Documentation | Document | Version | Last Updated | Status | | -------------------------------------------------------------- | ------- | ------------ | ------------------------- | | docs/compliance/REGULATORY\_COMPLIANCE\_TRACKER.md | v1.0.2 | 2026-03-27 | Current | | docs/compliance/ONC\_CERTIFICATION\_ROADMAP.md | v1.0.0 | 2026-02-18 | Current | | docs/compliance/PHI\_CLASSIFICATION.md | v1.0.0 | 2026-02-18 | Current | | docs/compliance/AUTHORITATIVE\_REFERENCES.md | v1.0.0 | 2026-05-06 | Current | | docs/compliance/HR\_WORKFORCE\_COMPLIANCE\_TRACKING.md | v1.0.1 | 2026-03-25 | Current | | docs/compliance/FCRA\_TCPA\_COMPLIANCE\_TRACKING.md | v1.0.0 | 2026-02-10 | Current | | docs/compliance/FA\_FINANCIAL\_COMPLIANCE\_TRACKING.md | v1.1.0 | 2026-02-27 | Current | | docs/compliance/GR\_GOVERNANCE\_COMPLIANCE\_TRACKING.md | v1.0.0 | 2026-02-27 | Current | | docs/compliance/RH\_RECOVERY\_HOUSING\_COMPLIANCE\_TRACKING.md | v1.0.0 | 2026-02-27 | Current | | docs/compliance/IT\_SECURITY\_COMPLIANCE\_TRACKING.md | v1.0.0 | 2026-02-27 | Current | | docs/compliance/CE\_COMMUNICATIONS\_COMPLIANCE\_TRACKING.md | v1.2.0 | 2026-03-30 | Current | | docs/compliance/index.md | — | — | Index (no version header) | | docs/compliance/DEPENDABOT\_ALERTS\_AUDIT\_2026-03-16.md | — | 2026-03-16 | Audit snapshot | ## Guide Documents | Document | Version | Last Updated | Status | | ----------------------------------------------- | ------- | ------------ | ------- | | docs/fa/general-ledger-guide.md | v1.0.0 | 2025-11-26 | Current | | docs/fa/accounts-payable-guide.md | v1.0.0 | 2026-01-27 | Current | | docs/fa/module-settings.md | v1.0.0 | 2025-11-26 | Current | | docs/fa/api-reference.md | v1.0.0 | 2025-11-26 | Current | | docs/fa/d365-migration-guide.md | v1.0.0 | 2025-11-26 | Current | | docs/fa/security-considerations.md | v1.0.0 | 2025-11-26 | Current | | docs/cl/telehealth-documentation-user-guide.md | v1.0.0 | 2026-05-28 | Current | | docs/cl/telehealth-documentation-admin-guide.md | v1.0.0 | 2026-05-28 | Current | | docs/gr/contract-admin-guide.md | v1.0.0 | 2025-12-25 | Current | | docs/gr/contract-user-guide.md | v1.0.0 | 2025-12-25 | Current | | docs/pf/report-visualizations-guide.md | v1.0.0 | 2025-11-29 | Current | | docs/pf/document-approvals-guide.md | v1.0.0 | 2025-11-29 | Current | | docs/pf/advanced-documents-guide.md | v1.0.0 | 2025-11-29 | Current | | docs/pf/document-management-guide.md | v3.0.0 | 2025-11-29 | Current | | docs/pf/notifications-guide.md | v3.0.0 | 2025-11-29 | Current | | docs/pf/reporting-guide.md | v3.0.0 | 2025-11-29 | Current | | docs/pf/system-health-guide.md | v1.0.0 | 2025-12-24 | Current | | docs/pf/overview\.md | v3.0.0 | 2025-12-31 | Current | ## Platform Integration Layers | Document | Version | Last Updated | Status | | -------------------------------------------------------------------- | ------- | ------------ | ----------------------------------------------------------------------------------------- | | docs/architecture/integrations/PLATFORM\_INTEGRATION\_LAYERS.md | v2.3.0 | 2026-01-28 | Current | | src/platform/telephony/README.md | v1.1.0 | 2026-01-27 | Current | | src/platform/clinical/README.md | — | 2026-02-25 | Contract (consent implemented; patient context, billing adapter, document export planned) | | src/platform/scheduling/README.md | — | 2026-02-25 | Contract (useEncounterContext, useEncounterLifecycle, useAppointmentContext planned) | | .coderabbit.yaml | v2.6.0 | 2026-04-11 | Current | | .github/instructions/\*.instructions.md | — | 2026-04-11 | Current (path-scoped rules for cores, database, RLS, shared UI) | | docs/architecture/decisions/ADR-001-form-analytics-architecture.md | — | 2025-12-05 | Accepted | | docs/architecture/decisions/ADR-002-cl-pm-cross-core-foreign-keys.md | — | 2026-02-25 | Accepted | | docs/architecture/decisions/ADR-003-mcp-pf72-phase4.md | — | 2026-03-14 | Accepted | | docs/architecture/decisions/ADR-004-cl-fw-event-patterns.md | — | 2026-03-24 | Proposed | | docs/architecture/decisions/ADR-005-cross-core-fk-pm-patients.md | — | 2026-04-10 | Accepted | | docs/architecture/decisions/ADR-006-cross-core-fk-hr-employees.md | — | 2026-04-10 | Accepted | | specs/\_templates/ADR\_TEMPLATE.md | — | 2026-02-25 | Template | ## Specification Documents | Document | Version | Last Updated | Status | | ------------------------------------------------------------ | ------- | ------------ | ------- | | specs/fa/NEXT\_PRIORITIES.md | v1.0.0 | 2026-01-27 | Current | | specs/fa/ux/FA-UX-01-financial-close-setup-wizard.md | v1.1 | 2026-01-28 | Current | | specs/fa/ux/FA-UX-02-project-setup-wizard.md | v1.0 | 2026-01-28 | Current | | specs/fa/ux/FA-UX-03-budget-creation-wizard.md | v1.0 | 2026-01-28 | Current | | specs/fa/ux/FA-UX-04-bank-reconciliation-wizard.md | v1.0 | 2026-01-28 | Current | | specs/fa/ux/FA-UX-05-purchase-order-creation-wizard.md | v1.1 | 2026-01-28 | Current | | specs/fa/ux/FA-UX-06-asset-from-po-wizard.md | v1.1 | 2026-01-28 | Current | | specs/fa/ux/FA-UX-07-expense-report-wizard.md | v1.0 | 2026-01-28 | Current | | specs/fa/ux/FA-UX-08-idc-rate-calculation-wizard.md | v1.1 | 2026-01-28 | Current | | specs/fa/ux/FA-UX-09-consolidation-wizard.md | v1.0 | 2026-01-28 | Current | | docs/architecture/integrations/FA-UX-05-FW-03-INTEGRATION.md | v1.0.0 | 2026-01-28 | Current | ## Integration Guides | Document | Version | Last Updated | Status | | --------------------------------------------------------- | ------- | ------------ | ------- | | docs/integrations/N8N\_INTEGRATION\_GUIDE.md | v1.0.0 | 2025-11-25 | Current | | docs/integrations/EMAIL\_SMS\_SETUP.md | v1.0.0 | 2025-01-07 | Current | | docs/integrations/EDGE\_FUNCTIONS.md | v1.0.0 | 2025-01-07 | Current | | docs/integrations/INTEGRATIONS\_AND\_SETTINGS\_REVIEW\.md | v1.0.0 | 2025-12-03 | Current | | docs/integrations/SUPABASE\_SETUP.md | v1.0.0 | 2025-01-07 | Current | ## Debugging & Troubleshooting | Document | Version | Last Updated | Status | | -------------------------------------------- | ------- | ------------ | ------- | | docs/testing/TESTING\_SETUP\_AND\_RUN.md | v1.4.0 | 2026-04-18 | Current | | docs/development/CURSOR\_CLOUD\_WORKFLOW\.md | v1.0.0 | 2026-04-08 | Current | | .agents/skills/cloud-runbook/SKILL.md | v1.0.0 | 2026-04-08 | Current | ## Related Documentation * **[Documentation Standards & Maintenance](/DOCUMENTATION_STANDARDS)** - Standards, maintenance, hierarchy, high-traffic paths *** ## Version Update Process 1. **Update version in source document** - Change version number and "Last Updated" date 2. **Update this file** - Update the version table above 3. **Find all references:** ```bash theme={null} npm run check-doc-versions ``` This script will scan all markdown files and report any version inconsistencies. 4. **Update all references** in one PR 5. **Update "Last Updated" dates** in affected files 6. **Verify:** Run version consistency check: ```bash theme={null} npm run check-doc-versions ``` The script will exit with error code 1 if inconsistencies are found, or 0 if all versions are current. ## Version Bump Guidelines * **MAJOR:** Breaking principle changes or removed principles * **MINOR:** New principles or materially expanded guidance * **PATCH:** Clarifications, wording, typos, non-semantic fixes ## Version History ### 2026-01-25 (Phase 5) * Archived deprecated AI documentation files to `docs/archive/ai-docs/`: * DOCUMENTATION\_SYNC\_PROCESS.md (no longer needed) * AGENTS\_CURSOR\_VS\_LOVABLE.md (no longer relevant) * AGENTS\_BEST\_PRACTICES\_LOVABLE.md (content moved to AGENTS.md) * Updated references in AI\_GUIDE.md, AGENTS\_QUICK\_REFERENCE.md, DOCUMENTATION\_STANDARDS.md ### 2026-01-25 (Phase 4) * Added Document Hierarchy diagram to AGENTS.md * Added "Problem → Solution Quick Lookup" to quick-reference.mdc * Added Commands quick reference table to .cursor/README.md ### 2026-01-25 (Phase 3) * AI\_GUIDE.md: Slimmed duplicated sections (\~119 lines removed) * Replaced duplicated tables with references to AGENTS.md * Kept unique implementation guidance (Edge Functions, Workflow Events, Permissions) * Final documentation sizes: AI\_GUIDE.md 1412, AGENTS.md 1128, AGENTS.md 81 ### 2026-01-25 (Phase 2) * **AGENTS.md: v4.5.0 → v5.0.0 (CONSOLIDATED)** - Reduced to redirect file (\~80 lines) * AGENTS.md: v1.10.0 updated with new sections from AGENTS.md: * Added User Personas section * Added Decision Prioritization Framework section * Added Healthcare Compliance Requirements section * Added Lovable Cloud Integration section * AI\_GUIDE.md: Updated references to point to AGENTS.md instead of AGENTS.md * constitution.md: Updated AGENTS.md references * Reduced \~900 lines of redundancy across documentation ### 2026-01-25 (Phase 1) * AGENTS.md: v1.9.0 → v1.10.0 (Added verify-task, generate-test-suite, check-rls-coverage commands, template consolidation) * AI\_GUIDE.md: v2.7.0 → v2.8.0 (Updated template references, new command references) * AGENTS.md: v4.4.0 → v4.5.0 (Updated template references, test templates, version sync) * Comprehensive version consistency fix across all documentation ### 2026-01-16 * AGENTS.md: v1.8.0 → v1.9.0 (Added Quick Reference section, Document Map, Pattern Library) * AI\_GUIDE.md: v2.6.0 → v2.7.0 (Added AI Decision Framework, enhanced Decision Trees) * AGENTS.md: v4.3.0 → v4.4.0 (Added Quick Reference section, enhanced Common Mistakes) ### 2026-01-15 * AGENTS.md: v1.5.0 → v1.6.0 (Added integration contract templates) * AI\_GUIDE.md: v2.5.0 → v2.6.0 (Added integration documentation standards) * AGENTS.md: v4.2.0 → v4.3.0 (Added contract templates references) * Added DATA\_DICTIONARY.md, CONTRACT\_VALIDATION\_CHECKLIST.md * Added EVENT\_CONTRACT\_TEMPLATE.md, API\_CONTRACT\_TEMPLATE.md, DATA\_MODEL\_TEMPLATE.md ### 2025-12-31 * Documentation Quality Implementation Plan completion * Added standard headers to all development and architecture docs * Updated all "Last Updated" dates to 2025-12-31 * Added AI agent context sections to key development guides * Updated cross-references with version numbers * Archived completed implementation files * Updated VERSIONS.md with all new documentation versions ### 2025-12-29 * AGENTS.md: v3.9.0 → v4.0.0 * Added §25 Lovable Cloud Integration section * Clarified that project files are accessible to Lovable * Updated AGENTS.md cross-references to v4.0.0 ### 2025-12-16 * Comprehensive documentation update (Phase D) * Updated all documentation Last Updated dates * Verified all version references are current * Updated RH specs (RH-05, RH-06, RH-07) with full template compliance ### 2025-12-12 * constitution.md: v1.8.0 → v1.9.0 * AI\_GUIDE.md: v2.3.0 → v2.4.0 * AGENTS.md: v3.4.0 → v3.7.0 * AGENTS.md (v1.10.0) * Updated all 22 spec files with current version references *** **Note:** This file should be updated whenever any core documentation version changes. All contributors should reference this file to ensure version consistency. # ai-skills — system AI skill catalogue Source: https://docs.encoreos.io/api/ai-skills Flat per-skill AI catalogue for AI/RAG retrieval, generated from pf_ai_skills. Refresh with `npm run docs:ai-skills:generate`. # AI Skills Reference (system defaults) ```text theme={null} ai_skill coding_assistant billing pm anthropic/claude-sonnet-4-6 Coding support assistant for PM teams that improves billing documentation readiness and code review workflows. billing,coding,documentation,revenue-cycle ai_skill clinical_documentation_assistant clinical cl anthropic/claude-sonnet-4-6 Documentation-focused assistant for clinical teams using structured note quality and terminology guidance. clinical,documentation,note-quality,terminology ai_skill compliance_advisor compliance gr anthropic/claude-sonnet-4-6 Provide regulatory compliance guidance for healthcare organizations ai_skill contract_analyzer compliance gr openai/gpt-4o Analyze and summarize contracts with key terms and compliance requirements ai_skill healthcare_policy_writer compliance gr anthropic/claude-sonnet-4-6 Create compliant healthcare policies with Joint Commission, Arizona DHS, and AHCCCS regulatory frameworks ai_skill quality_assurance_workflow compliance gr anthropic/claude-sonnet-4-6 Structured quality review process for compliance documents, policies, and operational procedures quality-assurance,compliance-review,document-review,audit ai_skill risk_analyzer compliance gr anthropic/claude-sonnet-4-6 Analyze and assess organizational risks with mitigation recommendations ai_skill training_developer compliance gr anthropic/claude-sonnet-4-6 Create compliant training materials and competency assessments ai_skill financial_analyst finance fa openai/gpt-4o Financial analysis and reporting for nonprofit healthcare ai_skill grant_compliance_advisor finance fa openai/gpt-4o Grant financial compliance with OMB Uniform Guidance (2 CFR 200) ai_skill database_query_helper general pf openai/gpt-4o PostgreSQL query optimization and best practices guidance for platform administrators database,postgresql,optimization,admin ai_skill document_analyzer general openai/gpt-4o Analyze and extract information from documents ai_skill general_assistant general openai/gpt-4o General-purpose AI assistant for any task ai_skill integration_setup_guide general pf openai/gpt-4o Step-by-step guidance for configuring system integrations, data connections, and third-party service setup integration,setup,configuration,api ai_skill recovery_home_policy_writer housing rh anthropic/claude-sonnet-4.6 Create compliant policies for recovery homes with NARR, AZ DHS, Fair Housing, and Anti-Kickback compliance ai_skill resident_intake_assistant housing rh openai/gpt-4o Assist with recovery housing admission decisions and compliant screening ai_skill hr_policy_advisor hr hr anthropic/claude-sonnet-4-6 HR policy guidance and employment law expertise ai_skill completion_checklist operations pf openai/gpt-4o-mini Evidence-based task completion verification ensuring all requirements are met before sign-off verification,completion,checklist,quality ai_skill contact_engagement_assistant operations openai/gpt-4o-mini Help with professional outreach, follow-up messaging, and lead qualification ai_skill incident_analysis_assistant operations it openai/gpt-4o Systematic root cause analysis for IT incidents and facility issues with structured investigation phases incident-response,root-cause,troubleshooting,it-operations ai_skill it_support_assistant operations openai/gpt-4o-mini Help with IT troubleshooting, ticket categorization, and knowledge base search ai_skill meeting_summarizer operations lo openai/gpt-4o-mini Summarize meetings with action items and decisions ai_skill submission_validator operations fw openai/gpt-4o-mini Pre-submission validation for forms, applications, and regulatory filings ensuring completeness and compliance validation,submission,compliance,forms ai_skill work_order_assistant operations fm openai/gpt-4o-mini Help create, categorize, and prioritize work orders for facilities ``` # automation — system automation catalogue Source: https://docs.encoreos.io/api/automation Flat list of system automations/workflows for AI/RAG retrieval, generated from AUTOMATION_REGISTRY.json. Refresh with `npm run docs:automation:generate`. # Automation Catalogue (system) ```text theme={null} automation fa-expense-approval fa workflow specs/fw/templates/workflows/fa-expense-approval.md automation fa-invoice-processing fa workflow specs/fw/templates/workflows/fa-invoice-processing.md automation fa-purchase-order-approval fa workflow specs/fw/templates/workflows/fa-purchase-order-approval.md automation gr-incident-notification gr workflow specs/fw/templates/workflows/gr-incident-notification.md automation gr-incident-reporting gr workflow specs/fw/templates/workflows/gr-incident-reporting.md automation hr-credential-reminder hr scheduled_job specs/fw/templates/workflows/hr-credential-reminder.md automation hr-credential-renewal hr scheduled_job specs/fw/templates/workflows/hr-credential-renewal.md automation hr-employee-onboarding-workflow hr workflow specs/fw/templates/workflows/hr-employee-onboarding.md automation hr-leave-request-approval hr workflow specs/fw/templates/workflows/hr-leave-request-approval.md automation rh-resident-intake rh workflow specs/fw/templates/workflows/rh-resident-intake.md ``` # ce — Public API surface Source: https://docs.encoreos.io/api/ce Per-symbol API documentation for the ce area, generated from TSDoc blocks. Refresh with `npm run docs:api:generate`. # ce — Public API surface ## Types & interfaces ### interface ActivitySearchFilters * file: src/cores/ce/hooks/useActivitySearch.ts:23 * kind: interface * core: ce * spec: CE-04 * summary: Filter criteria for searching activities: free-text query, activity types, subject type,creator, and a date range. * score: 3 ### type AdminCardUpdate * file: src/cores/ce/hooks/useMemberCards.ts:56 * kind: type * core: ce * spec: (none) * summary: Fields an admin may update on any card. * score: 2 ### interface ApproveIntakeArgs * file: src/cores/ce/hooks/useIntakeAgent.ts:108 * kind: interface * core: ce * spec: (none) * summary: Args the approve flow re-passes to execute\_writes (mirror of the Deno ExecuteWritesDeps). * score: 2 ### type CampaignFormData * file: src/cores/ce/components/campaigns/CampaignFormDialog.tsx:42 * kind: type * core: ce * spec: CE-09 * summary: Validated shape of the campaign create/edit form, inferred from the Zod schema covering name,type, status, date window, budget, goals, and UTM attribution fields. * score: 3 ### interface CardPreviewData * file: src/cores/ce/components/connect/CardPreview\.tsx:18 * kind: interface * core: ce * spec: (none) * summary: The subset of card fields the preview renders. * score: 2 ### interface CEActivityItem * file: src/cores/ce/hooks/useCERecentActivity.ts:18 * kind: interface * core: ce * spec: none * summary: A single recent-activity feed item for the CE dashboard, carrying its type, icon,title/description, timestamp, and a navigation route. * score: 3 ### interface CEDashboardMetrics * file: src/cores/ce/hooks/useCEDashboardMetrics.ts:29 * kind: interface * core: ce * spec: none * summary: Aggregated headline metrics for the CE dashboard — total contacts, active leads, monthly calls,and conversion rate — each paired with its trend. * score: 3 ### type ConsentChannelType * file: src/cores/ce/hooks/useConsentEvidence.ts:25 * kind: type * core: ce * spec: CE-16 * summary: Communication channel a consent record applies to (email, SMS, phone, or all channels). * score: 3 ### type ConsentEvidenceAction * file: src/cores/ce/hooks/useConsentEvidence.ts:19 * kind: type * core: ce * spec: CE-16 * summary: Action recorded by a consent-evidence event: consent granted, withdrawn, or reaffirmed. * score: 3 ### type ConsentEvidenceMethod * file: src/cores/ce/hooks/useConsentEvidence.ts:32 * kind: type * core: ce * spec: CE-16 * summary: Method by which consent was captured (web form, SMS keyword, email link, verbal, written, API,or import). * score: 3 ### interface ConsentEvidenceRecord * file: src/cores/ce/hooks/useConsentEvidence.ts:40 * kind: interface * core: ce * spec: CE-16 * summary: A persisted, append-only consent-evidence row capturing who consented, the action and method,optional consent text, and the captured IP/user-agent metadata. * score: 3 ### interface ContactTagAssignmentFieldProps * file: src/cores/ce/components/contacts/ContactTagAssignmentField.tsx:23 * kind: interface * core: ce * spec: CE-61 * summary: Props for : the target and a flagcontrolling whether tags may be assigned or removed. * score: 3 ### interface ContactTagBadgeProps * file: src/cores/ce/components/contacts/ContactTagBadge.tsx:19 * kind: interface * core: ce * spec: CE-61 * summary: Props for : the tag to render plus optional removable/size/classNamecontrols and an callback. * score: 3 ### interface ContactTagDialogProps * file: src/cores/ce/components/settings/ContactTagDialog.tsx:45 * kind: interface * core: ce * spec: CE-61 * summary: Props for : open state, the tag being edited (or null when creating), an handler, a submitting flag, and the default sort order for new tags. * score: 3 ### type ContractRenewalAction * file: src/cores/ce/hooks/useContractRenewalLogMutation.ts:22 * kind: type * core: ce * spec: (none) * summary: Action values aligned with the CHECKconstraint. Any other value will be rejected at the database level. * score: 2 ### interface CreateLeadConversionInput * file: src/cores/ce/hooks/useLeadConversions.ts:19 * kind: interface * core: ce * spec: (none) * summary: Input for creating a lead conversion audit record. * score: 2 ### interface CreateScreeningInput * file: src/cores/ce/hooks/useCreateScreening.ts:26 * kind: interface * core: ce * spec: (none) * summary: Input for creating a screening (result + attempt). * score: 2 ### type DbMatchCandidate * file: src/cores/ce/hooks/useMatchCandidates.ts:19 * kind: type * core: ce * spec: (none) * summary: Row shape of ce\_match\_candidates (the probabilistic review queue). * score: 2 ### type DbMergeLog * file: src/cores/ce/hooks/useContactMerge.ts:16 * kind: type * core: ce * spec: (none) * summary: Row shape of ce\_merge\_log (merge audit + undo source). * score: 2 ### interface DocumentAdapterError * file: src/cores/ce/lib/document-storage-adapter.ts:35 * kind: interface * core: ce * spec: (none) * summary: Normalized adapter error contract. * score: 2 ### interface EmailMatchOptions * file: src/cores/ce/utils/email-matching.ts:34 * kind: interface * core: ce * spec: (none) * summary: Options for email matching * score: 1 ### interface EmailMatchResult * file: src/cores/ce/utils/email-matching.ts:24 * kind: interface * core: ce * spec: (none) * summary: Result of email-to-entity matching * score: 2 ### type EmailMatchType * file: src/cores/ce/utils/email-matching.ts:21 * kind: type * core: ce * spec: (none) * summary: Match types in priority order * score: 1 ### interface EmailMessageWithMeta * file: src/cores/ce/hooks/useEmailMessages.ts:37 * kind: interface * core: ce * spec: (none) * summary: Email message with computed fields for display * score: 2 ### interface ExtractionSuggestions * file: src/cores/ce/hooks/useContactDocumentExtraction.ts:23 * kind: interface * core: ce * spec: CE-59 * summary: AI-extracted field suggestions from a contact document — insurance carrier/member/group, PCP,diagnosis codes, and medication names — each optional when not detected. * score: 3 ### interface FetchContactHistoryArgs * file: src/cores/ce/history/adapters/index.ts:36 * kind: interface * core: ce * spec: CE-60 * summary: Arguments for : org/contact scope, page size, optional filters andcursor, redaction policy, and the CE-63 stage-fallback flag. * score: 3 ### interface FieldConflict * file: src/cores/ce/lib/mergeSurvivorship.ts:74 * kind: interface * core: ce * spec: (none) * summary: A field where the two contacts disagree, with the survivorship default. * score: 2 ### interface FormattedPublishError * file: src/cores/ce/wizards/sequences/utils/parsePublishError.ts:251 * kind: interface * core: ce * spec: (none) * summary: User-facing toast message composed from a structured error detail. * score: 2 ### interface IdentityMatchedOn * file: src/cores/ce/hooks/useIdentityResolution.ts:25 * kind: interface * core: ce * spec: (none) * summary: Which fields matched and how (drives the matched-on chips). * score: 2 ### type IdentityMatchTier * file: src/cores/ce/hooks/useIdentityResolution.ts:22 * kind: type * core: ce * spec: (none) * summary: Match tier: auto (deterministic-equivalent) or review (queue-bound). * score: 2 ### interface IdentityResolutionMatch * file: src/cores/ce/hooks/useIdentityResolution.ts:34 * kind: interface * core: ce * spec: (none) * summary: One ranked match returned by ce\_resolve\_identity. * score: 2 ### interface IdentityResolutionPayload * file: src/cores/ce/hooks/useIdentityResolution.ts:47 * kind: interface * core: ce * spec: (none) * summary: Contact-shaped payload resolved against the org's existing contacts. * score: 2 ### interface IntakeArtifact * file: src/cores/ce/hooks/intake-agent-types.ts:35 * kind: interface * core: ce * spec: (none) * summary: The artifact header + latest version body the recommendation card renders. * score: 2 ### interface IntakeProposal * file: src/cores/ce/hooks/intake-agent-types.ts:12 * kind: interface * core: ce * spec: (none) * summary: The structured proposed appointment the edge fn returns + the UI re-passes to execute\_writes. * score: 2 ### interface IntakeRunStartResult * file: src/cores/ce/hooks/intake-agent-types.ts:22 * kind: interface * core: ce * spec: (none) * summary: The widened result (additive over the Stage-1 ). * score: 2 ### interface KeywordMatchResult * file: src/cores/ce/lib/crisisKeywordMatcher.ts:44 * kind: interface * core: ce * spec: (none) * summary: Result of a single match attempt. * score: 2 ### type LeadAssignmentAction * file: src/cores/ce/utils/leadAssignment.ts:10 * kind: type * core: ce * spec: (none) * summary: What happened to a lead's assignee as a result of an assign mutation. * score: 2 ### type LeadStageTransitionKind * file: src/cores/ce/lib/classifyLeadStageTransition.ts:12 * kind: type * core: ce * spec: (none) * summary: CE-63: Classify a destination pipeline stage to decide which transitiondialog (if any) the kanban / stage-selector should open before committingthe move.Classification is driven by (preferred)and . We deliberately avoid switching on because the spec calls the buckets out by behavior, not by stage\_typeenum value. * score: 2 ### interface MappingPreviewRow * file: src/cores/ce/components/contacts/import-utils/mappingPreview\.ts:14 * kind: interface * core: ce * spec: none * summary: Preview row pairing a source CSV column with its mapped database field and the sample valuesobserved for that column. * score: 3 ### type MatchCandidateStatus * file: src/cores/ce/hooks/useMatchCandidates.ts:22 * kind: type * core: ce * spec: (none) * summary: Candidate lifecycle: pending → linked | dismissed | merged (never deleted). * score: 2 ### interface MatchCandidateWithContacts * file: src/cores/ce/hooks/useMatchCandidates.ts:25 * kind: interface * core: ce * spec: (none) * summary: Candidate row joined with both contacts' display fields for the compare drawer. * score: 2 ### type MergeableField * file: src/cores/ce/lib/mergeSurvivorship.ts:43 * kind: type * core: ce * spec: (none) * summary: A column the merge dialog may decide on (mirrors the RPC whitelist). * score: 2 ### interface MergeContactsArgs * file: src/cores/ce/hooks/useContactMerge.ts:19 * kind: interface * core: ce * spec: (none) * summary: Inputs for the ce\_merge\_contacts mutation. * score: 2 ### interface MergeContext * file: src/cores/ce/utils/merge-fields.ts:24 * kind: interface * core: ce * spec: (none) * summary: Merge field context with all available data sources * score: 2 ### interface MergeFieldDefinition * file: src/cores/ce/utils/merge-fields.ts:43 * kind: interface * core: ce * spec: (none) * summary: Merge field definition * score: 1 ### interface MergeFieldGroup * file: src/cores/ce/utils/merge-fields.ts:53 * kind: interface * core: ce * spec: (none) * summary: Merge field group for UI picker * score: 2 ### type MergePartner * file: src/cores/ce/utils/merge-fields.ts:16 * kind: type * core: ce * spec: (none) * summary: CE-66: Partner subset for merge context. / are sourcedfrom the resolved primary partner-contact row (not the deprecated / columns). Callers must resolve via before populating this shape. * score: 2 ### type MergeSide * file: src/cores/ce/lib/mergeSurvivorship.ts:71 * kind: type * core: ce * spec: (none) * summary: Which record's value wins a conflicting field. * score: 2 ### type MyCardInput * file: src/cores/ce/hooks/useMyCard.ts:28 * kind: type * core: ce * spec: (none) * summary: Fields a member can edit on their own card (slug/audit/org/user are managed). * score: 2 ### interface OrgCalendarCapability * file: src/cores/ce/lib/orgCalendarCapability.ts:17 * kind: interface * core: ce * spec: (none) * summary: Result of evaluating org-calendar (DWD) capability for a user. * score: 2 ### interface PhiPattern * file: src/cores/ce/utils/sms-opt-out.ts:158 * kind: interface * core: ce * spec: (none) * summary: PHI Detection PatternsExtended patterns for comprehensive PHI/PII detectionReference: HIPAA Safe Harbor, IRS Publication 1075 * score: 2 ### interface PipelineTrackInput * file: src/cores/ce/lib/resolveLeadPipelineTrack.ts:13 * kind: interface * core: ce * spec: (none) * summary: CE-64: Resolve which pipeline track a lead belongs to based on itsrequested services and the org's configured tracks.Rules: - Active tracks only. - A track matches if any of the lead's is listed in the track's . - Exactly one match → that track. - Zero or multiple matches → the org's track (typically "General"). If no default exists, returns . * score: 2 ### type PublishSequenceErrorCategory * file: src/cores/ce/wizards/sequences/utils/parsePublishError.ts:19 * kind: type * core: ce * spec: (none) * summary: Error category for RPC failures.Allowed values: 'auth', 'access', 'name\_required', 'name\_duplicate', 'no\_steps','enrollment\_criteria\_required', 'step\_invalid\_type', 'step\_name\_required','step\_delay\_negative', 'step\_missing\_content', 'template\_not\_found', 'unknown'. * score: 2 ### interface PublishSequenceErrorDetail * file: src/cores/ce/wizards/sequences/utils/parsePublishError.ts:39 * kind: interface * core: ce * spec: (none) * summary: Structured detail parsed from a RPC error.Contains category (one of ), step context when applicable(stepNumber, stepName, stepType), template details if relevant (templateId, templateKind),a user-facing reason, and the original sanitized fallback message. * score: 2 ### interface RecordConsentEvidenceInput * file: src/cores/ce/hooks/useConsentEvidence.ts:93 * kind: interface * core: ce * spec: CE-16 * summary: Input for recording a new consent-evidence event: contact, consent channel, action, capturemethod, and optional consent text and user agent. * score: 3 ### interface RequestedServicesMultiSelectProps * file: src/cores/ce/components/RequestedServicesMultiSelect.tsx:21 * kind: interface * core: ce * spec: CE-58 * summary: Props for : the selected service values, an handler, and optional label/description/aria/disabled overrides. * score: 3 ### interface ScheduleOrgMeetingParams * file: src/cores/ce/hooks/useScheduleOrgMeeting.ts:31 * kind: interface * core: ce * spec: (none) * summary: Parameters for an org-calendar (DWD) scheduling request.Shaped like the personal-path minus the personal , plus the resolved PF-101 connection id andan optional Google Meet flag. The event lands on the current user's primarycalendar within the verified org domain (the DWD subject is the user's email)./ are passed straight to the Google event summary/description —callers must keep these PHI-free per the CE-21 calendar PHI policy. * score: 2 ### type SegmentConditionFormData * file: src/cores/ce/schemas/segment-criteria.schema.ts:43 * kind: type * core: ce * spec: (none) * summary: Inferred type for segment condition * score: 2 ### type SegmentCriteriaFormData * file: src/cores/ce/schemas/segment-criteria.schema.ts:48 * kind: type * core: ce * spec: (none) * summary: Inferred type for segment criteria * score: 2 ### type SegmentFormData * file: src/cores/ce/components/segments/SegmentFormDialog.tsx:35 * kind: type * core: ce * spec: CE-09 * summary: Validated shape of the audience-segment create/edit form, inferred from the Zod schema coveringname, description, and active state. * score: 3 ### interface SequenceListFilters * file: src/cores/ce/hooks/useSequenceList.ts:11 * kind: interface * core: ce * spec: (none) * summary: Optional filters for sequence list queries. isActive - When set, filters to active () or inactive () sequences. search - Case-insensitive sequence name search text. * score: 2 ### type ShareSource * file: src/cores/ce/lib/cardShare.ts:32 * kind: type * core: ce * spec: (none) * summary: Fields needed to build share assets: a slug plus the vCard source fields. * score: 2 ### type SmsMessageIntent * file: src/cores/ce/utils/sms-opt-out.ts:140 * kind: type * core: ce * spec: (none) * summary: Determine message intent for routing * score: 2 ### interface SmsNotificationToastProps * file: src/cores/ce/components/sms/SmsNotificationToast.tsx:16 * kind: interface * core: ce * spec: CE-08 * summary: Props for the inbound-SMS notification toast: the matched contact name/id (null when unmatched),sender number, message preview, and a view callback. * score: 3 ### interface TagFilterControlProps * file: src/cores/ce/components/pipeline/TagFilterControl.tsx:22 * kind: interface * core: ce * spec: CE-61 * summary: Props for : the selected tag ids, the match mode, an callbackemitting both, and an optional className. * score: 3 ### interface TrackPipelineRowProps * file: src/cores/ce/components/TrackPipelineRow\.tsx:30 * kind: interface * core: ce * spec: CE-64 * summary: Props for : track identity/colour, its stage groups, collapsed state andtoggle handler, the active lead, and a collapsibility flag. * score: 3 ### interface TrendData * file: src/cores/ce/hooks/useCEDashboardMetrics.ts:17 * kind: interface * core: ce * spec: none * summary: Period-over-period trend for a dashboard KPI: direction, magnitude, and a human-readablecomparison label. * score: 3 ### interface TriageCategoryThreshold * file: src/cores/ce/utils/screeningTriage.ts:35 * kind: interface * core: ce * spec: (none) * summary: A descending score threshold mapping to a category. * score: 2 ### interface TriageFlagPoint * file: src/cores/ce/utils/screeningTriage.ts:29 * kind: interface * core: ce * spec: (none) * summary: Points added when a clinical flag is present in the detected flag set. * score: 2 ### interface TriageLevelOfCareThreshold * file: src/cores/ce/utils/screeningTriage.ts:41 * kind: interface * core: ce * spec: (none) * summary: A descending score threshold mapping to a level-of-care code. * score: 2 ### interface TriageRuleset * file: src/cores/ce/utils/screeningTriage.ts:51 * kind: interface * core: ce * spec: (none) * summary: A configurable, versioned triage ruleset. In CE-81 this is resolved perorganization + jurisdiction (PF-96) from ; the default below isthe seeded fallback that reproduces the legacy hardcoded model. * score: 2 ### interface TriageScoreWeight * file: src/cores/ce/utils/screeningTriage.ts:22 * kind: interface * core: ce * spec: (none) * summary: A single scoring rule: when , add . * score: 2 ### interface TriageTraceEntry * file: src/cores/ce/utils/screeningTriage.ts:130 * kind: interface * core: ce * spec: (none) * summary: One entry in the rule trace: a weight or flag rule that fired during scoring. * score: 2 ### interface UpsertSlaConfigInput * file: src/cores/ce/hooks/useScreeningSlaConfig.ts:90 * kind: interface * core: ce * spec: (none) * summary: Input for creating/updating SLA config * score: 2 ### type Urgency * file: src/cores/ce/lib/urgency.ts:10 * kind: type * core: ce * spec: (none) * summary: The four lead-urgency levels in ascending severity, matching the enum. * score: 2 ### interface UrgencyAccent * file: src/cores/ce/lib/urgency.ts:26 * kind: interface * core: ce * spec: (none) * summary: Resolved UI treatment for one urgency level: the short label plus thesemantic-token badge variant, tile border, popover text colour, and icon usedto surface it. is true only for high/critical (the levels calledout on the board); the colour/icon fields are null for low/medium. * score: 2 ### interface UseActivitiesOptions * file: src/cores/ce/hooks/useActivities.ts:24 * kind: interface * core: ce * spec: CE-04 * summary: Options for : org scope plus optional subject, activity-type, creator, andpaging filters for the activity list query. * score: 3 ### interface UseActivitiesResult * file: src/cores/ce/hooks/useActivities.ts:52 * kind: interface * core: ce * spec: CE-04 * summary: Result of : the activity list, total count, loading/error state, a refetchtrigger, and whether more pages exist. * score: 3 ### interface UseActivitySearchOptions * file: src/cores/ce/hooks/useActivitySearch.ts:38 * kind: interface * core: ce * spec: CE-04 * summary: Options for : org scope, the active filters, paging, and an enabledflag. * score: 3 ### interface UseActivitySearchResult * file: src/cores/ce/hooks/useActivitySearch.ts:52 * kind: interface * core: ce * spec: CE-04 * summary: Result of : the matched activities, total count, loading/error state, arefetch trigger, and whether more pages exist. * score: 3 ### interface UseContactsOptions * file: src/cores/ce/hooks/useContacts.ts:14 * kind: interface * core: ce * spec: (none) * summary: Filter/pagination options for the contacts list query. * score: 2 ### interface UseContactsResult * file: src/cores/ce/hooks/useContacts.ts:27 * kind: interface * core: ce * spec: (none) * summary: Contacts list query result: rows, total count, and query state. * score: 2 ### interface UseContactsWithoutLeadsOptions * file: src/cores/ce/hooks/useContactsWithoutLeads.ts:12 * kind: interface * core: ce * spec: (none) * summary: Options for the contacts-without-leads picker query. * score: 2 ### interface UseOrgCalendarCapabilityResult * file: src/cores/ce/hooks/useOrgCalendarCapability.ts:18 * kind: interface * core: ce * spec: (none) * summary: Hook result: capability flags plus loading state. * score: 2 ### type VCardSource * file: src/cores/ce/lib/vcard.ts:53 * kind: type * core: ce * spec: (none) * summary: Fields a vCard is built from — a structural subset of a member card. * score: 2 ### type WidgetPosition * file: src/cores/ce/components/settings/WidgetPositionPreview\.tsx:17 * kind: type * core: ce * spec: CE-14 * summary: Screen corner where the embeddable widget is anchored — one of the four bottom/top, left/rightpositions. * score: 3 ## Hooks ### hook useActiveCrisisAlertSummary * file: src/cores/ce/hooks/useCrisisAlerts.ts:48 * kind: hook * core: ce * spec: (none) * summary: Lightweight summary for the queue-header widget. * score: 4 ### hook useActiveEmailTemplates * file: src/cores/ce/hooks/useEmailTemplates.ts:117 * kind: hook * core: ce * spec: (none) * summary: Fetch active templates for compose dialog dropdown * score: 4 ### hook useActiveLeadCount * file: src/cores/ce/hooks/useActiveLeadCount.ts:33 * kind: hook * core: ce * spec: (none) * summary: Hook for managing active lead count. * score: 1 ### hook useActivities * file: src/cores/ce/hooks/useActivities.ts:68 * kind: hook * core: ce * spec: (none) * summary: Returns paginated CE activities with subject/date/type filters and joined timeline metadata. * score: 4 ### hook useActivitySearch * file: src/cores/ce/hooks/useActivitySearch.ts:101 * kind: hook * core: ce * spec: (none) * summary: Provides activity search queries and mutation actions scoped to the current organization. * score: 4 ### hook useAddQueueMember * file: src/cores/ce/hooks/useAssignmentQueue.ts:82 * kind: hook * core: ce * spec: (none) * summary: Provides add queue member queries and mutation actions scoped to the current organization. * score: 4 ### hook useAdminUpdateCard * file: src/cores/ce/hooks/useMemberCards.ts:61 * kind: hook * core: ce * spec: (none) * summary: Admin update of any member's card (e.g. deactivate). Gated on . * score: 4 ### hook useAfterHoursHandoverQueue * file: src/cores/ce/hooks/useAfterHoursHandover.ts:21 * kind: hook * core: ce * spec: CE-28 * summary: Queries after-hours intake arrivals that lack a linked outcome (spec D-04), surfacing screeningattempts that still need handover follow-up for the current org. * returns: A React Query result of unresolved after-hours screening attempts. * score: 5 ### hook useAllWebFormStats * file: src/cores/ce/hooks/useWebFormSubmissions.ts:176 * kind: hook * core: ce * spec: (none) * summary: Hook for managing all web form stats. * score: 1 ### hook useApproveIntake * file: src/cores/ce/hooks/useIntakeAgent.ts:121 * kind: hook * core: ce * spec: (none) * summary: Approve: human verify (draft→verified) then the server-side gate→approve→mint→governed write. * score: 4 ### hook useAssignmentQueue * file: src/cores/ce/hooks/useAssignmentQueue.ts:37 * kind: hook * core: ce * spec: (none) * summary: Provides assignment queue queries and mutation actions scoped to the current organization. * score: 4 ### hook useAttendeeCheckIn * file: src/cores/ce/hooks/useEventAttendees.ts:49 * kind: hook * core: ce * spec: (none) * summary: Attendee check-in mutation * score: 1 ### hook useAttendeeMutations * file: src/cores/ce/hooks/useEventAttendees.ts:88 * kind: hook * core: ce * spec: (none) * summary: Attendee mutations (add, update, remove) * score: 4 ### hook useAttributeLeadToCampaign * file: src/cores/ce/hooks/useLeadAttribution.ts:85 * kind: hook * core: ce * spec: (none) * summary: Hook to attribute a lead to a campaign * score: 4 ### hook useBulkDismissMatchCandidates * file: src/cores/ce/hooks/useMatchCandidates.ts:123 * kind: hook * core: ce * spec: (none) * summary: Bulk-dismisses pending candidates (review-queue toolbar action). * score: 4 ### hook useBusinessHours * file: src/cores/ce/hooks/useBusinessHours.ts:66 * kind: hook * core: ce * spec: CE-28 * summary: Resolves the org's business-hours config into live open/closed state, exposing whether it isopen now, the next opening time, and an predicate for arbitrary timestamps. * returns: The config plus , , and an helper. * score: 5 ### hook useBusinessHoursConfig * file: src/cores/ce/hooks/useBusinessHours.ts:29 * kind: hook * core: ce * spec: CE-28 * summary: Loads the org's intake business-hours configuration from , falling back to asensible default when none is stored. * returns: A React Query result of the org's business-hours config. * score: 5 ### hook useCalendarConnections * file: src/cores/ce/hooks/useCalendarConnections.ts:20 * kind: hook * core: ce * spec: (none) * summary: Hook for listing and managing the current user's calendar connections. * score: 1 ### hook useCalendarEvents * file: src/cores/ce/hooks/useCalendarEvents.ts:18 * kind: hook * core: ce * spec: (none) * summary: Hook for querying synced calendar events with optional filters. * score: 1 ### hook useCallAnalytics * file: src/cores/ce/hooks/useCallAnalytics.ts:119 * kind: hook * core: ce * spec: (none) * summary: Hook for fetching call analytics with configurable options * params: * options — Configuration for date range, filtering, and aggregation * returns: Query result with call analytics metrics and summary * score: 1 ### hook useCampaignAnalytics * file: src/cores/ce/hooks/useCampaignAnalytics.ts:98 * kind: hook * core: ce * spec: (none) * summary: Hook for fetching campaign analytics with computed metrics * score: 1 ### hook useCampaignDetail * file: src/cores/ce/hooks/useCampaignDetail.ts:20 * kind: hook * core: ce * spec: (none) * summary: Fetches one non-deleted campaign by id with organization guard and not-found handling. * score: 4 ### hook useCampaignList * file: src/cores/ce/hooks/useCampaignList.ts:22 * kind: hook * core: ce * spec: (none) * summary: Hook for managing campaign list. * score: 1 ### hook useCampaignROI * file: src/cores/ce/hooks/useCampaignROI.ts:44 * kind: hook * core: ce * spec: (none) * summary: Hook for computing ROI metrics across campaigns * params: * campaigns — List of campaign metrics * options — ROI calculation options * score: 1 ### hook useCaptureLead * file: src/cores/ce/hooks/useCaptureLead.ts:66 * kind: hook * core: ce * spec: (none) * summary: In-app capture mutation. Resolves the field contact against existing contactsand persists contact/lead/parked-candidate rows plus the capture audit row\.Returns the outcome and the resolved ids. Gated on . * score: 4 ### hook useCardCaptures * file: src/cores/ce/hooks/useCardCaptures.ts:27 * kind: hook * core: ce * spec: (none) * summary: List card captures for the org, or for a single card when is given.Ordered by descending. * score: 4 ### hook useCEDashboardMetrics * file: src/cores/ce/hooks/useCEDashboardMetrics.ts:184 * kind: hook * core: ce * spec: (none) * summary: Provides cedashboard metrics queries and mutation actions scoped to the current organization. * score: 4 ### hook useCEModuleSettings * file: src/cores/ce/hooks/useCEModuleSettings.ts:15 * kind: hook * core: ce * spec: (none) * summary: Hook for managing CE module settings at the organization levelUses context for organizationId - standardized pattern * score: 1 ### hook useCERecentActivity * file: src/cores/ce/hooks/useCERecentActivity.ts:143 * kind: hook * core: ce * spec: (none) * summary: Hook for managing cerecent activity. * score: 1 ### hook useCESettings * file: src/cores/ce/hooks/useCESettings.ts:16 * kind: hook * core: ce * spec: (none) * summary: Consumer-friendly hook for accessing CE module settings with defaults applied.Usage:This hook provides a clean API for reading settings without needing tohandle null/undefined checks or know about the defaults. * score: 4 ### hook useCollapsedTracks * file: src/cores/ce/hooks/useCollapsedTracks.ts:38 * kind: hook * core: ce * spec: CE-64 * summary: Manages the set of collapsed pipeline tracks for the current org, persisting state andre-hydrating it whenever the active organization changes. * returns: The collapsed-track set plus its setter. * score: 5 ### hook useConsentEvidence * file: src/cores/ce/hooks/useConsentEvidence.ts:57 * kind: hook * core: ce * spec: (none) * summary: Fetch consent evidence timeline for a single contact. * score: 4 ### hook useContact * file: src/cores/ce/hooks/useContact.ts:12 * kind: hook * core: ce * spec: (none) * summary: Hook for managing contact. * score: 1 ### hook useContactDocuments * file: src/cores/ce/hooks/useContactDocuments.ts:19 * kind: hook * core: ce * spec: (none) * summary: List active (non-soft-deleted) documents for a contact. * score: 4 ### hook useContactMerge * file: src/cores/ce/hooks/useContactMerge.ts:37 * kind: hook * core: ce * spec: (none) * summary: Merges two duplicate contacts in one transaction; resolves to the id (the undo handle). * score: 4 ### hook useContactNetwork * file: src/cores/ce/hooks/useContactNetwork.ts:39 * kind: hook * core: ce * spec: (none) * summary: Fetches a 2-degree contact network via two sequential queries. * params: * contactId — The focal contact ID * organizationId — Organization for tenant isolation * focalName — Display name for the focal contact * score: 4 ### hook useContactRelationships * file: src/cores/ce/hooks/useContactRelationships.ts:14 * kind: hook * core: ce * spec: (none) * summary: Fetches active relationships for a contact, joining related contact names. * params: * contactId — The focal contact ID * organizationId — Organization for tenant isolation * score: 4 ### hook useContacts * file: src/cores/ce/hooks/useContacts.ts:38 * kind: hook * core: ce * spec: (none) * summary: Returns paginated contacts with search and filter criteria scoped to one organization. * score: 4 ### hook useContactsForPartnerLinking * file: src/cores/ce/hooks/useContactsForPartnerLinking.ts:23 * kind: hook * core: ce * spec: (none) * summary: Fetch contacts that can be linked to a partner (excludes already-linked contacts) * score: 4 ### hook useContactsWithoutLeads * file: src/cores/ce/hooks/useContactsWithoutLeads.ts:40 * kind: hook * core: ce * spec: (none) * summary: Fetch contacts in an organization that do not have an active lead, optionally filtered by search. Returns a React Query result containing active contacts (id, first\_name, last\_name, email, phone, contact\_type) for the specified organization that are not associated with any lead whose status is not "converted" or "lost". When a string with trimmed length = 2 is provided, results are further filtered by case-insensitive matches against first name, last name, email, or by phone substring. * params: * options — Options controlling the query - organizationId: string: The organization ID to scope contacts and leads (required) - search: string | undefined: Optional search text used to filter contacts; applied when trimmed length = 2 - enabled: boolean | undefined: Optional flag to enable or disable the query (defaults to true) * returns: UseQueryResultDbContact\[], Error - A React Query result containing an array of eligible objects * example: | // Fetch contacts without active leads for an organization with a search termconst data: contacts, isLoading, error = useContactsWithoutLeads( organizationId: 'org\_123', search: 'smith', enabled: true,); * score: 4 ### hook useContractRenewals * file: src/cores/ce/hooks/useContractRenewals.ts:42 * kind: hook * core: ce * spec: (none) * summary: Fetch contracts approaching renewal within (default 90). * score: 4 ### hook useCreateActivity * file: src/cores/ce/hooks/useActivityMutations.ts:26 * kind: hook * core: ce * spec: (none) * summary: Provides a React Query mutation to create a ce\_activities record for the given organization. Creates a new activity row in , enforcing the provided , invalidates the activities list cache for that organization on success, and shows success or error toasts. * params: * organizationId — The organization ID to associate with the created activity; must be a non-empty string. * returns: A React Query mutation object configured to insert an activity (accepts an object matching and resolves to the inserted row). * example: | const createActivity = useCreateActivity(orgId);createActivity.mutate( title: 'Meeting', description: 'Discuss roadmap' ); * score: 4 ### hook useCreateCampaign * file: src/cores/ce/hooks/useCampaignMutations.ts:16 * kind: hook * core: ce * spec: (none) * summary: Hook for managing create campaign. * score: 1 ### hook useCreateContact * file: src/cores/ce/hooks/useContactMutations.ts:14 * kind: hook * core: ce * spec: (none) * summary: Hook for managing create contact. * score: 1 ### hook useCreateLeadConversion * file: src/cores/ce/hooks/useLeadConversions.ts:62 * kind: hook * core: ce * spec: (none) * summary: Mutation hook for inserting a ce\_lead\_conversions audit record.Used by the enhanced convertLead flow in useLeadMutations. * score: 4 ### hook useCreateMilestone * file: src/cores/ce/hooks/usePartnerMilestones.ts:75 * kind: hook * core: ce * spec: (none) * summary: Provides create milestone queries and mutation actions scoped to the current organization. * score: 4 ### hook useCreatePartner * file: src/cores/ce/hooks/usePartnerMutations.ts:26 * kind: hook * core: ce * spec: (none) * summary: Create a React-Query mutation hook to insert a new partner for the given organization. Provides a mutation that inserts a partner row into with the supplied fields plus . On success it invalidates the partners list cache for the organization and shows a success toast; on error it shows an error toast. * params: * organizationId — The organization ID to associate with the new partner; required and must be a non-empty string. * returns: A React Query mutation object that accepts a partner object (all fields except ) and resolves to the inserted partner row. * example: | const createPartner = useCreatePartner(orgId);createPartner.mutate( name: 'Acme Co', ... ); * score: 4 ### hook useCreatePartnerContract * file: src/cores/ce/hooks/usePartnerContracts.ts:68 * kind: hook * core: ce * spec: (none) * summary: Create a new partner contract * score: 1 ### hook useCreatePartnerProgress * file: src/cores/ce/hooks/usePartnerProgressMutation.ts:16 * kind: hook * core: ce * spec: (none) * summary: Hook for managing create partner progress. * score: 1 ### hook useCreateReferralSource * file: src/cores/ce/hooks/useReferralSources.ts:147 * kind: hook * core: ce * spec: (none) * summary: Create a new referral source * score: 1 ### hook useCreateRelationship * file: src/cores/ce/hooks/useContactRelationshipMutations.ts:38 * kind: hook * core: ce * spec: (none) * summary: Creates a bi-directional relationship (two rows) + logs activity. * score: 4 ### hook useCreateScreening * file: src/cores/ce/hooks/useCreateScreening.ts:68 * kind: hook * core: ce * spec: (none) * summary: Mutation hook that creates a screening result + attempt pair.1. Inserts ce\_screening\_results (questionnaire data, triage, ASAM)2. Computes SLA from lead.created\_at → now3. Inserts ce\_screening\_attempts linking to the result4. Publishes ce\_screening\_completed event (consent-gated per 42 CFR Part 2)5. Conditionally publishes ce\_lead\_waitlisted6. Invalidates screening attempt queries * score: 4 ### hook useCreateSlaConfig * file: src/cores/ce/hooks/useScreeningSlaConfig.ts:99 * kind: hook * core: ce * spec: (none) * summary: Mutation hook for creating an SLA config record. * score: 4 ### hook useCreateWebForm * file: src/cores/ce/hooks/useWebForms.ts:122 * kind: hook * core: ce * spec: (none) * summary: Provides create web form queries and mutation actions scoped to the current organization. * score: 4 ### hook useCrisisKeywordMatcher * file: src/cores/ce/hooks/useCrisisKeywordMatcher.ts:49 * kind: hook * core: ce * spec: (none) * summary: Returns a memoized matcher function bound to the org's active keyword set. * score: 4 ### hook useDeactivateMyCard * file: src/cores/ce/hooks/useMyCard.ts:144 * kind: hook * core: ce * spec: (none) * summary: Toggle on the current user's own card. Gated on . * score: 4 ### hook useDeleteActivity * file: src/cores/ce/hooks/useActivityMutations.ts:127 * kind: hook * core: ce * spec: (none) * summary: Provide a mutation hook that deletes a ce\_activities record scoped to an organization. Creates a React Query mutation which performs a hard delete of an activity row from the table, enforcing the provided as a defense-in-depth filter and showing success/error toasts. * params: * organizationId — The current organization ID used to scope and authorize the delete operation; must be a non-empty string. * returns: The React Query mutation object for deleting an activity by its ID. Call or to perform the deletion. * example: | const deleteActivity = useDeleteActivity(orgId);// ImperativedeleteActivity.mutate('activity-id-123');// Async/awaitawait deleteActivity.mutateAsync('activity-id-123'); * score: 4 ### hook useDeleteCampaign * file: src/cores/ce/hooks/useCampaignMutations.ts:91 * kind: hook * core: ce * spec: (none) * summary: Hook for managing delete campaign. * score: 1 ### hook useDeleteContact * file: src/cores/ce/hooks/useContactMutations.ts:97 * kind: hook * core: ce * spec: (none) * summary: Hook for managing delete contact. * score: 1 ### hook useDeleteMilestone * file: src/cores/ce/hooks/usePartnerMilestones.ts:137 * kind: hook * core: ce * spec: (none) * summary: Provides delete milestone queries and mutation actions scoped to the current organization. * score: 4 ### hook useDeletePartner * file: src/cores/ce/hooks/usePartnerMutations.ts:108 * kind: hook * core: ce * spec: (none) * summary: Provides a React Query mutation for soft-deleting a partner scoped to the given organization. Call the mutation with a partner ID to mark that partner's timestamp instead of removing the row. * params: * organizationId — The organization identifier used to scope the deletion; must be a non-empty string. * returns: UseMutationResultvoid, unknown, string, unknown A React Query mutation object for performing the soft-delete. Invoke or with the partner ID. * example: | const deletePartner = useDeletePartner(organizationId);// soft-delete a partnerdeletePartner.mutate('partner-id-123'); * score: 4 ### hook useDeletePartnerContact * file: src/cores/ce/hooks/usePartnerContacts.ts:216 * kind: hook * core: ce * spec: (none) * summary: CE-66: Delete a partner-contact row (linked or standalone).Alias of for standalone rows. The DB trigger clears when the deleted row was primary. * score: 4 ### hook useDeletePartnerContract * file: src/cores/ce/hooks/usePartnerContracts.ts:134 * kind: hook * core: ce * spec: (none) * summary: Soft delete a partner contract * score: 4 ### hook useDeletePartnerProgress * file: src/cores/ce/hooks/usePartnerProgressMutation.ts:82 * kind: hook * core: ce * spec: (none) * summary: Hook for managing delete partner progress. * score: 1 ### hook useDeleteReferralSource * file: src/cores/ce/hooks/useReferralSources.ts:228 * kind: hook * core: ce * spec: (none) * summary: Soft delete a referral source * score: 1 ### hook useDeleteRelationship * file: src/cores/ce/hooks/useContactRelationshipMutations.ts:109 * kind: hook * core: ce * spec: (none) * summary: Soft-deletes a relationship (both directions) + logs activity. * score: 4 ### hook useDeleteWebForm * file: src/cores/ce/hooks/useWebForms.ts:202 * kind: hook * core: ce * spec: (none) * summary: Provides delete web form queries and mutation actions scoped to the current organization. * score: 4 ### hook useDisconnectEmailAccount * file: src/cores/ce/hooks/useEmailAccountMutations.ts:141 * kind: hook * core: ce * spec: (none) * summary: Disconnect (soft delete) an email account * score: 4 ### hook useDownloadContactDocument * file: src/cores/ce/hooks/useContactDocumentMutations.ts:163 * kind: hook * core: ce * spec: (none) * summary: Generate a short-lived signed URL for downloading a document.Returned via mutation so consumers can trigger an action (e.g. open tab). * score: 4 ### hook useDownloadPartnerDocument * file: src/cores/ce/hooks/usePartnerDocumentMutations.ts:196 * kind: hook * core: ce * spec: (none) * summary: Generate a short-lived signed URL for a partner document binary.Returned via mutation so consumers can open the URL on user gesture. * score: 4 ### hook useEmailAccount * file: src/cores/ce/hooks/useEmailAccounts.ts:106 * kind: hook * core: ce * spec: (none) * summary: Fetch a single email account by ID * score: 4 ### hook useEmailAccounts * file: src/cores/ce/hooks/useEmailAccounts.ts:67 * kind: hook * core: ce * spec: (none) * summary: Fetch connected email accounts for current user * score: 4 ### hook useEmailCompose * file: src/cores/ce/hooks/useEmailCompose.ts:46 * kind: hook * core: ce * spec: (none) * summary: Provides email compose queries and mutation actions scoped to the current organization. * score: 4 ### hook useEmailCount * file: src/cores/ce/hooks/useEmailMessages.ts:140 * kind: hook * core: ce * spec: (none) * summary: Get email count for a contact/partner (for tab badges) * score: 4 ### hook useEmailMessage * file: src/cores/ce/hooks/useEmailMessages.ts:117 * kind: hook * core: ce * spec: (none) * summary: Fetch a single email message by ID * score: 4 ### hook useEmailMessages * file: src/cores/ce/hooks/useEmailMessages.ts:61 * kind: hook * core: ce * spec: (none) * summary: Fetch paginated email messages for a contact/partner/lead * score: 4 ### hook useEmailSyncSummary * file: src/cores/ce/hooks/useEmailAccounts.ts:130 * kind: hook * core: ce * spec: (none) * summary: Fetch email sync summary for dashboard widget * score: 4 ### hook useEmailTemplate * file: src/cores/ce/hooks/useEmailTemplates.ts:80 * kind: hook * core: ce * spec: (none) * summary: Fetch a single email template by ID * score: 4 ### hook useEmailTemplateMutations * file: src/cores/ce/hooks/useEmailTemplateMutations.ts:28 * kind: hook * core: ce * spec: (none) * summary: Hook for managing email template mutations. * score: 1 ### hook useEmailTemplates * file: src/cores/ce/hooks/useEmailTemplates.ts:30 * kind: hook * core: ce * spec: (none) * summary: Fetch email templates for the current organization * score: 4 ### hook useEnrollmentMutation * file: src/cores/ce/hooks/useEnrollmentMutation.ts:30 * kind: hook * core: ce * spec: (none) * summary: Provides CE sequence enrollment mutations scoped to one organization. * params: * args — Enrollment mutation args containing . * returns: Mutation objects for , , , , and . * example: | const bulkEnroll = useEnrollmentMutation( organizationId );await bulkEnroll.mutateAsync( sequenceId, leadIds ); * score: 4 ### hook useEventAttendees * file: src/cores/ce/hooks/useEventAttendees.ts:19 * kind: hook * core: ce * spec: (none) * summary: Fetch attendees for an event * score: 1 ### hook useEventDetail * file: src/cores/ce/hooks/useEvents.ts:74 * kind: hook * core: ce * spec: (none) * summary: Fetch a single event by ID * score: 1 ### hook useEventList * file: src/cores/ce/hooks/useEvents.ts:20 * kind: hook * core: ce * spec: (none) * summary: Fetch all events for the current organization * score: 4 ### hook useEventMutations * file: src/cores/ce/hooks/useEvents.ts:103 * kind: hook * core: ce * spec: (none) * summary: Event mutations (create, update, delete) * score: 4 ### hook useFreeBusy * file: src/cores/ce/hooks/useFreeBusy.ts:20 * kind: hook * core: ce * spec: (none) * summary: Hook for fetching free/busy slots from a connected calendar. * params: * params — Free/busy query parameters. Pass null to disable. * score: 1 ### hook useIdentityResolution * file: src/cores/ce/hooks/useIdentityResolution.ts:75 * kind: hook * core: ce * spec: (none) * summary: Resolves a contact-shaped payload against the org's existing contacts,returning ranked matches with tier + matched-on field breakdown. * score: 4 ### hook useIntakeArtifact * file: src/cores/ce/hooks/useIntakeAgent.ts:61 * kind: hook * core: ce * spec: (none) * summary: Read the PF-128 artifact header + its latest version body (RLS-allowed direct selects). * score: 4 ### hook useIntakeAudit * file: src/cores/ce/hooks/useIntakeAgent.ts:185 * kind: hook * core: ce * spec: (none) * summary: Read the content-free PF-127/PF-126/PF-111 audit surface for the thread (reuses the 2d adapter). * score: 4 ### hook useLead * file: src/cores/ce/hooks/useLead.ts:20 * kind: hook * core: ce * spec: (none) * summary: Hook for managing lead. * score: 1 ### hook useLeadClosureMutation * file: src/cores/ce/hooks/useLeadClosureMutation.ts:50 * kind: hook * core: ce * spec: (none) * summary: Hook returning the CE-63 lead-closure mutation. Use inside the closuredialog; the dialog is responsible for collecting and validating fields. * score: 4 ### hook useLeadConversions * file: src/cores/ce/hooks/useLeadConversions.ts:33 * kind: hook * core: ce * spec: (none) * summary: Fetches the conversion history for a specific lead.Returns records ordered by created\_at descending (most recent first). * score: 4 ### hook useLeadConversionWizard * file: src/cores/ce/wizards/lead-conversion/hooks/useLeadConversionWizard.ts:102 * kind: hook * core: ce * spec: (none) * summary: State management for the lead conversion wizard. * score: 4 ### hook useLeadIntakeWizard * file: src/cores/ce/wizards/lead-intake/hooks/useLeadIntakeWizard.ts:113 * kind: hook * core: ce * spec: (none) * summary: Central hook for Lead Intake Wizard state, validation, draft persistence, and submission. * score: 4 ### hook useLeadMutations * file: src/cores/ce/hooks/useLeadMutations.ts:131 * kind: hook * core: ce * spec: (none) * summary: Provides lead mutations queries and mutation actions scoped to the current organization. * score: 4 ### hook useLeads * file: src/cores/ce/hooks/useLeads.ts:94 * kind: hook * core: ce * spec: (none) * summary: Hook for managing leads. * score: 1 ### hook useLeadsByContact * file: src/cores/ce/hooks/useLeadsByContact.ts:17 * kind: hook * core: ce * spec: (none) * summary: Hook for managing leads by contact. * score: 1 ### hook useLeadsByStage * file: src/cores/ce/hooks/useLeadsByStage.ts:48 * kind: hook * core: ce * spec: (none) * summary: Provides leads by stage queries and mutation actions scoped to the current organization. * score: 4 ### hook useLeadStageMutations * file: src/cores/ce/hooks/useLeadStageMutations.ts:51 * kind: hook * core: ce * spec: (none) * summary: Hook for managing lead stage mutations. * score: 1 ### hook useLeadStages * file: src/cores/ce/hooks/useLeadStages.ts:24 * kind: hook * core: ce * spec: (none) * summary: Hook for fetching lead stages for the current organization.CE-64: pass to scope to one pipeline track. Without a the hook returns all active stages across all tracks in the org (legacybehavior for callers that aggregate across tracks). * score: 1 ### hook useLinkContactToPartner * file: src/cores/ce/hooks/usePartnerContacts.ts:50 * kind: hook * core: ce * spec: (none) * summary: Link a contact to a partner * score: 1 ### hook useLocalDraft * file: src/cores/ce/wizards/lead-intake/hooks/useLocalDraft.ts:32 * kind: hook * core: ce * spec: (none) * summary: Simple localStorage-based draft persistence for wizard form data.This store is unencrypted, survives logout, and is readable by any script onthe origin, so it MUST NOT receive PHI. It does not inspect or filter what itis given — callers are responsible for excluding PHI from the value they save.The lead-intake wizard enforces this by stripping insurance PHI (member\_id,payer, coverage dates) before and never rehydrating it on load(see ). Only operational lead fields (names, phone, email)are persisted. * score: 4 ### hook useLogContractRenewal * file: src/cores/ce/hooks/useContractRenewalLogMutation.ts:38 * kind: hook * core: ce * spec: (none) * summary: Append an entry to . Invalidates the renewalsdashboard so the UI reflects the latest state. * score: 4 ### hook useMatchCampaign * file: src/cores/ce/hooks/useLeadAttribution.ts:47 * kind: hook * core: ce * spec: (none) * summary: Hook to match UTM params to campaigns * score: 4 ### hook useMatchCandidates * file: src/cores/ce/hooks/useMatchCandidates.ts:38 * kind: hook * core: ce * spec: (none) * summary: Lists the org's match candidates (default: pending review queue), joinedwith both contacts' display fields for the side-by-side compare drawer. * score: 4 ### hook useMemberCards * file: src/cores/ce/hooks/useMemberCards.ts:28 * kind: hook * core: ce * spec: (none) * summary: Admin list of all member cards in the org, newest first. Gated on . * score: 4 ### hook useMergeLog * file: src/cores/ce/hooks/useContactMerge.ts:82 * kind: hook * core: ce * spec: (none) * summary: Merge-log entries for the org (newest first), optionally scoped to onecontact (survivor or merged side) — powers the merged-record banner andthe undo affordance. * score: 4 ### hook useMobileContactDetail * file: src/cores/ce/hooks/useMobileCrm.ts:54 * kind: hook * core: ce * spec: (none) * summary: Fetches a single contact and records it in the LRU recent views. * score: 4 ### hook useMobileContactSearch * file: src/cores/ce/hooks/useMobileCrm.ts:32 * kind: hook * core: ce * spec: (none) * summary: Mobile-optimized contact search with debouncing.Sorts by last\_name asc (inherits from useContacts). * score: 4 ### hook useMobilePartnerDetail * file: src/cores/ce/hooks/useMobileCrm.ts:85 * kind: hook * core: ce * spec: (none) * summary: Fetches a single partner and records it in the LRU recent views. * score: 4 ### hook useMyCard * file: src/cores/ce/hooks/useMyCard.ts:49 * kind: hook * core: ce * spec: (none) * summary: Read the current user's own card for the active org (null if none yet). * score: 4 ### hook useOfflineActivityQueue * file: src/cores/ce/hooks/useOfflineActivityQueue.ts:95 * kind: hook * core: ce * spec: (none) * summary: Hook for enqueuing offline activities and syncing them to ce\_activities. * score: 1 ### hook useOfflineContactCache * file: src/cores/ce/hooks/useOfflineContactCache.ts:37 * kind: hook * core: ce * spec: (none) * summary: Hook providing cached contact/partner entries from the LRU store.Useful for displaying recently viewed items when offline. * score: 4 ### hook useOfflineQueueStatus * file: src/cores/ce/hooks/useOfflineActivityQueue.ts:38 * kind: hook * core: ce * spec: (none) * summary: Provides the current offline queue status (pending count, full flag, online state). * score: 4 ### hook useOrgCalendarCapability * file: src/cores/ce/hooks/useOrgCalendarCapability.ts:26 * kind: hook * core: ce * spec: (none) * summary: Determine whether the current user may schedule through the org's GoogleWorkspace calendar via PF-101 domain-wide delegation. * score: 4 ### hook usePartner * file: src/cores/ce/hooks/usePartner.ts:14 * kind: hook * core: ce * spec: (none) * summary: Provides partner queries and mutation actions scoped to the current organization. * score: 4 ### hook usePartnerContacts * file: src/cores/ce/hooks/usePartnerContacts.ts:20 * kind: hook * core: ce * spec: (none) * summary: Fetch all contacts linked to a partner * score: 4 ### hook usePartnerContract * file: src/cores/ce/hooks/usePartnerContracts.ts:42 * kind: hook * core: ce * spec: (none) * summary: Fetch a single contract by ID * score: 1 ### hook usePartnerContracts * file: src/cores/ce/hooks/usePartnerContracts.ts:16 * kind: hook * core: ce * spec: (none) * summary: Fetch all contracts for a partner * score: 4 ### hook usePartnerHealthDashboard * file: src/cores/ce/hooks/usePartnerHealthDashboard.ts:65 * kind: hook * core: ce * spec: (none) * summary: Hook for fetching aggregated partner health metrics for dashboard. * returns: error - If present, use before displaying to users * score: 1 ### hook usePartnerMilestones * file: src/cores/ce/hooks/usePartnerMilestones.ts:30 * kind: hook * core: ce * spec: (none) * summary: Provides partner milestones queries and mutation actions scoped to the current organization. * score: 4 ### hook usePartnerMutations * file: src/cores/ce/hooks/usePartnerMutations.ts:138 * kind: hook * core: ce * spec: (none) * summary: Legacy convenience wrapper for partner mutations. * score: 4 ### hook usePartnerOnboardingWizard * file: src/cores/ce/wizards/partner-onboarding/hooks/usePartnerOnboardingWizard.ts:111 * kind: hook * core: ce * spec: (none) * summary: Central hook for Partner Onboarding Wizard state, validation, draft persistence, and submission. * score: 4 ### hook usePartnerProgressList * file: src/cores/ce/hooks/usePartnerProgressList.ts:36 * kind: hook * core: ce * spec: (none) * summary: Provides partner progress list queries and mutation actions scoped to the current organization. * score: 4 ### hook usePartnerProgressReview * file: src/cores/ce/wizards/partner-progress-review/hooks/usePartnerProgressReview\.ts:72 * kind: hook * core: ce * spec: (none) * summary: Central hook for Partner Progress Review Wizard. * score: 4 ### hook usePartners * file: src/cores/ce/hooks/usePartners.ts:41 * kind: hook * core: ce * spec: (none) * summary: Provides partners queries and mutation actions scoped to the current organization. * score: 4 ### hook usePartnerScorecard * file: src/cores/ce/hooks/usePartnerScorecard.ts:87 * kind: hook * core: ce * spec: (none) * summary: Hook for fetching partner scorecard metrics * params: * options — Configuration for sorting and filtering * returns: Query result with partner scorecard metrics * score: 1 ### hook usePendingMatchCandidateCount * file: src/cores/ce/hooks/useMatchCandidates.ts:154 * kind: hook * core: ce * spec: (none) * summary: Count of pending candidates — review-queue badge. * score: 4 ### hook usePhiBlockCheck * file: src/cores/ce/hooks/usePhiBlockCheck.ts:35 * kind: hook * core: ce * spec: (none) * summary: Check if a message contains PHI and whether it should be blocked * params: * message — The message text to check * returns: PHI check result with block/warn status * score: 4 ### hook usePhoneInputFormatting * file: src/cores/ce/hooks/usePhoneInputFormatting.ts:19 * kind: hook * core: ce * spec: (none) * summary: Hook for phone input formattingReturns handlers for onChange that format input while preserving raw digits for storage * score: 1 ### hook usePipelineContactHasAlertTag * file: src/cores/ce/components/pipeline/pipelineTagsContext.ts:31 * kind: hook * core: ce * spec: (none) * summary: CE-65 tile-metadata contract: returns whether the contact has at least onealert tag assigned. Derived from the same in-memory map as the tag chipsso no extra query is needed. * score: 4 ### hook usePipelineContactTags * file: src/cores/ce/components/pipeline/pipelineTagsContext.ts:20 * kind: hook * core: ce * spec: CE-61 * summary: Reads the tags assigned to a single contact from the pipeline tags context, returning when the context is absent or no contact id is supplied. * params: * contactId — Contact whose tags to look up; nullish ids yield . * returns: The contact's tags, or when unavailable. * score: 5 ### hook usePipelineMetrics * file: src/cores/ce/hooks/usePipelineMetrics.ts:113 * kind: hook * core: ce * spec: (none) * summary: Hook for fetching pipeline metrics with configurable options * params: * options — Configuration for date range and polling * returns: Query result with pipeline summary and stage metrics * score: 1 ### hook usePublishSequence * file: src/cores/ce/wizards/sequences/hooks/usePublishSequence.ts:47 * kind: hook * core: ce * spec: (none) * summary: Mutation hook that calls the ce\_publish\_sequence RPC. * score: 4 ### hook useRealtimeSmsMessages * file: src/cores/ce/hooks/useRealtimeSmsMessages.ts:31 * kind: hook * core: ce * spec: (none) * summary: Hook for managing realtime sms messages. * score: 1 ### hook useRecalculateAllSegments * file: src/cores/ce/hooks/useSegmentMembership.ts:90 * kind: hook * core: ce * spec: (none) * summary: Recalculate all segments for the organization * score: 4 ### hook useRecalculateSegment * file: src/cores/ce/hooks/useSegmentMembership.ts:59 * kind: hook * core: ce * spec: (none) * summary: Recalculate segment membership count * score: 4 ### hook useRecordConsentEvidence * file: src/cores/ce/hooks/useConsentEvidence.ts:105 * kind: hook * core: ce * spec: (none) * summary: Append a new consent evidence record. Append-only — no update/delete. * score: 4 ### hook useReferralAttemptMutations * file: src/cores/ce/hooks/useReferralAttempts.ts:198 * kind: hook * core: ce * spec: (none) * summary: Convenience wrapper mirroring useReferralSourceMutations. * score: 4 ### hook useReferralSource * file: src/cores/ce/hooks/useReferralSources.ts:121 * kind: hook * core: ce * spec: (none) * summary: Fetch a single referral source by ID * score: 4 ### hook useReferralSourceMutations * file: src/cores/ce/hooks/useReferralSources.ts:183 * kind: hook * core: ce * spec: (none) * summary: Legacy convenience wrapper for create/update/delete referral source mutations. * score: 4 ### hook useReferralSources * file: src/cores/ce/hooks/useReferralSources.ts:38 * kind: hook * core: ce * spec: (none) * summary: Fetch paginated list of referral sources * score: 4 ### hook useRejectIntake * file: src/cores/ce/hooks/useIntakeAgent.ts:163 * kind: hook * core: ce * spec: (none) * summary: Deny: transition the artifact draft→rejected (no write). Allowed for a holder of pf.artifact.verify. * score: 4 ### hook useRemoveQueueMember * file: src/cores/ce/hooks/useAssignmentQueue.ts:144 * kind: hook * core: ce * spec: (none) * summary: Provides remove queue member queries and mutation actions scoped to the current organization. * score: 4 ### hook useReorderQueueMembers * file: src/cores/ce/hooks/useAssignmentQueue.ts:223 * kind: hook * core: ce * spec: (none) * summary: Provides reorder queue members queries and mutation actions scoped to the current organization. * score: 4 ### hook useResolveMatchCandidate * file: src/cores/ce/hooks/useMatchCandidates.ts:91 * kind: hook * core: ce * spec: (none) * summary: Flips a single candidate to or , recording reviewer +timestamp (AC-5 then-leg). Merge resolution happens via (the merge RPC settles involved candidates itself). * score: 4 ### hook useRingCentralRemoteExtensions * file: src/cores/ce/hooks/useRingCentralRemoteExtensions.ts:27 * kind: hook * core: ce * spec: (none) * summary: Hook to fetch RingCentral extensions directly from the RingCentral APIvia the ringcentral-list-extensions edge function. * score: 4 ### hook useRingCentralWizard * file: src/cores/ce/hooks/useRingCentralWizard.ts:130 * kind: hook * core: ce * spec: (none) * summary: Provides state and actions to drive the RingCentral setup wizard, including step navigation, completion tracking, prerequisite checks, and per-organization draft persistence. * returns: An object with the wizard state, prerequisite status, navigation helpers, and completion controls:- (number): Active wizard step.- (number\[]): Steps marked as completed.- (number): Total number of steps in the wizard.- (PrerequisiteStatus | null): Latest prerequisite check result or if not loaded.- (boolean): Whether prerequisites are currently being fetched.- (unknown): Error from the prerequisites check, if any.- (function): Function to re-run the prerequisites check.- (function): Jump to a valid step between 1 and .- (function): Advance to the next step and mark the current step complete.- (function): Move to the previous step.- (function): Mark a specific step as completed.- (function): Return if is marked complete.- (function): Finalize the wizard, clear the draft, show a completion toast, and navigate to the CE settings page.- (function): Cancel the wizard, clear the draft, and navigate to the CE settings page. * score: 4 ### hook useScheduleMeeting * file: src/cores/ce/hooks/useScheduleMeeting.ts:18 * kind: hook * core: ce * spec: (none) * summary: Hook for scheduling a meeting through a connected calendar. * score: 1 ### hook useScheduleOrgMeeting * file: src/cores/ce/hooks/useScheduleOrgMeeting.ts:57 * kind: hook * core: ce * spec: (none) * summary: Hook for scheduling a meeting on the org Google Workspace calendar via PF-101. * score: 1 ### hook useScreeningAttempts * file: src/cores/ce/hooks/useScreeningAttempts.ts:18 * kind: hook * core: ce * spec: (none) * summary: Fetches all screening attempts for a given lead, ordered most recent first.Includes screener profile (id, full\_name) via join. * score: 4 ### hook useScreeningQuestionnaire * file: src/cores/ce/hooks/useScreeningQuestionnaire.ts:18 * kind: hook * core: ce * spec: (none) * summary: Fetches the active screening questionnaire for the specified program type.Returns the highest-version active questionnaire. * score: 4 ### hook useScreeningSlaConfigs * file: src/cores/ce/hooks/useScreeningSlaConfig.ts:22 * kind: hook * core: ce * spec: (none) * summary: Fetches all SLA config records for the current organization. * score: 4 ### hook useScreeningSlaThreshold * file: src/cores/ce/hooks/useScreeningSlaConfig.ts:50 * kind: hook * core: ce * spec: (none) * summary: Fetches the SLA threshold for a specific program type + optional site.Falls back to org-level config if no site-specific config exists. * score: 4 ### hook useSegmentDetail * file: src/cores/ce/hooks/useSegments.ts:63 * kind: hook * core: ce * spec: (none) * summary: Fetch a single segment by ID * score: 1 ### hook useSegmentList * file: src/cores/ce/hooks/useSegments.ts:25 * kind: hook * core: ce * spec: (none) * summary: Fetch all segments for the current organization * score: 4 ### hook useSegmentMembers * file: src/cores/ce/hooks/useSegmentMembership.ts:122 * kind: hook * core: ce * spec: (none) * summary: Get segment members * score: 1 ### hook useSegmentMutations * file: src/cores/ce/hooks/useSegments.ts:92 * kind: hook * core: ce * spec: (none) * summary: Segment mutations (create, update, delete) * score: 4 ### hook useSegmentPreview * file: src/cores/ce/hooks/useSegmentMembership.ts:17 * kind: hook * core: ce * spec: (none) * summary: Preview segment member count based on criteriaUses debounced calls to avoid excessive DB queries * score: 4 ### hook useSequenceDetail * file: src/cores/ce/hooks/useSequenceDetail.ts:13 * kind: hook * core: ce * spec: (none) * summary: Fetches sequence detail (including related steps) for one sequence within an organization. * params: * sequenceId — Sequence id to load, or to disable the lookup. * organizationId — Active organization id, or when org context is unavailable. * returns: React Query result resolving to ; returns when ids are missing and throws on Supabase query errors. * score: 4 ### hook useSequenceList * file: src/cores/ce/hooks/useSequenceList.ts:25 * kind: hook * core: ce * spec: (none) * summary: Returns CE sequences for the active organization with optional status and search filtering. * params: * organizationId — Active organization id used for tenant scoping. * filters — Optional (, ). * returns: React Query result containing an array of rows for the organization. * score: 4 ### hook useSequenceMutation * file: src/cores/ce/hooks/useSequenceMutation.ts:17 * kind: hook * core: ce * spec: (none) * summary: Provides CE sequence mutations scoped to one organization. * params: * args — Sequence mutation arguments containing . * returns: Mutation objects: , , , , and . * score: 4 ### hook useSetPrimaryContact * file: src/cores/ce/hooks/usePartnerContacts.ts:109 * kind: hook * core: ce * spec: (none) * summary: Set a contact as the primary contact for a partnerNote: The database trigger will automatically sync this to ce\_partners.primary\_contact\_id * score: 4 ### hook useSmsConsent * file: src/cores/ce/hooks/useSmsConsent.ts:50 * kind: hook * core: ce * spec: (none) * summary: Hook to fetch SMS consent records * score: 4 ### hook useSmsConsentByPhone * file: src/cores/ce/hooks/useSmsConsent.ts:109 * kind: hook * core: ce * spec: (none) * summary: Hook to fetch a single consent record by phone number * score: 4 ### hook useSmsConsentMutations * file: src/cores/ce/hooks/useSmsConsentMutations.ts:40 * kind: hook * core: ce * spec: (none) * summary: Hook for SMS consent mutations * score: 1 ### hook useSmsContactMatch * file: src/cores/ce/hooks/useSmsContactMatch.ts:34 * kind: hook * core: ce * spec: (none) * summary: Find a contact by phone numberSearches both phone and mobile\_phone columns * params: * phoneNumber — Phone number to search (any format) * options — Query options * score: 4 ### hook useSmsContactMatchBatch * file: src/cores/ce/hooks/useSmsContactMatch.ts:76 * kind: hook * core: ce * spec: (none) * summary: Find multiple contacts by phone numbers (batch matching)Useful for matching multiple inbound messages * params: * phoneNumbers — Array of phone numbers to search * options — Query options * score: 4 ### hook useSmsMessages * file: src/cores/ce/hooks/useSmsMessages.ts:59 * kind: hook * core: ce * spec: (none) * summary: Hook to fetch SMS messages * score: 1 ### hook useSmsMessagesMutations * file: src/cores/ce/hooks/useSmsMessagesMutations.ts:70 * kind: hook * core: ce * spec: (none) * summary: Hook for SMS message mutations * score: 1 ### hook useSmsNotifications * file: src/cores/ce/hooks/useSmsNotifications.ts:36 * kind: hook * core: ce * spec: (none) * summary: Hook for real-time SMS notification toasts * score: 1 ### hook useSmsSend * file: src/cores/ce/hooks/useSmsSend.ts:57 * kind: hook * core: ce * spec: (none) * summary: Hook for sending SMS messages via edge function * score: 1 ### hook useSmsSettings * file: src/cores/ce/hooks/useSmsSettings.ts:32 * kind: hook * core: ce * spec: (none) * summary: Hook for managing SMS-specific settings * score: 1 ### hook useSmsTemplate * file: src/cores/ce/hooks/useSmsTemplates.ts:84 * kind: hook * core: ce * spec: (none) * summary: Fetch a single SMS template by ID * score: 4 ### hook useSmsTemplateMutations * file: src/cores/ce/hooks/useSmsTemplateMutations.ts:38 * kind: hook * core: ce * spec: (none) * summary: Provides sms template mutations queries and mutation actions scoped to the current organization. * score: 4 ### hook useSmsTemplates * file: src/cores/ce/hooks/useSmsTemplates.ts:43 * kind: hook * core: ce * spec: (none) * summary: Fetch SMS templates for the current organization * score: 4 ### hook useSoftDeleteContactDocument * file: src/cores/ce/hooks/useContactDocumentMutations.ts:132 * kind: hook * core: ce * spec: (none) * summary: Soft-delete a contact document by setting .The underlying storage object is intentionally preserved (FR-1.6). * score: 4 ### hook useSoftDeletePartnerDocument * file: src/cores/ce/hooks/usePartnerDocumentMutations.ts:166 * kind: hook * core: ce * spec: (none) * summary: Soft-delete a partner document by setting . Storage objects areintentionally preserved (versioning audit trail). * score: 4 ### hook useStaleLeadCount * file: src/cores/ce/hooks/useStaleLeadCount.ts:33 * kind: hook * core: ce * spec: (none) * summary: Counts active leads older than the configured stale threshold and refreshes periodically. * score: 4 ### hook useStartIntakeRun * file: src/cores/ce/hooks/useIntakeAgent.ts:46 * kind: hook * core: ce * spec: (none) * summary: Start a run: invoke('start') → server opens run+thread, reads, writes the draft artifact. * score: 4 ### hook useSubmitToOptum * file: src/cores/ce/hooks/priorAuth/usePriorAuthSubmissions.ts:99 * kind: hook * core: ce * spec: (none) * summary: Invoke the ce-submit-optum-pa edge function (AC-3 / AC-6). * score: 4 ### hook useSuppressionCheck * file: src/cores/ce/hooks/useSuppressions.ts:190 * kind: hook * core: ce * spec: (none) * summary: Check whether a contact is suppressed for the given channel.Returns . always counts as suppressed. * score: 4 ### hook useSuppressionMutations * file: src/cores/ce/hooks/useSuppressions.ts:241 * kind: hook * core: ce * spec: (none) * summary: Mutation hooks for suppressions: upsert (create/update) and remove. * score: 4 ### hook useSuppressions * file: src/cores/ce/hooks/useSuppressions.ts:68 * kind: hook * core: ce * spec: (none) * summary: List suppressions for the current organization, optionally filtered by channel/contact. * score: 4 ### hook useSuppressionsPaginated * file: src/cores/ce/hooks/useSuppressions.ts:128 * kind: hook * core: ce * spec: (none) * summary: Server-side paginated + filtered suppression list for the current organization.Uses Supabase + for true server-side pagination sothe dataset can scale beyond the default 1000-row query limit. * score: 4 ### hook useSyncEmailAccount * file: src/cores/ce/hooks/useEmailAccountMutations.ts:27 * kind: hook * core: ce * spec: (none) * summary: Trigger manual sync for an email account * score: 4 ### hook useTestOptumConnection * file: src/cores/ce/hooks/priorAuth/useOptumCredentials.ts:51 * kind: hook * core: ce * spec: (none) * summary: Lightweight connection check (FR-16): confirms both credentials are stored.A live portal probe is not possible from the browser/edge runtime; the livesmoke against pct.my.site.com is a pre-go-live manual step. * score: 4 ### hook useToggleEmailSync * file: src/cores/ce/hooks/useEmailAccountMutations.ts:99 * kind: hook * core: ce * spec: (none) * summary: Toggle sync enabled/disabled for an account * score: 4 ### hook useToggleQueueMemberStatus * file: src/cores/ce/hooks/useAssignmentQueue.ts:182 * kind: hook * core: ce * spec: (none) * summary: Provides toggle queue member status queries and mutation actions scoped to the current organization. * score: 4 ### hook useToggleWebFormStatus * file: src/cores/ce/hooks/useWebForms.ts:239 * kind: hook * core: ce * spec: (none) * summary: Provides toggle web form status queries and mutation actions scoped to the current organization. * score: 4 ### hook useUndoMerge * file: src/cores/ce/hooks/useContactMerge.ts:60 * kind: hook * core: ce * spec: (none) * summary: Undoes a merge inside the org's undo window; resolves to the restoredcontact id. * score: 4 ### hook useUnlinkContactFromPartner * file: src/cores/ce/hooks/usePartnerContacts.ts:81 * kind: hook * core: ce * spec: (none) * summary: Unlink a contact from a partner * score: 4 ### hook useUpdateActivity * file: src/cores/ce/hooks/useActivityMutations.ts:72 * kind: hook * core: ce * spec: (none) * summary: Update an existing activity scoped to the given organization. Performs a defense-in-depth update of a row filtered by and , sets to the current timestamp, and returns the updated row. On success the hook invalidates the organization's activities list and the specific activity cache entry, and shows a success toast. On error it shows a sanitized error toast. * params: * organizationId — The organization ID used to scope and authorize the update operation * returns: UseMutationResultDbActivity, unknown, DbActivityUpdate & id: string , unknown - A React Query mutation object for performing activity updates * example: | const updateActivity = useUpdateActivity('org\_123');updateActivity.mutate( id: 'act\_456', description: 'Updated description' ); * score: 4 ### hook useUpdateCampaign * file: src/cores/ce/hooks/useCampaignMutations.ts:52 * kind: hook * core: ce * spec: (none) * summary: Hook for managing update campaign. * score: 1 ### hook useUpdateContact * file: src/cores/ce/hooks/useContactMutations.ts:64 * kind: hook * core: ce * spec: (none) * summary: Hook for managing update contact. * score: 1 ### hook useUpdateEmailAccount * file: src/cores/ce/hooks/useEmailAccountMutations.ts:181 * kind: hook * core: ce * spec: (none) * summary: Update email account settings * score: 1 ### hook useUpdateMilestone * file: src/cores/ce/hooks/usePartnerMilestones.ts:105 * kind: hook * core: ce * spec: (none) * summary: Provides update milestone queries and mutation actions scoped to the current organization. * score: 4 ### hook useUpdatePartner * file: src/cores/ce/hooks/usePartnerMutations.ts:65 * kind: hook * core: ce * spec: (none) * summary: Creates a React-Query mutation for updating a partner within a given organization. Returns a mutation hook that updates a partner row in , scoped to the provided , invalidates related query cache on success, and shows toast notifications for success or error. * params: * organizationId — The organization id to scope the update to; must be a non-empty string. * returns: The mutation result (React Query useMutation) configured to perform partner updates. * example: | const updatePartner = useUpdatePartner(currentOrganizationId);updatePartner.mutate( id: 'partner-id', name: 'New Name' ); * score: 4 ### hook useUpdatePartnerContract * file: src/cores/ce/hooks/usePartnerContracts.ts:100 * kind: hook * core: ce * spec: (none) * summary: Update an existing partner contract * score: 4 ### hook useUpdatePartnerProgress * file: src/cores/ce/hooks/usePartnerProgressMutation.ts:48 * kind: hook * core: ce * spec: (none) * summary: Hook for managing update partner progress. * score: 1 ### hook useUpdatePriorAuthStatus * file: src/cores/ce/hooks/priorAuth/usePriorAuthSubmissions.ts:67 * kind: hook * core: ce * spec: (none) * summary: Manual decision update when Optum responds by phone/mail (AC-4, FR-13). * score: 4 ### hook useUpdateReferralSource * file: src/cores/ce/hooks/useReferralSources.ts:194 * kind: hook * core: ce * spec: (none) * summary: Update an existing referral source * score: 4 ### hook useUpdateWebForm * file: src/cores/ce/hooks/useWebForms.ts:162 * kind: hook * core: ce * spec: (none) * summary: Provides update web form queries and mutation actions scoped to the current organization. * score: 4 ### hook useUploadContactDocument * file: src/cores/ce/hooks/useContactDocumentMutations.ts:44 * kind: hook * core: ce * spec: (none) * summary: Upload a contact document: validates, inserts metadata, uploads to storage,and rolls back the metadata row if storage upload fails. * score: 4 ### hook useUploadPartnerDocument * file: src/cores/ce/hooks/usePartnerDocumentMutations.ts:70 * kind: hook * core: ce * spec: (none) * summary: Upload a partner document: validates, inserts metadata, uploads to storage,and rolls back the metadata row if the storage upload fails. * score: 4 ### hook useUpsertMyCard * file: src/cores/ce/hooks/useMyCard.ts:77 * kind: hook * core: ce * spec: (none) * summary: Create or update the current user's card. On create, generates a unique slugand retries once with a fresh suffix if the global slug constraint trips.Gated on . * score: 4 ### hook useUpsertPartnerContact * file: src/cores/ce/hooks/usePartnerContacts.ts:153 * kind: hook * core: ce * spec: (none) * summary: CE-66: Insert or update a partner-contact row (linked or standalone).If is provided, performs an UPDATE; otherwise INSERT. When is true,any sibling primary rows are unset first so the partial unique constraint is satisfied. * score: 4 ### hook useWebFormDetail * file: src/cores/ce/hooks/useWebForms.ts:88 * kind: hook * core: ce * spec: (none) * summary: Provides web form detail queries and mutation actions scoped to the current organization. * score: 4 ### hook useWebFormList * file: src/cores/ce/hooks/useWebForms.ts:42 * kind: hook * core: ce * spec: (none) * summary: Provides web form list queries and mutation actions scoped to the current organization. * score: 4 ### hook useWebFormSubmissions * file: src/cores/ce/hooks/useWebFormSubmissions.ts:38 * kind: hook * core: ce * spec: (none) * summary: Hook for managing web form submissions. * score: 1 ### hook useWebFormSubmissionStats * file: src/cores/ce/hooks/useWebFormSubmissions.ts:97 * kind: hook * core: ce * spec: (none) * summary: Hook for managing web form submission stats. * score: 1 ## Components ### component ActivityAnalyticsPage * file: src/cores/ce/pages/ActivityAnalyticsPage.tsx:17 * kind: component * core: ce * spec: (none) * summary: Utility for activity analytics page. * score: 1 ### component ActivityDialog * file: src/cores/ce/components/ActivityDialog.tsx:22 * kind: component * core: ce * spec: (none) * summary: Hosts the activity form in a dialog and closes on submit or cancel. * score: 2 ### component ActivityForm * file: src/cores/ce/components/ActivityForm.tsx:88 * kind: component * core: ce * spec: (none) * summary: Utility for activity form. * score: 1 ### component ActivitySearchFilters * file: src/cores/ce/components/ActivitySearchFilters.tsx:52 * kind: component * core: ce * spec: (none) * summary: Utility for activity search filters. * score: 1 ### component ActivityTimeline * file: src/cores/ce/components/ActivityTimeline.tsx:70 * kind: component * core: ce * spec: (none) * summary: Renders a chronological activity timeline for a subject with filtering, pagination, and loading/error/empty states.The component fetches and accumulates pages of activities, supports filtering by activity type, and provides a "Load More" controlwhen additional pages are available. It also handles initial loading, incremental loading, error retry, and an empty state tailoredto the active filter. * params: * organizationId — The ID of the organization the subject belongs to. * subjectType — The subject kind: either or . * subjectId — The ID of the subject whose activities should be displayed. * showFilters — When (default), display the activity type filter UI. * maxHeight — Optional CSS value applied as the timeline's max-height to enable an internal scrollable area (e.g., ). * returns: A React element containing the activity timeline UI. * example: | ActivityTimeline organizationId="org\_123" subjectType="contact" subjectId="contact\_456" showFilters=true maxHeight="480px"/Accessibility:- The activity-type SelectTrigger includes an ARIA label ("Filter activities by type") to announce the filter control to assistive technologies. * score: 4 ### component ActivityTimelineItem * file: src/cores/ce/components/ActivityTimelineItem.tsx:95 * kind: component * core: ce * spec: (none) * summary: Renders a timeline entry for a single activity, including icon, labels, timestamp, details, and optional follow-up task link.Renders the activity's type-specific icon and color, a relative activity date (or "Unknown date" if invalid), creator name, subject, description, outcome, follow-up date, duration, call-specific badges (direction and disposition), and a linked task status badge when a follow-up task exists. - activity: The activity record to render. Expected shape matches ActivityListItem: includes fields like , , , , , , , , , and . - showConnector: Whether to render the vertical timeline connector line to the left of the item. Defaults to . * returns: The rendered timeline item element for the given activity. * example: | ActivityTimelineItem activity=activity showConnector=false /Accessibility considerations:- The timeline connector is marked aria-hidden.- Icons used are marked aria-hidden and important textual information (labels, dates, creator) is rendered as text for screen readers. * score: 5 ### component ActivityTimelineSkeleton * file: src/cores/ce/components/ActivityTimelineSkeleton.tsx:15 * kind: component * core: ce * spec: (none) * summary: Renders the activity timeline skeleton interface. * score: 2 ### component AdditionalContactsStep * file: src/cores/ce/wizards/partner-onboarding/steps/AdditionalContactsStep.tsx:21 * kind: component * core: ce * spec: (none) * summary: Step 3: Add optional additional contacts. * score: 2 ### component AddLeadDialog * file: src/cores/ce/components/AddLeadDialog.tsx:111 * kind: component * core: ce * spec: (none) * summary: Renders a dialog for creating a new lead by selecting an existing contact or creating a new one,and capturing partner, campaign attribution, source, expected admission date, and notes.This component manages contact search, default lead stage selection, and submits a create-lead mutation. * params: * props — Component props - open: Controls whether the dialog is open - onOpenChange: Callback invoked with the new open state when the dialog is opened or closedAccessibility:- The contact selector is implemented as a combobox-like popover with a labeled trigger and keyboard-accessible search.- Action buttons include accessible labels (e.g., the "Create new contact" button has an aria-label). * example: | AddLeadDialog open=isDialogOpen onOpenChange=(open) = setIsDialogOpen(open) / * score: 4 ### component AddLeadDialogTrackField * file: src/cores/ce/components/AddLeadDialog.tsx:73 * kind: component * core: ce * spec: (none) * summary: CE-64-EN-01 AC-1: Pipeline track picker for the AddLeadDialog form.Lets the user explicitly pick a pipeline track for the new lead; defaults toautomatic track selection (based on services) when left unset. * params: * props — Component props - value: The currently selected track id, or null for auto-selection - onChange: Callback invoked with the selected track id * score: 2 ### component AddSuppressionDialog * file: src/cores/ce/components/compliance/AddSuppressionDialog.tsx:39 * kind: component * core: ce * spec: CE-16 * summary: Dialog for adding or editing a contact's communication suppression, letting staff suppress allchannels or toggle email/SMS/phone individually before upserting the record. * score: 3 ### component AiExtractionSettingsCard * file: src/cores/ce/components/settings/AiExtractionSettingsCard.tsx:22 * kind: component * core: ce * spec: (none) * summary: CE-59 Phase 2 admin enablement card.Per-tenant toggle for AI document extraction on contact documents.Default OFF. Enabling requires explicit compliance acknowledgment ofCAC-2..6 controls (PHI redaction preflight, 42 CFR Part 2 fail-closed,confirm-only writes, append-only audit). Visibility/usage is also gatedby the permission. * score: 2 ### component AssigneeFilterSelect * file: src/cores/ce/components/AssigneeFilterSelect.tsx:39 * kind: component * core: ce * spec: CE-62 * summary: Dropdown that filters the lead pipeline by assignee, offering "All Users" (gated by), "Assigned to Me", "Unassigned", and an alphabetised list of active staff. * score: 3 ### component AssignmentQueueMemberItem * file: src/cores/ce/components/web-forms/AssignmentQueueMemberItem.tsx:26 * kind: component * core: ce * spec: (none) * summary: Renders the assignment queue member item interface. * score: 2 ### component AssignmentQueueMemberSearch * file: src/cores/ce/components/web-forms/AssignmentQueueMemberSearch.tsx:28 * kind: component * core: ce * spec: (none) * summary: Utility for assignment queue member search. * score: 1 ### component AssignmentQueuePanel * file: src/cores/ce/components/web-forms/AssignmentQueuePanel.tsx:46 * kind: component * core: ce * spec: (none) * summary: Manages round-robin assignment members with drag reorder, status toggles, and add/remove actions. * score: 2 ### component AssignmentStep * file: src/cores/ce/wizards/lead-intake/steps/AssignmentStep.tsx:32 * kind: component * core: ce * spec: (none) * summary: Lead-intake wizard step: choose the assigned intake coordinator (or leave thelead Unassigned to route it through the CE-62 assignment queue). * score: 2 ### component BedBoardEmbed * file: src/cores/ce/components/BedBoardEmbed.tsx:37 * kind: component * core: ce * spec: CE-72 * summary: Read-only bed-availability widget for the pipeline. See file header. * score: 3 ### component BedBoardSettingsCard * file: src/cores/ce/components/settings/BedBoardSettingsCard.tsx:19 * kind: component * core: ce * spec: (none) * summary: Card toggling the Auth-risk tile on the pipeline bed-availability widget. * score: 2 ### component BulkEnrollDialog * file: src/cores/ce/components/sequences/BulkEnrollDialog.tsx:26 * kind: component * core: ce * spec: none * summary: Dialog for enrolling multiple selected leads into a follow-up sequence at once, choosing anactive sequence and dispatching a bulk enrollment. * score: 3 ### component CalendarActivityIndicator * file: src/cores/ce/components/CalendarActivityIndicator.tsx:27 * kind: component * core: ce * spec: (none) * summary: Renders a small badge indicating that an activity is linked to a syncedcalendar event. Shows the provider name and sync status on hover. * score: 2 ### component CalendarFollowUpSettingsCard * file: src/cores/ce/components/settings/CalendarFollowUpSettingsCard.tsx:21 * kind: component * core: ce * spec: (none) * summary: CE-73 Leg C (CodeRabbit reverse flow) admin card.Per-tenant control for auto-creating a follow-up task when a meeting isscheduled () and the defaultlead time in days (, 1–14). Admin-gated on . * score: 2 ### component CallActivityWidget * file: src/cores/ce/components/dashboard/CallActivityWidget.tsx:55 * kind: component * core: ce * spec: (none) * summary: Displays a compact widget listing recent call activity for the current organization.Renders loading skeletons, an error panel with a sanitized message, an empty-state message,or a scrollable list of recent calls showing direction, contact/partner or phone number,relative start time, disposition badge (or "Pending"), and user attribution. Rows arekeyboard-accessible and navigate to the call detail view when activated. * params: * props — Component props - size: Widget size controlling item limit and layout; shows up to 5 items, any other value shows up to 10 items. * example: | CallActivityWidget size="2x1" /Accessibility: each call row uses role="button", is focusable via tab, and supports activation with the Enter key. Error and empty states provide concise, readable messages. * score: 4 ### component CallAnalyticsDashboard * file: src/cores/ce/components/analytics/CallAnalyticsDashboard.tsx:106 * kind: component * core: ce * spec: (none) * summary: Renders the Call Analytics dashboard with filters, KPI cards, recording coverage, and charts.Displays date range and aggregation controls, a refresh action, four KPI stat cards (Total, Inbound, Outbound, Avg Duration),a recording coverage card with progress and contextual messaging, and two charts (call volume over time and disposition breakdown). * params: * props — Component props. - className: Optional container className passed to the root element for layout or styling.Accessibility:- ToggleGroup controls include aria-labels for each option.- Interactive controls (ToggleGroup, Button) are keyboard-focusable and announce state via native semantics. * returns: The rendered Call Analytics dashboard UI as a React element. * example: | CallAnalyticsDashboard className="p-4" / * score: 4 ### component CallAnalyticsPage * file: src/cores/ce/pages/CallAnalyticsPage.tsx:17 * kind: component * core: ce * spec: (none) * summary: Renders the call analytics page interface. * score: 2 ### component CallVolumeChart * file: src/cores/ce/components/analytics/CallVolumeChart.tsx:63 * kind: component * core: ce * spec: (none) * summary: Renders the call volume chart interface. * score: 2 ### component CampaignAnalyticsDashboard * file: src/cores/ce/components/analytics/CampaignAnalyticsDashboard.tsx:63 * kind: component * core: ce * spec: (none) * summary: Utility for campaign analytics dashboard. * score: 1 ### component CampaignAnalyticsPage * file: src/cores/ce/pages/CampaignAnalyticsPage.tsx:15 * kind: component * core: ce * spec: (none) * summary: Renders the campaign analytics page interface. * score: 2 ### component CampaignCard * file: src/cores/ce/components/campaigns/CampaignCard.tsx:33 * kind: component * core: ce * spec: (none) * summary: Utility for campaign card. * score: 1 ### component CampaignFormDialog * file: src/cores/ce/components/campaigns/CampaignFormDialog.tsx:55 * kind: component * core: ce * spec: (none) * summary: Utility for campaign form dialog. * score: 1 ### component CampaignPerformanceChart * file: src/cores/ce/components/analytics/CampaignPerformanceChart.tsx:83 * kind: component * core: ce * spec: (none) * summary: Compares campaign leads vs conversions and routes clicks to campaign detail. * score: 2 ### component CampaignROITable * file: src/cores/ce/components/analytics/CampaignROITable.tsx:54 * kind: component * core: ce * spec: (none) * summary: Utility for campaign roitable. * score: 1 ### component CampaignsPage * file: src/cores/ce/pages/CampaignsPage.tsx:48 * kind: component * core: ce * spec: (none) * summary: Utility for campaigns page. * score: 1 ### component CardCaptureSheet * file: src/cores/ce/components/mobile/CardCaptureSheet.tsx:60 * kind: component * core: ce * spec: (none) * summary: Mobile field-capture sheet (manual entry + optional camera QR affordance). * score: 2 ### component CardPreview * file: src/cores/ce/components/connect/CardPreview\.tsx:76 * kind: component * core: ce * spec: (none) * summary: Read-only member-card preview. Renders only the fields that are present sothe layout stays stable as a card is filled in. * score: 2 ### component CardSharePanel * file: src/cores/ce/components/connect/CardSharePanel.tsx:35 * kind: component * core: ce * spec: (none) * summary: Share controls for a member card: QR code, copy-link, and vCard download. * score: 2 ### component CEOverviewPage * file: src/cores/ce/pages/CEOverviewPage.tsx:26 * kind: component * core: ce * spec: (none) * summary: CE (Community Engagement) Overview/Dashboard PageDisplays live metrics for contacts, leads, calls, and conversion rate.Includes keyboard shortcuts for Quick Dial (Cmd+D) and Log Call (Cmd+Shift+L). * score: 2 ### component CERecentActivityWidget * file: src/cores/ce/components/CERecentActivityWidget.tsx:34 * kind: component * core: ce * spec: (none) * summary: Utility for cerecent activity widget. * score: 1 ### component CeSequenceBuilderWizardPage * file: src/cores/ce/wizards/sequences/CeSequenceBuilderWizardPage.tsx:27 * kind: component * core: ce * spec: (none) * summary: Full-page wizard for creating automated follow-up sequences. Uses ModuleWizardRenderer (PF-41). * score: 2 ### component CeSequenceEnrollmentStep * file: src/cores/ce/wizards/sequences/steps/CeSequenceEnrollmentStep.tsx:17 * kind: component * core: ce * spec: (none) * summary: Enrollment step: auto-enroll toggle + criteria JSON editor. * score: 2 ### component CeSequenceExitsStep * file: src/cores/ce/wizards/sequences/steps/CeSequenceExitsStep.tsx:16 * kind: component * core: ce * spec: (none) * summary: Exit rules step: toggles for exit conditions. * score: 2 ### component CeSequenceStepBuilderStep * file: src/cores/ce/wizards/sequences/steps/CeSequenceStepBuilderStep.tsx:41 * kind: component * core: ce * spec: (none) * summary: Step builder: add/remove/reorder sequence steps with channel-specific fields. * score: 2 ### component CESettingsForm * file: src/cores/ce/components/CESettingsForm.tsx:89 * kind: component * core: ce * spec: (none) * summary: Utility for cesettings form. * score: 1 ### component CESettingsPage * file: src/cores/ce/pages/CESettingsPage.tsx:80 * kind: component * core: ce * spec: (none) * summary: Renders the cesettings page interface. * score: 2 ### component CEWizardShortcutsWidget * file: src/cores/ce/components/CEWizardShortcutsWidget.tsx:74 * kind: component * core: ce * spec: (none) * summary: Renders a card widget displaying wizard shortcut buttons for CE workflows.The widget includes quick-access buttons for common CE operations like creating leads,onboarding partners, importing contacts, and logging calls. Each button is permission-gatedand contextual shortcuts include tooltips explaining when they can be used. * params: * props — Component props - onLogCall: Callback to invoke when the "Log Call" button is clicked * returns: A React element containing the wizard shortcuts card * example: | CEWizardShortcutsWidget onLogCall=() = setLogCallOpen(true) / * score: 4 ### component ComplianceSummaryCards * file: src/cores/ce/components/compliance/ComplianceSummaryCards.tsx:23 * kind: component * core: ce * spec: CE-16 * summary: Summary cards tallying suppression coverage across channels, counting all-channel, email, SMS,and phone suppressions (all-channel rolls into each per-channel total). * score: 3 ### component ConnectEmailAccountCard * file: src/cores/ce/components/email/ConnectEmailAccountCard.tsx:45 * kind: component * core: ce * spec: (none) * summary: Utility for connect email account card. * score: 1 ### component ConnectHubPage * file: src/cores/ce/pages/ConnectHubPage.tsx:35 * kind: component * core: ce * spec: (none) * summary: Connect hub page. Renders the digital business card tab strip via theshared primitive. * score: 2 ### component ConnectionStep * file: src/cores/ce/components/setup/steps/ConnectionStep.tsx:39 * kind: component * core: ce * spec: (none) * summary: Render a setup step that guides the user through connecting a RingCentral account and creating a webhook subscription.Displays connection status, allows initiating a connection or testing credentials, and auto-advances when a subscription is active.Accessibility considerations:- Buttons are labeled with clear text and icons; ensure assistive tech can access the visible labels.- Success and informational alerts convey state changes visually and with text. * params: * props — Component props - onNext: Callback invoked to advance to the next setup step - onBack: Callback invoked to return to the previous setup step * returns: The ConnectionStep UI as a React element * example: | ConnectionStep onNext=() = navigateNext() onBack=() = navigateBack() / * score: 4 ### component ConsentEvidenceTimeline * file: src/cores/ce/components/compliance/ConsentEvidenceTimeline.tsx:33 * kind: component * core: ce * spec: CE-16 * summary: Chronological timeline of a contact's consent and withdrawal events, rendering skeletons whilethe audit-grade evidence loads. * score: 3 ### component ContactActivityTab * file: src/cores/ce/components/ContactActivityTab.tsx:22 * kind: component * core: ce * spec: (none) * summary: Utility for contact activity tab. * score: 1 ### component ContactDetailPage * file: src/cores/ce/pages/ContactDetailPage.tsx:94 * kind: component * core: ce * spec: (none) * summary: Renders the contact detail page with header, summary cards, tabbed content, and dialogs for editing and sending SMS.Displays a loading skeleton while fetching data, an error/empty state if the contact is unavailable, and the full detail UI when a contact is found. The UI includes click-to-call and send-SMS actions (when a phone number exists), summary cards (type, status, leads count, created date), tabs for overview, leads, calls, SMS, emails, and activity, and modal dialogs for editing the contact and composing SMS. * params: * props — Component props (none) * returns: The rendered contact detail page element. * example: | ContactDetailPage /Accessibility considerations:- Back navigation, tab triggers, and action buttons are keyboard accessible.- Edit and SMS compose open in dialogs which should manage focus and be dismissible via keyboard.- Icons are presented alongside text labels to preserve meaning for screen reader users. * score: 4 ### component ContactDialog * file: src/cores/ce/components/ContactDialog.tsx:24 * kind: component * core: ce * spec: (none) * summary: Utility for contact dialog. * score: 1 ### component ContactDocumentsTab * file: src/cores/ce/components/contacts/ContactDocumentsTab.tsx:70 * kind: component * core: ce * spec: CE-59 * summary: Contact-detail tab for managing uploaded documents, exposing upload, delete, and AI-extractionactions each gated by their respective permissions. * score: 3 ### component ContactDuplicatesPage * file: src/cores/ce/pages/ContactDuplicatesPage.tsx:155 * kind: component * core: ce * spec: (none) * summary: Duplicate review queue: pending probabilistic match pairs with compare/merge/link/dismiss actions (CE-74). * score: 2 ### component ContactForm * file: src/cores/ce/components/ContactForm.tsx:60 * kind: component * core: ce * spec: (none) * summary: Utility for contact form. * score: 1 ### component ContactHistoryTimeline * file: src/cores/ce/components/history/ContactHistoryTimeline.tsx:51 * kind: component * core: ce * spec: CE-60 * summary: Unified, filterable timeline of a contact's history (activity, screenings, documents, stagechanges, profile updates) with date-preset, grouping, and paging controls. * score: 3 ### component ContactImportDialog * file: src/cores/ce/components/ContactImportDialog.tsx:51 * kind: component * core: ce * spec: (none) * summary: Enhanced multi-step dialog for importing contacts from CSV with fuzzy duplicate detection. * score: 2 ### component ContactInfoCard * file: src/cores/ce/components/ContactInfoCard.tsx:39 * kind: component * core: ce * spec: (none) * summary: Utility for contact info card. * score: 1 ### component ContactLeadsTab * file: src/cores/ce/components/ContactLeadsTab.tsx:40 * kind: component * core: ce * spec: (none) * summary: Renders the contact leads tab interface. * score: 2 ### component ContactMergeDialog * file: src/cores/ce/components/identity/ContactMergeDialog.tsx:78 * kind: component * core: ce * spec: (none) * summary: Merge confirmation dialog with survivorship field diff. * score: 2 ### component ContactRelationshipDialog * file: src/cores/ce/components/ContactRelationshipDialog.tsx:47 * kind: component * core: ce * spec: CE-20 * summary: Dialog for linking one contact to another by searching contacts and choosing a relationship typefrom the picklist before creating the link. * score: 3 ### component ContactRelationshipGraph * file: src/cores/ce/components/ContactRelationshipGraph.tsx:130 * kind: component * core: ce * spec: CE-20 * summary: Radial network graph of a contact's relationships, computing node/edge positions from thesupplied network and navigating to a contact when its node is clicked. * score: 3 ### component ContactRelationshipsTab * file: src/cores/ce/components/ContactRelationshipsTab.tsx:37 * kind: component * core: ce * spec: CE-20 * summary: Contact-detail tab listing relationships with type and strength filters and (when is held) controls to add or delete links. * score: 3 ### component ContactsPage * file: src/cores/ce/pages/ContactsPage.tsx:32 * kind: component * core: ce * spec: (none) * summary: Utility for contacts page. * score: 1 ### component ContactsTable * file: src/cores/ce/components/ContactsTable.tsx:52 * kind: component * core: ce * spec: (none) * summary: Utility for contacts table. * score: 1 ### component ContactsTableSkeleton * file: src/cores/ce/components/ContactsTableSkeleton.tsx:10 * kind: component * core: ce * spec: (none) * summary: Utility for contacts table skeleton. * score: 1 ### component ContactSuppressionSection * file: src/cores/ce/components/compliance/ContactSuppressionSection.tsx:30 * kind: component * core: ce * spec: CE-16 * summary: Contact-scoped panel showing the current suppression state with controls to add, edit, or (when is held) remove the suppression record. * score: 3 ### component ContactTagAssignmentField * file: src/cores/ce/components/contacts/ContactTagAssignmentField.tsx:34 * kind: component * core: ce * spec: CE-61 * summary: Field for viewing and editing the tags assigned to a contact, presenting a popover of availabletags and assigning/unassigning them when editing is permitted. * score: 3 ### component ContactTagBadge * file: src/cores/ce/components/contacts/ContactTagBadge.tsx:33 * kind: component * core: ce * spec: CE-61 * summary: Renders a single contact tag as a colour-filled badge with an accessible name, flagging alerttags with a warning icon and ring and optionally exposing a remove button. * score: 3 ### component ContactTagDialog * file: src/cores/ce/components/settings/ContactTagDialog.tsx:61 * kind: component * core: ce * spec: CE-61 * summary: Dialog for creating or editing a contact tag, capturing its name and colour and defaulting sortorder from when creating. * score: 3 ### component ContactTagsSettingsCard * file: src/cores/ce/components/settings/ContactTagsSettingsCard.tsx:211 * kind: component * core: ce * spec: CE-61 * summary: Settings card for managing the org's contact tags, gating the editable inner card behind the permission. * score: 3 ### component ContractSetupStep * file: src/cores/ce/wizards/partner-onboarding/steps/ContractSetupStep.tsx:24 * kind: component * core: ce * spec: (none) * summary: Step 4: Optional contract details. * score: 2 ### component CopyStagesFromTrackDialog * file: src/cores/ce/components/CopyStagesFromTrackDialog.tsx:30 * kind: component * core: ce * spec: CE-64 * summary: Dialog for seeding a pipeline track's stages by cloning them from another track, offering onlytracks that already have stages as copy sources. * score: 3 ### component CrisisAlertCard * file: src/cores/ce/components/crisis/CrisisAlertCard.tsx:32 * kind: component * core: ce * spec: CE-28 * summary: Card for a single crisis alert showing its confidence tier and status, with acknowledge/resolveand escalate actions gated by ; supports a compact layout. * score: 3 ### component CrisisAlertMobileSheet * file: src/cores/ce/components/mobile/CrisisAlertMobileSheet.tsx:24 * kind: component * core: ce * spec: CE-28 * summary: Bottom sheet presenting a single crisis alert on mobile, wrapping in atouch-friendly drawer. * score: 3 ### component CrisisOnCallSettingsCard * file: src/cores/ce/components/crisis/CrisisOnCallSettingsCard.tsx:41 * kind: component * core: ce * spec: CE-28 * summary: Settings card for configuring crisis business hours and on-call rotations, gated by the and permissions. * score: 3 ### component CrisisQueueList * file: src/cores/ce/components/crisis/CrisisQueueList.tsx:26 * kind: component * core: ce * spec: CE-28 * summary: List of active crisis alerts for a given confidence tier, rendering skeletons while loading andforwarding escalation requests to the supplied handler. * score: 3 ### component CrisisQueueWidget * file: src/cores/ce/components/crisis/CrisisQueueWidget.tsx:23 * kind: component * core: ce * spec: CE-28 * summary: Dashboard widget summarising the crisis queue — active and unacknowledged counts plus the oldestunacknowledged alert — and linking through to the full queue. * score: 3 ### component DeleteContactDocumentDialog * file: src/cores/ce/components/contacts/DeleteContactDocumentDialog.tsx:26 * kind: component * core: ce * spec: CE-59 * summary: Confirmation dialog that soft-deletes a contact document by name, awaiting the mutation beforeclosing. * score: 3 ### component DeletePipelineTrackDialog * file: src/cores/ce/components/DeletePipelineTrackDialog.tsx:40 * kind: component * core: ce * spec: CE-64 * summary: Confirmation dialog for deleting a pipeline track that, when the track still holds leads,requires choosing another active track to reassign them to first. * score: 3 ### component DispositionPieChart * file: src/cores/ce/components/analytics/DispositionPieChart.tsx:85 * kind: component * core: ce * spec: (none) * summary: Renders the disposition pie chart interface. * score: 2 ### component DncImportDialog * file: src/cores/ce/components/compliance/DncImportDialog.tsx:36 * kind: component * core: ce * spec: CE-16 * summary: Dialog for bulk-importing Do-Not-Contact entries from pasted CSV, invalidating suppressionqueries and surfacing a per-row import result on completion. * score: 3 ### component DuplicateComparisonCard * file: src/cores/ce/components/contacts/components/DuplicateComparisonCard.tsx:44 * kind: component * core: ce * spec: (none) * summary: Displays imported row vs existing contact with field-level diff highlighting. * score: 2 ### component DuplicateContactWarning * file: src/cores/ce/components/DuplicateContactWarning.tsx:47 * kind: component * core: ce * spec: (none) * summary: Warning banner listing possible duplicate contacts with match strength andmatched-field detail. * score: 2 ### component DuplicateReviewStep * file: src/cores/ce/components/contacts/import-steps/DuplicateReviewStep.tsx:38 * kind: component * core: ce * spec: (none) * summary: Step 4: Review duplicate clusters with skip/merge/import actions.Shows comparison cards and supports bulk actions. * score: 2 ### component EmailAccountCard * file: src/cores/ce/components/email/EmailAccountCard.tsx:63 * kind: component * core: ce * spec: (none) * summary: Utility for email account card. * score: 1 ### component EmailAccountSettings * file: src/cores/ce/components/email/EmailAccountSettings.tsx:40 * kind: component * core: ce * spec: (none) * summary: Utility for email account settings. * score: 1 ### component EmailAccountsList * file: src/cores/ce/components/email/EmailAccountsList.tsx:31 * kind: component * core: ce * spec: (none) * summary: Renders the email accounts list interface. * score: 2 ### component EmailComposeDialog * file: src/cores/ce/components/email/EmailComposeDialog.tsx:30 * kind: component * core: ce * spec: (none) * summary: Utility for email compose dialog. * score: 1 ### component EmailComposeForm * file: src/cores/ce/components/email/EmailComposeForm.tsx:76 * kind: component * core: ce * spec: (none) * summary: Utility for email compose form. * score: 1 ### component EmailDetailDialog * file: src/cores/ce/components/email/EmailDetailDialog.tsx:36 * kind: component * core: ce * spec: (none) * summary: Utility for email detail dialog. * score: 1 ### component EmailSettingsCard * file: src/cores/ce/components/email/EmailSettingsCard.tsx:15 * kind: component * core: ce * spec: (none) * summary: Utility for email settings card. * score: 1 ### component EmailSyncStatusWidget * file: src/cores/ce/components/dashboard/EmailSyncStatusWidget.tsx:28 * kind: component * core: ce * spec: (none) * summary: Utility for email sync status widget. * score: 1 ### component EmailTemplateFormDialog * file: src/cores/ce/components/email/EmailTemplateFormDialog.tsx:45 * kind: component * core: ce * spec: (none) * summary: Renders the email template form dialog interface. * score: 2 ### component EmailTemplateList * file: src/cores/ce/components/email/EmailTemplateList.tsx:30 * kind: component * core: ce * spec: (none) * summary: Renders the email template list interface. * score: 2 ### component EmailTemplatesPage * file: src/cores/ce/pages/EmailTemplatesPage.tsx:13 * kind: component * core: ce * spec: (none) * summary: Renders the email templates page interface. * score: 2 ### component EmailTimeline * file: src/cores/ce/components/email/EmailTimeline.tsx:56 * kind: component * core: ce * spec: (none) * summary: Utility for email timeline. * score: 1 ### component EmailTimelineItem * file: src/cores/ce/components/email/EmailTimelineItem.tsx:25 * kind: component * core: ce * spec: (none) * summary: Renders the email timeline item interface. * score: 2 ### component EmbeddableSettingsSection * file: src/cores/ce/components/settings/EmbeddableSettingsSection.tsx:55 * kind: component * core: ce * spec: (none) * summary: Renders settings UI for configuring the RingCentral Embeddable softphone widget (CE-14).Displays toggles for enabling the embeddable widget, selecting its on-screen position with a live preview,preferring embeddable for click-to-call, and enabling contact info tabs. Also shows contextual alerts whenRingCentral integration or the required client ID is missing. * params: * props — Component props - form: React Hook Form controller for CEModule settings () used to read and manipulate form state for embeddable settings. - ringcentralEnabled: Flag indicating whether RingCentral integration is enabled; when false, the embeddable controls are disabled and an informational alert is shown. * example: | EmbeddableSettingsSection form=settingsForm ringcentralEnabled=true/Accessibility:- Interactive controls include ARIA labels (e.g., "Enable Embeddable widget", "Select widget position") to aid assistive technologies.- Disable states and descriptive alerts communicate required prerequisites (integration and client ID) to users. * score: 4 ### component EmptyAnalyticsState * file: src/cores/ce/components/analytics/EmptyAnalyticsState.tsx:26 * kind: component * core: ce * spec: (none) * summary: Renders the empty analytics state interface. * score: 2 ### component EnrollInSequenceDialog * file: src/cores/ce/components/sequences/EnrollInSequenceDialog.tsx:26 * kind: component * core: ce * spec: none * summary: Dialog for enrolling a single lead/contact into a follow-up sequence, selecting the sequence andan optional start time. * score: 3 ### component EventFormDialog * file: src/cores/ce/components/events/EventFormDialog.tsx:49 * kind: component * core: ce * spec: (none) * summary: Utility for event form dialog. * score: 1 ### component EventsPage * file: src/cores/ce/pages/EventsPage.tsx:25 * kind: component * core: ce * spec: (none) * summary: Utility for events page. * score: 1 ### component ExportConfirmationDialog * file: src/cores/ce/components/ExportConfirmationDialog.tsx:31 * kind: component * core: ce * spec: (none) * summary: Renders the export confirmation dialog interface. * score: 2 ### component ExportDropdown * file: src/cores/ce/components/analytics/ExportDropdown.tsx:35 * kind: component * core: ce * spec: (none) * summary: Utility for export dropdown. * score: 1 ### component ExtensionMappingCard * file: src/cores/ce/components/settings/ExtensionMappingCard.tsx:27 * kind: component * core: ce * spec: (none) * summary: Card component for managing RingCentral extension-to-user mappings * score: 2 ### component ExtensionMappingCard * file: src/cores/ce/components/setup/ExtensionMappingCard.tsx:90 * kind: component * core: ce * spec: (none) * summary: Renders the extension mapping card interface. * score: 2 ### component ExtractedDocumentDataReviewDialog * file: src/cores/ce/components/contacts/ExtractedDocumentDataReviewDialog.tsx:52 * kind: component * core: ce * spec: CE-59 * summary: Dialog for reviewing AI-extracted document fields against the contact's current values, lettingstaff accept or discard each suggestion before applying. * score: 3 ### component HistoryFetchError * file: src/cores/ce/components/history/HistoryEmptyStates.tsx:61 * kind: component * core: ce * spec: CE-60 * summary: Error state shown when the contact history query fails, surfacing the message and a retryaction. * score: 3 ### component HistoryFilterBar * file: src/cores/ce/components/history/HistoryFilterBar.tsx:53 * kind: component * core: ce * spec: CE-60 * summary: Filter bar for the contact history timeline, controlling the visible category set, date preset,and grouping mode via the supplied change callbacks. * score: 3 ### component HistoryNoMatches * file: src/cores/ce/components/history/HistoryEmptyStates.tsx:38 * kind: component * core: ce * spec: CE-60 * summary: Empty state shown when active filters exclude every history row, offering a reset action towiden the view. * score: 3 ### component HistoryNoneYet * file: src/cores/ce/components/history/HistoryEmptyStates.tsx:17 * kind: component * core: ce * spec: CE-60 * summary: Empty state shown when a contact has no recorded history yet. * score: 3 ### component HistoryRowSkeleton * file: src/cores/ce/components/history/HistoryRowSkeleton.tsx:18 * kind: component * core: ce * spec: CE-60 * summary: Loading placeholder for the contact history timeline, rendering a configurable number ofskeleton rows. * score: 3 ### component IdentityResolutionSettingsCard * file: src/cores/ce/components/settings/IdentityResolutionSettingsCard.tsx:29 * kind: component * core: ce * spec: (none) * summary: Card for tuning duplicate-match thresholds and the merge undo window. * score: 2 ### component ImportHistoryPanel * file: src/cores/ce/components/contacts/components/ImportHistoryPanel.tsx:12 * kind: component * core: ce * spec: (none) * summary: Stub component for import history. Full implementation requiresce\_import\_batches table (documented as errata in CE-UX-04 spec). * score: 2 ### component ImportProgressStep * file: src/cores/ce/components/contacts/import-steps/ImportProgressStep.tsx:20 * kind: component * core: ce * spec: (none) * summary: Step 5: Real-time import progress with percentage, count, and scrollable error log. * score: 2 ### component InsuranceFieldsSection * file: src/cores/ce/components/InsuranceFieldsSection.tsx:39 * kind: component * core: ce * spec: CE-65 * summary: Masked insurance-fields panel that reveals or edits carrier and member-ID values only forpermitted users, auditing every reveal and edit via the insurance-reveal audit hook. * score: 3 ### component IntakeScreeningWizardPage * file: src/cores/ce/wizards/screening/IntakeScreeningWizardPage.tsx:28 * kind: component * core: ce * spec: (none) * summary: Full-page wizard for intake screening. Uses ModuleWizardRenderer (PF-41). * score: 2 ### component KPIEntryStep * file: src/cores/ce/wizards/partner-progress-review/steps/KPIEntryStep.tsx:56 * kind: component * core: ce * spec: (none) * summary: Step for entering KPI metrics: referrals, admissions, quality, response time. * score: 2 ### component LeadAdmitConfirmDialog * file: src/cores/ce/components/LeadAdmitConfirmDialog.tsx:29 * kind: component * core: ce * spec: CE-63 * summary: Confirmation dialog for admitting a lead into a terminal admit stage, committing the move viathe lead-mutations hook and notifying the caller on success or cancel. * score: 3 ### component LeadCard * file: src/cores/ce/components/LeadCard.tsx:36 * kind: component * core: ce * spec: (none) * summary: Renders the lead card interface. * score: 2 ### component LeadCardAssigneeMenu * file: src/cores/ce/components/LeadCardAssigneeMenu.tsx:44 * kind: component * core: ce * spec: CE-62 * summary: Compact assignee menu on a pipeline lead card, letting users with reassign thelead to any active staff member or leave it unassigned. * score: 3 ### component LeadCardMetadata * file: src/cores/ce/components/LeadCardMetadata.tsx:57 * kind: component * core: ce * spec: CE-65 * summary: Renders the configured metadata rows on a pipeline lead card, building each tile field (stage,assignee, insurance, etc.) only when its value is present and applying insurance masking. * score: 3 ### component LeadClosureDialog * file: src/cores/ce/components/LeadClosureDialog.tsx:43 * kind: component * core: ce * spec: CE-63 * summary: Dialog for closing/losing a lead at a terminal closure stage, capturing the closure reasonbefore committing the stage move. * score: 3 ### component LeadConversionDialog * file: src/cores/ce/components/LeadConversionDialog.tsx:49 * kind: component * core: ce * spec: (none) * summary: Dialog for converting a lead. Writes audit record to ce\_lead\_conversionsand publishes CE-29 granular events. * score: 2 ### component LeadConversionHistory * file: src/cores/ce/components/LeadConversionHistory.tsx:30 * kind: component * core: ce * spec: (none) * summary: Shows conversion audit trail records for a lead.Permission-gated by ce.lead-conversions.view. * score: 2 ### component LeadConversionWizard * file: src/cores/ce/wizards/lead-conversion/LeadConversionWizard.tsx:30 * kind: component * core: ce * spec: (none) * summary: Guided 4-step lead conversion wizard dialog. * score: 2 ### component LeadDetailAssigneeCard * file: src/cores/ce/components/LeadDetailAssigneeCard.tsx:33 * kind: component * core: ce * spec: CE-62 * summary: Lead-detail card showing the current assignee with avatar initials and, for users holding, controls to reassign the lead. * score: 3 ### component LeadDetailPage * file: src/cores/ce/pages/LeadDetailPage.tsx:148 * kind: component * core: ce * spec: (none) * summary: Utility for lead detail page. * score: 1 ### component LeadDetailsStep * file: src/cores/ce/wizards/lead-intake/steps/LeadDetailsStep.tsx:31 * kind: component * core: ce * spec: (none) * summary: Step 3 of the lead-intake wizard: captures expected admission date, urgency,pipeline track (defaulting to the service-resolved track but overridable —CE-64-EN-01 AC-1), requested services, and notes. Field changes flow up through. * params: * data — the wizard's current form data. * errors — per-field validation errors for this step. * onUpdate — setter that writes a single form field by key. * score: 2 ### component LeadIntakeWizard * file: src/cores/ce/wizards/lead-intake/LeadIntakeWizard.tsx:29 * kind: component * core: ce * spec: (none) * summary: Guided 7-step lead intake wizard dialog (search-first, then create). * score: 2 ### component LeadPipelineBoard * file: src/cores/ce/components/LeadPipelineBoard.tsx:58 * kind: component * core: ce * spec: (none) * summary: Utility for lead pipeline board. * score: 1 ### component LeadPipelineColumn * file: src/cores/ce/components/LeadPipelineColumn.tsx:27 * kind: component * core: ce * spec: (none) * summary: Renders the lead pipeline column interface. * score: 2 ### component LeadPipelineFunnelChart * file: src/cores/ce/components/analytics/LeadPipelineFunnelChart.tsx:66 * kind: component * core: ce * spec: (none) * summary: Renders the pipeline funnel chart interface. * score: 2 ### component LeadPipelinePage * file: src/cores/ce/pages/LeadPipelinePage.tsx:75 * kind: component * core: ce * spec: (none) * summary: Utility for lead pipeline page. * score: 1 ### component LeadScheduledStageDialog * file: src/cores/ce/components/LeadScheduledStageDialog.tsx:40 * kind: component * core: ce * spec: CE-63 * summary: Dialog for moving a lead into a scheduled stage, capturing the schedule details beforecommitting the move via the lead-mutations hook. * score: 3 ### component LeadSequenceStatus * file: src/cores/ce/components/sequences/LeadSequenceStatus.tsx:25 * kind: component * core: ce * spec: none * summary: Shows a lead's follow-up sequence enrollments with pause/resume/exit controls for the activeenrollment and an entry point to enroll in a new sequence. * score: 3 ### component LeadStageEditor * file: src/cores/ce/components/LeadStageEditor.tsx:98 * kind: component * core: ce * spec: (none) * summary: Renders the lead stage editor interface. * score: 2 ### component LeadStageFormDialog * file: src/cores/ce/components/LeadStageFormDialog.tsx:44 * kind: component * core: ce * spec: (none) * summary: Utility for lead stage form dialog. * score: 1 ### component LeadStageProgression * file: src/cores/ce/components/LeadStageProgression.tsx:25 * kind: component * core: ce * spec: (none) * summary: Renders the lead stage progression interface. * score: 2 ### component LeadTrackSelector * file: src/cores/ce/components/LeadTrackSelector.tsx:27 * kind: component * core: ce * spec: CE-64 * summary: Selector for moving a lead to a different pipeline track, ignoring no-op selections and trackingthe pending track while the change mutation runs. * score: 3 ### component LeadTrackTransferDialog * file: src/cores/ce/components/LeadTrackTransferDialog.tsx:43 * kind: component * core: ce * spec: CE-64 * summary: Dialog confirming transfer of a lead between pipeline tracks, summarising the source/targettracks and current stage before committing the move. * score: 3 ### component LeadUrgencyControl * file: src/cores/ce/components/LeadUrgencyControl.tsx:28 * kind: component * core: ce * spec: (none) * summary: Lead Information card control for viewing and editing a lead's urgency. Userswith get a Select that writes the change via (theaudit row is recorded by the trigger); everyone elsesees the urgency read-only (CE-58-EN-01 AC-1). * params: * leadId — the lead whose urgency is shown/edited. * urgency — the lead's current urgency, or null when unset. * score: 2 ### component LinkContactToPartnerDialog * file: src/cores/ce/components/LinkContactToPartnerDialog.tsx:29 * kind: component * core: ce * spec: (none) * summary: Utility for link contact to partner dialog. * score: 1 ### component M365CalendarPushSettingsCard * file: src/cores/ce/components/settings/M365CalendarPushSettingsCard.tsx:34 * kind: component * core: ce * spec: (none) * summary: CE-73 AC-2 admin card. Per-tenant control for pushing follow-up tasks to theMicrosoft 365 calendar ( edge function). Mirrors. Admin-gated on .Settings (): - — master on/off (default OFF). - — 'delegated' | 'application'. Application mode posts as the org Entra app and requires a one-time tenant admin consent. - — 'assigned\_coordinator' | 'per\_task\_override'. - — fallback mailbox when no coordinator/override. * score: 2 ### component MappingStep * file: src/cores/ce/components/contacts/import-steps/MappingStep.tsx:30 * kind: component * core: ce * spec: (none) * summary: Step 2: Map CSV columns to contact fields with sample value preview. * score: 2 ### component MarketingHubPage * file: src/cores/ce/pages/MarketingHubPage.tsx:41 * kind: component * core: ce * spec: (none) * summary: Marketing hub page. Renders the campaigns/events/sequences/SMS tab strip viathe shared primitive. * score: 2 ### component MemberCardsAdminPage * file: src/cores/ce/pages/connect/MemberCardsAdminPage.tsx:89 * kind: component * core: ce * spec: (none) * summary: Admin roster page for org member cards. * score: 2 ### component MergedRecordBanner * file: src/cores/ce/components/identity/MergedRecordBanner.tsx:31 * kind: component * core: ce * spec: (none) * summary: Informational banner indicating the displayed record absorbed a merge. * score: 2 ### component MergeFieldPicker * file: src/cores/ce/components/email/MergeFieldPicker.tsx:36 * kind: component * core: ce * spec: (none) * summary: Renders the merge field picker interface. * score: 2 ### component MergeFieldPickerCompact * file: src/cores/ce/components/email/MergeFieldPicker.tsx:89 * kind: component * core: ce * spec: (none) * summary: Compact merge field picker for inline use * score: 2 ### component MilestonesStep * file: src/cores/ce/wizards/partner-onboarding/steps/MilestonesStep.tsx:63 * kind: component * core: ce * spec: (none) * summary: Step 5: Milestones selection and configuration. * score: 2 ### component MilestoneTracker * file: src/cores/ce/components/MilestoneTracker.tsx:100 * kind: component * core: ce * spec: (none) * summary: Renders the milestone tracker interface. * score: 2 ### component MilestoneUpdateStep * file: src/cores/ce/wizards/partner-progress-review/steps/MilestoneUpdateStep.tsx:21 * kind: component * core: ce * spec: (none) * summary: Step for tracking milestone completion/missed status. * score: 2 ### component MobileContactView * file: src/cores/ce/components/mobile/MobileContactView\.tsx:87 * kind: component * core: ce * spec: (none) * summary: Mobile contact list with search, pull-to-refresh, skeleton loading, and empty states. * score: 2 ### component MobileCrmShell * file: src/cores/ce/components/mobile/MobileCrmShell.tsx:20 * kind: component * core: ce * spec: (none) * summary: Mobile CRM shell providing bottom nav, FAB, and offline indicator.On desktop (≥ md), renders children only (no mobile chrome). * score: 2 ### component MobilePartnerView * file: src/cores/ce/components/mobile/MobilePartnerView\.tsx:38 * kind: component * core: ce * spec: (none) * summary: Mobile partner list with search, pull-to-refresh, skeleton loading, and empty states. * score: 2 ### component MyCardPage * file: src/cores/ce/pages/connect/MyCardPage.tsx:123 * kind: component * core: ce * spec: (none) * summary: Member-card editor page with a live preview and share panel. * score: 2 ### component NotesActionsStep * file: src/cores/ce/wizards/partner-progress-review/steps/NotesActionsStep.tsx:24 * kind: component * core: ce * spec: (none) * summary: Step for discussion notes and repeatable action items. * score: 2 ### component OfflineQueueIndicator * file: src/cores/ce/components/mobile/OfflineQueueIndicator.tsx:17 * kind: component * core: ce * spec: (none) * summary: Offline status banner and sync controls for mobile.Shows below bottom nav when offline or queue has pending items. * score: 2 ### component OnCallRotationFormDialog * file: src/cores/ce/components/crisis/OnCallRotationFormDialog.tsx:34 * kind: component * core: ce * spec: CE-28 * summary: Dialog for creating or editing an on-call rotation, capturing its name, escalation-minute tiers,and ordered member list before upserting. * score: 3 ### component PartnerActivityTab * file: src/cores/ce/components/PartnerActivityTab.tsx:22 * kind: component * core: ce * spec: (none) * summary: Renders the partner activity tab interface. * score: 2 ### component PartnerComparisonTable * file: src/cores/ce/components/analytics/PartnerComparisonTable.tsx:58 * kind: component * core: ce * spec: (none) * summary: Renders a side-by-side comparison table for up to five partners showing key metrics,best-value highlights, and per-partner warnings. If no partners are provided, displaysan empty state prompting the user to select partners.The table shows metric rows defined by METRICS, highlights the best numeric valuesfor total referrals, successful admissions, and success rate, and provides per-partnercontrols to remove a partner or clear all selections.Accessibility:- Removal buttons include descriptive s (e.g., "Remove name from comparison").- Table structure uses semantic , , and elements for screen readers. * params: * props — Component props - partners: Array of partner metrics to display (max visually supported: five). - onRemovePartner: Callback invoked with a partnerId when the corresponding partner's remove button is clicked. - onClearAll: Callback invoked when the "Clear All" control is activated. * example: | PartnerComparisonTable partners=\[ partnerId: 'p1', name: 'Partner A', totalReferrals: 10, successfulAdmissions: 4, successRate: 40, lastReferralDate: '2025-01-01', relationshipStatus: 'Active', isDecliningSuccessRate: false, isDecliningVolume: false ] onRemovePartner=() = undefined onClearAll=() = undefined/ * score: 4 ### component PartnerContactPersonDialog * file: src/cores/ce/components/PartnerContactPersonDialog.tsx:45 * kind: component * core: ce * spec: (none) * summary: Standalone contact-person create/edit dialog for the partner contacts panel. * score: 2 ### component PartnerContactsPanel * file: src/cores/ce/components/PartnerContactsPanel.tsx:30 * kind: component * core: ce * spec: (none) * summary: Renders the partner contacts panel interface. * score: 2 ### component PartnerContractDialog * file: src/cores/ce/components/PartnerContractDialog.tsx:90 * kind: component * core: ce * spec: (none) * summary: Renders a dialog for creating or editing a partner contract, including fields forname, type, status, dates, value, auto-renew settings, terms, notes, and custom fields.When opened in edit mode (a is provided) the form is populated with thecontract's values; otherwise the form is initialized with defaults. Submitting theform creates or updates the contract and closes the dialog on success. Errors areshown via a destructive toast. * params: * props — Component props - partnerId: ID of the partner this contract belongs to; added to the payload on submit. - organizationId: ID of the organization used to scope mutations and included in the payload. - open: Controls whether the dialog is visible. - onOpenChange: Callback invoked when the dialog open state should change. - contract: Optional existing contract to edit; when provided the dialog operates in edit mode. * example: | PartnerContractDialog partnerId="partner\_123" organizationId="org\_456" open=isDialogOpen onOpenChange=(open) = setDialogOpen(open) contract=selectedContract/Accessibility:- Form controls use associated labels and the dialog receives focus when opened via the Dialog component.- Required fields are indicated in the UI (e.g., "Contract Type \*"); ensure screen-reader announcements and focus order remain correct when the dialog is rendered in your app. * score: 4 ### component PartnerContractDocumentsStep * file: src/cores/ce/wizards/partner-contract/steps/PartnerContractDocumentsStep.tsx:19 * kind: component * core: ce * spec: (none) * summary: Renders the document upload/selection step for the partner contract wizard. * score: 2 ### component PartnerContractsPanel * file: src/cores/ce/components/PartnerContractsPanel.tsx:55 * kind: component * core: ce * spec: (none) * summary: Renders a panel that lists, creates, edits, and deletes contracts for a partner within an organization.Displays loading and error states, contract items with status badges, start/end dates, formatted values,expiration warnings, and provides Add, Edit, and Delete workflows via a contract dialog and a delete confirmation dialog. * params: * props — Component props - partnerId: ID of the partner whose contracts are managed - organizationId: ID of the organization that owns the partner and contracts * returns: The PartnerContractsPanel React element * example: | PartnerContractsPanel partnerId="partner\_123" organizationId="org\_456" /Accessibility:- Action buttons include meaningful aria-labels (e.g., "Edit contract", "Delete contract").- Modal dialogs provide descriptive titles and follow accessible modal patterns (focus management and keyboard interaction). * score: 4 ### component PartnerContractWizardPage * file: src/cores/ce/wizards/partner-contract/PartnerContractWizardPage.tsx:25 * kind: component * core: ce * spec: (none) * summary: Full-page wizard for creating partner contracts. Uses ModuleWizardRenderer (PF-41). * score: 2 ### component PartnerDetailPage * file: src/cores/ce/pages/PartnerDetailPage.tsx:88 * kind: component * core: ce * spec: (none) * summary: Page that displays detailed information and interactive tools for a single partner.Renders loading and error states, a header with actions (call and edit), summary statistic cards,tabbed sections for overview, contacts, contracts, calls, activity, emails, and progress,and modal dialogs for editing the partner and logging progress. * params: * props — This component does not accept props; it reads the partner from the routeand the current organization from context. * returns: JSX.Element — the partner detail page UI * example: | Route path="/ce/partners/:id" element=PartnerDetailPage / /Accessibility considerations:- Navigation controls (back button, tab list, dialog openers) are rendered as semantic buttons/links.- External links open with rel="noopener noreferrer" and target="\_blank".- Ensure surrounding app-level focus management moves focus into dialogs when they open and returns focus to the triggering control on close. * score: 4 ### component PartnerDialog * file: src/cores/ce/components/PartnerDialog.tsx:19 * kind: component * core: ce * spec: (none) * summary: Renders the partner dialog interface. * score: 2 ### component PartnerDocumentsPanel * file: src/cores/ce/components/PartnerDocumentsPanel.tsx:41 * kind: component * core: ce * spec: CE-24 * summary: Panel listing a partner's documents with download and soft-delete actions, plus an upload flow(gated by ) supporting versioned supersession. * score: 3 ### component PartnerDocumentUploadDialog * file: src/cores/ce/components/PartnerDocumentUploadDialog.tsx:47 * kind: component * core: ce * spec: CE-24 * summary: Dialog for uploading a partner document, optionally tied to a contract or superseding anexisting version, with a default document type. * score: 3 ### component PartnerForm * file: src/cores/ce/components/PartnerForm.tsx:58 * kind: component * core: ce * spec: (none) * summary: Renders the partner form interface. * score: 2 ### component PartnerHealthDashboardPage * file: src/cores/ce/pages/PartnerHealthDashboardPage.tsx:93 * kind: component * core: ce * spec: (none) * summary: Renders the Partner Health dashboard used to monitor partner performance, summary statistics, recent progress updates, and navigation controls.The component reads the current organization from context, fetches dashboard data for a configurable date range, and displays:- Top-level stats (total partners, at-risk, off-track, exceeding)- Summary cards for on-track and no-recent-progress counts- A list of recent partner progress updates with status badges and navigation to partner details- A date-range selector and a "View All Partners" actionAccessibility:- Interactive list items are rendered as buttons for keyboard and screen reader accessibility.- Ensure surrounding layout provides appropriate focus order and visible focus styles. * params: * props — This component does not accept props; it reads organization and configuration from context and internal state. * returns: The rendered Partner Health dashboard UI as a React element. * example: | PartnerHealthDashboardPage / * score: 4 ### component PartnerOnboardingWizard * file: src/cores/ce/wizards/partner-onboarding/PartnerOnboardingWizard.tsx:28 * kind: component * core: ce * spec: (none) * summary: Full-page 6-step partner onboarding wizard. * score: 2 ### component PartnerProfileStep * file: src/cores/ce/wizards/partner-onboarding/steps/PartnerProfileStep.tsx:21 * kind: component * core: ce * spec: (none) * summary: Step 1: Partner profile details. * score: 2 ### component PartnerProgressReviewWizard * file: src/cores/ce/wizards/partner-progress-review/PartnerProgressReviewWizard.tsx:29 * kind: component * core: ce * spec: (none) * summary: Guided 5-step partner progress review wizard dialog. * score: 2 ### component PartnerProgressTimeline * file: src/cores/ce/components/PartnerProgressTimeline.tsx:85 * kind: component * core: ce * spec: (none) * summary: Utility for partner progress timeline. * score: 1 ### component PartnerScorecard * file: src/cores/ce/components/analytics/PartnerScorecard.tsx:136 * kind: component * core: ce * spec: (none) * summary: Renders the Partner Scorecard UI for browsing, sorting, filtering, and comparing partner performance metrics.Shows summary metrics, a table of partners with sortable columns, filters for relationship status and minimum referrals,and an optional compare mode that lets users select up to five partners for side-by-side comparison.Accessibility:- Interactive controls (buttons, selects, checkboxes) use semantic components and should be reachable by keyboard.- Table rows are clickable for navigation when compare mode is off; checkbox cells stop propagation to avoid accidental navigation. * params: * props — Component props - className: Optional container className passed to the top-level element for layout or styling overrides * returns: The Partner Scorecard UI as a React element * example: | PartnerScorecard className="max-w-7xl mx-auto" / * score: 4 ### component PartnerScorecardPage * file: src/cores/ce/pages/PartnerScorecardPage.tsx:27 * kind: component * core: ce * spec: (none) * summary: Renders the Partner Scorecard page wrapped by a permission gate.Renders a page header (title, description, users icon) with an export actions dropdown and the PartnerScorecard analytics content. The page is only shown to users with the "ce.scorecard.view" permission; the export action requires "ce.scorecard.export". * returns: The page's JSX element. * example: | PartnerScorecardPage /Accessibility: Header controls and the export dropdown should be keyboard operable and provide descriptive labels for screen readers. * score: 5 ### component PartnerSelector * file: src/cores/ce/components/PartnerSelector.tsx:63 * kind: component * core: ce * spec: (none) * summary: A searchable dropdown for selecting an organization partner.Renders a combobox button that opens a popover containing a searchable list of active partners. Selecting an item calls with the partner's id and closes the popover; choosing the clear option calls and closes the popover. * params: * props — Component props - organizationId: ID of the organization whose partners should be listed - value: Currently selected partner id, or when no partner is selected - onChange: Callback invoked when the selection changes; receives the selected partner id or when cleared - placeholder: Placeholder text shown when no partner is selected (default: ) - disabled: When true, disables interaction with the combobox (default: ) - className: Optional additional CSS class names applied to the trigger buttonAccessibility:- The trigger button exposes and to convey open/closed state to assistive technologies.Search behavior:- The list is filtered by the search input; filtering is applied once the query has at least two characters. * example: | PartnerSelector organizationId="org\_123" value=selectedPartnerId onChange=(id) = setSelectedPartnerId(id)/ * score: 4 ### component PartnersPage * file: src/cores/ce/pages/PartnersPage.tsx:45 * kind: component * core: ce * spec: (none) * summary: Renders the Partners management page for the current organization.Displays header controls, search and filter inputs, the partners table (or an empty / error state),and the partner create/edit dialog. The entire UI is gated by the "ce.partners.view" permission.Accessibility: form controls and action buttons are standard interactive elements and should be reachablevia keyboard; ensure surrounding app provides appropriate focus management when the PartnerDialog opens. * params: * props — This component accepts no props. * returns: The page JSX for viewing and managing referral partners for the active organization. * example: | PartnersPage / * score: 4 ### component PartnersTable * file: src/cores/ce/components/PartnersTable.tsx:29 * kind: component * core: ce * spec: (none) * summary: Renders the partners table interface. * score: 2 ### component PartnersTableSkeleton * file: src/cores/ce/components/PartnersTable.tsx:176 * kind: component * core: ce * spec: (none) * summary: Renders the partners table skeleton interface. * score: 2 ### component PayerMultiSelect * file: src/cores/ce/components/PayerMultiSelect.tsx:27 * kind: component * core: ce * spec: (none) * summary: Renders the partner accepted-insurance multi-select (chips + add dropdown). * score: 2 ### component PipelineDashboard * file: src/cores/ce/components/analytics/PipelineDashboard.tsx:90 * kind: component * core: ce * spec: (none) * summary: Dashboard that displays lead pipeline metrics including KPI cards, a funnel visualization, and stage conversion rates with drill-down navigation.Renders a date-range toggle, refresh controls, summary KPI cards (total leads, conversion rate, average days to convert, lost leads), a funnel chart of pipeline stages (clickable to navigate to filtered leads), and per-stage conversion progress bars when multiple stages exist.Accessibility:- Progress bars include ARIA attributes (, , , , and descriptive ) to expose conversion rates to assistive technologies.- Date range toggle items include values for screen reader context. * params: * props — Component props - className: Optional container CSS class names applied to the root element * example: | PipelineDashboard className="space-y-6" / * score: 4 ### component PipelineDashboardPage * file: src/cores/ce/pages/PipelineDashboardPage.tsx:17 * kind: component * core: ce * spec: (none) * summary: Utility for pipeline dashboard page. * score: 1 ### component PipelineTagsProvider * file: src/cores/ce/components/pipeline/PipelineTagsProvider.tsx:15 * kind: component * core: ce * spec: CE-61 * summary: Context provider that shares a per-contact tag map across the pipeline board so tag chips andalert flags render without per-card queries. * score: 3 ### component PipelineTrackFormDialog * file: src/cores/ce/components/PipelineTrackFormDialog.tsx:56 * kind: component * core: ce * spec: CE-64 * summary: Dialog for creating or editing a pipeline track, defaulting new tracks to clone stages from theorg's default track and persisting via the track-mutations hook. * score: 3 ### component PrerequisitesStep * file: src/cores/ce/components/setup/steps/PrerequisitesStep.tsx:55 * kind: component * core: ce * spec: (none) * summary: Renders a setup step that verifies RingCentral API credentials are present in cloud secrets and presents status, guidance, and actions.Displays three credential checks (Client ID, Client Secret, JWT Token), a contextual tip, and contextual alerts when checks fail or all prerequisites are met. Provides actions to re-check the prerequisites and to continue when all required secrets are configured. - prerequisites: Object containing boolean flags for each credential and which is true when every required credential is present. - isLoading: When true, shows skeleton placeholders while the check is in progress. - error: An Error object to display when the prerequisite check fails; when present the component shows a destructive error alert and a retry action. - onRefresh: Callback invoked to re-run the prerequisites check (Retry / Re-check button). - onNext: Callback invoked to proceed to the next step (Continue button). This action is disabled until all prerequisites are configured.Accessibility considerations:- Action buttons use clear, descriptive labels and focusable controls.- External links open in a new tab with proper rel attributes to preserve security and context. * returns: The rendered step UI as a JSX element. * example: | PrerequisitesStep prerequisites= clientId: true, clientSecret: true, jwtToken: false, allConfigured: false, isLoading=false error=null onRefresh=() = checkPrereqs() onNext=() = goToNextStep()/ * score: 5 ### component PrimaryContactStep * file: src/cores/ce/wizards/partner-onboarding/steps/PrimaryContactStep.tsx:30 * kind: component * core: ce * spec: (none) * summary: Step 2: Select existing contact or create new. * score: 2 ### component ProgressUpdateForm * file: src/cores/ce/components/ProgressUpdateForm.tsx:86 * kind: component * core: ce * spec: (none) * summary: Form component for creating or editing a partner's progress record with validation and milestone management.Renders a controlled form (using React Hook Form and a Zod schema) to log or update KPIs, status, milestones, notes, and the reporting period for a specific partner within the current organization. * params: * props — Component props - partnerId: The partner's unique identifier to associate the progress record with. - partnerType: The partner's type (used to load relevant milestones). - partnerName: Display name shown in the form header. - editRecord: Optional existing progress record to prefill the form for editing. - onSuccess: Optional callback invoked after a successful create or update. - onCancel: Optional callback invoked when the user cancels the form. - className: Optional container class name for styling. * example: | ProgressUpdateForm partnerId="partner\_123" partnerType="facility" partnerName="Sunrise Clinic" onSuccess=() = undefined onCancel=() = undefined/Accessibility considerations:- Date picker disables future dates and exposes the selected date textually; form controls include labels and descriptive messages for screen readers.- Milestone checkboxes are keyboard-focusable and use visible labels to convey state. * score: 4 ### component PublicCardPage * file: src/cores/ce/pages/connect/PublicCardPage.tsx:119 * kind: component * core: ce * spec: (none) * summary: Public, unauthenticated card page with a "save contact" action and avisitor capture form. * score: 2 ### component QuickLogFAB * file: src/cores/ce/components/mobile/QuickLogFAB.tsx:24 * kind: component * core: ce * spec: (none) * summary: Floating Action Button for quick activity logging.Shows pending badge when offline queue has items. * score: 2 ### component QuickLogForm * file: src/cores/ce/components/mobile/QuickLogForm.tsx:234 * kind: component * core: ce * spec: (none) * summary: Quick log form — renders as bottom sheet on mobile, dialog on desktop. * score: 2 ### component ReferralAttemptDialog * file: src/cores/ce/components/ReferralAttemptDialog.tsx:40 * kind: component * core: ce * spec: (none) * summary: Renders the log-referral-attempt dialog. * score: 2 ### component ReferralAttemptsTable * file: src/cores/ce/components/ReferralAttemptsTable.tsx:17 * kind: component * core: ce * spec: (none) * summary: Renders the referral-attempt ledger table for a partner. * score: 2 ### component ReferralLedgerPanel * file: src/cores/ce/components/ReferralLedgerPanel.tsx:25 * kind: component * core: ce * spec: (none) * summary: Renders the partner referral ledger panel (attempts table + gated log button).The Incoming/Outbound summary is derived live from the loaded attempts viaaggregateDirectionalCounts — the same per-direction reconciliation thece\_partners trigger applies — so the panel reflects the in-cache ledger(incl. an attempt just logged in this panel) without re-querying the partnerrow, which lags until its TanStack cache entry is invalidated. * score: 2 ### component ReferralSourceDialog * file: src/cores/ce/components/ReferralSourceDialog.tsx:41 * kind: component * core: ce * spec: (none) * summary: Utility for referral source dialog. * score: 1 ### component ReferralSourceManagement * file: src/cores/ce/components/ReferralSourceManagement.tsx:33 * kind: component * core: ce * spec: (none) * summary: Renders the referral source management interface. * score: 2 ### component ReferralSourcesPage * file: src/cores/ce/pages/ReferralSourcesPage.tsx:14 * kind: component * core: ce * spec: (none) * summary: Utility for referral sources page. * score: 1 ### component RequestedServicesMultiSelect * file: src/cores/ce/components/RequestedServicesMultiSelect.tsx:36 * kind: component * core: ce * spec: CE-58 * summary: Multi-select bound to the picklist for capturing the services a lead isinquiring about. * score: 3 ### component ResultsStep * file: src/cores/ce/components/contacts/import-steps/ResultsStep.tsx:34 * kind: component * core: ce * spec: (none) * summary: Step 6: Import results with summary, error export, and done action. * score: 2 ### component ReviewPeriodStep * file: src/cores/ce/wizards/partner-progress-review/steps/ReviewPeriodStep.tsx:20 * kind: component * core: ce * spec: (none) * summary: Step for selecting review period type and date range. * score: 2 ### component ReviewStep * file: src/cores/ce/wizards/lead-intake/steps/ReviewStep.tsx:28 * kind: component * core: ce * spec: (none) * summary: Lead-intake wizard final step: read-only summary of every captured field withjump-back links so the coordinator can correct a section before submitting. * score: 2 ### component ReviewStep * file: src/cores/ce/wizards/partner-onboarding/steps/ReviewStep.tsx:35 * kind: component * core: ce * spec: (none) * summary: Step 6: Review all data before submission. * score: 2 ### component RingCentralConnectionCard * file: src/cores/ce/components/settings/RingCentralConnectionCard.tsx:26 * kind: component * core: ce * spec: (none) * summary: Displays and manages the RingCentral webhook connection status and actions.Renders loading, error, and normal states returned by the RingCentral setup hook and provides actionsto connect, test, refresh, and disconnect the integration. When connected, shows a brief subscriptionsummary including ID, expiration, and event filter count.Accessibility:- Action buttons are keyboard-focusable and provide visible labels for screen readers.- Status badges and alerts convey connection state and errors using text and icons. * example: | RingCentralConnectionCard / * score: 5 ### component RingCentralSetupPage * file: src/cores/ce/pages/RingCentralSetupPage.tsx:20 * kind: component * core: ce * spec: (none) * summary: Page wrapper that hosts the RingCentral integration setup wizard.Renders the RingCentral setup wizard inside the application's PageContainer to provide consistent layout and spacing.Accessibility: Placeholders and focus management should be handled by the contained RingCentralSetupWizard; this component preserves semantic structure for screen readers by using the app's PageContainer. * example: | Route path="/integrations/ringcentral" element=RingCentralSetupPage / / * score: 5 ### component RingCentralSetupWizard * file: src/cores/ce/components/setup/RingCentralSetupWizard.tsx:47 * kind: component * core: ce * spec: (none) * summary: Renders a guided five-step wizard for configuring RingCentral telephony integration.Uses shared WizardShell (timeline layout) for consistent progress and navigation. * score: 2 ### component ScheduledLeadsPanel * file: src/cores/ce/components/ScheduledLeadsPanel.tsx:32 * kind: component * core: ce * spec: CE-65 * summary: Collapsible panel listing leads with upcoming scheduled stages within a rolling window, linkingeach to its lead detail. * score: 3 ### component ScheduledSmsList * file: src/cores/ce/components/sms/ScheduledSmsList.tsx:42 * kind: component * core: ce * spec: (none) * summary: List queued/historical scheduled SMS with cancel controls. * score: 2 ### component ScheduleMeetingDialog * file: src/cores/ce/components/ScheduleMeetingDialog.tsx:84 * kind: component * core: ce * spec: CE-21 * summary: Dialog for scheduling a meeting against an activity through a connected calendar, selecting thecalendar connection and attendees before booking. * score: 3 ### component ScheduleSmsDialog * file: src/cores/ce/components/sms/ScheduleSmsDialog.tsx:42 * kind: component * core: ce * spec: (none) * summary: Schedule an SMS for future delivery with TCPA-aware consent gates. * score: 2 ### component ScreeningDispositionStep * file: src/cores/ce/wizards/screening/steps/ScreeningDispositionStep.tsx:31 * kind: component * core: ce * spec: (none) * summary: Renders disposition selection with conditional escalation and follow-up fields. * score: 2 ### component ScreeningForm * file: src/cores/ce/components/screening/ScreeningForm.tsx:75 * kind: component * core: ce * spec: (none) * summary: Screening form for intake assessment with triage computation. * score: 2 ### component ScreeningFormSkeleton * file: src/cores/ce/components/screening/ScreeningFormSkeleton.tsx:11 * kind: component * core: ce * spec: (none) * summary: Skeleton placeholder for the screening form while loading. * score: 2 ### component ScreeningHistory * file: src/cores/ce/components/screening/ScreeningHistory.tsx:29 * kind: component * core: ce * spec: (none) * summary: Renders the screening attempt history for a given lead. * score: 2 ### component ScreeningPage * file: src/cores/ce/pages/ScreeningPage.tsx:20 * kind: component * core: ce * spec: (none) * summary: Page component for conducting intake screening on a lead. * score: 2 ### component ScreeningQuestionnaireStep * file: src/cores/ce/wizards/screening/steps/ScreeningQuestionnaireStep.tsx:32 * kind: component * core: ce * spec: (none) * summary: Renders the dynamic questionnaire for the selected program type. * score: 2 ### component ScreeningTriageResult * file: src/cores/ce/components/screening/ScreeningTriageResult.tsx:26 * kind: component * core: ce * spec: (none) * summary: Displays the computed triage result from screening questionnaire responses. * score: 2 ### component ScreeningTriageSummaryStep * file: src/cores/ce/wizards/screening/steps/ScreeningTriageSummaryStep.tsx:41 * kind: component * core: ce * spec: (none) * summary: Displays computed triage and requires acknowledgment for critical flags. * score: 2 ### component SegmentCriteriaBuilder * file: src/cores/ce/components/segments/SegmentCriteriaBuilder.tsx:37 * kind: component * core: ce * spec: (none) * summary: Utility for segment criteria builder. * score: 1 ### component SegmentFormDialog * file: src/cores/ce/components/segments/SegmentFormDialog.tsx:52 * kind: component * core: ce * spec: (none) * summary: Utility for segment form dialog. * score: 1 ### component SegmentsPage * file: src/cores/ce/pages/SegmentsPage.tsx:23 * kind: component * core: ce * spec: (none) * summary: Renders the segments page interface. * score: 2 ### component SequenceAnalyticsTab * file: src/cores/ce/components/sequences/SequenceAnalyticsTab.tsx:66 * kind: component * core: ce * spec: (none) * summary: Renders sequence enrollment KPIs and exit reason analytics for a sequence. * params: * enrollments — Sequence enrollments including status/timestamps and optional display names (, ) used for CSV export. * returns: Analytics cards for completion/engagement/enrollment counts, exit-reason distribution bars, and CSV export output from . * score: 2 ### component SequenceForm * file: src/cores/ce/components/sequences/SequenceForm.tsx:88 * kind: component * core: ce * spec: (none) * summary: SequenceForm renders create/edit controls for CE-13 sequence metadata and enrollment behavior. * params: * initialValue — Optional sequence to edit; when present it seeds including JSON and . * onSubmit — Submit handler receiving validated ; includes JSON text for . * submitting — When true, disables the submit button and shows saving state. * returns: JSX.Element containing sequence fields, enrollment toggles, and conditional criteria JSON input. * score: 2 ### component SequenceSettingsTab * file: src/cores/ce/components/sequences/SequenceSettingsTab.tsx:36 * kind: component * core: ce * spec: none * summary: Settings tab editing the org-level follow-up sequence module settings, loading the current row into an editable draft. * score: 3 ### component SequenceStepBuilder * file: src/cores/ce/components/sequences/SequenceStepBuilder.tsx:30 * kind: component * core: ce * spec: (none) * summary: SequenceStepBuilder manages create/edit/delete/reorder controls for sequence steps. * params: * steps — Ordered sequence steps to render and reorder. * onCreateStep — Called when the user adds a new step by type. * onUpdateStep — Called when edits are saved from . * onDeleteStep — Called when a step is removed. * onReorderStepIds — Called with reordered step ids from drag-and-drop. * returns: Step list UI with desktop drag-and-drop controls and a mobile read-only fallback. * score: 2 ### component SequenceStepBuilderDesktopDnd * file: src/cores/ce/components/sequences/SequenceStepBuilderDesktopDnd.tsx:19 * kind: component * core: ce * spec: none * summary: Desktop drag-and-drop wrapper for the sequence step builder, reordering step ids on drop(ignoring no-op drags) and exposing edit/delete per step. * score: 3 ### component SlaComplianceDashboard * file: src/cores/ce/components/screening/SlaComplianceDashboard.tsx:18 * kind: component * core: ce * spec: (none) * summary: SLA Compliance Dashboard showing screening SLA performance. * score: 2 ### component SlaIndicator * file: src/cores/ce/wizards/screening/components/SlaIndicator.tsx:23 * kind: component * core: ce * spec: (none) * summary: Displays SLA compliance status for the current screening. * score: 2 ### component SlaStatusBadge * file: src/cores/ce/components/screening/SlaStatusBadge.tsx:18 * kind: component * core: ce * spec: (none) * summary: Renders an SLA status badge with semantic colors. * score: 2 ### component SmsComposeDialog * file: src/cores/ce/components/sms/SmsComposeDialog.tsx:55 * kind: component * core: ce * spec: (none) * summary: Utility for sms compose dialog. * score: 1 ### component SmsComposeInput * file: src/cores/ce/components/sms/SmsComposeInput.tsx:53 * kind: component * core: ce * spec: (none) * summary: Renders the sms compose input interface. * score: 2 ### component SmsConfigStep * file: src/cores/ce/components/setup/steps/SmsConfigStep.tsx:56 * kind: component * core: ce * spec: (none) * summary: Renders the SMS Configuration step used to select an SMS provider, enter the provider phone number, and toggle PHI detection.Presents a selectable provider (None, RingCentral), validates the RingCentral phone number in E.164 format when required, and persists settings via the app's SMS settings hook. When "None" is selected the step can be skipped without saving.Accessibility:- Associates labels with form controls via /.- Exposes validation state using and for the phone input. * params: * props — Component props - onNext: Callback invoked when the step completes successfully (or is skipped) - onBack: Callback invoked when the user navigates to the previous step * returns: The rendered JSX element for the SMS configuration step. * example: | SmsConfigStep onNext=() = console.log('advance') onBack=() = console.log('go back')/ * score: 4 ### component SmsConsentBadge * file: src/cores/ce/components/sms/SmsConsentBadge.tsx:76 * kind: component * core: ce * spec: (none) * summary: Utility for sms consent badge. * score: 1 ### component SmsConsentIndicator * file: src/cores/ce/components/sms/SmsConsentBadge.tsx:139 * kind: component * core: ce * spec: (none) * summary: Utility for sms consent indicator. * score: 1 ### component SmsConsentPage * file: src/cores/ce/pages/SmsConsentPage.tsx:25 * kind: component * core: ce * spec: (none) * summary: Utility for sms consent page. * score: 1 ### component SmsConsentStatusDialog * file: src/cores/ce/components/sms/SmsConsentStatusDialog.tsx:54 * kind: component * core: ce * spec: (none) * summary: Utility for sms consent status dialog. * score: 1 ### component SmsConsentTable * file: src/cores/ce/components/sms/SmsConsentTable.tsx:51 * kind: component * core: ce * spec: (none) * summary: Utility for sms consent table. * score: 1 ### component SmsConversation * file: src/cores/ce/components/sms/SmsConversation.tsx:29 * kind: component * core: ce * spec: (none) * summary: Utility for sms conversation. * score: 1 ### component SmsConversationPanel * file: src/cores/ce/components/sms/SmsConversationPanel.tsx:36 * kind: component * core: ce * spec: (none) * summary: Utility for sms conversation panel. * score: 1 ### component SmsConversationsPage * file: src/cores/ce/pages/SmsConversationsPage.tsx:35 * kind: component * core: ce * spec: (none) * summary: CE-08 SMS queue page for monitoring active message threads and sending replies.Supports phone/contact-scoped filtering, realtime inbound/outbound message updates,PHI guardrails before send, and retry for the latest failed outbound message. * score: 2 ### component SmsMergeFieldPicker * file: src/cores/ce/components/sms/SmsMergeFieldPicker.tsx:56 * kind: component * core: ce * spec: (none) * summary: Renders the sms merge field picker interface. * score: 2 ### component SmsMessageBubble * file: src/cores/ce/components/sms/SmsMessageBubble.tsx:38 * kind: component * core: ce * spec: (none) * summary: Utility for sms message bubble. * score: 1 ### component SmsNotificationProvider * file: src/cores/ce/providers/SmsNotificationProvider.tsx:16 * kind: component * core: ce * spec: (none) * summary: Provider that enables real-time SMS notification toasts.Returns null (short-circuits) if RealtimeProvider context is not available,preventing SmsNotificationInner and its useSmsNotifications hook from mounting. * score: 2 ### component SmsNotificationToast * file: src/cores/ce/components/sms/SmsNotificationToast.tsx:41 * kind: component * core: ce * spec: (none) * summary: SMS notification toast content * score: 2 ### component SmsPhiWarning * file: src/cores/ce/components/sms/SmsPhiWarning.tsx:60 * kind: component * core: ce * spec: (none) * summary: Renders the sms phi warning interface. * score: 2 ### component SmsPhiWarningInline * file: src/cores/ce/components/sms/SmsPhiWarning.tsx:122 * kind: component * core: ce * spec: (none) * summary: Renders the sms phi warning inline interface. * score: 2 ### component SmsRoutingRulesManager * file: src/cores/ce/components/sms/SmsRoutingRulesManager.tsx:24 * kind: component * core: ce * spec: (none) * summary: EN-05: Multi-number routing rules manager.Lets admins map sender phone numbers to a department/program/site targetwith priority + default-fallback configuration. * score: 2 ### component SmsSchedulePicker * file: src/cores/ce/components/sms/SmsSchedulePicker.tsx:18 * kind: component * core: ce * spec: CE-08 * summary: Date-time picker for scheduling an outbound SMS, normalising the chosen value to an ISOtimestamp and guarding against double-submission while scheduling. * score: 3 ### component SmsSettingsTab * file: src/cores/ce/components/settings/SmsSettingsTab.tsx:31 * kind: component * core: ce * spec: (none) * summary: Renders provider, retention, compliance, and business-hour SMS module settings. * score: 2 ### component SmsTemplateForm * file: src/cores/ce/components/sms/SmsTemplateForm.tsx:61 * kind: component * core: ce * spec: (none) * summary: Utility for sms template form. * score: 1 ### component SmsTemplateFormSkeleton * file: src/cores/ce/components/sms/SmsTemplateForm.tsx:284 * kind: component * core: ce * spec: (none) * summary: Utility for sms template form skeleton. * score: 1 ### component SmsTemplateList * file: src/cores/ce/components/sms/SmsTemplateList.tsx:26 * kind: component * core: ce * spec: (none) * summary: Utility for sms template list. * score: 1 ### component SmsTemplateListSkeleton * file: src/cores/ce/components/sms/SmsTemplateList.tsx:274 * kind: component * core: ce * spec: (none) * summary: Utility for sms template list skeleton. * score: 1 ### component SmsTemplatesPage * file: src/cores/ce/pages/SmsTemplatesPage.tsx:14 * kind: component * core: ce * spec: (none) * summary: Renders the sms templates page interface. * score: 2 ### component StageHeaderLeadsPopover * file: src/cores/ce/components/StageHeaderLeadsPopover.tsx:33 * kind: component * core: ce * spec: (none) * summary: Pipeline stage-header popover listing the leads currently in a stage,colour-coded by urgency and each clickable to open the lead profile. Opens onhover and keyboard focus and renders from already-loaded board data, so it addsno extra fetch (CE-58-EN-01 AC-3). Renders nothing when the stage is empty. * params: * stageName — the stage's display name, used in the trigger label. * leads — the leads in this stage, already loaded by the board. * defaultOpen — test-only; render the popover content open. * score: 2 ### component StepCard * file: src/cores/ce/components/sequences/StepCard.tsx:22 * kind: component * core: ce * spec: none * summary: Compact card summarising a single follow-up sequence step, choosing an icon and label from thestep's type. * score: 3 ### component StepConfigDialog * file: src/cores/ce/components/sequences/StepConfigDialog.tsx:27 * kind: component * core: ce * spec: (none) * summary: StepConfigDialog edits an individual sequence step and returns the updated with -specific content fields. * params: * open — Controlled open state for the dialog. * onOpenChange — Callback used to open/close the dialog from the parent. * initialStep — Initial snapshot used to seed local form state. * onSave — Called with the locally edited step when the user saves. * returns: JSX element rendering a step configuration dialog with type-specific content fields. * score: 2 ### component SubmitScheduleStep * file: src/cores/ce/wizards/partner-progress-review/steps/SubmitScheduleStep.tsx:22 * kind: component * core: ce * spec: (none) * summary: Read-only summary with edit links and next check-in scheduling. * score: 2 ### component SuppressionTable * file: src/cores/ce/components/compliance/SuppressionTable.tsx:68 * kind: component * core: ce * spec: CE-16 * summary: Tabular list of contact suppression records showing the contact, suppressed channels, andreason, with a delete action gated by . * score: 3 ### component SuppressionTableSkeleton * file: src/cores/ce/components/compliance/SuppressionTable.tsx:39 * kind: component * core: ce * spec: CE-16 * summary: Loading-state placeholder for , rendering skeleton rows whilesuppression data is fetched. * score: 3 ### component TagFilterControl * file: src/cores/ce/components/pipeline/TagFilterControl.tsx:35 * kind: component * core: ce * spec: CE-61 * summary: Control for filtering the pipeline by contact tags, toggling tag selection and switching betweenany/all match modes. * score: 3 ### component TileFieldConfigCard * file: src/cores/ce/components/settings/TileFieldConfigCard.tsx:149 * kind: component * core: ce * spec: CE-65 * summary: Settings card for configuring which metadata tile fields appear on pipeline lead cards, gatedbehind the permission. * score: 3 ### component TrackPipelineRow * file: src/cores/ce/components/TrackPipelineRow\.tsx:51 * kind: component * core: ce * spec: CE-64 * summary: Renders one pipeline track as a collapsible row of stage columns, accented by the track colourand optionally hiding the collapse control for terminal/virtual rows. * score: 3 ### component UploadContactDocumentDialog * file: src/cores/ce/components/contacts/UploadContactDocumentDialog.tsx:49 * kind: component * core: ce * spec: CE-59 * summary: Dialog for uploading a contact document, capturing a display name and type and enforcing theconfigured maximum file size before upload. * score: 3 ### component UploadStep * file: src/cores/ce/components/contacts/import-steps/UploadStep.tsx:30 * kind: component * core: ce * spec: (none) * summary: Step 1: File upload with drag & drop, template download, and file info display. * score: 2 ### component UserMappingStep * file: src/cores/ce/components/setup/steps/UserMappingStep.tsx:74 * kind: component * core: ce * spec: (none) * summary: Renders the user mapping step interface. * score: 2 ### component ValidationStep * file: src/cores/ce/components/contacts/import-steps/ValidationStep.tsx:19 * kind: component * core: ce * spec: (none) * summary: Step 3: Display validation results — valid/invalid row counts and error details. * score: 2 ### component VerificationStep * file: src/cores/ce/components/setup/steps/VerificationStep.tsx:41 * kind: component * core: ce * spec: (none) * summary: Renders the final verification step of the RingCentral setup flow, summarizing connection, user mappings, and SMS configuration and providing navigation controls.This component displays a loading skeleton while required integration data is fetched, then shows a success alert, three summary panels (Connection, User Mappings, SMS), a "What's Next?" list, and Back / Complete Setup actions. * params: * props — Component props - onComplete: Callback invoked when the user clicks "Complete Setup" - onBack: Callback invoked when the user clicks "Back" * returns: The verification step UI as a React element * example: | VerificationStep onBack=() = navigate(-1) onComplete=() = submitSetup() /Accessibility:- Action buttons are standard button elements to support keyboard and assistive technologies.- Informational content uses semantic headings and lists for screen reader readability. * score: 4 ### component WebFormBuilderPage * file: src/cores/ce/pages/WebFormBuilderPage.tsx:34 * kind: component * core: ce * spec: (none) * summary: Utility for web form builder page. * score: 1 ### component WebFormCard * file: src/cores/ce/components/web-forms/WebFormCard.tsx:27 * kind: component * core: ce * spec: (none) * summary: Utility for web form card. * score: 1 ### component WebFormDetailPage * file: src/cores/ce/pages/WebFormDetailPage.tsx:33 * kind: component * core: ce * spec: (none) * summary: Utility for web form detail page. * score: 1 ### component WebFormEmbedPanel * file: src/cores/ce/components/web-forms/WebFormEmbedPanel.tsx:53 * kind: component * core: ce * spec: (none) * summary: Utility for web form embed panel. * score: 1 ### component WebFormFieldEditor * file: src/cores/ce/components/web-forms/WebFormFieldEditor.tsx:47 * kind: component * core: ce * spec: (none) * summary: Utility for web form field editor. * score: 1 ### component WebFormFieldItem * file: src/cores/ce/components/web-forms/WebFormFieldItem.tsx:49 * kind: component * core: ce * spec: (none) * summary: Renders the web form field item interface. * score: 2 ### component WebFormFieldList * file: src/cores/ce/components/web-forms/WebFormFieldList.tsx:38 * kind: component * core: ce * spec: (none) * summary: Utility for web form field list. * score: 1 ### component WebFormPreview * file: src/cores/ce/components/web-forms/WebFormPreview\.tsx:19 * kind: component * core: ce * spec: (none) * summary: Utility for web form preview. * score: 1 ### component WebFormsListPage * file: src/cores/ce/pages/WebFormsListPage.tsx:49 * kind: component * core: ce * spec: (none) * summary: Renders the web forms list page interface. * score: 2 ### component WebFormStatsCards * file: src/cores/ce/components/web-forms/WebFormStatsCards.tsx:23 * kind: component * core: ce * spec: (none) * summary: Renders the web form stats cards interface. * score: 2 ### component WebFormStylingEditor * file: src/cores/ce/components/web-forms/WebFormStylingEditor.tsx:19 * kind: component * core: ce * spec: (none) * summary: Edits web-form theme settings including colors, button style, and typography. * score: 2 ### component WebFormSubmissionsTable * file: src/cores/ce/components/web-forms/WebFormSubmissionsTable.tsx:47 * kind: component * core: ce * spec: (none) * summary: Utility for web form submissions table. * score: 1 ### component WidgetPositionPreview * file: src/cores/ce/components/settings/WidgetPositionPreview\.tsx:47 * kind: component * core: ce * spec: (none) * summary: Renders a miniature browser mockup that visualizes where an embeddable widget will appear on the screen and highlights the selected corner.The preview shows four corner indicators (top-left, top-right, bottom-left, bottom-right); the active position is styled with the primary color and displays a phone icon.Accessibility: the container uses role="img" and an that announces the current widget position. * params: * props — Component props - position: The active widget corner position to highlight - className: Optional additional class names to apply to the root container * returns: A JSX element containing the browser mockup and a textual label describing the selected position * example: | WidgetPositionPreview position="bottom-right" / * score: 4 ## Functions & utilities ### function \_\_resetCrisisDetectionEnabledCache * file: src/cores/ce/lib/crisisDetectionSettings.ts:38 * kind: function * core: ce * spec: (none) * summary: Test helper. * score: 1 ### function ActivitySearchPage * file: src/cores/ce/pages/ActivitySearchPage.tsx:77 * kind: function * core: ce * spec: (none) * summary: Renders the activity search page interface. * score: 4 ### function addDays * file: src/cores/ce/lib/priorAuth/buildSubmissionPayload.ts:22 * kind: function * core: ce * spec: (none) * summary: Add calendar days to a YYYY-MM-DD date, returning YYYY-MM-DD (UTC). * score: 4 ### function aggregateByDisposition * file: src/cores/ce/hooks/useCallAnalytics.ts:80 * kind: function * core: ce * spec: (none) * summary: Aggregates by disposition for pie chart * score: 4 ### function aggregateByPeriod * file: src/cores/ce/hooks/useCallAnalytics.ts:23 * kind: function * core: ce * spec: (none) * summary: Aggregates call analytics rows by the specified time period * score: 4 ### function aggregateByStage * file: src/cores/ce/hooks/usePipelineMetrics.ts:27 * kind: function * core: ce * spec: (none) * summary: Aggregates raw view rows into stage-level metrics * score: 4 ### function aggregateDirectionalCounts * file: src/cores/ce/hooks/useReferralAttempts.ts:44 * kind: function * core: ce * spec: (none) * summary: Pure directional aggregation mirroring the ce\_partners reconciliation trigger:counts incoming vs outbound separately and ignores soft-deleted rows. Consumedby ReferralLedgerPanel to render the live Incoming/Outbound summary from theloaded attempts, so the panel reflects the in-cache ledger (incl. an attemptjust logged) without re-querying the partner row. * score: 4 ### function applyMergeFields * file: src/cores/ce/utils/merge-fields.ts:234 * kind: function * core: ce * spec: (none) * summary: Apply merge fields to template text * params: * template — Template text with field.name placeholders * context — Data context for field substitution * options — Substitution options * returns: Template with fields replaced by values * score: 4 ### function assertAssigneeEligible * file: src/cores/ce/utils/leadAssignmentAudit.ts:19 * kind: function * core: ce * spec: (none) * summary: Verify the assignee belongs to the same org and currently holds anunexpired role assignment. (unassign) is always eligible. * score: 4 ### function assertPart2ConsentForScreening * file: src/cores/ce/utils/part2ConsentGate.ts:42 * kind: function * core: ce * spec: (none) * summary: Enforce the Part 2 consent gate before SUD-screening triage is scored/persisted.Throws when consent is required and not obtained. * score: 4 ### function assignmentToastMessage * file: src/cores/ce/utils/leadAssignment.ts:28 * kind: function * core: ce * spec: (none) * summary: AC-1/AC-2 success-toast copy for an assignment outcome. * score: 4 ### function autoDetectMapping * file: src/cores/ce/utils/csvImport.ts:125 * kind: function * core: ce * spec: (none) * summary: Auto-detect column mapping based on header names * score: 4 ### function billingCodeForProgram * file: src/cores/ce/lib/priorAuth/buildSubmissionPayload.ts:13 * kind: function * core: ce * spec: (none) * summary: S9480 = Mental Health IOP, H0015 = SUD IOP (FR-6). * score: 4 ### function buildAssignmentEventPayload * file: src/cores/ce/utils/leadAssignmentAudit.ts:98 * kind: function * core: ce * spec: (none) * summary: Build the minimal, PHI-free payload used for both PF-10 notificationsand the canonical / domain events. * score: 4 ### function buildAssignmentNotification * file: src/cores/ce/utils/leadAssignment.ts:78 * kind: function * core: ce * spec: (none) * summary: Build the row for an assignment (AC-5). Body staysPII-light — the lead reference travels in for the deep link, not thevisible text — and PF-10 delivery routes it to the assignee's channels(email/in-app) per their preferences. * score: 4 ### function buildFieldDecisions * file: src/cores/ce/lib/mergeSurvivorship.ts:127 * kind: function * core: ce * spec: (none) * summary: Builds the RPC payload from the reviewer's selections:only fields whose chosen value differs from the survivor's current valueare sent (the survivor's own values need no decision). * score: 4 ### function buildPartnerAgreementContent * file: src/cores/ce/templates/partner-agreement-content.ts:10 * kind: function * core: ce * spec: (none) * summary: Builds build partner agreement content data for downstream workflows. * score: 4 ### function buildPerTrackUnassignedColumns * file: src/cores/ce/lib/pipelineVirtualStages.ts:52 * kind: function * core: ce * spec: (none) * summary: Splits unstaged active leads into one virtual Unassigned column per pipeline track(CE-64 FR-3.3 — lead appears only in the row for its ). * score: 4 ### function buildVCard * file: src/cores/ce/lib/vcard.ts:62 * kind: function * core: ce * spec: (none) * summary: Build an RFC-6350 vCard 3.0 string from whitelisted card fields. Only fieldswith a non-empty value are emitted, so the output is stable and minimal. * score: 4 ### function calculatePartnerStatus * file: src/cores/ce/utils/calculatePartnerStatus.ts:107 * kind: function * core: ce * spec: (none) * summary: Calculate partner status based on KPIs and milestonesStatus Logic:- exceeding: All KPIs above target- on\_track: All KPIs within ±10% tolerance- at\_risk: 1 KPI below target- off\_track: 2+ KPIs below target OR 2+ missed milestones * score: 4 ### function calculateScreeningTriage * file: src/cores/ce/utils/screeningTriage.ts:176 * kind: function * core: ce * spec: (none) * summary: Calculates the triage category, score, and recommended level of care by evaluatinga against questionnaire responses. Pure and deterministic. * score: 4 ### function calculateSegments * file: src/cores/ce/utils/sms-segment-utils.ts:213 * kind: function * core: ce * spec: (none) * summary: Calculate SMS segments for given text * score: 4 ### function canAdvanceFromDocumentsStep * file: src/cores/ce/wizards/partner-contract/partnerContractWizardValidation.ts:39 * kind: function * core: ce * spec: (none) * summary: Validates the documents step — always allows advancing, but warns if no document. * score: 4 ### function canSendSms * file: src/cores/ce/components/sms/SmsConsentBadge.tsx:173 * kind: function * core: ce * spec: (none) * summary: Check if SMS can be sent based on consent status * score: 4 ### function cardShareAssets * file: src/cores/ce/lib/cardShare.ts:38 * kind: function * core: ce * spec: (none) * summary: Build the full set of share assets for a card: public URL + vCard string +vCard data URI. The QR is rendered separately in the UI from . * score: 4 ### function checkAndNotifyStatusChange * file: src/cores/ce/utils/partnerProgressNotifications.ts:144 * kind: function * core: ce * spec: (none) * summary: Check if status changed and send appropriate notification * score: 4 ### function checkDuplicateContact * file: src/cores/ce/utils/duplicateDetection.ts:29 * kind: function * core: ce * spec: (none) * summary: Check for duplicate contacts by phone or emailReturns the first matching contact or null * score: 4 ### function checkPhiBlocking * file: src/cores/ce/hooks/usePhiBlockCheck.ts:87 * kind: function * core: ce * spec: (none) * summary: Standalone function for checking PHI without React hooksUseful for validation in form schemas or edge functions * score: 4 ### function chooseCreateLeadTrackId * file: src/cores/ce/hooks/chooseCreateLeadTrackId.ts:19 * kind: function * core: ce * spec: (none) * summary: Decide the to persist for a new lead. An explicit picker selectionalways wins; otherwise the track is auto-resolved from the lead's requestedservices against the org's active tracks; otherwise is returned sothe DB trigger assigns the org default (CE-64-EN-01 AC-1). * params: * explicitTrackId — the track chosen in the New Lead picker, if any. * tracks — the org's active pipeline tracks, for service-based resolution. * requestedServices — the lead's requested services, used to auto-resolve. * returns: the resolved track id, or to defer to the DB default trigger. * score: 4 ### function classifyLeadStageTransition * file: src/cores/ce/lib/classifyLeadStageTransition.ts:37 * kind: function * core: ce * spec: (none) * summary: Classify a destination stage row into the transition kind.- → (open Scheduled prompt)- → (open Admit confirm)- → (open Closure form)- Otherwise, if is true the caller should still surface the generic Scheduled prompt as a fallback action; we report to keep the UI behavior consistent. If neither flag is set we report and the caller should commit the move directly. * score: 4 ### function clearAllRecentViews * file: src/cores/ce/lib/mobileRecentViewsLru.ts:77 * kind: function * core: ce * spec: (none) * summary: Clears ALL CE mobile recent view keys from localStorage.Called during sign-out to prevent PHI leakage. * score: 4 ### function clearOfflineQueue * file: src/cores/ce/lib/offlineActivityQueue.ts:108 * kind: function * core: ce * spec: (none) * summary: Clears the entire offline queue. * score: 4 ### function clearRecentViews * file: src/cores/ce/lib/mobileRecentViewsLru.ts:65 * kind: function * core: ce * spec: (none) * summary: Clears recent views for a specific user+org scope. * score: 4 ### function computeFieldConflicts * file: src/cores/ce/lib/mergeSurvivorship.ts:96 * kind: function * core: ce * spec: (none) * summary: Lists fields where the two contacts genuinely conflict — both perspectivesshown side by side in the dialog. Fields where the merged side adds a valuethe survivor lacks are conflicts too (defaulting to the non-null side). * score: 4 ### function computeScreeningSla * file: src/cores/ce/utils/computeScreeningSla.ts:32 * kind: function * core: ce * spec: (none) * summary: Computes the SLA status for a screening attempt.Uses UTC-based computation to avoid timezone edge cases.Both inputs are expected as ISO 8601 strings. * score: 4 ### function computeSummary * file: src/cores/ce/hooks/usePipelineMetrics.ts:83 * kind: function * core: ce * spec: (none) * summary: Computes pipeline summary from stage metrics * score: 4 ### function constructTenantPath * file: src/cores/ce/lib/document-storage-adapter.ts:64 * kind: function * core: ce * spec: (none) * summary: Construct a tenant-safe storage path.Layout: The first path segment is the organization id; storage RLS policies key on to enforce tenant isolation. * score: 4 ### function containsUnredactedPhi * file: src/cores/ce/lib/priorAuth/redactPhi.ts:31 * kind: function * core: ce * spec: (none) * summary: True if any PHI key in the object still holds a non-redacted value. * score: 4 ### function createSampleContext * file: src/cores/ce/utils/merge-fields.ts:311 * kind: function * core: ce * spec: (none) * summary: Create sample context for template preview * score: 4 ### function dequeueItems * file: src/cores/ce/lib/offlineActivityQueue.ts:71 * kind: function * core: ce * spec: (none) * summary: Removes the first N items from the queue (FIFO drain after successful sync). * score: 4 ### function detectDuplicates * file: src/cores/ce/components/contacts/import-utils/fuzzyMatch.ts:53 * kind: function * core: ce * spec: (none) * summary: Detect duplicate clusters by resolving imported rows through the CE-74identity engine. * params: * validRows — Validated import rows * organizationId — Organization to scope the search * returns: Array of duplicate clusters (best match per row) * score: 4 ### function detectPhiInMessage * file: src/cores/ce/utils/sms-opt-out.ts:290 * kind: function * core: ce * spec: (none) * summary: Detect PHI patterns in message text * params: * text — Message text to check * returns: Detection result with types found and severity * score: 4 ### function dispatchAssignmentNotification * file: src/cores/ce/utils/leadAssignment.ts:117 * kind: function * core: ce * spec: (none) * summary: AC-5/AC-6: create the assignee notification when (and only when) the lead was(re)assigned to another user. Returns whether a notification was created socallers/tests can assert the decision. Caller wraps this best-effort so anotification failure never blocks the assignment itself. * score: 4 ### function downloadContactTemplate * file: src/cores/ce/utils/csvImport.ts:76 * kind: function * core: ce * spec: (none) * summary: Initiates a browser download of the contact CSV template file. * score: 4 ### function downloadCSV * file: src/cores/ce/utils/exportActivities.ts:112 * kind: function * core: ce * spec: (none) * summary: Download CSV content as a file * score: 4 ### function encoreFieldLabel * file: src/cores/ce/lib/hubspotMappingFields.ts:33 * kind: function * core: ce * spec: (none) * summary: Label for a mapped field; falls back to the raw column name. * score: 4 ### function enqueueActivity * file: src/cores/ce/lib/offlineActivityQueue.ts:53 * kind: function * core: ce * spec: (none) * summary: Enqueues an activity. Throws if queue is at capacity (100 items). * score: 4 ### function escapeCSVField * file: src/cores/ce/utils/exportActivities.ts:42 * kind: function * core: ce * spec: (none) * summary: Escape a CSV field value for proper formatting * score: 4 ### function evaluateOrgCalendarCapability * file: src/cores/ce/lib/orgCalendarCapability.ts:48 * kind: function * core: ce * spec: (none) * summary: Evaluate org-calendar DWD capability from the org's Google Workspaceconnection and the current user's email.Fails closed: any missing input, non- status, disabled calendarcapability, or domain mismatch yields . * params: * connection — The active org's PF-101 connection, or null/undefined. * userEmail — The current user's email (used only for the domain match). * score: 4 ### function exportActivitiesToCSV * file: src/cores/ce/utils/exportActivities.ts:131 * kind: function * core: ce * spec: (none) * summary: Export activities to CSV with audit logging * score: 4 ### function extractCountryCode * file: src/cores/ce/utils/sms-phone-utils.ts:42 * kind: function * core: ce * spec: (none) * summary: Extract country code from E.164 phone number * params: * phone — E.164 phone number * returns: Country code (e.g., "+1" for US) * score: 4 ### function extractDomain * file: src/cores/ce/utils/email-matching.ts:59 * kind: function * core: ce * spec: (none) * summary: Extract domain from email address * score: 4 ### function extractMergeFields * file: src/cores/ce/utils/merge-fields.ts:269 * kind: function * core: ce * spec: (none) * summary: Extract merge field keys from template text * params: * template — Template text to scan * returns: Array of unique field keys found * score: 4 ### function fetchActivityHistory * file: src/cores/ce/history/adapters/activity.ts:31 * kind: function * core: ce * spec: CE-60 * summary: History adapter that fetches a contact's activity rows from , applying theredaction policy and date/limit window for the unified timeline. * params: * args — Org/contact scope, optional , per-source , and redaction . * returns: Normalised history rows for activities. * score: 5 ### function fetchAuditHistory * file: src/cores/ce/history/adapters/audit.ts:30 * kind: function * core: ce * spec: CE-60 * summary: History adapter that fetches a contact's audit-log rows from (profileupdates), applying the redaction policy and date/limit window. * params: * args — Org/contact scope, optional , per-source , and redaction . * returns: Normalised history rows for audit/profile-update events. * score: 5 ### function fetchClosureHistory * file: src/cores/ce/history/adapters/closure.ts:31 * kind: function * core: ce * spec: CE-60 * summary: History adapter that derives closure/loss events for a contact by resolving its leads first,applying the redaction policy and date/limit window. * params: * args — Org/contact scope, optional , per-source , and redaction . * returns: Normalised history rows for lead closures. * score: 5 ### function fetchContactHistory * file: src/cores/ce/history/adapters/index.ts:103 * kind: function * core: ce * spec: CE-60 * summary: Orchestrates the unified contact-history page by fanning out to the per-source adapters selectedby the active filters, over-fetching per source so the merged, cursored window can still yield afull page. * params: * args — Scope, paging, filters, cursor, redaction policy, and stage-fallback flag. * returns: A merged, redacted, cursored page of history rows. * score: 5 ### function fetchDocumentHistory * file: src/cores/ce/history/adapters/document.ts:25 * kind: function * core: ce * spec: CE-60 * summary: History adapter that fetches a contact's document events from (uploads,deletions, extraction status), applying the redaction policy and window. * params: * args — Org/contact scope, optional , per-source , and redaction . * returns: Normalised history rows for documents. * score: 5 ### function fetchScreeningHistory * file: src/cores/ce/history/adapters/screening.ts:26 * kind: function * core: ce * spec: CE-60 * summary: History adapter that derives screening/intake events for a contact by resolving the contact'sleads first (a contact may have multiple intake attempts), applying the redaction policy andwindow. * params: * args — Org/contact scope, optional , per-source , and redaction . * returns: Normalised history rows for screening attempts. * score: 5 ### function findNonGsm7Characters * file: src/cores/ce/utils/sms-segment-utils.ts:198 * kind: function * core: ce * spec: (none) * summary: Find non-GSM-7 characters in text * score: 4 ### function formatActivityForExport * file: src/cores/ce/utils/exportActivities.ts:54 * kind: function * core: ce * spec: (none) * summary: Format an activity for CSV export * score: 4 ### function formatCallDuration * file: src/cores/ce/utils/formatCallDuration.ts:14 * kind: function * core: ce * spec: (none) * summary: Format call duration from seconds to mm:ss format * params: * seconds — Duration in seconds (or null) * returns: Formatted string like "5:23" or "-" for null * score: 4 ### function formatFileSize * file: src/cores/ce/utils/csvImport.ts:213 * kind: function * core: ce * spec: (none) * summary: Format file size for display * score: 1 ### function formatLeadStageCreateError * file: src/cores/ce/lib/leadStageOrder.ts:60 * kind: function * core: ce * spec: (none) * summary: User-facing message for stage create unique violations. * score: 4 ### function formatMergeValue * file: src/cores/ce/lib/mergeSurvivorship.ts:145 * kind: function * core: ce * spec: (none) * summary: Human-readable cell for the diff table; PHI stays in the org-scoped UI. * score: 4 ### function formatPhoneForDisplay * file: src/cores/ce/utils/sms-phone-validation.ts:67 * kind: function * core: ce * spec: (none) * summary: Format phone number for display * params: * phone — E.164 phone number * returns: Formatted display string * score: 4 ### function formatPhoneMasked * file: src/cores/ce/utils/sms-phone-utils.ts:22 * kind: function * core: ce * spec: (none) * summary: Format phone number with masking for privacy-safe displayShows only last 4 digits: +1\*\*\*\*\*\*1234 * params: * phone — E.164 phone number * returns: Masked phone string * score: 4 ### function formatPublishError * file: src/cores/ce/wizards/sequences/utils/parsePublishError.ts:259 * kind: function * core: ce * spec: (none) * summary: Convert a structured detail into a user-facing toast title + description. * score: 4 ### function formatReferralDate * file: src/cores/ce/lib/formatReferralDate.ts:31 * kind: function * core: ce * spec: (none) * summary: Formats a stored referral timestamp as a calendar date in UTC. * params: * value — ISO timestamp string (or null/undefined). * returns: The date formatted as e.g. , or when absent/invalid. * score: 4 ### function generateActivitiesCSV * file: src/cores/ce/utils/exportActivities.ts:72 * kind: function * core: ce * spec: (none) * summary: Generate CSV content from activities * score: 4 ### function generateCardSlug * file: src/cores/ce/lib/cardSlug.ts:57 * kind: function * core: ce * spec: (none) * summary: Build a globally-unique-candidate slug from a display name, e.g.. The base is deterministic; only the suffix is random. * score: 4 ### function generateSignedUrl * file: src/cores/ce/lib/document-storage-adapter.ts:128 * kind: function * core: ce * spec: (none) * summary: Generate a short-lived signed URL for download. * score: 4 ### function getCharacterLimitWarning * file: src/cores/ce/utils/sms-segment-utils.ts:309 * kind: function * core: ce * spec: (none) * summary: Get character limit warning if approaching or exceeding limits * score: 4 ### function getDefaultRecipient * file: src/cores/ce/hooks/useEmailCompose.ts:196 * kind: function * core: ce * spec: (none) * summary: Get default recipient email from contact or partner * score: 4 ### function getGsm7Length * file: src/cores/ce/utils/sms-segment-utils.ts:183 * kind: function * core: ce * spec: (none) * summary: Calculate GSM-7 character length (extended chars count as 2) * score: 4 ### function getMappingPreview * file: src/cores/ce/components/contacts/import-utils/mappingPreview\.ts:28 * kind: function * core: ce * spec: (none) * summary: Generate preview rows showing sample values for each mapped column. * params: * rows — Parsed CSV rows * columnMapping — Current column mapping * maxSamples — Maximum sample values per column (default 5) * returns: Array of preview rows with sample values * score: 4 ### function getMatchTypeColor * file: src/cores/ce/utils/email-matching.ts:299 * kind: function * core: ce * spec: (none) * summary: Get semantic color class for a match type badge * score: 4 ### function getMatchTypeLabel * file: src/cores/ce/utils/email-matching.ts:282 * kind: function * core: ce * spec: (none) * summary: Get a human-readable label for a match type * score: 4 ### function getMergeFieldGroups * file: src/cores/ce/utils/merge-fields.ts:211 * kind: function * core: ce * spec: (none) * summary: Get merge fields grouped by category for UI picker * score: 4 ### function getNextBusinessOpen * file: src/cores/ce/lib/businessHoursEvaluator.ts:60 * kind: function * core: ce * spec: (none) * summary: Returns the next business-open Date (= ).Returns null if config is invalid. * score: 4 ### function getOfflineQueue * file: src/cores/ce/lib/offlineActivityQueue.ts:40 * kind: function * core: ce * spec: (none) * summary: Retrieves the current offline queue. * score: 4 ### function getOptInKeyword * file: src/cores/ce/utils/sms-opt-out.ts:123 * kind: function * core: ce * spec: (none) * summary: Get the matched opt-in keyword from message * params: * body — SMS message body * returns: Matched keyword or null * score: 4 ### function getOptOutKeyword * file: src/cores/ce/utils/sms-opt-out.ts:103 * kind: function * core: ce * spec: (none) * summary: Get the matched opt-out keyword from messageUseful for logging the specific keyword used * params: * body — SMS message body * returns: Matched keyword or null * score: 4 ### function getPendingCount * file: src/cores/ce/lib/offlineActivityQueue.ts:100 * kind: function * core: ce * spec: (none) * summary: Returns the count of pending items. * score: 4 ### function getPhiLabels * file: src/cores/ce/utils/sms-opt-out.ts:331 * kind: function * core: ce * spec: (none) * summary: Get human-readable labels for detected PHI types * score: 4 ### function getPhoneValidationError * file: src/cores/ce/utils/sms-phone-validation.ts:31 * kind: function * core: ce * spec: (none) * summary: Get user-friendly validation error for phone number * params: * phone — Phone number to validate * returns: Error message or null if valid * score: 4 ### function getRecentViews * file: src/cores/ce/lib/mobileRecentViewsLru.ts:32 * kind: function * core: ce * spec: (none) * summary: Retrieves recent views for a user+org, most recent first. * score: 4 ### function getRecipientName * file: src/cores/ce/hooks/useEmailCompose.ts:213 * kind: function * core: ce * spec: (none) * summary: Get recipient display name * score: 1 ### function getSegmentDisplay * file: src/cores/ce/utils/sms-segment-utils.ts:293 * kind: function * core: ce * spec: (none) * summary: Get display string for segment information * score: 4 ### function getSmsBlockReason * file: src/cores/ce/components/sms/SmsConsentBadge.tsx:180 * kind: function * core: ce * spec: (none) * summary: Get reason why SMS cannot be sent * score: 4 ### function getSmsMessageIntent * file: src/cores/ce/utils/sms-opt-out.ts:145 * kind: function * core: ce * spec: (none) * summary: Retrieves sms message intent data for caller use. * score: 4 ### function getStatusBgColor * file: src/cores/ce/utils/calculatePartnerStatus.ts:238 * kind: function * core: ce * spec: (none) * summary: Get background color class for status badges * score: 4 ### function getStatusColor * file: src/cores/ce/utils/calculatePartnerStatus.ts:225 * kind: function * core: ce * spec: (none) * summary: Get semantic color class for status * score: 4 ### function getStatusLabel * file: src/cores/ce/utils/calculatePartnerStatus.ts:212 * kind: function * core: ce * spec: (none) * summary: Get human-readable status label * score: 4 ### function getUrgencyAccent * file: src/cores/ce/lib/urgency.ts:84 * kind: function * core: ce * spec: (none) * summary: Resolve an urgency string to its UI accent, or null when absent/invalid. * score: 4 ### function groupStagesByTrack * file: src/cores/ce/lib/groupStagesByTrack.ts:19 * kind: function * core: ce * spec: (none) * summary: Split a board's stage groups into per-track buckets plus one shared terminalbucket. Stages with a group under that track; stages with no (the virtual Converted/Lost columns) collapse into a single list — the rule that makes terminal columns shared across tracksrather than duplicated per track (CE-64-EN-01 AC-2). * params: * stages — the board's stage groups, per-track and terminal mixed. * returns: (trackId → that track's stages) and (the shared no-track stages). * score: 4 ### function invokeCalendarTaskPush * file: src/cores/ce/services/calendarTaskPush.ts:38 * kind: function * core: ce * spec: (none) * summary: Fire-and-forget invoke of the push edge function. Swallows all errors: thepush is one-way and fail-open, so the caller's task creation is never blocked. * score: 4 ### function isGsm7 * file: src/cores/ce/utils/sms-segment-utils.ts:171 * kind: function * core: ce * spec: (none) * summary: Check if text contains only GSM-7 characters * score: 4 ### function isHelpMessage * file: src/cores/ce/utils/sms-opt-out.ts:86 * kind: function * core: ce * spec: (none) * summary: Check if message is a help request * params: * body — SMS message body * returns: True if message is a help request * score: 4 ### function isOptInMessage * file: src/cores/ce/utils/sms-opt-out.ts:60 * kind: function * core: ce * spec: (none) * summary: Check if message body contains an opt-in keyword * params: * body — SMS message body * returns: True if message is an opt-in/re-consent request * score: 4 ### function isOptOutMessage * file: src/cores/ce/utils/sms-opt-out.ts:34 * kind: function * core: ce * spec: (none) * summary: Check if message body contains an opt-out keyword * params: * body — SMS message body * returns: True if message is an opt-out request * score: 4 ### function isPart2ConsentRequired * file: src/cores/ce/utils/part2ConsentGate.ts:32 * kind: function * core: ce * spec: (none) * summary: Whether a 42 CFR Part 2 consent is required before scoring/persisting a screening ofthis program type. Fail-closed: every current screening program type is SUD/BH. * score: 4 ### function isSensitiveField * file: src/cores/ce/history/lib/redaction.ts:37 * kind: function * core: ce * spec: CE-60 * summary: Returns whether a field name is considered sensitive (DOB, phone, email, insurance, SSN,address, etc.) and therefore subject to masking unless the caller holds sensitive-view. * params: * fieldName — Candidate field name; matched case-insensitively. Nullish names are never sensitive. * returns: when the field must be masked for non-privileged viewers. * score: 5 ### function isValidE164 * file: src/cores/ce/utils/sms-phone-validation.ts:17 * kind: function * core: ce * spec: (none) * summary: Validate E.164 phone number formatE.164 format: +\[country code]\[subscriber number]Example: +14155551234 (US number) * params: * phone — Phone number to validate * returns: true if valid E.164 format * score: 4 ### function isWithinBusinessHours * file: src/cores/ce/lib/businessHoursEvaluator.ts:42 * kind: function * core: ce * spec: (none) * summary: Whether falls within the configured business hours. * score: 4 ### function logContactTagEvent * file: src/cores/ce/lib/contactTagAudit.ts:26 * kind: function * core: ce * spec: (none) * summary: Best-effort audit event emission. Failures are logged but never thrown sothe underlying assignment mutation cannot be blocked by audit issues. * score: 4 ### function mapPartnerToFormValues * file: src/cores/ce/schemas/partnerSchema.ts:63 * kind: function * core: ce * spec: (none) * summary: Map existing partner data to form values * score: 4 ### function mapToScorecardMetrics * file: src/cores/ce/hooks/usePartnerScorecard.ts:42 * kind: function * core: ce * spec: (none) * summary: Maps raw view rows to scorecard metrics with declining flags * params: * rows — Raw database view rows * successRateThreshold — Threshold below which success rate is considered declining * volumeThreshold — Days since last referral after which volume is considered declining * score: 4 ### function markItemFailed * file: src/cores/ce/lib/offlineActivityQueue.ts:89 * kind: function * core: ce * spec: (none) * summary: Marks a queue item as failed with an error message and increments attempts. * score: 4 ### function maskInsuranceMemberId * file: src/cores/ce/utils/insurance-mask.ts:19 * kind: function * core: ce * spec: (none) * summary: Mask an insurance member identifier.Rules: - null/empty → empty string - length ≤ 4 → fully masked (no last-N reveal) - length 4 → reveal the last 4 chars, mask the rest * score: 4 ### function maskValue * file: src/cores/ce/history/lib/redaction.ts:50 * kind: function * core: ce * spec: CE-60 * summary: Returns the value as-is when the redaction policy grants sensitive view, otherwise the masktoken; nullish input passes through as . * params: * policy — Redaction policy whose flag decides masking. * returns: The original value, the mask token, or . * score: 5 ### function matchCrisisKeywords * file: src/cores/ce/lib/crisisKeywordMatcher.ts:81 * kind: function * core: ce * spec: (none) * summary: Run keyword detection against an arbitrary text body.Pure function — safe to call in workers, edge functions, or React render. * score: 4 ### function matchEmailsToEntities * file: src/cores/ce/utils/email-matching.ts:241 * kind: function * core: ce * spec: (none) * summary: Match multiple email addresses in batchUseful for displaying match indicators on email listsProcesses emails in parallel with concurrency limit to avoidoverwhelming the database. * score: 4 ### function matchEmailToEntity * file: src/cores/ce/utils/email-matching.ts:164 * kind: function * core: ce * spec: (none) * summary: Match an email address to a contact, lead, or partnerPriority:1. Exact contact email match2. If contact found, check for active lead3. Partner domain match4. No match * score: 4 ### function missingRequiredFields * file: src/cores/ce/lib/priorAuth/buildSubmissionPayload.ts:65 * kind: function * core: ce * spec: (none) * summary: Required fields that must be present before submission is enabled (FR-3, AC-2). * score: 4 ### function normalizeEmail * file: src/cores/ce/utils/duplicateDetection.ts:20 * kind: function * core: ce * spec: (none) * summary: Normalize email by lowercasing and trimming * score: 4 ### function normalizeEmail * file: src/cores/ce/utils/email-matching.ts:51 * kind: function * core: ce * spec: (none) * summary: Normalize email address for consistent matching * score: 4 ### function normalizePhone * file: src/cores/ce/utils/duplicateDetection.ts:12 * kind: function * core: ce * spec: (none) * summary: Normalize phone number by removing formatting characters * score: 4 ### function normalizePhoneToE164 * file: src/cores/ce/utils/sms-phone-validation.ts:92 * kind: function * core: ce * spec: (none) * summary: Normalize phone number to E.164 formatHandles common input variations:- Removes spaces, dashes, parentheses- Adds + if missing (assumes US if 10 digits) * params: * phone — Phone number input * returns: Normalized E.164 format or original if can't normalize * score: 4 ### function notifyOrgAdmins * file: src/cores/ce/utils/partnerProgressNotifications.ts:230 * kind: function * core: ce * spec: (none) * summary: Batch send notifications to multiple org admins * score: 4 ### function parseCSV * file: src/cores/ce/utils/csvImport.ts:92 * kind: function * core: ce * spec: (none) * summary: Parse CSV text into structured data (uses /platform/csv). * score: 4 ### function parsePublishError * file: src/cores/ce/wizards/sequences/utils/parsePublishError.ts:84 * kind: function * core: ce * spec: (none) * summary: Decode an unknown error from into a structured detail.Regex order matters — more-specific patterns come first. * score: 4 ### function parseUTMFromURL * file: src/cores/ce/hooks/useLeadAttribution.ts:31 * kind: function * core: ce * spec: (none) * summary: Parse UTM parameters from URL * score: 1 ### function perTrackNextStageOrder * file: src/cores/ce/lib/leadStageOrder.ts:18 * kind: function * core: ce * spec: (none) * summary: Smallest non-negative not yet used on this track.General and Recovery Housing may both use 0, 1, 2 independently. * score: 4 ### function phonesMatch * file: src/cores/ce/utils/sms-phone-utils.ts:67 * kind: function * core: ce * spec: (none) * summary: Check if two phone numbers match (handles format variations) * params: * phone1 — First phone number * phone2 — Second phone number * returns: True if phones match after normalization * score: 4 ### function pickDefaultTransferStageId * file: src/cores/ce/lib/pipelineVirtualStages.ts:29 * kind: function * core: ce * spec: (none) * summary: CE-64 Phase 2: pick the default destination stage when transferring a leadacross tracks. Prefer a name match against the lead's current stage; fallback to the first active stage in the destination track; return toindicate the lead should land in the destination track's Unassigned column. * score: 4 ### function previewImport * file: src/cores/ce/utils/csvImport.ts:164 * kind: function * core: ce * spec: (none) * summary: Validate and preview import data * score: 4 ### function publicCardUrl * file: src/cores/ce/lib/cardShare.ts:27 * kind: function * core: ce * spec: (none) * summary: Build the public URL for a card slug, e.g. . * score: 4 ### function randomSlugSuffix * file: src/cores/ce/lib/cardSlug.ts:45 * kind: function * core: ce * spec: (none) * summary: Generate a short random alphanumeric suffix of chars. * score: 4 ### function readableForeground * file: src/cores/ce/components/contacts/ContactTagBadge.utils.ts:20 * kind: function * core: ce * spec: CE-61 * summary: Picks a readable foreground colour for a tag swatch by computing the Rec. 709 perceivedluminance of the given hex and returning the dark token for light backgrounds, the light tokenotherwise. * params: * hex — Six-digit hex colour (with or without leading ); malformed values fall back to the light foreground. * returns: An foreground token string. * score: 5 ### function redactDetails * file: src/cores/ce/history/lib/redaction.ts:59 * kind: function * core: ce * spec: (none) * summary: Redact a object in place-safe manner. Returns a new object.Any key matching SENSITIVE\_FIELD\_NAMES is masked when policy denies sensitive view. * score: 4 ### function referralAttemptListKey * file: src/cores/ce/hooks/useReferralAttempts.ts:33 * kind: function * core: ce * spec: (none) * summary: Stable query-key builder so components and tests share one cache namespace. * score: 4 ### function regenerateCardSlug * file: src/cores/ce/lib/cardSlug.ts:66 * kind: function * core: ce * spec: (none) * summary: Regenerate a slug for the SAME display name with a fresh random suffix.Use this on a unique-violation retry so the base stays stable but thecollision is broken. Equivalent to but named for intent. * score: 4 ### function registerCeSequenceWizardSteps * file: src/cores/ce/wizards/sequences/registerCeSequenceWizardSteps.ts:14 * kind: function * core: ce * spec: (none) * summary: Registers CE sequence builder wizard custom step components. * score: 4 ### function registerPartnerContractWizardSteps * file: src/cores/ce/wizards/partner-contract/registerPartnerContractWizardSteps.ts:14 * kind: function * core: ce * spec: (none) * summary: Registers CE partner contract wizard custom step components. * score: 4 ### function registerScreeningWizardSteps * file: src/cores/ce/wizards/screening/registerScreeningWizardSteps.ts:14 * kind: function * core: ce * spec: (none) * summary: Registers CE screening wizard custom step components. * score: 4 ### function removeQueueItem * file: src/cores/ce/lib/offlineActivityQueue.ts:80 * kind: function * core: ce * spec: (none) * summary: Removes a single item by clientId. * score: 4 ### function removeStorageObject * file: src/cores/ce/lib/document-storage-adapter.ts:145 * kind: function * core: ce * spec: (none) * summary: Best-effort removal of a storage object (used on insert-rollback). * score: 4 ### function requiresTriageAcknowledgment * file: src/cores/ce/utils/screeningTriage.ts:160 * kind: function * core: ce * spec: (none) * summary: CE-81 AC-2/FR-3: ANY recommended level of care (not only critical flags) requires anexplicit human acknowledgment before it can inform a disposition. Returns true when thetriage produced a level-of-care recommendation that must be acknowledged. * score: 4 ### function resolveActiveTriageRuleset * file: src/cores/ce/utils/triageRulesetLoader.ts:60 * kind: function * core: ce * spec: (none) * summary: Resolve the active triage ruleset for the org. Never throws — falls back to the seededsystem default, then to the bundled constant, so a triage evaluation always has rules. * score: 4 ### function resolveAssignmentAction * file: src/cores/ce/utils/leadAssignment.ts:17 * kind: function * core: ce * spec: (none) * summary: Classify an assignment transition from the previous and next assignee ids.Mirrors the domain-event naming ( / /) so the toast, the event, and the AC all agree. * score: 4 ### function resolveEscalation * file: src/cores/ce/lib/escalationEngine.ts:34 * kind: function * core: ce * spec: (none) * summary: Resolve which on-call member currently owns the page.Members are sorted by ascending (1 = primary). * score: 4 ### function resolveInsuranceMemberId * file: src/cores/ce/utils/insurance-mask.ts:33 * kind: function * core: ce * spec: (none) * summary: Choose between the unmasked value and its masked form based on the caller's permission. Centralizes the policy so callers cannotaccidentally pass the raw value into telemetry. * score: 4 ### function resolvePartnerPrimaryDisplay * file: src/cores/ce/utils/partnerContactDisplay.ts:61 * kind: function * core: ce * spec: (none) * summary: CE-66: Resolve the primary contact display for a partner from its rows. Returns when the partner has nopartner-contact rows (i.e. nothing to display).Use this in place of the deprecated / fallback. The legacy / columns were backfilledinto standalone primary partner-contact rows during the CE-66 migration,so this resolver covers the same data without reading the legacy columns. * score: 4 ### function resolveTaskPushRecipient * file: src/cores/ce/services/calendarTaskPush.ts:20 * kind: function * core: ce * spec: (none) * summary: Resolve the target mailbox per CE-73 precedence: per\_task\_override (explicit) - assigned coordinator - org default.Returns null when nothing resolves. Mirrors the edge function precedence. * score: 4 ### function resolveTrackIdForNewStage * file: src/cores/ce/lib/leadStageOrder.ts:38 * kind: function * core: ce * spec: (none) * summary: Resolve target track for a new stage (explicit id or org default track). * score: 4 ### function selectHasAlertTag * file: src/cores/ce/hooks/useContactTagsByContacts.ts:28 * kind: function * core: ce * spec: (none) * summary: Pure helper exposed for CE-65 tile metadata consumers. * score: 4 ### function selectPrimaryPartnerContactRow * file: src/cores/ce/utils/partnerContactDisplay.ts:44 * kind: function * core: ce * spec: (none) * summary: Pick the primary row from a partner's collection. is mutually exclusive per partner (DB partial unique index),so at most one row is returned. * score: 4 ### function sendCheckInReminder * file: src/cores/ce/utils/partnerProgressNotifications.ts:212 * kind: function * core: ce * spec: (none) * summary: Send check-in reminder for inactive partners * score: 4 ### function sendMilestoneNotification * file: src/cores/ce/utils/partnerProgressNotifications.ts:191 * kind: function * core: ce * spec: (none) * summary: Send milestone reminder notification * score: 4 ### function sendPartnerProgressNotification * file: src/cores/ce/utils/partnerProgressNotifications.ts:101 * kind: function * core: ce * spec: (none) * summary: Send a partner progress notification via PF-10 * score: 4 ### function shouldNotifyAssignee * file: src/cores/ce/utils/leadAssignment.ts:59 * kind: function * core: ce * spec: (none) * summary: AC-5/AC-6 decision: notify the assignee only when a lead is (re)assigned to*another* active user. Self-assignment (AC-6) and unassign/no-op produce nonotification — you don't get pinged about your own action. * score: 4 ### function shouldNotifyStatusChange * file: src/cores/ce/utils/calculatePartnerStatus.ts:251 * kind: function * core: ce * spec: (none) * summary: Determine if status change warrants notification * score: 4 ### function slugifyName * file: src/cores/ce/lib/cardSlug.ts:31 * kind: function * core: ce * spec: (none) * summary: Slugify a free-text name: lowercase, ASCII-fold, collapse non-alphanumericsto single hyphens, trim leading/trailing hyphens. Returns a stable base(without the random suffix). * score: 4 ### function togglePayerValue * file: src/cores/ce/components/PayerMultiSelect.tsx:14 * kind: function * core: ce * spec: (none) * summary: Pure toggle: add value if absent, remove if present. * score: 4 ### function touchRecentView * file: src/cores/ce/lib/mobileRecentViewsLru.ts:47 * kind: function * core: ce * spec: (none) * summary: Touches (upserts) a recent view entry, moving it to the front.Evicts the oldest entry when the 50-slot cap is exceeded. * score: 4 ### function triageAcknowledgmentSatisfied * file: src/cores/ce/utils/screeningTriage.ts:165 * kind: function * core: ce * spec: (none) * summary: Whether the triage step's acknowledgment gate is satisfied (nothing to ack, or acked). * score: 4 ### function unassignedStageIdForTrack * file: src/cores/ce/lib/pipelineVirtualStages.ts:11 * kind: function * core: ce * spec: (none) * summary: Stable virtual column id for leads with no within a track row. * score: 4 ### function uploadHandler * file: src/cores/ce/lib/document-storage-adapter.ts:109 * kind: function * core: ce * spec: (none) * summary: Upload a file to the CE-59 contact documents bucket. * score: 4 ### function validateContactType * file: src/cores/ce/utils/csvValidation.ts:95 * kind: function * core: ce * spec: (none) * summary: Validate contact type.contact\_type values are org-configurable via the ce\_contact\_type picklist, so thisfunction cannot validate against a fixed allowlist. It maps common import aliasesfor backwards compatibility and passes through any other non-empty value as-is. * score: 4 ### function validateDateOrdering * file: src/cores/ce/wizards/partner-contract/partnerContractWizardValidation.ts:18 * kind: function * core: ce * spec: (none) * summary: Validates date ordering: endDate must be = startDate when both are present. * score: 4 ### function validateEmail * file: src/cores/ce/utils/csvValidation.ts:24 * kind: function * core: ce * spec: (none) * summary: Validate email format * score: 1 ### function validateFileSize * file: src/cores/ce/lib/document-storage-adapter.ts:95 * kind: function * core: ce * spec: (none) * summary: Validate file size against the configured maximum (in MB). * score: 4 ### function validateFileType * file: src/cores/ce/lib/document-storage-adapter.ts:83 * kind: function * core: ce * spec: (none) * summary: Validate file MIME type against the CE-59 allow-list. * score: 4 ### function validateFinalSubmit * file: src/cores/ce/wizards/partner-contract/partnerContractWizardValidation.ts:54 * kind: function * core: ce * spec: (none) * summary: Validates final submission: blocks when status requires a document but none is attached. * score: 4 ### function validateMergeFields * file: src/cores/ce/utils/merge-fields.ts:287 * kind: function * core: ce * spec: (none) * summary: Validate that all merge fields in template are recognized * params: * template — Template text to validate * returns: Object with valid and invalid field keys * score: 4 ### function validatePhone * file: src/cores/ce/utils/csvValidation.ts:42 * kind: function * core: ce * spec: (none) * summary: Validate phone format * score: 1 ### function validateRequired * file: src/cores/ce/utils/csvValidation.ts:65 * kind: function * core: ce * spec: (none) * summary: Validate required text field * score: 1 ### function validateRow * file: src/cores/ce/utils/csvValidation.ts:226 * kind: function * core: ce * spec: (none) * summary: Validate a single row of CSV data * score: 4 ### function validateState * file: src/cores/ce/utils/csvValidation.ts:123 * kind: function * core: ce * spec: (none) * summary: Validate US state abbreviation.By default enforces US state codes. Pass country='\*' or any non-US countryto skip state validation for international addresses. * params: * value — State/province value to validate * country — Country code (default 'US'). Use '\*' or non-US code to skip validation. * score: 4 ### function validateStep * file: src/cores/ce/wizards/lead-conversion/hooks/useLeadConversionWizard.ts:34 * kind: function * core: ce * spec: (none) * summary: Exported for direct unit testing * score: 4 ### function validateStep * file: src/cores/ce/wizards/partner-progress-review/hooks/usePartnerProgressReview\.ts:27 * kind: function * core: ce * spec: (none) * summary: Validates a wizard step. Exported for unit testing. * score: 4 ### function validateText * file: src/cores/ce/utils/csvValidation.ts:78 * kind: function * core: ce * spec: (none) * summary: Validate text field with max length * score: 4 ### function validateZipCode * file: src/cores/ce/utils/csvValidation.ts:206 * kind: function * core: ce * spec: (none) * summary: Validate ZIP code * score: 1 ### function vcardDataUri * file: src/cores/ce/lib/vcard.ts:117 * kind: function * core: ce * spec: (none) * summary: Build a URI for the card, suitable as the of adownload anchor (). * score: 4 ### function wasRedacted * file: src/cores/ce/history/lib/redaction.ts:73 * kind: function * core: ce * spec: (none) * summary: True when a redaction was applied to the supplied field or details payload. * score: 4 ### function writeLeadAssignmentAudit * file: src/cores/ce/utils/leadAssignmentAudit.ts:61 * kind: function * core: ce * spec: (none) * summary: Write a CE-60-compatible audit entry for an assignment change.Identifier-only payload — no contact PII or notes. * score: 4 ### function writeLeadInsurance * file: src/cores/ce/hooks/useLeadInsurance.ts:54 * kind: function * core: ce * spec: (none) * summary: CE-71 — single-active-with-soft-history write of a lead's insurance.This is the ONE canonical write path used by every CE-71 surface (the Add-Leadwizard's handleSubmit, the lead-profile Insurance card, and any future caller),extracted as a pure function so the AC-1/AC-2 integration tests can exercise theEXACT shape the UI persists against a real, permissioned Supabase client — not are-implementation that could stay green while the UI is broken.OQ-2 semantics: retire any prior active row for (is\_active=false, softhistory) before inserting the new active row, so a lead has at most one activeinsurance record. RLS gates the write server-side (ce.leads.insurance.edit); is PHI and is never logged. Trims string inputs to null when blank. * score: 4 ## Classes ### class Part2ConsentError * file: src/cores/ce/utils/part2ConsentGate.ts:21 * kind: class * core: ce * spec: (none) * summary: Raised when SUD-screening triage is attempted without a 42 CFR Part 2 consent on record. * score: 4 # cl — Public API surface Source: https://docs.encoreos.io/api/cl Per-symbol API documentation for the cl area, generated from TSDoc blocks. Refresh with `npm run docs:api:generate`. # cl — Public API surface ## Types & interfaces ### interface AccreditationOverlayResult * file: src/cores/cl/hooks/blocks/useActiveAccreditationOverlays.ts:43 * kind: interface * core: cl * spec: (none) * summary: The relevant slice of the result. * score: 2 ### interface ActivateOrderSetInput * file: src/cores/cl/hooks/useOrderSetActivation.ts:42 * kind: interface * core: cl * spec: (none) * summary: Input for the activation fan-out. * score: 2 ### interface AIMessage * file: src/cores/cl/ai-documentation/lib/buildChartSummaryPrompt.ts:23 * kind: interface * core: cl * spec: (none) * summary: A provider message. Structurally assignable to the edge gateway's ,kept local so this module has zero npm/Deno imports and runs under Vitest. * score: 2 ### interface AmmDenominatorRow * file: src/cores/cl/utils/hedisCalculation.ts:9 * kind: interface * core: cl * spec: (none) * summary: CL-35 T054: HEDIS AMM and IET calculation utilities.Pure functions used by the edge function andvalidated by . FUH/FUM are owned byCL-29-EN-65 and intentionally NOT recomputed here. * score: 2 ### interface ApproveClinicalDraftArgs * file: src/cores/cl/hooks/cl-agent-draft-types.ts:24 * kind: interface * core: cl * spec: (none) * summary: Variables passed to useApproveClinicalDraft at mutation-call time.No token fields — the execute path is handled server-side by the edge function. * score: 2 ### type AssessmentStatus * file: src/cores/cl/constants/status-variants.ts:116 * kind: type * core: cl * spec: CL-02 * summary: Lifecycle states for a clinical assessment row. and are pre-signature; is the clinician-attestedversion; / cover late edits; marks anolder row replaced by a newer assessment of the same instrument. * score: 3 ### interface AtRiskCohortJobResult * file: src/cores/cl/services/outcomes/atRiskCohortJob.ts:63 * kind: interface * core: cl * spec: (none) * summary: Result summary returned by the job for observability. * score: 2 ### interface AttestationInput * file: src/cores/cl/lib/ceem/minimumNecessary.ts:108 * kind: interface * core: cl * spec: (none) * summary: Inputs the gate has after a permit, before assembling the minimum-necessary payload. * score: 2 ### type AuditDashboardAction * file: src/cores/cl/utils/auditDashboardLog.ts:9 * kind: type * core: cl * spec: (none) * summary: Audit dashboard action types * score: 1 ### interface AvailableBlock * file: src/cores/cl/services/blocks/surfaceTemplateAdmin.ts:17 * kind: interface * core: cl * spec: (none) * summary: A clinical block an admin can add to a surface (platform is\_system or org-owned). * score: 2 ### type BlockRouteTarget * file: src/cores/cl/services/blocks/blockInstanceStore.ts:26 * kind: type * core: cl * spec: (none) * summary: Where a save/load was routed. * score: 1 ### interface BlockSaveContext * file: src/cores/cl/services/blocks/blockInstanceStore.ts:40 * kind: interface * core: cl * spec: (none) * summary: Identity + program context for one block instance on an encounter. * score: 2 ### interface BlockStoreDeps * file: src/cores/cl/services/blocks/blockInstanceStore.ts:49 * kind: interface * core: cl * spec: (none) * summary: Injected dependencies so routing is unit-testable without a live client. * score: 2 ### interface CdaConsentBannerProps * file: src/cores/cl/components/cda/CdaConsentBanner.tsx:20 * kind: interface * core: cl * spec: CL-48 * summary: Props for . is tri-state so thebanner can distinguish "checked and absent" from "still loading". * score: 3 ### interface CdaDocumentHistoryProps * file: src/cores/cl/components/cda/CdaDocumentHistory.tsx:26 * kind: interface * core: cl * spec: CL-48 * summary: Props for . is while theunderlying query is still loading; highlights the active row. * score: 3 ### interface CdaDocumentPreviewProps * file: src/cores/cl/components/cda/CdaDocumentPreview\.tsx:26 * kind: interface * core: cl * spec: CL-48 * summary: Props for . The field is the row the read-only preview will render, including itsvalidation status, transmission status, and 42 CFR Part 2 indicator. * score: 5 ### interface CdaDocumentTypeSelectorProps * file: src/cores/cl/components/cda/CdaDocumentTypeSelector.tsx:33 * kind: interface * core: cl * spec: CL-48 * summary: Props for . Controlled component — callerowns the selected type and reacts via . * score: 3 ### interface CdsDisclosureRow * file: src/cores/cl/lib/cds-rationale-disclosure.ts:18 * kind: interface * core: cl * spec: (none) * summary: Minimal disclosure-row shape needed to evaluate the client gate. * score: 2 ### type CeemBlockReason * file: src/cores/cl/lib/ds4p/ceem-exemption-profile.ts:48 * kind: type * core: cl * spec: (none) * summary: Reason a disclosure was blocked (deny-by-default outcomes). * score: 2 ### interface CeemExemptionAttestation * file: src/cores/cl/lib/ds4p/ceem-exemption-profile.ts:51 * kind: interface * core: cl * spec: (none) * summary: The minimum-necessary payload permitted to cross the boundary. * score: 2 ### interface CeemExemptionDisclosureInput * file: src/cores/cl/lib/ds4p/ceem-exemption-profile.ts:69 * kind: interface * core: cl * spec: (none) * summary: Inputs to . * score: 1 ### interface CeemSegmentationAuditEvent * file: src/cores/cl/lib/ds4p/ceem-exemption-profile.ts:100 * kind: interface * core: cl * spec: (none) * summary: Immutable audit event for a segmentation decision. Contains NO raw clinicalcontent — only label metadata, the consent/basis reference, the recipient,the jurisdiction profile version, and a timestamp. Mirrors the row CL-71 persists (PF-04 FR-6). * score: 2 ### interface CeemSegmentationResult * file: src/cores/cl/lib/ds4p/ceem-exemption-profile.ts:119 * kind: interface * core: cl * spec: (none) * summary: Result of the CEEM exemption segmentation decision. * score: 2 ### type CeemSudExemptionCategory * file: src/cores/cl/lib/ds4p/ceem-exemption-profile.ts:39 * kind: type * core: cl * spec: (none) * summary: SUD-derived CEEM exemption categories handled by this profile (the twoPart 2-implicated work-requirement exemptions). per42 CFR 440.315(f); is the separate statutory basis. * score: 2 ### interface ChartContext * file: src/cores/cl/ai-documentation/lib/buildChartContext.ts:76 * kind: interface * core: cl * spec: (none) * summary: The deterministic, PHI-minimized context handed to the prompt builder. is a count summary only — never free text from notes. * score: 2 ### interface ChartContextAssessment * file: src/cores/cl/ai-documentation/lib/buildChartContext.ts:34 * kind: interface * core: cl * spec: (none) * summary: Assessment result reduced to non-identifying scoring facts. * score: 2 ### interface ChartContextEncounter * file: src/cores/cl/ai-documentation/lib/buildChartContext.ts:26 * kind: interface * core: cl * spec: (none) * summary: Encounter facts the model may reference (non-identifying structured data). * score: 2 ### interface ChartContextInput * file: src/cores/cl/ai-documentation/lib/buildChartContext.ts:60 * kind: interface * core: cl * spec: (none) * summary: Caller input for chart-context assembly.Additional/unknown keys (including any patient identifiers) are deliberatelyignored — only the fields enumerated here flow into the context. * score: 2 ### interface ChartContextNoteRow * file: src/cores/cl/ai-documentation/lib/buildChartContext.ts:51 * kind: interface * core: cl * spec: (none) * summary: Note row shape used for exclusion decisions.Note: / are intentionally NOT part of this interface —only structured metadata flows into the chart context. * score: 2 ### interface ChartContextRiskScreening * file: src/cores/cl/ai-documentation/lib/buildChartContext.ts:41 * kind: interface * core: cl * spec: (none) * summary: Risk screening result (non-identifying). * score: 2 ### interface ChartDisplayIdentity * file: src/cores/cl/hooks/useChartsByIds.ts:17 * kind: interface * core: cl * spec: (none) * summary: Resolved display identity for a single chart. Safe to render; derived, not persisted. * score: 2 ### interface ChartDocumentationBlocksSectionProps * file: src/cores/cl/components/ChartDocumentationBlocksSection.tsx:42 * kind: interface * core: cl * spec: (none) * summary: Props for : the chart whose encounters compose documentation blocks. * score: 2 ### type ChartStatus * file: src/cores/cl/constants/status-variants.ts:55 * kind: type * core: cl * spec: CL-01 * summary: Allowed lifecycle states for a patient chart (). is the working state; is a temporary pause; and is the cold-storage terminal state used after a patientexits care entirely. * score: 3 ### interface ChartSummaryAi * file: src/cores/cl/ai-documentation/lib/generateChartSummaryHandler.ts:78 * kind: interface * core: cl * spec: (none) * summary: The model call surface (injected; mockable). * score: 2 ### interface ChartSummaryAvailability * file: src/cores/cl/ai-documentation/hooks/useChartSummaryAvailability.ts:33 * kind: interface * core: cl * spec: (none) * summary: Resolved availability of the AI chart-summary affordance for a chart. * score: 2 ### interface ChartSummaryClientGateDecision * file: src/cores/cl/ai-documentation/lib/evaluateChartSummaryClientGate.ts:32 * kind: interface * core: cl * spec: (none) * summary: The client gate outcome. is iff is . * score: 2 ### interface ChartSummaryClientGateState * file: src/cores/cl/ai-documentation/lib/evaluateChartSummaryClientGate.ts:22 * kind: interface * core: cl * spec: (none) * summary: Client-visible preconditions for showing the AI chart-summary affordance. * score: 2 ### interface ChartSummaryContent * file: src/cores/cl/ai-documentation/hooks/useGenerateChartSummary.ts:38 * kind: interface * core: cl * spec: (none) * summary: Structured, transient AI summary — rendered in-session, never persisted client-side. * score: 2 ### interface ChartSummaryDb * file: src/cores/cl/ai-documentation/lib/generateChartSummaryHandler.ts:53 * kind: interface * core: cl * spec: (none) * summary: The small DB surface the handler depends on (injected; mockable). * score: 2 ### interface ChartSummaryDeps * file: src/cores/cl/ai-documentation/lib/generateChartSummaryHandler.ts:83 * kind: interface * core: cl * spec: (none) * summary: All side-effecting deps, injected for testability. * score: 2 ### interface ChartSummaryGateDecision * file: src/cores/cl/ai-documentation/lib/evaluateChartSummaryGate.ts:38 * kind: interface * core: cl * spec: (none) * summary: The gate outcome. is iff is . * score: 2 ### interface ChartSummaryGateState * file: src/cores/cl/ai-documentation/lib/evaluateChartSummaryGate.ts:23 * kind: interface * core: cl * spec: (none) * summary: Resolved preconditions for AI chart summary generation. * score: 2 ### interface ChartSummaryHandlerInput * file: src/cores/cl/ai-documentation/lib/generateChartSummaryHandler.ts:89 * kind: interface * core: cl * spec: (none) * summary: Caller input — all fields are tenant-safe (orgId resolved server-side). * score: 2 ### interface ChartSummaryMeta * file: src/cores/cl/ai-documentation/hooks/useGenerateChartSummary.ts:31 * kind: interface * core: cl * spec: (none) * summary: Readiness metadata returned by the edge function (also persisted on the chart). * score: 2 ### interface ChartSummaryMetadataWrite * file: src/cores/cl/ai-documentation/lib/generateChartSummaryHandler.ts:35 * kind: interface * core: cl * spec: (none) * summary: Typed write to (JSONB). * score: 1 ### interface ChartSummaryOutput * file: src/cores/cl/ai-documentation/lib/generateChartSummaryHandler.ts:44 * kind: interface * core: cl * spec: (none) * summary: The AI-generated structured chart summary output. * score: 2 ### interface ChartSummaryReadinessMetadata * file: src/cores/cl/ai-documentation/hooks/useChartSummaryAvailability.ts:26 * kind: interface * core: cl * spec: (none) * summary: Readiness metadata persisted on . * score: 2 ### interface ClinicalBlockRendererProps * file: src/cores/cl/components/blocks/ClinicalBlockRenderer.tsx:34 * kind: interface * core: cl * spec: (none) * summary: Props for : the surface + encounter (and Part-2/read-only context) whose resolved blocks to render. * score: 2 ### interface ClinicalBlockSectionProps * file: src/cores/cl/components/blocks/ClinicalBlockSection.tsx:49 * kind: interface * core: cl * spec: (none) * summary: Props for : one resolved block definition plus its provenance, overlay context, and encounter binding. * score: 2 ### interface ClinicalDraftStartResult * file: src/cores/cl/hooks/cl-agent-draft-types.ts:12 * kind: interface * core: cl * spec: (none) * summary: Result returned by the edge function's dispatch. * score: 2 ### type ClinicalEntityKey * file: src/cores/cl/constants/status-variants.ts:233 * kind: type * core: cl * spec: none * summary: Union of clinical entity keys that have a status map registered in. Used as the first argument to so callers reference a known entity ratherthan hard-coding a string. * score: 3 ### interface ClinicalFormErrorSummaryProps * file: src/cores/cl/components/ClinicalFormErrorSummary.tsx:28 * kind: interface * core: cl * spec: none * summary: Props for . Keeps the summary generic overthe form's field-values type so callers get type-safe focus links andlabel lookups without . * score: 5 ### type ClinicalUrgency * file: src/cores/cl/components/clinicalUrgencyUtils.ts:6 * kind: type * core: cl * spec: (none) * summary: Clinical urgency helpers — types and utilities.Extracted so ClinicalUrgencyIndicator.tsx can satisfy react-refresh/only-export-components. * score: 2 ### type CLModuleSettingsFormValues * file: src/cores/cl/components/CLSettingsForm.tsx:82 * kind: type * core: cl * spec: none * summary: Zod-inferred form values type for the CL module settings page. Bundlesoutcome-threshold preferences, AHCCCS/AZDHS incident-deadline configuration,NOMs reporting frequency, and unit preferences (temperature / biometricmeasurement) — the fields a clinical administrator can tune for theorganization without an engineering deploy. * score: 3 ### type CognitiveInstrumentCode * file: src/cores/cl/constants/cognitive-instruments.ts:16 * kind: type * core: cl * spec: CL-02 * summary: Union of supported cognitive-screening instrument codes (MoCA, SLUMS,MMSE). Used as the discriminator across consent gating, scoringdispatch, and audit-log payloads so a stray instrument code can't slipthrough unhandled. * score: 3 ### interface CohortAuditTabProps * file: src/cores/cl/components/cohorts/CohortAuditTab.tsx:39 * kind: interface * core: cl * spec: CL-54 * summary: Props for . Bundles the parent row and every saved definition version so the timeline can renderversion-save events alongside lifecycle and snapshot events without asecond query. * score: 5 ### interface CohortExportButtonProps * file: src/cores/cl/components/cohorts/CohortExportButton.tsx:49 * kind: interface * core: cl * spec: CL-54 * summary: Props for . is the display nameused both in the generated CSV filename and the audit-log payload, soit should be the canonical name (not a truncated label). * score: 5 ### interface CohortFormSheetProps * file: src/cores/cl/components/cohorts/CohortFormSheet.tsx:38 * kind: interface * core: cl * spec: CL-54 * summary: Props for . When is provided, the sheetoperates in edit-definition mode and saves a NEW immutable version row;when omitted, the sheet is in create mode and writes a fresh row plus its v1 definition. * score: 3 ### interface CohortListFilters * file: src/cores/cl/hooks/cohorts/useCohortList.ts:17 * kind: interface * core: cl * spec: CL-54 * summary: Filter set for . Currently supports statusfiltering ( sentinel disables it) and site scoping; widens asadditional dimensions come online. * score: 3 ### interface CohortMembershipTabProps * file: src/cores/cl/components/cohorts/CohortMembershipTab.tsx:28 * kind: interface * core: cl * spec: CL-54 * summary: Props for . The single fielddrives the underlying snapshot query — the tab derives the list ofavailable as-of dates from the latest fetch. * score: 5 ### interface CohortRuleBuilderProps * file: src/cores/cl/components/cohorts/CohortRuleBuilder.tsx:61 * kind: interface * core: cl * spec: CL-54 * summary: Props for . The builder is fully controlled —the parent owns the criteria tree and reacts to . * score: 3 ### interface CohortSnapshotDialogProps * file: src/cores/cl/components/cohorts/CohortSnapshotDialog.tsx:28 * kind: interface * core: cl * spec: CL-54 * summary: Props for . Mirrors the standard Dialogopen/onOpenChange contract plus the cohort id whose membership shouldbe materialized when the user confirms. * score: 5 ### interface CohortVersionsTabProps * file: src/cores/cl/components/cohorts/CohortVersionsTab.tsx:22 * kind: interface * core: cl * spec: CL-54 * summary: Props for . Bundles the parent cohort row andevery saved definition version; the tab uses to mark which version is active. * score: 5 ### interface CohortWithVersions * file: src/cores/cl/hooks/cohorts/useCohortDetail.ts:17 * kind: interface * core: cl * spec: CL-54 * summary: Combined detail payload for a single cohort: the parent row, everysaved definition version (newest first), and a convenience pointer atthe active version. Returned shape of . * score: 3 ### interface CompletenessSummaryProps * file: src/cores/cl/components/completeness/CompletenessSummary.tsx:34 * kind: interface * core: cl * spec: (none) * summary: Props for : the computed completeness result to render. * score: 2 ### interface ConfidentialityDerivationInput * file: src/cores/cl/lib/ds4p/confidentiality.ts:21 * kind: interface * core: cl * spec: (none) * summary: Inputs to . * score: 1 ### type ConsentCaptureFormValues * file: src/cores/cl/components/consent-capture-schema.ts:38 * kind: type * core: cl * spec: CL-11 * summary: Form values type inferred from . Carriesthe patient id, effective / expiration dates, the selected 42 CFRPart 2 consent categories, the typed signature name, and the requiredattestation literal. Used as the generic argument to react-hook-form onthe consent capture sheet so the entire form is fully typed. * score: 3 ### type ConsentStatus * file: src/cores/cl/constants/status-variants.ts:159 * kind: type * core: cl * spec: CL-11 * summary: Lifecycle states for an electronic consent row (42 CFR Part 2 andgeneral use). is awaiting signature; is signed andwithin the effective window; is past its expiration date; is explicitly withdrawn (irreversible — a new consent mustbe captured to restore access). * score: 3 ### type CreateReferralStatusInput * file: src/cores/cl/hooks/useReferralStatusMutation.ts:16 * kind: type * core: cl * spec: (none) * summary: Input for creating a referral status update (org\_id/created\_by auto-set). * score: 2 ### type DataSensitivityClass * file: src/cores/cl/lib/ds4p/confidentiality.ts:18 * kind: type * core: cl * spec: (none) * summary: Classification of a clinical payload's privacy sensitivity. This is the inputto label derivation — it carries no clinical content, only the category. * score: 2 ### interface DisclosureCompletenessResult * file: src/cores/cl/lib/dsiDisclosureCompleteness.ts:50 * kind: interface * core: cl * spec: (none) * summary: Result returned by isDisclosureComplete. * score: 2 ### interface DocumentationCompletenessPanelProps * file: src/cores/cl/components/completeness/DocumentationCompletenessPanel.tsx:20 * kind: interface * core: cl * spec: (none) * summary: Props for : the encounter/surface to score. * score: 2 ### interface DraftAi * file: src/cores/cl/ai-documentation/lib/generateDraftHandler.ts:79 * kind: interface * core: cl * spec: (none) * summary: The model call surface (injected; mockable). Returns ONLY narrative fields. * score: 2 ### interface DraftAttribution * file: src/cores/cl/ai-documentation/lib/generateDraftHandler.ts:61 * kind: interface * core: cl * spec: (none) * summary: Attribution record persisted alongside the draft. * score: 2 ### interface DraftDb * file: src/cores/cl/ai-documentation/lib/generateDraftHandler.ts:66 * kind: interface * core: cl * spec: (none) * summary: The small DB surface the handler depends on (injected; mockable). * score: 2 ### interface DraftNarrative * file: src/cores/cl/ai-documentation/lib/mapDraftToNote.ts:18 * kind: interface * core: cl * spec: (none) * summary: The narrative fields the model is allowed to draft (Policy-940). * score: 2 ### type Ds4pDisclosurePurpose * file: src/cores/cl/lib/ds4p/ceem-exemption-profile.ts:45 * kind: type * core: cl * spec: (none) * summary: Disclosure purpose recorded on a segmentation decision. * score: 2 ### interface Ds4pSegmentationDecisionInsert * file: src/cores/cl/lib/ds4p/ceem-exemption-profile.ts:338 * kind: interface * core: cl * spec: (none) * summary: Row shape for the table. CL-71 inserts this(under RLS) to persist the immutable audit trail. Hand-typed because thegenerated Supabase types lag a fresh migration; widened to the table columns. * score: 2 ### interface DsiDisclosureRow * file: src/cores/cl/lib/dsiDisclosureCompleteness.ts:25 * kind: interface * core: cl * spec: (none) * summary: Partial shape of a cl\_dsi\_disclosures row — only fields used here. * score: 2 ### type DsiFieldGroup * file: src/cores/cl/dsi-disclosures/lib/disclosureFields.ts:33 * kind: type * core: cl * spec: (none) * summary: Logical section a field renders under in the editor. * score: 2 ### type DsiTextFieldKey * file: src/cores/cl/dsi-disclosures/lib/disclosureFields.ts:14 * kind: type * core: cl * spec: (none) * summary: Editable §170.315(b)(11) source-attribute text columns. * score: 2 ### interface FollowUpRateFilters * file: src/cores/cl/hooks/useFollowUpRate.ts:41 * kind: interface * core: cl * spec: (none) * summary: Optional filters for the follow-up-rate query. * score: 2 ### interface FollowUpRateRow * file: src/cores/cl/hooks/useFollowUpRate.ts:27 * kind: interface * core: cl * spec: (none) * summary: A single row from the VIEW. * score: 1 ### type FuaAdtEventRow * file: src/cores/cl/services/fuaAdtIngest.ts:23 * kind: type * core: cl * spec: (none) * summary: The row returns (generated RPC Return type). * score: 2 ### type FuaPayerExportInsert * file: src/cores/cl/services/fuaPayerExport.ts:28 * kind: type * core: cl * spec: (none) * summary: The insert payload for (generated Insert type). * score: 2 ### type FuaPayerExportRow * file: src/cores/cl/services/fuaPayerExport.ts:31 * kind: type * core: cl * spec: (none) * summary: The row returns on a successful gated insert. * score: 2 ### interface GateDecision * file: src/cores/cl/ai-documentation/lib/evaluateGenerationGate.ts:32 * kind: interface * core: cl * spec: (none) * summary: The gate outcome. is iff is . * score: 2 ### interface GateState * file: src/cores/cl/ai-documentation/lib/evaluateGenerationGate.ts:20 * kind: interface * core: cl * spec: (none) * summary: Resolved preconditions for AI note generation. * score: 2 ### interface HedisMeasureSnapshot * file: src/cores/cl/services/hedisMeasurePersist.ts:37 * kind: interface * core: cl * spec: (none) * summary: One computed FUA/FUI measure snapshot to persist. * score: 2 ### interface HedisWorklistItem * file: src/cores/cl/hooks/useHedisWorklist.ts:17 * kind: interface * core: cl * spec: (none) * summary: A worklist row combines an aftercare plan with its follow-up contacts. * score: 2 ### interface ICD10Selection * file: src/cores/cl/components/problem-list/ICD10CodeSearch.tsx:32 * kind: interface * core: cl * spec: CL-46 * summary: Selection returned by when the clinician picksan ICD-10-CM code. Carries the code itself and its human description sothe caller can persist both without a second lookup. * score: 5 ### type IngestFuaAdtEventResult * file: src/cores/cl/services/fuaAdtIngest.ts:29 * kind: type * core: cl * spec: (none) * summary: Result of an ADT ingest attempt. Discriminated on so callers never see araw Supabase error — failures surface only a sanitized, PHI-free string. * score: 2 ### interface IntakePrePopulationData * file: src/cores/cl/hooks/useIntakePrePopulation.ts:14 * kind: interface * core: cl * spec: (none) * summary: Shape of pre-populated data for intake form fields. * score: 2 ### interface JurisdictionDisclosureFlags * file: src/cores/cl/lib/ceem/minimumNecessary.ts:98 * kind: interface * core: cl * spec: (none) * summary: PF-96-resolved flags that govern category/DS4P disclosure for the recipient. * score: 2 ### interface LabResultTrendPoint * file: src/cores/cl/hooks/useLabResults.ts:78 * kind: interface * core: cl * spec: (none) * summary: Time-series data for trending a specific LOINC code * score: 2 ### type LethalMeansAssessmentFormValues * file: src/cores/cl/components/zero-suicide/LethalMeansAssessmentForm.schema.ts:34 * kind: type * core: cl * spec: CL-07 * summary: Form values for the Zero-Suicide lethal-means assessment. Mirrors the table: firearm access + details,medication stockpile + details, sharp objects, other means, counselingprovided + free-text notes, restriction plan, and optional links backto the originating screening and encounter. * score: 3 ### interface LoadedBlockInstance * file: src/cores/cl/services/blocks/blockInstanceStore.ts:34 * kind: interface * core: cl * spec: (none) * summary: A loaded block instance plus the version it was snapshotted under. The rendererpins its to so reopening an in-progress noteshows the version it was documented under, not a newer republished one(CL-75 AC-2 / FR-5). Null = no divergence (typed adapters). * score: 2 ### type LocChangeDirection * file: src/cores/cl/components/loc-assessment/LocReassessmentDeltaTable.tsx:30 * kind: type * core: cl * spec: CL-49 * summary: Overall direction of change between two LOC assessments: = higher acuity / more intensive care recommended, = lower acuity, = same intensity, different setting.Drives badge color and arrow icon in . * score: 3 ### type MarketplaceImportStatus * file: src/cores/cl/constants/status-variants.ts:178 * kind: type * core: cl * spec: CL-57 * summary: Lifecycle states for a clinical content marketplace import operation. is queued; is in flight; / are terminal; marks an import that succeededbut was subsequently reversed (e.g. tenant aborted post-install). * score: 3 ### type MeasurementYearVersion * file: src/cores/cl/services/hedisMeasurePersist.ts:34 * kind: type * core: cl * spec: (none) * summary: Measurement Year version — reuse the platform single-source-of-truth (PF-96, typed )rather than re-declaring an MY union in CL (NFR-config-1). * score: 2 ### interface ModuleSettings * file: src/cores/cl/ai-documentation/lib/generateDraftHandler.ts:33 * kind: interface * core: cl * spec: (none) * summary: Module-settings slice the handler needs. * score: 2 ### type MoudEnrollmentStatus * file: src/cores/cl/constants/status-variants.ts:138 * kind: type * core: cl * spec: CL-05 * summary: Lifecycle states for a Medication-Assisted Opioid Use Disorder (MOUD)enrollment. and are working states; captures continuity-of-care handoffs; is the plannedpositive exit; covers unplanned termination(non-adherence, contraindication). * score: 3 ### interface NavGroup * file: src/cores/cl/components/chartSideNavConstants.ts:77 * kind: interface * core: cl * spec: none * summary: Group of related chart nav items, rendered either as an always-visiblepinned row () or as a collapsible section. controls the initial collapse state for non-pinned groups. * score: 3 ### interface NavItem * file: src/cores/cl/components/chartSideNavConstants.ts:35 * kind: interface * core: cl * spec: none * summary: Shape of a single chart-tab nav entry. is the URL tab token, (when set) gates visibility through , and carries an optional unread / pending count rendered alongside thelabel. * score: 3 ### interface NoteContext * file: src/cores/cl/ai-documentation/lib/buildNoteContext.ts:56 * kind: interface * core: cl * spec: (none) * summary: The deterministic, PHI-minimized context handed to the prompt builder.Key order is fixed for stable serialization / cache behavior. * score: 2 ### interface NoteContextAssessment * file: src/cores/cl/ai-documentation/lib/buildNoteContext.ts:28 * kind: interface * core: cl * spec: (none) * summary: A recent assessment result, reduced to non-identifying scoring facts. * score: 2 ### interface NoteContextEncounter * file: src/cores/cl/ai-documentation/lib/buildNoteContext.ts:18 * kind: interface * core: cl * spec: (none) * summary: Structured encounter facts the model may reference but must NOT invent. * score: 2 ### interface NoteContextEncounterRow * file: src/cores/cl/ai-documentation/lib/generateDraftHandler.ts:47 * kind: interface * core: cl * spec: (none) * summary: The structured encounter facts loaded from the DB. These are AUTHORITATIVE —////always win over anything the model emits. * score: 2 ### interface NoteContextInput * file: src/cores/cl/ai-documentation/lib/buildNoteContext.ts:44 * kind: interface * core: cl * spec: (none) * summary: Caller input. Extra/unknown keys (including any patient identifiers) aredeliberately ignored — only the fields enumerated here flow into the context. * score: 2 ### interface NoteContextLastNote * file: src/cores/cl/ai-documentation/lib/buildNoteContext.ts:35 * kind: interface * core: cl * spec: (none) * summary: Narrative carry-forward from the last signed note (continuity of care). * score: 2 ### interface NoteContextRows * file: src/cores/cl/ai-documentation/lib/generateDraftHandler.ts:52 * kind: interface * core: cl * spec: (none) * summary: The rows the handler assembles a PHI-minimized context from. * score: 2 ### interface NoteFields * file: src/cores/cl/ai-documentation/lib/mapDraftToNote.ts:35 * kind: interface * core: cl * spec: (none) * summary: The merged progress-note field set written to . * score: 2 ### interface NotePromptMessage * file: src/cores/cl/ai-documentation/lib/buildNotePrompt.ts:26 * kind: interface * core: cl * spec: (none) * summary: A provider message. Structurally assignable to the edge gateway's (), kept local so this module haszero /Deno imports and runs under Vitest. * score: 2 ### interface OrgTemplateBlock * file: src/cores/cl/services/blocks/surfaceTemplateAdmin.ts:26 * kind: interface * core: cl * spec: (none) * summary: An org-optional block composed onto a surface template. * score: 2 ### type PermissibleBasisType * file: src/cores/cl/lib/ds4p/ceem-exemption-profile.ts:42 * kind: type * core: cl * spec: (none) * summary: Permissible legal basis for releasing a SUD-derived disclosure. * score: 2 ### interface PersistHedisPeriodsInput * file: src/cores/cl/services/hedisMeasurePersist.ts:47 * kind: interface * core: cl * spec: (none) * summary: Input for a batch persist of the computed FUA/FUI set under one Measurement Year. * score: 2 ### type PersistHedisPeriodsResult * file: src/cores/cl/services/hedisMeasurePersist.ts:62 * kind: type * core: cl * spec: (none) * summary: Result of a batch persist. Discriminated on so callers never see a rawSupabase error — failures surface only a sanitized, PHI-free string. Nopartial-success leakage: the first RPC error aborts and returns . * score: 2 ### interface PersistMeasureResultInput * file: src/cores/cl/services/qualityMeasureEngine.ts:42 * kind: interface * core: cl * spec: (none) * summary: Input for one measure calculation persisted as an immutable snapshot. * score: 2 ### type PersistMeasureResultResult * file: src/cores/cl/services/qualityMeasureEngine.ts:61 * kind: type * core: cl * spec: (none) * summary: Discriminated result: callers never see a raw Supabase error — failures surfaceonly a sanitized, PHI-free string. * score: 2 ### interface Policy940Config * file: src/cores/cl/shared/validation/policy940-config-types.ts:8 * kind: interface * core: cl * spec: (none) * summary: Organization-level Policy 940 configuration * score: 2 ### interface Policy940NoteContext * file: src/cores/cl/shared/validation/validatePolicy940.ts:52 * kind: interface * core: cl * spec: (none) * summary: Fields from the note/encounter context needed for validation * score: 2 ### interface PrefilledResponse * file: src/cores/cl/lib/outcomes/suprt-autopopulate.ts:51 * kind: interface * core: cl * spec: (none) * summary: A prefilled SUPRT-A response sourced administratively from the chart. * score: 2 ### type ProgressNoteStatus * file: src/cores/cl/constants/status-variants.ts:73 * kind: type * core: cl * spec: CL-04 * summary: Lifecycle states for a clinical progress note. Drives signatureworkflows: → (awaiting signature) → →optional . / cover late edits, and marks a note retracted from the chart. * score: 3 ### interface PsychotherapyNoteRow * file: src/cores/cl/ai-documentation/lib/filterPsychotherapyNotes.ts:23 * kind: interface * core: cl * spec: (none) * summary: Minimum shape a note row must expose for psychotherapy classification.Additional columns on the real DB row are ignored (whitelist approach). * score: 2 ### interface PublishedDisclosure * file: src/cores/cl/ai-documentation/lib/generateDraftHandler.ts:38 * kind: interface * core: cl * spec: (none) * summary: A published-disclosure record (CL-65). ⇒ none ⇒ NOT published. * score: 2 ### interface QualityCohortMemberInput * file: src/cores/cl/services/qualityMeasureEngine.ts:27 * kind: interface * core: cl * spec: (none) * summary: One patient's population membership in a measure calculation (FR-3 snapshot row). * score: 2 ### interface RawBlockRow * file: src/cores/cl/services/blocks/blockDefinitionLoader.ts:23 * kind: interface * core: cl * spec: (none) * summary: A raw row as selected by the loader. * score: 2 ### interface ReassessmentWindowInput * file: src/cores/cl/lib/outcomes/reassessment-window\.ts:20 * kind: interface * core: cl * spec: (none) * summary: Input for reassessment window calculations. * score: 2 ### interface ReassessmentWindowOptions * file: src/cores/cl/lib/outcomes/reassessment-window\.ts:32 * kind: interface * core: cl * spec: (none) * summary: Options controlling the window boundaries. * score: 2 ### interface RecentChart * file: src/cores/cl/hooks/useRecentCharts.ts:20 * kind: interface * core: cl * spec: (none) * summary: The persisted shape. Intentionally minimal — no PHI. Display fields (name/MRN/initials)are resolved from at render time, never stored. * score: 2 ### interface RecordSuprtAssessmentInput * file: src/cores/cl/hooks/useOutcomeEpisodeMutation.ts:67 * kind: interface * core: cl * spec: (none) * summary: Input for . * score: 1 ### interface ReleaseAuthorization * file: src/cores/cl/lib/ds4p/ceem-exemption-profile.ts:59 * kind: interface * core: cl * spec: (none) * summary: Release authorization computed by CL-71 (CL-11 consent OR permissible basis). * score: 2 ### type RequestFuaPayerExportResult * file: src/cores/cl/services/fuaPayerExport.ts:38 * kind: type * core: cl * spec: (none) * summary: Result of a payer-export request attempt. Discriminated on so callersnever see a raw Supabase error — failures (consent absent, payer disabled,cross-org chart, missing actor) surface only a sanitized, PHI-free string. * score: 2 ### interface RequiredBlockView * file: src/cores/cl/components/blocks/SurfaceTemplateBuilderView\.tsx:43 * kind: interface * core: cl * spec: (none) * summary: A required block shown locked in the builder (name resolved by the container). * score: 2 ### interface ReviewFilters * file: src/cores/cl/components/concurrent-reviews/ReviewFilterBar.tsx:20 * kind: interface * core: cl * spec: CL-43 * summary: Filter selections applied to the UM concurrent-review worklist. Currentlyonly carries the status filter; widens cleanly as more filter dimensions(assigned reviewer, due-date window) come online. * score: 5 ### type RiskLevel * file: src/cores/cl/constants/status-variants.ts:198 * kind: type * core: cl * spec: CL-07 * summary: Clinical risk severity level used by suicide-risk, violence-risk, andother CL safety-screening surfaces. requires immediateintervention (rendered destructive); is urgent; and are stratification bands; is the all-clear state. * score: 3 ### type RiskTier * file: src/cores/cl/utils/calculateRiskScore.ts:15 * kind: type * core: cl * spec: (none) * summary: CL-35 T024 — composite risk score calculation.Pure utility. Computes a weighted-average risk score from up to fourcomponents (CL-07 safety, CL-10 outcome, CL-22 metabolic, CL-21 MOUD)and derives a tier (low/medium/high/critical) using configurablethresholds. Per spec FR-1 + 42 CFR Part 2: - When MOUD is missing OR , the MOUD weight is redistributed proportionally across the remaining components so total weight stays 1.0. - reports which components actually contributed. * score: 2 ### interface RTPBCheckResult * file: src/cores/cl/services/rtpb.ts:18 * kind: interface * core: cl * spec: (none) * summary: CL-06: Real-Time Prescription Benefit (RTPB) stub service.IMPORTANT: This is a STUB for UI development — it returns fixed demo valuesand performs no network call. RTPB is a benefit/formulary lookup and isindependent of the e-prescribing transmit path.E-prescribing itself (both controlled EPCS and non-controlled) is handled by**WENO ComposeRx** (CL-06-EN-23) — see . The legacySurescripts direct-transmit stub was removed(#1966); there is no longer a separate transmit vendor in this codebase.A production RTPB integration would call a real benefit vendor's RTPB APIwith NCPDP SCRIPT formatting; no PHI is sent (only medication name + org idare used for the lookup). * score: 2 ### interface SecurityLabelInput * file: src/cores/cl/lib/ds4p/security-labels.ts:44 * kind: interface * core: cl * spec: (none) * summary: Inputs to . * score: 1 ### type SmallCellResult * file: src/cores/cl/utils/smallCellSuppression.ts:11 * kind: type * core: cl * spec: (none) * summary: CL-35 T043: Small-cell suppression utility.Per spec / 42 CFR Part 2 + HIPAA Safe Harbor: any aggregate cell withfewer than 5 individuals must be redacted to to preventre-identification of small populations on supervisor dashboards andexported VBP reports. Negative inputs are defensively treated assuppressed. * score: 2 ### interface StartClinicalDraftVars * file: src/cores/cl/hooks/cl-agent-draft-types.ts:48 * kind: interface * core: cl * spec: (none) * summary: Variables passed to useStartClinicalDraft at mutation-call time. * score: 2 ### interface StatusDescriptor * file: src/cores/cl/constants/status-variants.ts:32 * kind: interface * core: cl * spec: none * summary: Render configuration for a single status value. Combines the semanticBadge variant, the user-facing label (Title Case), and optional dotindicator (and dot color override) into one record so the entire statuspresentation can be looked up with rather thanscattering ternaries across components. * score: 3 ### type StatusVariant * file: src/cores/cl/constants/status-variants.ts:21 * kind: type * core: cl * spec: (none) * summary: Subset of Badge variants permitted for status display. * score: 2 ### interface StructuredFacts * file: src/cores/cl/ai-documentation/lib/mapDraftToNote.ts:26 * kind: interface * core: cl * spec: (none) * summary: Authoritative structured facts echoed from the encounter — never AI-generated. * score: 2 ### interface SuiteContext * file: src/cores/cl/hooks/blocks/useSuicideSuite.ts:44 * kind: interface * core: cl * spec: (none) * summary: The resolved suite context surfaced to the suite UI. * score: 2 ### interface SuiteContextInput * file: src/cores/cl/hooks/blocks/useSuicideSuite.ts:37 * kind: interface * core: cl * spec: (none) * summary: Inputs to the pure suite-context derivation. * score: 2 ### interface SuprtItem * file: src/cores/cl/lib/outcomes/suprt-autopopulate.ts:13 * kind: interface * core: cl * spec: (none) * summary: A flattened SUPRT instrument item, derived from . * score: 2 ### interface SuprtResponseInput * file: src/cores/cl/hooks/useOutcomeEpisodeMutation.ts:59 * kind: interface * core: cl * spec: (none) * summary: A single SUPRT/NOMs response to record. * score: 2 ### interface SurfaceTemplateBuilderViewProps * file: src/cores/cl/components/blocks/SurfaceTemplateBuilderView\.tsx:50 * kind: interface * core: cl * spec: (none) * summary: Props for . * score: 1 ### type TraumaInstrumentCode * file: src/cores/cl/constants/instruments.ts:17 * kind: type * core: cl * spec: CL-02 * summary: Union of supported trauma-informed assessment instrument codes(PCL-5, ACE-10, LEC-5, BTQ). Used as the discriminator acrossisTrauma-style checks, consent gating, scoring dispatch, and auditpayloads so trauma content can be routed through the appropriate PHIhandling pathway. * score: 3 ### type TreatmentPlanStatus * file: src/cores/cl/constants/status-variants.ts:96 * kind: type * core: cl * spec: CL-03 * summary: Lifecycle states for a treatment plan. is in-progress; is the current working version; is the clinician-attested version that satisfies regulatory requirements; is an older signed version replaced by a newer revision; is the cold terminal state. * score: 3 ### interface UpdateCLAISettingsPayload * file: src/cores/cl/ai-documentation/hooks/useCLAISettings.ts:48 * kind: interface * core: cl * spec: (none) * summary: Payload for updating AI settings * score: 2 ### interface UseCohortListOptions * file: src/cores/cl/hooks/cohorts/useCohortList.ts:29 * kind: interface * core: cl * spec: CL-54 * summary: Options bag for : 1-indexed page, page size, andthe filter set. All fields are optional with sensible defaults(page 1, 25 per page, no filters). * score: 3 ### interface UseSurfaceDocumentationCompletenessArgs * file: src/cores/cl/hooks/completeness/useSurfaceDocumentationCompleteness.ts:17 * kind: interface * core: cl * spec: (none) * summary: Arguments for : the encounter/surface to score. * score: 2 ### interface WenoCredStatus * file: src/cores/cl/services/wenoCredentials.ts:47 * kind: interface * core: cl * spec: (none) * summary: Configured-status flags (never returns secret values). * score: 2 ### interface ZCodeSelection * file: src/cores/cl/components/ZCodeSelectorDialog.tsx:29 * kind: interface * core: cl * spec: CL-18 * summary: Selection returned by when the user picks aZ-code. Carries the ICD-10-CM code (– SDOH range) and itsdescription so the caller can persist both without a second lookup. * score: 5 ## Hooks ### hook useAccountingOfDisclosures * file: src/cores/cl/hooks/useDisclosureLog.ts:59 * kind: hook * core: cl * spec: (none) * summary: Fetch disclosures for accounting of disclosures report, optionally filtered by date range. * score: 4 ### hook useActivateAssessmentTemplate * file: src/cores/cl/hooks/useAssessmentTemplateMutation.ts:87 * kind: hook * core: cl * spec: (none) * summary: Hook for activating a template (archives the currently active one for the same assessment\_type). * score: 1 ### hook useActivateOrderSet * file: src/cores/cl/hooks/useOrderSetActivation.ts:69 * kind: hook * core: cl * spec: (none) * summary: Activate an order set template for a patient/chart. Performs client-sidefan-out into cl\_medications and cl\_orders, then writes the activation rowwith a record of every created downstream object. Best-effort: if adownstream insert fails the activation row is still written so theclinician sees what landed and can retry the rest. * score: 4 ### hook useActiveAccreditationOverlays * file: src/cores/cl/hooks/blocks/useActiveAccreditationOverlays.ts:71 * kind: hook * core: cl * spec: (none) * summary: React Query hook for the org's active accreditation overlay-tag set (fail-closed to empty). * score: 4 ### hook useActiveSafetyPlan * file: src/cores/cl/hooks/useSafetyPlans.ts:65 * kind: hook * core: cl * spec: (none) * summary: Fetch the single active safety plan for a chart (most recent active version).Returns null if no active plan exists. * score: 4 ### hook useAddOrgBlock * file: src/cores/cl/hooks/blocks/useSurfaceTemplateAdmin.ts:67 * kind: hook * core: cl * spec: (none) * summary: Add an org-optional block to a surface. * score: 4 ### hook useAddParticipant * file: src/cores/cl/hooks/useMultiPartyEncounters.ts:219 * kind: hook * core: cl * spec: (none) * summary: Adds a participant to a multi-party encounter.Pre-migration: throws error (table does not exist yet). * score: 4 ### hook useAddTreatmentPlanSignature * file: src/cores/cl/hooks/useTreatmentPlanSignatureMutation.ts:16 * kind: hook * core: cl * spec: (none) * summary: Hook for managing add treatment plan signature. * score: 1 ### hook useAftercarePlanDetail * file: src/cores/cl/hooks/useAftercarePlans.ts:54 * kind: hook * core: cl * spec: (none) * summary: Provides aftercare plan detail queries and mutation actions scoped to the current organization. * score: 4 ### hook useAftercarePlansByChart * file: src/cores/cl/hooks/useAftercarePlans.ts:26 * kind: hook * core: cl * spec: (none) * summary: Provides aftercare plans by chart queries and mutation actions scoped to the current organization. * score: 4 ### hook useAgentClinicalDraft * file: src/cores/cl/hooks/useAgentClinicalDraft.ts:159 * kind: hook * core: cl * spec: (none) * summary: Composite hook: orchestrates the full agentic clinical-note draft workflow\.Returns: - — mutation to kick off the agent run (action:'start'). - — mutation to verify + governed-write the draft (action:'execute'). - — re-exposed from useProgressNoteMutation for the clinician's separate finalize step. The hook/agent NEVER calls this internally (AC-8). is captured at hook-call time so can close over it (mirrorsthe useStartIntakeRun pattern in useIntakeAgent.ts). CL-36-EN-03 AC-8 * score: 4 ### hook useAIDocumentationSessionQuery * file: src/cores/cl/ai-documentation/hooks/useAIDocumentationSession.ts:23 * kind: hook * core: cl * spec: (none) * summary: Fetches the active AI documentation session for a given note. * score: 4 ### hook useAllergiesByChart * file: src/cores/cl/hooks/useAllergies.ts:12 * kind: hook * core: cl * spec: (none) * summary: Hook for managing allergies by chart. * score: 1 ### hook useAllOrderTemplates * file: src/cores/cl/hooks/useAllOrderTemplates.ts:13 * kind: hook * core: cl * spec: (none) * summary: Hook for managing all order templates. * score: 1 ### hook useAllReferenceLabs * file: src/cores/cl/hooks/useAllReferenceLabs.ts:13 * kind: hook * core: cl * spec: (none) * summary: Hook for managing all reference labs. * score: 1 ### hook useAmbientSessionDetail * file: src/cores/cl/ai-documentation/hooks/useAmbientSession.ts:72 * kind: hook * core: cl * spec: (none) * summary: Fetches a single ambient session by ID. * score: 4 ### hook useAmbientSessionEvents * file: src/cores/cl/ai-documentation/hooks/useAmbientSession.ts:212 * kind: hook * core: cl * spec: (none) * summary: Fetches audit events for a specific ambient session. * score: 4 ### hook useAmbientSessions * file: src/cores/cl/ai-documentation/hooks/useAmbientSession.ts:29 * kind: hook * core: cl * spec: (none) * summary: Fetches ambient sessions for the review queue with optional filters. * score: 4 ### hook useAmbientTranscript * file: src/cores/cl/ai-documentation/hooks/useAmbientTranscript.ts:20 * kind: hook * core: cl * spec: (none) * summary: Fetches the transcript for a given ambient session.Returns null if no transcript exists yet (still processing). * score: 4 ### hook useAnomalyFlags * file: src/cores/cl/hooks/useAnomalyFlags.ts:23 * kind: hook * core: cl * spec: (none) * summary: Fetches anomaly detection flags from the cl\_aggregate\_anomaly\_flags RPC. * score: 4 ### hook useApproveAmbientSession * file: src/cores/cl/ai-documentation/hooks/useAmbientSession.ts:155 * kind: hook * core: cl * spec: (none) * summary: Approves a draft-ready ambient session (transitions to 'approved'). * score: 4 ### hook useApproveClinicalDraft * file: src/cores/cl/hooks/useAgentClinicalDraft.ts:95 * kind: hook * core: cl * spec: (none) * summary: Approve a clinical draft: 1. Human verify (draft → verified): calls — this is the PF-128 lifecycle transition and requires no token from the client. 2. Governed write via the edge function's dispatch (Option B): the edge function performs the server-side gate→approve→consume→governed-write sequence (PF-30 capability token + PF-126 grant token consumed server-side). The handler is a D-01 follow-up; the hook is token-free now\.Mirrors from . CL-36-EN-03 AC-3 (verify before write) AC-5 (dual-signoff) AC-6 (token never on client) PF-30 * score: 4 ### hook useApproveGeneration * file: src/cores/cl/hooks/useGroupEncounterGenerations.ts:98 * kind: hook * core: cl * spec: (none) * summary: Approves a single generation record. * score: 4 ### hook useArcosReportData * file: src/cores/cl/hooks/useArcosExport.ts:29 * kind: hook * core: cl * spec: (none) * summary: Hook for managing arcos report data. * score: 1 ### hook useAssessmentDetail * file: src/cores/cl/hooks/useAssessmentDetail.ts:12 * kind: hook * core: cl * spec: (none) * summary: Hook for managing assessment detail. * score: 1 ### hook useAssessmentInstruments * file: src/cores/cl/hooks/useAssessmentInstruments.ts:12 * kind: hook * core: cl * spec: (none) * summary: Hook for managing assessment instruments. * score: 1 ### hook useAssessmentList * file: src/cores/cl/hooks/useAssessmentList.ts:17 * kind: hook * core: cl * spec: (none) * summary: Hook for managing assessment list. * score: 1 ### hook useAssessmentMergedTemplate * file: src/cores/cl/hooks/useAssessmentMergedTemplate.ts:22 * kind: hook * core: cl * spec: (none) * summary: Fetches the active template for the given assessment type and mergesjurisdiction-required elements with template sections. * params: * assessmentType — The assessment type (e.g. 'comprehensive') * requiredElements — Jurisdiction-required section codes (from useClinicalRules or similar) * score: 4 ### hook useAssessmentPdf * file: src/cores/cl/hooks/useAssessmentPdf.ts:18 * kind: hook * core: cl * spec: (none) * summary: Hook for managing assessment pdf. * score: 1 ### hook useAssessmentsByChart * file: src/cores/cl/hooks/useAssessmentsByChart.ts:12 * kind: hook * core: cl * spec: (none) * summary: Hook for managing assessments by chart. * score: 1 ### hook useAssessmentSections * file: src/cores/cl/hooks/useAssessmentSections.ts:13 * kind: hook * core: cl * spec: (none) * summary: Hook for managing assessment sections. * score: 1 ### hook useAssessmentTemplateDetail * file: src/cores/cl/hooks/useAssessmentTemplateDetail.ts:14 * kind: hook * core: cl * spec: (none) * summary: Hook to fetch a single assessment template by ID, including its sections. * score: 4 ### hook useAssessmentTemplateList * file: src/cores/cl/hooks/useAssessmentTemplateList.ts:14 * kind: hook * core: cl * spec: (none) * summary: Hook to fetch the list of assessment templates, optionally filtered by assessment type. * score: 4 ### hook useAssignInbasketItem * file: src/cores/cl/hooks/useInbasketItemMutation.ts:70 * kind: hook * core: cl * spec: (none) * summary: Hook for managing assign inbasket item. * score: 1 ### hook useAttestAISession * file: src/cores/cl/ai-documentation/hooks/useAIDocumentationSession.ts:150 * kind: hook * core: cl * spec: (none) * summary: Records clinician attestation on an AI documentation session. * score: 4 ### hook useAuditViewerQuery * file: src/cores/cl/hooks/useAuditViewerQuery.ts:26 * kind: hook * core: cl * spec: (none) * summary: Fetches clinical audit log entries from pf\_audit\_logs. * score: 4 ### hook useAuthorizationContext * file: src/cores/cl/hooks/useAuthorizationContext.ts:24 * kind: hook * core: cl * spec: (none) * summary: Returns authorization context for a review. Fail-soft when unavailable. * score: 4 ### hook useAvailableClinicalBlocks * file: src/cores/cl/hooks/blocks/useSurfaceTemplateAdmin.ts:54 * kind: hook * core: cl * spec: (none) * summary: The active clinical blocks the org can add (platform is\_system + org-owned). * score: 4 ### hook useBetweenSessionCheckins * file: src/cores/cl/hooks/useBetweenSessionCheckins.ts:21 * kind: hook * core: cl * spec: (none) * summary: Hook for managing between session checkins. * score: 1 ### hook useBillingOverrideRulesMutation * file: src/cores/cl/hooks/useBillingOverrideRulesMutation.ts:21 * kind: hook * core: cl * spec: (none) * summary: Hook providing CRUD mutations for billing override rules. * score: 4 ### hook useBiometricsList * file: src/cores/cl/hooks/useBiometricsList.ts:18 * kind: hook * core: cl * spec: (none) * summary: Hook for managing biometrics list. * score: 1 ### hook useBiometricsMutation * file: src/cores/cl/hooks/useBiometricsMutation.ts:19 * kind: hook * core: cl * spec: (none) * summary: Hook for managing biometrics mutation. * score: 1 ### hook useBreakGlassQueue * file: src/cores/cl/hooks/useBreakGlassQueue.ts:31 * kind: hook * core: cl * spec: (none) * summary: Fetches break-glass PHI access events with review status and SLA tracking. * score: 4 ### hook useBreakGlassRecord * file: src/cores/cl/hooks/useBreakGlassRecord.ts:18 * kind: hook * core: cl * spec: (none) * summary: Hook for managing break glass record. * score: 1 ### hook useBreakGlassReviewMutation * file: src/cores/cl/hooks/useBreakGlassReviewMutation.ts:20 * kind: hook * core: cl * spec: (none) * summary: Mutation hook for submitting a break-glass review. * score: 4 ### hook useBulkApproveGenerations * file: src/cores/cl/hooks/useGroupEncounterGenerations.ts:173 * kind: hook * core: cl * spec: (none) * summary: Bulk approves multiple generation records. * score: 4 ### hook useBulkCosign * file: src/cores/cl/hooks/useBulkCosign.ts:25 * kind: hook * core: cl * spec: (none) * summary: Hook for managing bulk cosign. * score: 1 ### hook useCancelAmbientSession * file: src/cores/cl/ai-documentation/hooks/useAmbientSession.ts:184 * kind: hook * core: cl * spec: (none) * summary: Cancels an ambient session. * score: 1 ### hook useCaptureConsentSignature * file: src/cores/cl/hooks/useConsents.ts:187 * kind: hook * core: cl * spec: (none) * summary: Hook for capturing a patient signature on a consent (#2009).Writes the decisive timestamp — the gate that and other 42 CFR Part 2 features check — plus an optional and a audit record. The guard makes this a one-time capture: analready-signed consent is not silently re-stamped/backdated. * score: 1 ### hook useCaptureTelehealthConsent * file: src/cores/cl/hooks/useTelehealthConsents.ts:66 * kind: hook * core: cl * spec: (none) * summary: Capture a new telehealth consent on a chart. * returns: A whose input omits server-derived fields (, , , ) — they are filled from + and rejected if either is missing. Invalidates the subtree on success. * score: 4 ### hook useCareGapClose * file: src/cores/cl/hooks/useCareGapClose.ts:22 * kind: hook * core: cl * spec: (none) * summary: Hook for managing care gap close. * score: 1 ### hook useCareGapDetail * file: src/cores/cl/hooks/useCareGapDetail.ts:13 * kind: hook * core: cl * spec: (none) * summary: Hook for managing care gap detail. * score: 1 ### hook useCareGapList * file: src/cores/cl/hooks/useCareGapList.ts:30 * kind: hook * core: cl * spec: (none) * summary: Hook for managing care gap list. * score: 1 ### hook useCareTeamsByChart * file: src/cores/cl/hooks/useCareTeams.ts:31 * kind: hook * core: cl * spec: (none) * summary: Provides care teams by chart queries and mutation actions scoped to the current organization. * score: 4 ### hook useCdsAlertAnalytics * file: src/cores/cl/hooks/useCdsAlertAnalytics.ts:53 * kind: hook * core: cl * spec: (none) * summary: Hook for managing cds alert analytics. * score: 1 ### hook useCdsAlertMutation * file: src/cores/cl/hooks/useCdsAlertMutation.ts:17 * kind: hook * core: cl * spec: (none) * summary: Hook for managing cds alert mutation. * score: 1 ### hook useCdsAlertsForChart * file: src/cores/cl/hooks/useCdsAlerts.ts:13 * kind: hook * core: cl * spec: (none) * summary: Hook for managing cds alerts for chart. * score: 1 ### hook useCdsLabMonitoring * file: src/cores/cl/hooks/useCdsLabMonitoring.ts:27 * kind: hook * core: cl * spec: (none) * summary: Hook to evaluate lab monitoring needs on chart open.Returns a function that checks medications and generates alerts for overdue labs. * score: 4 ### hook useCdsRationaleEnabled * file: src/cores/cl/hooks/useCdsRationale.ts:37 * kind: hook * core: cl * spec: (none) * summary: Fail-closed gate: resolves whether the org has a published DSIdisclosure. Returns while loading or when none is published, so the"Explain this alert" affordance stays hidden until disclosure is published. * score: 4 ### hook useCdsRuleDetail * file: src/cores/cl/hooks/useCdsRules.ts:40 * kind: hook * core: cl * spec: (none) * summary: Hook for managing cds rule detail. * score: 1 ### hook useCdsRuleMutation * file: src/cores/cl/hooks/useCdsRuleMutation.ts:17 * kind: hook * core: cl * spec: (none) * summary: Hook for managing cds rule mutation. * score: 1 ### hook useCdsRulesList * file: src/cores/cl/hooks/useCdsRules.ts:13 * kind: hook * core: cl * spec: (none) * summary: Hook for managing cds rules list. * score: 1 ### hook useChartDetail * file: src/cores/cl/hooks/useChartDetail.ts:13 * kind: hook * core: cl * spec: (none) * summary: Hook for managing chart detail. * score: 1 ### hook useChartLabResults * file: src/cores/cl/hooks/useLabResults.ts:40 * kind: hook * core: cl * spec: (none) * summary: All results for a chart, optionally filtered by LOINC code * score: 4 ### hook useChartList * file: src/cores/cl/hooks/useChartList.ts:37 * kind: hook * core: cl * spec: (none) * summary: Hook for managing chart list. * score: 1 ### hook useChartPatientAddresses * file: src/cores/cl/hooks/useChartPatientAddresses.ts:25 * kind: hook * core: cl * spec: (none) * summary: Fetch the patient's non-deleted addresses, primary first. * score: 4 ### hook useChartsByIds * file: src/cores/cl/hooks/useChartsByIds.ts:44 * kind: hook * core: cl * spec: (none) * summary: Resolve display identity (name/MRN/initials) for a batch of chart ids.Filters by and so RLS scopes the read tocharts the current user may access. Uses the same join shape as / useChartList. Returns the resolved identities in the sameorder as the input (charts the user can no longer access are omitted). * params: * chartIds — Chart ids to resolve (e.g. the recent-charts list). * score: 4 ### hook useChartSummaryAvailability * file: src/cores/cl/ai-documentation/hooks/useChartSummaryAvailability.ts:65 * kind: hook * core: cl * spec: (none) * summary: Gate hook for the AI chart-summary affordance. Returns a fail-closed snapshot for the given chart. * score: 4 ### hook useCLAISettings * file: src/cores/cl/ai-documentation/hooks/useCLAISettings.ts:16 * kind: hook * core: cl * spec: (none) * summary: Reads the AI documentation settings slice from cl\_module\_settings. * score: 4 ### hook useCLAISettingsUpsert * file: src/cores/cl/ai-documentation/hooks/useCLAISettings.ts:58 * kind: hook * core: cl * spec: (none) * summary: Mutation to upsert AI documentation settings slice. * score: 4 ### hook useClinicalStandingOrders * file: src/cores/cl/hooks/useClinicalStandingOrders.ts:24 * kind: hook * core: cl * spec: (none) * summary: List clinical standing orders for the current organization. * score: 4 ### hook useClinicalSummaryPdf * file: src/cores/cl/hooks/useClinicalSummaryPdf.ts:18 * kind: hook * core: cl * spec: (none) * summary: Hook for managing clinical summary pdf. * score: 1 ### hook useClinicianPanelSummary * file: src/cores/cl/hooks/useClinicianPanelSummary.ts:30 * kind: hook * core: cl * spec: (none) * summary: Fetch + aggregate panel data for supervisors. Single query per source table,grouped client-side; suitable for org-scale panels (≤ a few thousand charts). * score: 4 ### hook useClModuleSettings * file: src/cores/cl/hooks/useClModuleSettings.ts:12 * kind: hook * core: cl * spec: (none) * summary: Hook for managing cl module settings. * score: 1 ### hook useClModuleSettingsUpsert * file: src/cores/cl/hooks/useClModuleSettingsUpsert.ts:19 * kind: hook * core: cl * spec: (none) * summary: Hook for managing cl module settings upsert. * score: 1 ### hook useCohortDetail * file: src/cores/cl/hooks/cohorts/useCohortDetail.ts:41 * kind: hook * core: cl * spec: CL-54 * summary: TanStack Query hook that fetches a single row plusthe full immutable version history of its definitions and resolves the"current" definition by . Gated on the currentorganization so cross-tenant access is impossible. * params: * cohortId — The cohort id to load; keeps the query disabled. * returns: A result whose is . is returned when the cohort is not found in the current organization. * score: 5 ### hook useCohortMembershipSnapshot * file: src/cores/cl/hooks/cohorts/useCohortMembership.ts:38 * kind: hook * core: cl * spec: (none) * summary: Fetch a stored snapshot — used by CE/PM consumers for outreach + reporting.If is omitted, returns the most recent snapshot for the cohort. * score: 4 ### hook useCompleteChecklist * file: src/cores/cl/hooks/useDischargeChecklists.ts:145 * kind: hook * core: cl * spec: (none) * summary: Provides complete checklist queries and mutation actions scoped to the current organization. * score: 4 ### hook useCompleteGroupSession * file: src/cores/cl/hooks/useGroupSessions.ts:235 * kind: hook * core: cl * spec: (none) * summary: Provides complete group session queries and mutation actions scoped to the current organization. * score: 4 ### hook useComplianceStats * file: src/cores/cl/hooks/useComplianceStats.ts:18 * kind: hook * core: cl * spec: (none) * summary: Hook for managing compliance stats. * score: 1 ### hook useConcurrentReview * file: src/cores/cl/hooks/useConcurrentReviews.ts:61 * kind: hook * core: cl * spec: (none) * summary: Hook for a single concurrent review by id, scoped to the active organization. * score: 1 ### hook useConcurrentReviews * file: src/cores/cl/hooks/useConcurrentReviews.ts:25 * kind: hook * core: cl * spec: (none) * summary: Hook for fetching the concurrent review worklist for the active organization. * score: 1 ### hook useConcurrentReviewsRealtime * file: src/cores/cl/hooks/useConcurrentReviewsRealtime.ts:18 * kind: hook * core: cl * spec: (none) * summary: Subscribes to concurrent-review table changes and refreshes UM query caches. * score: 4 ### hook useConsentComplianceData * file: src/cores/cl/hooks/useConsentComplianceData.ts:27 * kind: hook * core: cl * spec: (none) * summary: Fetches consent compliance data with expiration bucketing. * score: 4 ### hook useConsentDocumentPdf * file: src/cores/cl/hooks/useConsentDocumentPdf.ts:18 * kind: hook * core: cl * spec: (none) * summary: Hook for managing consent document pdf. * score: 1 ### hook useConsentRequest * file: src/cores/cl/hooks/useConsentRequest.ts:18 * kind: hook * core: cl * spec: (none) * summary: Hook for managing consent request. * score: 1 ### hook useConsentsByChart * file: src/cores/cl/hooks/useConsents.ts:35 * kind: hook * core: cl * spec: (none) * summary: Fetch all non-deleted consents for a chart, newest effective\_date first. * score: 4 ### hook useConsentsExpiringInDays * file: src/cores/cl/hooks/useConsentsExpiringInDays.ts:19 * kind: hook * core: cl * spec: (none) * summary: Fetch consents expiring within the next days.Excludes consents with no expiration\_date, revoked, or soft-deleted. * score: 4 ### hook useConsentStatusForChart * file: src/cores/cl/hooks/useCODProgressNote.ts:41 * kind: hook * core: cl * spec: (none) * summary: Thin wrapper over CL-11 consent check for SUD content. * score: 4 ### hook useCosignDdiOverride * file: src/cores/cl/hooks/useDdiOverrides.ts:109 * kind: hook * core: cl * spec: (none) * summary: Co-signs a DDI override (for contraindicated severity). * score: 4 ### hook useCosignIntakeAssessment * file: src/cores/cl/hooks/useIntakeAssessmentMutation.ts:183 * kind: hook * core: cl * spec: (none) * summary: Co-signs a pending\_cosign intake assessment: transitions to finalized,records cosigning clinician and timestamp. * score: 4 ### hook useCreate988Transfer * file: src/cores/cl/hooks/use988Transfers.ts:48 * kind: hook * core: cl * spec: (none) * summary: Provides create988 transfer queries and mutation actions scoped to the current organization. * score: 4 ### hook useCreateAdherence * file: src/cores/cl/hooks/useMedicationAdherence.ts:76 * kind: hook * core: cl * spec: (none) * summary: Hook for managing create adherence. * score: 1 ### hook useCreateAftercarePlan * file: src/cores/cl/hooks/useAftercarePlans.ts:84 * kind: hook * core: cl * spec: (none) * summary: Provides create aftercare plan queries and mutation actions scoped to the current organization. * score: 4 ### hook useCreateAllergy * file: src/cores/cl/hooks/useAllergyMutation.ts:15 * kind: hook * core: cl * spec: (none) * summary: Provides create allergy queries and mutation actions scoped to the current organization. * score: 4 ### hook useCreateAssessment * file: src/cores/cl/hooks/useAssessmentMutation.ts:16 * kind: hook * core: cl * spec: (none) * summary: Hook for managing create assessment. * score: 1 ### hook useCreateAssessmentTemplate * file: src/cores/cl/hooks/useAssessmentTemplateMutation.ts:17 * kind: hook * core: cl * spec: (none) * summary: Hook for creating a new assessment template. * score: 1 ### hook useCreateBetweenSessionCheckin * file: src/cores/cl/hooks/useBetweenSessionCheckins.ts:61 * kind: hook * core: cl * spec: (none) * summary: Hook for managing create between session checkin. * score: 1 ### hook useCreateCareTeamMember * file: src/cores/cl/hooks/useCareTeams.ts:63 * kind: hook * core: cl * spec: (none) * summary: Provides create care team member queries and mutation actions scoped to the current organization. * score: 4 ### hook useCreateClinicalStandingOrder * file: src/cores/cl/hooks/useClinicalStandingOrders.ts:57 * kind: hook * core: cl * spec: (none) * summary: Create a clinical standing order. * score: 4 ### hook useCreateConcurrentReview * file: src/cores/cl/hooks/useConcurrentReviewMutation.ts:18 * kind: hook * core: cl * spec: (none) * summary: Create a new concurrent review scoped to the active organization. * score: 4 ### hook useCreateConsent * file: src/cores/cl/hooks/useConsents.ts:65 * kind: hook * core: cl * spec: (none) * summary: Hook for managing create consent. * score: 1 ### hook useCreateDdiOverride * file: src/cores/cl/hooks/useDdiOverrides.ts:63 * kind: hook * core: cl * spec: (none) * summary: Creates a DDI override record. * score: 4 ### hook useCreateDdiSuppression * file: src/cores/cl/hooks/useDdiAlertSuppressions.ts:53 * kind: hook * core: cl * spec: (none) * summary: Creates a minor DDI alert suppression for the current provider. * score: 4 ### hook useCreateDesignatedContact * file: src/cores/cl/hooks/useFamilyNotifications.ts:59 * kind: hook * core: cl * spec: (none) * summary: Provides create designated contact queries and mutation actions scoped to the current organization. * score: 4 ### hook useCreateDiagnosis * file: src/cores/cl/hooks/useDiagnoses.ts:88 * kind: hook * core: cl * spec: (none) * summary: Creates a new diagnosis with organization\_id defense-in-depth.Publishes cl\_diagnosis\_confirmed event for downstream billing. * score: 4 ### hook useCreateDisclosureLog * file: src/cores/cl/hooks/useDisclosureLog.ts:97 * kind: hook * core: cl * spec: (none) * summary: Hook for managing create disclosure log. * score: 1 ### hook useCreateEducation * file: src/cores/cl/hooks/useMedicationEducation.ts:78 * kind: hook * core: cl * spec: (none) * summary: Hook for managing create education. * score: 1 ### hook useCreateElectronicConsent * file: src/cores/cl/hooks/useElectronicConsentMutation.ts:16 * kind: hook * core: cl * spec: (none) * summary: Create a new electronic consent (draft or active). * score: 4 ### hook useCreateEnvironmentalAssessment * file: src/cores/cl/hooks/useEnvironmentalAssessments.ts:97 * kind: hook * core: cl * spec: (none) * summary: Create a new environmental assessment.chart\_id is optional — may be set when opened from a patient chart context. * score: 4 ### hook useCreateFollowUpContact * file: src/cores/cl/hooks/useFollowUpContacts.ts:87 * kind: hook * core: cl * spec: (none) * summary: Hook for managing create follow up contact. * score: 1 ### hook useCreateGroupAttendance * file: src/cores/cl/hooks/useGroupAttendance.ts:62 * kind: hook * core: cl * spec: (none) * summary: Provides create group attendance queries and mutation actions scoped to the current organization. * score: 4 ### hook useCreateGroupCurriculum * file: src/cores/cl/hooks/useGroupCurricula.ts:55 * kind: hook * core: cl * spec: (none) * summary: Provides create group curriculum queries and mutation actions scoped to the current organization. * score: 4 ### hook useCreateGroupSession * file: src/cores/cl/hooks/useGroupSessions.ts:99 * kind: hook * core: cl * spec: (none) * summary: Provides create group session queries and mutation actions scoped to the current organization. * score: 4 ### hook useCreateIncident * file: src/cores/cl/hooks/useIncidents.ts:95 * kind: hook * core: cl * spec: (none) * summary: Provides create incident queries and mutation actions scoped to the current organization. * score: 4 ### hook useCreateIntakeAssessment * file: src/cores/cl/hooks/useIntakeAssessmentMutation.ts:33 * kind: hook * core: cl * spec: (none) * summary: Creates a new intake assessment in draft status. * score: 4 ### hook useCreateInterpretation * file: src/cores/cl/hooks/useUdsResults.ts:204 * kind: hook * core: cl * spec: (none) * summary: Create an interpretation note for a UDS order. * score: 4 ### hook useCreateInventoryTransaction * file: src/cores/cl/hooks/useControlledSubstanceInventory.ts:78 * kind: hook * core: cl * spec: (none) * summary: Provides create inventory transaction queries and mutation actions scoped to the current organization. * score: 4 ### hook useCreateLethalMeansAssessment * file: src/cores/cl/hooks/useCreateLethalMeansAssessment.ts:19 * kind: hook * core: cl * spec: (none) * summary: Create a new lethal means assessment. * score: 4 ### hook useCreateMultiPartyEncounter * file: src/cores/cl/hooks/useMultiPartyEncounters.ts:106 * kind: hook * core: cl * spec: (none) * summary: Creates a new multi-party encounter.Pre-migration: throws error (table does not exist yet). * score: 4 ### hook useCreateNewSafetyPlanVersion * file: src/cores/cl/hooks/useSafetyPlans.ts:185 * kind: hook * core: cl * spec: (none) * summary: Supersede the current active safety plan and create a new version.Steps (sequential, not a DB transaction — RLS prevents cross-org writes): 1. INSERT new plan with version = prev.version + 1, status = 'active' 2. UPDATE old plan: status = 'superseded', superseded\_by = new plan's ID * score: 4 ### hook useCreateOrderSetTemplate * file: src/cores/cl/hooks/useOrderSetTemplates.ts:67 * kind: hook * core: cl * spec: (none) * summary: Create a new order set template (defaults to draft). * score: 4 ### hook useCreateOutcomeMeasure * file: src/cores/cl/hooks/useOutcomeMeasureMutation.ts:24 * kind: hook * core: cl * spec: (none) * summary: Hook for managing create outcome measure. * score: 1 ### hook useCreatePatientSubmission * file: src/cores/cl/hooks/usePatientSubmissionMutation.ts:34 * kind: hook * core: cl * spec: (none) * summary: Hook for managing create patient submission. * score: 1 ### hook useCreatePeerEncounter * file: src/cores/cl/hooks/usePeerEncounters.ts:76 * kind: hook * core: cl * spec: (none) * summary: Creates a new peer encounter record with organization\_id defense-in-depth. * score: 4 ### hook useCreatePeerSupervision * file: src/cores/cl/hooks/usePeerSupervision.ts:68 * kind: hook * core: cl * spec: (none) * summary: Hook for managing create peer supervision. * score: 1 ### hook useCreateProblem * file: src/cores/cl/hooks/useProblemMutation.ts:15 * kind: hook * core: cl * spec: (none) * summary: Hook for managing create problem. * score: 1 ### hook useCreateReadmissionRisk * file: src/cores/cl/hooks/useReadmissionRisk.ts:56 * kind: hook * core: cl * spec: (none) * summary: Hook for managing create readmission risk. * score: 1 ### hook useCreateReferenceRange * file: src/cores/cl/hooks/useReferenceRangeMutations.ts:16 * kind: hook * core: cl * spec: (none) * summary: Hook for managing create reference range. * score: 1 ### hook useCreateReferralStatus * file: src/cores/cl/hooks/useReferralStatusMutation.ts:25 * kind: hook * core: cl * spec: (none) * summary: Insert-only mutation for appending a referral status history entry.Automatically sets organization\_id and created\_by from context. * score: 4 ### hook useCreateReportDefinition * file: src/cores/cl/hooks/useReportDefinitions.ts:92 * kind: hook * core: cl * spec: (none) * summary: Creates a report definition and auto-populates tenant and creator fields. * score: 4 ### hook useCreateReviewAppeal * file: src/cores/cl/hooks/useReviewAppeals.ts:42 * kind: hook * core: cl * spec: (none) * summary: Create a review appeal. * score: 1 ### hook useCreateReviewSchedule * file: src/cores/cl/hooks/useReviewSchedules.ts:39 * kind: hook * core: cl * spec: (none) * summary: Create a review schedule (admin only — DB enforces). * score: 4 ### hook useCreateRiskScreening * file: src/cores/cl/hooks/useRiskScreenings.ts:100 * kind: hook * core: cl * spec: (none) * summary: Create a new risk screening.Automatically:1. Computes next\_screening\_due via calculateNextScreeningDue.2. On high/imminent risk: publishes PF-10 alert via notifyHighRiskScreening.3. Invalidates chart detail query so the risk badge refreshes (DB trigger updates cl\_patient\_charts.current\_risk\_level immediately on INSERT).SAFE-T note: score must be null for SAFE-T instrument (enforced at call site / form validation). * score: 4 ### hook useCreateSafetyPlan * file: src/cores/cl/hooks/useSafetyPlans.ts:98 * kind: hook * core: cl * spec: (none) * summary: Create a new safety plan (version 1, status = 'active').If a plan already exists for this chart, use useCreateNewSafetyPlanVersion instead. * score: 4 ### hook useCreateSafetyPlanShare * file: src/cores/cl/hooks/useCreateSafetyPlanShare.ts:23 * kind: hook * core: cl * spec: (none) * summary: Create a new safety plan share record.Consent check and emergency override are handled at the UI layer(SafetyPlanShareDialog) before calling this mutation. This hookperforms the database insert only. * score: 4 ### hook useCreateSdohScreening * file: src/cores/cl/hooks/useSdohScreenings.ts:60 * kind: hook * core: cl * spec: (none) * summary: Hook for managing create sdoh screening. * score: 1 ### hook useCreateSocialReferral * file: src/cores/cl/hooks/useSocialReferrals.ts:61 * kind: hook * core: cl * spec: (none) * summary: Hook for managing create social referral. * score: 1 ### hook useCreateStandingOrderProtocol * file: src/cores/cl/hooks/useStandingOrderMutations.ts:16 * kind: hook * core: cl * spec: (none) * summary: Provides create standing order protocol queries and mutation actions scoped to the current organization. * score: 4 ### hook useCreateTelehealthMetadata * file: src/cores/cl/hooks/useVirtualGroupSessions.ts:96 * kind: hook * core: cl * spec: (none) * summary: Creates telehealth metadata for a group session.Requires cl\_group\_session\_telehealth\_metadata table (post-migration).Currently a placeholder that stores metadata as custom\_fields on the session. * score: 4 ### hook useCreateTransition * file: src/cores/cl/hooks/useTransitions.ts:94 * kind: hook * core: cl * spec: (none) * summary: Hook for managing create transition. * score: 1 ### hook useCreateTreatmentGoal * file: src/cores/cl/hooks/useTreatmentGoalMutations.ts:16 * kind: hook * core: cl * spec: (none) * summary: Hook for managing create treatment goal. * score: 1 ### hook useCreateTreatmentIntervention * file: src/cores/cl/hooks/useTreatmentInterventionMutations.ts:16 * kind: hook * core: cl * spec: (none) * summary: Hook for managing create treatment intervention. * score: 1 ### hook useCreateTreatmentPlan * file: src/cores/cl/hooks/useTreatmentPlanMutations.ts:16 * kind: hook * core: cl * spec: (none) * summary: Hook for managing create treatment plan. * score: 1 ### hook useCreateUdsOrder * file: src/cores/cl/hooks/useUdsOrders.ts:95 * kind: hook * core: cl * spec: (none) * summary: Hook for managing create uds order. * score: 1 ### hook useCreateUdsResult * file: src/cores/cl/hooks/useUdsResults.ts:66 * kind: hook * core: cl * spec: (none) * summary: Hook for managing create uds result. * score: 1 ### hook useCreateWarmHandoff * file: src/cores/cl/hooks/useWarmHandoffs.ts:63 * kind: hook * core: cl * spec: (none) * summary: Hook for managing create warm handoff. * score: 1 ### hook useDdiAlertSuppressions * file: src/cores/cl/hooks/useDdiAlertSuppressions.ts:19 * kind: hook * core: cl * spec: (none) * summary: Fetches active DDI alert suppressions for the current provider. * score: 4 ### hook useDdiOverrides * file: src/cores/cl/hooks/useDdiOverrides.ts:24 * kind: hook * core: cl * spec: (none) * summary: Fetches active DDI overrides for a chart. * score: 4 ### hook useDeleteClinicalStandingOrder * file: src/cores/cl/hooks/useClinicalStandingOrders.ts:112 * kind: hook * core: cl * spec: (none) * summary: Soft-delete a clinical standing order. * score: 4 ### hook useDeleteDesignatedContact * file: src/cores/cl/hooks/useFamilyNotifications.ts:122 * kind: hook * core: cl * spec: (none) * summary: Provides delete designated contact queries and mutation actions scoped to the current organization. * score: 4 ### hook useDeleteInventoryTransaction * file: src/cores/cl/hooks/useControlledSubstanceInventory.ts:156 * kind: hook * core: cl * spec: (none) * summary: Provides delete inventory transaction queries and mutation actions scoped to the current organization. * score: 4 ### hook useDeleteOrderSetTemplate * file: src/cores/cl/hooks/useOrderSetTemplates.ts:119 * kind: hook * core: cl * spec: (none) * summary: Soft-delete an order set template. * score: 4 ### hook useDeleteReferenceRange * file: src/cores/cl/hooks/useReferenceRangeMutations.ts:72 * kind: hook * core: cl * spec: (none) * summary: Hook for managing delete reference range. * score: 1 ### hook useDeleteReportDefinition * file: src/cores/cl/hooks/useReportDefinitions.ts:174 * kind: hook * core: cl * spec: (none) * summary: Deletes a report definition for the active organization and invalidates list caches. * score: 4 ### hook useDeleteStandingOrderProtocol * file: src/cores/cl/hooks/useStandingOrderMutations.ts:98 * kind: hook * core: cl * spec: (none) * summary: Provides delete standing order protocol queries and mutation actions scoped to the current organization. * score: 4 ### hook useDeleteTemplateSection * file: src/cores/cl/hooks/useAssessmentTemplateSectionMutation.ts:72 * kind: hook * core: cl * spec: (none) * summary: Hook for soft-deleting a template section. * score: 1 ### hook useDeprecateMarketplaceBundle * file: src/cores/cl/hooks/useMarketplaceCurator.ts:66 * kind: hook * core: cl * spec: (none) * summary: Toggle the flag on a bundle (curator action). * score: 4 ### hook useDesignatedContacts * file: src/cores/cl/hooks/useFamilyNotifications.ts:32 * kind: hook * core: cl * spec: (none) * summary: Provides designated contacts queries and mutation actions scoped to the current organization. * score: 4 ### hook useDiagnosesByChart * file: src/cores/cl/hooks/useDiagnoses.ts:27 * kind: hook * core: cl * spec: (none) * summary: Fetches diagnoses for a chart, ordered by created\_at DESC. * score: 4 ### hook useDiagnosesByPatient * file: src/cores/cl/hooks/useDiagnoses.ts:56 * kind: hook * core: cl * spec: (none) * summary: Fetches diagnoses for a patient, ordered by created\_at DESC. * score: 4 ### hook useDirectorySearch * file: src/cores/cl/hooks/useDirectorySearch.ts:14 * kind: hook * core: cl * spec: (none) * summary: Mutation-based hook for directory search (user-initiated, not cached). * score: 4 ### hook useDischargeChecklistByTransition * file: src/cores/cl/hooks/useDischargeChecklists.ts:32 * kind: hook * core: cl * spec: (none) * summary: Provides discharge checklist by transition queries and mutation actions scoped to the current organization. * score: 4 ### hook useDisclosureLogByChart * file: src/cores/cl/hooks/useDisclosureLog.ts:31 * kind: hook * core: cl * spec: (none) * summary: Fetch all disclosures for a chart, newest first. * score: 4 ### hook useDocumentationMetricsData * file: src/cores/cl/hooks/useDocumentationMetricsData.ts:27 * kind: hook * core: cl * spec: (none) * summary: Fetches per-provider documentation completeness metrics. * score: 4 ### hook useDsiDisclosures * file: src/cores/cl/dsi-disclosures/hooks/useDsiDisclosures.ts:25 * kind: hook * core: cl * spec: (none) * summary: List all DSI disclosures for the current org (draft, published, retired), newest first. * score: 4 ### hook useEditGeneration * file: src/cores/cl/hooks/useGroupEncounterGenerations.ts:211 * kind: hook * core: cl * spec: (none) * summary: Edits a generation record's proposed CPT code and/or duration before approval. * score: 4 ### hook useEnvironmentalAssessmentsByChart * file: src/cores/cl/hooks/useEnvironmentalAssessments.ts:35 * kind: hook * core: cl * spec: (none) * summary: Fetch environmental assessments linked to a specific patient chart.chart\_id is optional in the DB (site-level assessments may not link a chart),so this filter uses .eq() which will correctly return only chart-linked records. * score: 4 ### hook useEnvironmentalAssessmentsBySite * file: src/cores/cl/hooks/useEnvironmentalAssessments.ts:65 * kind: hook * core: cl * spec: (none) * summary: Fetch all environmental assessments for a site (facility-wide view).Includes both chart-linked and unlinked assessments. * score: 4 ### hook useEPrescribingWizard * file: src/cores/cl/wizards/e-prescribing/hooks/useEPrescribingWizard.ts:83 * kind: hook * core: cl * spec: (none) * summary: Hook for managing e-prescribing wizard step navigation and form state. * score: 1 ### hook useEscalateInbasketItem * file: src/cores/cl/hooks/useInbasketItemMutation.ts:88 * kind: hook * core: cl * spec: (none) * summary: Hook for managing escalate inbasket item. * score: 1 ### hook useExemptionDisclosureGate * file: src/cores/cl/hooks/ceem/useExemptionDisclosureGate.ts:24 * kind: hook * core: cl * spec: (none) * summary: React Query wrapper over . Read-only;the gate decision is the authoritative result and is logged server-side. * score: 4 ### hook useExportArcosCsv * file: src/cores/cl/hooks/useArcosExport.ts:60 * kind: hook * core: cl * spec: (none) * summary: Hook for managing export arcos csv. * score: 1 ### hook useFamilyNotificationLog * file: src/cores/cl/hooks/useFamilyNotifications.ts:155 * kind: hook * core: cl * spec: (none) * summary: Provides family notification log queries and mutation actions scoped to the current organization. * score: 4 ### hook useFinalizeIntakeAssessment * file: src/cores/cl/hooks/useIntakeAssessmentMutation.ts:117 * kind: hook * core: cl * spec: (none) * summary: Finalizes an intake assessment: transitions status, sets signed\_at,publishes cl\_intake\_finalized event for downstream billing/referrals. * score: 4 ### hook useFinalizeLocAssessment * file: src/cores/cl/hooks/useLocAssessments.ts:286 * kind: hook * core: cl * spec: (none) * summary: Backward-compat finalize hook used by WS3-target UI. Maps to sign withlegacy parameter names. WS3 should switch to . * score: 4 ### hook useFlagCourtReportable * file: src/cores/cl/hooks/useUdsResults.ts:138 * kind: hook * core: cl * spec: (none) * summary: Toggle court\_reportable flag on a result row. * score: 4 ### hook useFollowUpContactsByChart * file: src/cores/cl/hooks/useFollowUpContacts.ts:27 * kind: hook * core: cl * spec: (none) * summary: Hook for managing follow up contacts by chart. * score: 1 ### hook useFollowUpContactsByPlan * file: src/cores/cl/hooks/useFollowUpContacts.ts:56 * kind: hook * core: cl * spec: (none) * summary: Hook for managing follow up contacts by plan. * score: 1 ### hook useFollowUpRate * file: src/cores/cl/hooks/useFollowUpRate.ts:64 * kind: hook * core: cl * spec: (none) * summary: Read per-grant follow-up rates from the VIEW\.Returns an array of quarter-grained rows for the current organization,optionally narrowed by grant code and/or quarter start date. CL-69 AC-4 * score: 4 ### hook useFuaFuiMeasureParams * file: src/cores/cl/hooks/useFuaFuiMeasureParams.ts:21 * kind: hook * core: cl * spec: (none) * summary: Resolve the active FUA/FUI measure params for the current organization(optionally narrowed to a site) from the PF-96 jurisdiction profile. * params: * siteId — Optional site UUID for site-level override resolution. * returns: The compliance query result with set to the hydrated , or when no compliance pack is available. * score: 4 ### hook useFuhEligibleTransitions * file: src/cores/cl/hooks/useTransitions.ts:62 * kind: hook * core: cl * spec: (none) * summary: Hook for managing fuh eligible transitions. * score: 1 ### hook useFullChartExport * file: src/cores/cl/hooks/useFullChartExport.ts:74 * kind: hook * core: cl * spec: (none) * summary: Hook for managing full chart export. * score: 1 ### hook useGenerateAIDraft * file: src/cores/cl/ai-documentation/hooks/useGenerateAIDraft.ts:21 * kind: hook * core: cl * spec: (none) * summary: Calls the AI draft generation edge function.Returns the draft content on success, or throws on failure/timeout. * score: 4 ### hook useGenerateCdaDocument * file: src/cores/cl/hooks/useCdaDocuments.ts:140 * kind: hook * core: cl * spec: (none) * summary: Generate a new C-CDA document. Fetches source clinical data scoped tothe chart + active organization, applies Part 2 consent filtering,excludes psychotherapy notes at the source query, assembles the XML,validates it, and persists the row. * score: 4 ### hook useGenerateCdsRationale * file: src/cores/cl/hooks/useCdsRationale.ts:66 * kind: hook * core: cl * spec: (none) * summary: Generate (and persist) an LLM rationale for a CDS alert via thecl-cds-rationale edge function, then invalidate the chart's alert list so thepersisted reflows into the panel. * score: 4 ### hook useGenerateChartSummary * file: src/cores/cl/ai-documentation/hooks/useGenerateChartSummary.ts:93 * kind: hook * core: cl * spec: (none) * summary: Mutation hook for AI chart-summary generation.Returns the readiness metadata and the transient structured summary on success,or throws a sanitized error on failure / gate denial / timeout. * score: 4 ### hook useGenerateTreatmentPlanDraft * file: src/cores/cl/ai-treatment-plan/hooks/useGenerateTreatmentPlanDraft.ts:45 * kind: hook * core: cl * spec: (none) * summary: Mutation hook for AI treatment-plan draft generation.On success the edge function has inserted goals into cl\_treatment\_goals andinterventions into cl\_treatment\_interventions. The caller should invalidatethe relevant query keys to refresh the UI. * score: 4 ### hook useGroupAttendanceBySession * file: src/cores/cl/hooks/useGroupAttendance.ts:31 * kind: hook * core: cl * spec: (none) * summary: Provides group attendance by session queries and mutation actions scoped to the current organization. * score: 4 ### hook useGroupCurriculaList * file: src/cores/cl/hooks/useGroupCurricula.ts:25 * kind: hook * core: cl * spec: (none) * summary: Provides group curricula list queries and mutation actions scoped to the current organization. * score: 4 ### hook useGroupEncounterGenerationDetail * file: src/cores/cl/hooks/useGroupEncounterGenerations.ts:67 * kind: hook * core: cl * spec: (none) * summary: Fetches a single generation record with its session details. * score: 4 ### hook useGroupEncounterGenerationList * file: src/cores/cl/hooks/useGroupEncounterGenerations.ts:32 * kind: hook * core: cl * spec: (none) * summary: Fetches group encounter generations for the current org with optional filters. * score: 4 ### hook useGroupOutcomeMetrics * file: src/cores/cl/hooks/useGroupOutcomeMetrics.ts:42 * kind: hook * core: cl * spec: (none) * summary: Hook for managing group outcome metrics. * score: 1 ### hook useGroupSessionDetail * file: src/cores/cl/hooks/useGroupSessions.ts:68 * kind: hook * core: cl * spec: (none) * summary: Provides group session detail queries and mutation actions scoped to the current organization. * score: 4 ### hook useGroupSessionPdf * file: src/cores/cl/hooks/useGroupSessionPdf.ts:18 * kind: hook * core: cl * spec: (none) * summary: Hook for managing group session pdf. * score: 1 ### hook useGroupSessionsList * file: src/cores/cl/hooks/useGroupSessions.ts:36 * kind: hook * core: cl * spec: (none) * summary: Provides group sessions list queries and mutation actions scoped to the current organization. * score: 4 ### hook useHedisBatchCalculation * file: src/cores/cl/hooks/useHedisBatchCalculation.ts:35 * kind: hook * core: cl * spec: (none) * summary: Hook for managing hedis batch calculation. * score: 1 ### hook useHedisOpenCount * file: src/cores/cl/hooks/useHedisWorklist.ts:168 * kind: hook * core: cl * spec: (none) * summary: Count of open (non-met) denominator events for tab badge. * score: 4 ### hook useHedisTrackingSummary * file: src/cores/cl/hooks/useHedisTrackingSummary.ts:30 * kind: hook * core: cl * spec: (none) * summary: Fetch HEDIS FUH/FUM compliance rates for the current organization and measurement year. * score: 4 ### hook useHedisWorklist * file: src/cores/cl/hooks/useHedisWorklist.ts:88 * kind: hook * core: cl * spec: (none) * summary: Fetch aftercare plans that are in a HEDIS denominator, with follow-up contacts. * score: 4 ### hook useImportedBundleKeys * file: src/cores/cl/hooks/useMarketplaceImports.ts:44 * kind: hook * core: cl * spec: (none) * summary: Get set of bundle\_keys already imported by the current org (for update detection). * score: 4 ### hook useImportMarketplaceBundle * file: src/cores/cl/hooks/useMarketplaceImports.ts:83 * kind: hook * core: cl * spec: (none) * summary: Import a marketplace bundle into the current organization.Per CONTEXT D-11, the MVP supports and. Unsupported item types are skipped with a warning. On anyhandler error after the first successful insert, this hook performs aclient-side best-effort rollback of created rows and marks the import as so the org returns to its prior state. * score: 4 ### hook useInbasketItemDetail * file: src/cores/cl/hooks/useInbasketItemDetail.ts:16 * kind: hook * core: cl * spec: (none) * summary: Hook for managing inbasket item detail. * score: 1 ### hook useInbasketItemList * file: src/cores/cl/hooks/useInbasketItemList.ts:16 * kind: hook * core: cl * spec: (none) * summary: Hook for managing inbasket item list. * score: 1 ### hook useIncidentDetail * file: src/cores/cl/hooks/useIncidents.ts:64 * kind: hook * core: cl * spec: (none) * summary: Provides incident detail queries and mutation actions scoped to the current organization. * score: 4 ### hook useIncidentList * file: src/cores/cl/hooks/useIncidents.ts:34 * kind: hook * core: cl * spec: (none) * summary: Provides incident list queries and mutation actions scoped to the current organization. * score: 4 ### hook useInitiateAISession * file: src/cores/cl/ai-documentation/hooks/useAIDocumentationSession.ts:62 * kind: hook * core: cl * spec: (none) * summary: Initiates a new AI documentation session. * score: 4 ### hook useIntakeAssessmentDetail * file: src/cores/cl/hooks/useIntakeAssessmentDetail.ts:17 * kind: hook * core: cl * spec: (none) * summary: Fetches a single intake assessment by ID with patient join. * score: 4 ### hook useIntakeAssessments * file: src/cores/cl/hooks/useIntakeAssessments.ts:17 * kind: hook * core: cl * spec: (none) * summary: Fetches a filtered list of intake assessments for the current organization. * score: 4 ### hook useIntakePrePopulation * file: src/cores/cl/hooks/useIntakePrePopulation.ts:34 * kind: hook * core: cl * spec: (none) * summary: Fetches pre-population data for an intake assessment form.Combines patient demographics, latest SDOH screening, and active diagnoses. * score: 4 ### hook useInventoryReconciliation * file: src/cores/cl/hooks/useControlledSubstanceInventory.ts:186 * kind: hook * core: cl * spec: (none) * summary: Provides inventory reconciliation queries and mutation actions scoped to the current organization. * score: 4 ### hook useInventoryTransactions * file: src/cores/cl/hooks/useControlledSubstanceInventory.ts:38 * kind: hook * core: cl * spec: (none) * summary: Provides inventory transactions queries and mutation actions scoped to the current organization. * score: 4 ### hook useLabOrderMutations * file: src/cores/cl/hooks/useLabOrderMutations.ts:20 * kind: hook * core: cl * spec: (none) * summary: Hook for managing lab order mutations. * score: 1 ### hook useLabOrders * file: src/cores/cl/hooks/useLabOrders.ts:13 * kind: hook * core: cl * spec: (none) * summary: Hook for managing lab orders. * score: 1 ### hook useLabResultMutations * file: src/cores/cl/hooks/useLabResultMutations.ts:18 * kind: hook * core: cl * spec: (none) * summary: Hook for managing lab result mutations. * score: 1 ### hook useLabResults * file: src/cores/cl/hooks/useLabResults.ts:13 * kind: hook * core: cl * spec: (none) * summary: Results for a single order * score: 1 ### hook useLabResultTrends * file: src/cores/cl/hooks/useLabResults.ts:88 * kind: hook * core: cl * spec: (none) * summary: Hook for managing lab result trends. * score: 1 ### hook useLethalMeansAssessment * file: src/cores/cl/hooks/useLethalMeansAssessment.ts:15 * kind: hook * core: cl * spec: (none) * summary: Fetch a single lethal means assessment by ID. * score: 4 ### hook useLethalMeansAssessments * file: src/cores/cl/hooks/useLethalMeansAssessments.ts:19 * kind: hook * core: cl * spec: (none) * summary: Fetch all lethal means assessments for a patient chart, newest first. * score: 4 ### hook useLinkPendingResult * file: src/cores/cl/hooks/usePendingLabResults.ts:77 * kind: hook * core: cl * spec: (none) * summary: Provides link pending result queries and mutation actions scoped to the current organization. * score: 4 ### hook useLinkProgressNote * file: src/cores/cl/hooks/useTelehealthSessions.ts:140 * kind: hook * core: cl * spec: (none) * summary: CL-24 (#544): link / unlink a CL-04 progress note to a telehealth session.Option B (see specs/cl/specs/CL-24-CONTEXT.md): the linkage is the singlereverse FK — a UI-only flip of thatcolumn. Linking sets it to the note id; unlinking (or relinking) sets it tonull (or a different note id). No write to . Org-scoped, soRLS + the explicit filter keep it tenant-isolated. * score: 4 ### hook useLocAssessmentReassess * file: src/cores/cl/hooks/useLocAssessments.ts:317 * kind: hook * core: cl * spec: (none) * summary: Pre-populate a new assessment from a prior one (reassessment flow).Returns the prior dimension scores + a computed once thecaller supplies the new total. Persistence of happens atcreate time via . * score: 4 ### hook useLocAssessmentsByChart * file: src/cores/cl/hooks/useLocAssessments.ts:29 * kind: hook * core: cl * spec: (none) * summary: List assessments for a chart (canonical) — is the FK. * score: 4 ### hook useLogAmbientSessionEvent * file: src/cores/cl/ai-documentation/hooks/useAmbientSession.ts:237 * kind: hook * core: cl * spec: (none) * summary: Logs an audit event for an ambient session. * score: 4 ### hook useLoincSearch * file: src/cores/cl/hooks/useLoincSearch.ts:25 * kind: hook * core: cl * spec: (none) * summary: Hook for managing loinc search. * score: 1 ### hook useMarketplaceBundle * file: src/cores/cl/hooks/useMarketplaceBundles.ts:59 * kind: hook * core: cl * spec: (none) * summary: Fetch a single marketplace bundle by id. * score: 4 ### hook useMarketplaceBundleItems * file: src/cores/cl/hooks/useMarketplaceBundleItems.ts:24 * kind: hook * core: cl * spec: (none) * summary: Query hook to list all items in a marketplace bundle.Fetches items from cl\_marketplace\_bundle\_items, ordered by their orderingfield. Returns an empty array if bundleId is undefined or falsy. * params: * bundleId — ID of the marketplace bundle to fetch items for, or undefined. Query is disabled when undefined. * returns: React Query result containing an array of MarketplaceBundleItem objects. Each item includes id, item\_key, item\_type, and ordering. * score: 4 ### hook useMarketplaceBundles * file: src/cores/cl/hooks/useMarketplaceBundles.ts:17 * kind: hook * core: cl * spec: (none) * summary: List marketplace bundles with optional filtering by accreditation, clinical area, and search. * score: 4 ### hook useMarketplaceImports * file: src/cores/cl/hooks/useMarketplaceImports.ts:20 * kind: hook * core: cl * spec: (none) * summary: List import history for the current organization. * score: 4 ### hook useMeasurementUnit * file: src/cores/cl/hooks/useMeasurementUnit.ts:116 * kind: hook * core: cl * spec: (none) * summary: Hook providing the org's measurement unit preference and conversion utilities.DB columns are always metric (height\_cm, weight\_kg, waist\_circumference\_cm).Conversion is UI-layer only. * score: 4 ### hook useMedicationAdherenceByChart * file: src/cores/cl/hooks/useMedicationAdherence.ts:48 * kind: hook * core: cl * spec: (none) * summary: Hook for managing medication adherence by chart. * score: 1 ### hook useMedicationEducationByChart * file: src/cores/cl/hooks/useMedicationEducation.ts:50 * kind: hook * core: cl * spec: (none) * summary: Hook for managing medication education by chart. * score: 1 ### hook useMedicationMutation * file: src/cores/cl/hooks/useMedicationMutation.ts:27 * kind: hook * core: cl * spec: (none) * summary: Hook for managing medication mutation. * score: 1 ### hook useMedicationReconciliationsByChart * file: src/cores/cl/hooks/useMedicationReconciliationsByChart.ts:13 * kind: hook * core: cl * spec: (none) * summary: Hook for managing medication reconciliations by chart. * score: 1 ### hook useMedicationsByChart * file: src/cores/cl/hooks/useMedicationsByChart.ts:13 * kind: hook * core: cl * spec: (none) * summary: Hook for managing medications by chart. * score: 1 ### hook useMetabolicMonitoringList * file: src/cores/cl/hooks/useMetabolicMonitoringList.ts:17 * kind: hook * core: cl * spec: (none) * summary: Hook for managing metabolic monitoring list. * score: 1 ### hook useMetabolicMonitoringMutation * file: src/cores/cl/hooks/useMetabolicMonitoringMutation.ts:13 * kind: hook * core: cl * spec: (none) * summary: Hook for managing metabolic monitoring mutation. * score: 1 ### hook useMoudEnrollmentDetail * file: src/cores/cl/hooks/useMoudEnrollments.ts:48 * kind: hook * core: cl * spec: (none) * summary: Hook for managing moud enrollment detail. * score: 1 ### hook useMoudEnrollmentList * file: src/cores/cl/hooks/useMoudEnrollments.ts:24 * kind: hook * core: cl * spec: (none) * summary: Hook for managing moud enrollment list. * score: 1 ### hook useMoudEnrollmentMutation * file: src/cores/cl/hooks/useMoudEnrollments.ts:72 * kind: hook * core: cl * spec: (none) * summary: Hook for managing moud enrollment mutation. * score: 1 ### hook useMoudMedicationEventMutation * file: src/cores/cl/hooks/useMoudMedicationEvents.ts:42 * kind: hook * core: cl * spec: (none) * summary: Hook for managing moud medication event mutation. * score: 1 ### hook useMoudMedicationEventsByEnrollment * file: src/cores/cl/hooks/useMoudMedicationEvents.ts:13 * kind: hook * core: cl * spec: (none) * summary: Hook for managing moud medication events by enrollment. * score: 1 ### hook useMoudMonitoringEventMutation * file: src/cores/cl/hooks/useMoudMonitoringEvents.ts:42 * kind: hook * core: cl * spec: (none) * summary: Hook for managing moud monitoring event mutation. * score: 1 ### hook useMoudMonitoringEventsByEnrollment * file: src/cores/cl/hooks/useMoudMonitoringEvents.ts:13 * kind: hook * core: cl * spec: (none) * summary: Hook for managing moud monitoring events by enrollment. * score: 1 ### hook useMultiPartyEncounterDetail * file: src/cores/cl/hooks/useMultiPartyEncounters.ts:74 * kind: hook * core: cl * spec: (none) * summary: Fetches a single multi-party encounter by ID.Pre-migration: returns null (table does not exist yet). * score: 4 ### hook useMultiPartyEncountersList * file: src/cores/cl/hooks/useMultiPartyEncounters.ts:40 * kind: hook * core: cl * spec: (none) * summary: Lists multi-party encounters with optional status filter.Pre-migration: returns empty array (table does not exist yet). * score: 4 ### hook useMultiPartyParticipants * file: src/cores/cl/hooks/useMultiPartyEncounters.ts:190 * kind: hook * core: cl * spec: (none) * summary: Lists participants for a multi-party encounter.Pre-migration: returns empty array (table does not exist yet). * score: 4 ### hook useNoteRequirements * file: src/cores/cl/hooks/useNoteRequirements.ts:30 * kind: hook * core: cl * spec: (none) * summary: Provides jurisdiction-aware note requirements for the current org/site. * params: * siteId — Optional site UUID for site-level override resolution. * returns: Resolved note requirements with loading/error state. * score: 4 ### hook useNoteTemplateMutation * file: src/cores/cl/hooks/useNoteTemplateMutation.ts:16 * kind: hook * core: cl * spec: (none) * summary: Hook for managing note template mutation. * score: 1 ### hook useNoteTemplatesList * file: src/cores/cl/hooks/useNoteTemplatesList.ts:13 * kind: hook * core: cl * spec: (none) * summary: Hook for managing note templates list. * score: 1 ### hook useOpenCareGapCount * file: src/cores/cl/hooks/useOpenCareGapCount.ts:13 * kind: hook * core: cl * spec: (none) * summary: Hook for managing open care gap count. * score: 1 ### hook useOrderSetActivations * file: src/cores/cl/hooks/useOrderSetActivation.ts:18 * kind: hook * core: cl * spec: (none) * summary: List order set activations for a given chart. * score: 4 ### hook useOrderSetTemplate * file: src/cores/cl/hooks/useOrderSetTemplates.ts:43 * kind: hook * core: cl * spec: (none) * summary: Fetch a single order set template by id. * score: 4 ### hook useOrderSetTemplates * file: src/cores/cl/hooks/useOrderSetTemplates.ts:17 * kind: hook * core: cl * spec: (none) * summary: List active order set templates for the current organization. * score: 4 ### hook useOrderTemplateMutations * file: src/cores/cl/hooks/useOrderTemplateMutations.ts:16 * kind: hook * core: cl * spec: (none) * summary: Hook for managing order template mutations. * score: 1 ### hook useOrderTemplates * file: src/cores/cl/hooks/useOrderTemplates.ts:13 * kind: hook * core: cl * spec: (none) * summary: Hook for managing order templates. * score: 1 ### hook useOrgSurfaceBlocks * file: src/cores/cl/hooks/blocks/useSurfaceTemplateAdmin.ts:38 * kind: hook * core: cl * spec: (none) * summary: The org-optional blocks currently composed onto a surface. * score: 4 ### hook useOutcomeEpisodeDetail * file: src/cores/cl/hooks/useOutcomeEpisodes.ts:66 * kind: hook * core: cl * spec: (none) * summary: Fetch a single outcome episode by ID. * score: 4 ### hook useOutcomeEpisodesByChart * file: src/cores/cl/hooks/useOutcomeEpisodes.ts:38 * kind: hook * core: cl * spec: (none) * summary: Fetch all outcome episodes for a chart, newest first. * score: 4 ### hook useOutcomeMeasureDetail * file: src/cores/cl/hooks/useOutcomeMeasures.ts:61 * kind: hook * core: cl * spec: (none) * summary: Fetch a single outcome measure by ID. * score: 4 ### hook useOutcomeMeasuresByChart * file: src/cores/cl/hooks/useOutcomeMeasures.ts:30 * kind: hook * core: cl * spec: (none) * summary: Fetch all non-deleted outcome measures for a chart, newest first. * score: 4 ### hook useOverdueReviews * file: src/cores/cl/hooks/useOverdueReviews.ts:25 * kind: hook * core: cl * spec: (none) * summary: Hook returning overdue concurrent reviews for the active organization. * score: 4 ### hook useOverlappingServiceTimes * file: src/cores/cl/hooks/useOverlappingServiceTimes.ts:18 * kind: hook * core: cl * spec: (none) * summary: Detect overlapping service times across all active progress notes for the org. * params: * dateRange — Optional: limit detection to notes within a date range. * score: 4 ### hook useOverrideAudit * file: src/cores/cl/hooks/useOverrideAudit.ts:22 * kind: hook * core: cl * spec: (none) * summary: Insert an override audit record for Policy 940 validation bypass. * score: 4 ### hook usePart2DashboardData * file: src/cores/cl/hooks/usePart2DashboardData.ts:26 * kind: hook * core: cl * spec: (none) * summary: Fetches Part 2 compliance metrics for the audit dashboard. * score: 4 ### hook usePathwayDefinitions * file: src/cores/cl/hooks/usePathways.ts:13 * kind: hook * core: cl * spec: (none) * summary: Hook for managing pathway definitions. * score: 1 ### hook usePathwayMutation * file: src/cores/cl/hooks/usePathwayMutation.ts:17 * kind: hook * core: cl * spec: (none) * summary: Hook for managing pathway mutation. * score: 1 ### hook usePathwayProgressForChart * file: src/cores/cl/hooks/usePathways.ts:40 * kind: hook * core: cl * spec: (none) * summary: Hook for managing pathway progress for chart. * score: 1 ### hook usePatientActiveProblems * file: src/cores/cl/hooks/useProblems.ts:71 * kind: hook * core: cl * spec: (none) * summary: CL-46: Active-only problem list (active + chronic) for billing/clinical surfaces.Defense-in-depth: explicit organization\_id filter in addition to RLS. * score: 4 ### hook usePatientBannerConfig * file: src/cores/cl/hooks/usePatientBannerConfig.ts:16 * kind: hook * core: cl * spec: (none) * summary: Hook for managing patient banner config. * score: 1 ### hook usePatientCareGaps * file: src/cores/cl/hooks/usePatientCareGaps.ts:22 * kind: hook * core: cl * spec: (none) * summary: Hook for managing patient care gaps. * score: 1 ### hook usePatientProblems * file: src/cores/cl/hooks/useProblems.ts:42 * kind: hook * core: cl * spec: (none) * summary: CL-46: Hook for fetching problems by patient (cross-chart, single MRN). * score: 4 ### hook usePatientSubmissionDetail * file: src/cores/cl/hooks/usePatientSubmissionDetail.ts:14 * kind: hook * core: cl * spec: (none) * summary: Hook for managing patient submission detail. * score: 1 ### hook usePatientSubmissionsList * file: src/cores/cl/hooks/usePatientSubmissionsList.ts:15 * kind: hook * core: cl * spec: (none) * summary: Hook for managing patient submissions list. * score: 1 ### hook usePatientTimeline * file: src/cores/cl/hooks/usePatientTimeline.ts:16 * kind: hook * core: cl * spec: (none) * summary: Hook for managing patient timeline. * score: 1 ### hook usePdmpConfiguration * file: src/cores/cl/hooks/usePdmpConfiguration.ts:19 * kind: hook * core: cl * spec: (none) * summary: Hook for managing pdmp configuration. * score: 1 ### hook usePdmpQueryDetail * file: src/cores/cl/hooks/usePdmpQueryDetail.ts:13 * kind: hook * core: cl * spec: (none) * summary: Hook for managing pdmp query detail. * score: 1 ### hook usePdmpQueryList * file: src/cores/cl/hooks/usePdmpQueryList.ts:13 * kind: hook * core: cl * spec: (none) * summary: Hook for managing pdmp query list. * score: 1 ### hook usePdmpQueryMutation * file: src/cores/cl/hooks/usePdmpQueryMutation.ts:20 * kind: hook * core: cl * spec: (none) * summary: Hook for managing pdmp query mutation. * score: 1 ### hook usePeerEncountersByPatient * file: src/cores/cl/hooks/usePeerEncounters.ts:39 * kind: hook * core: cl * spec: (none) * summary: Fetches peer encounters for a patient, ordered by encounter\_date DESC.Replaces the old usePeerEncountersByChart which used the non-existent chart\_id column. * score: 4 ### hook usePeerSupervisionList * file: src/cores/cl/hooks/usePeerSupervision.ts:31 * kind: hook * core: cl * spec: (none) * summary: Hook for managing peer supervision list. * score: 1 ### hook usePendingLabResults * file: src/cores/cl/hooks/usePendingLabResults.ts:14 * kind: hook * core: cl * spec: (none) * summary: Provides pending lab results queries and mutation actions scoped to the current organization. * score: 4 ### hook usePendingLabResultsCount * file: src/cores/cl/hooks/usePendingLabResults.ts:43 * kind: hook * core: cl * spec: (none) * summary: Provides pending lab results count queries and mutation actions scoped to the current organization. * score: 4 ### hook usePharmacyList * file: src/cores/cl/hooks/usePharmacyList.ts:19 * kind: hook * core: cl * spec: (none) * summary: Hook for managing pharmacy list. * score: 1 ### hook usePharmacyListAll * file: src/cores/cl/hooks/usePharmacyList.ts:52 * kind: hook * core: cl * spec: (none) * summary: Fetch ALL pharmacies including inactive (for the management directory page). * score: 4 ### hook usePharmacyMutation * file: src/cores/cl/hooks/usePharmacyMutation.ts:16 * kind: hook * core: cl * spec: (none) * summary: Hook for managing pharmacy mutation. * score: 1 ### hook usePharmacySearch * file: src/cores/cl/hooks/usePharmacySearch.ts:62 * kind: hook * core: cl * spec: (none) * summary: Run the structured pharmacy search. Pass (or invalid params) to keep thequery idle. ON-WENO results sort first. * score: 4 ### hook usePocResultEntry * file: src/cores/cl/hooks/usePocResultEntry.ts:28 * kind: hook * core: cl * spec: (none) * summary: Hook for managing poc result entry. * score: 1 ### hook usePolicy940Config * file: src/cores/cl/hooks/usePolicy940Config.ts:18 * kind: hook * core: cl * spec: (none) * summary: Fetch Policy 940 configuration for the current organization. * returns: Policy940Config with defaults if no config row exists. * score: 4 ### hook usePolicy940Validation * file: src/cores/cl/hooks/usePolicy940Validation.ts:31 * kind: hook * core: cl * spec: (none) * summary: Orchestrate Policy 940 validation for a progress note. * returns: Validation state and a callback. * score: 4 ### hook usePopulationDashboard * file: src/cores/cl/hooks/usePopulationDashboard.ts:40 * kind: hook * core: cl * spec: (none) * summary: Hook to fetch aggregate population health dashboard data. * score: 4 ### hook usePortalConsents * file: src/cores/cl/hooks/usePortalConsents.ts:18 * kind: hook * core: cl * spec: (none) * summary: Fetch consents visible to a portal patient for a specific chart. * score: 4 ### hook usePrescriptionMutation * file: src/cores/cl/hooks/usePrescriptionMutation.ts:21 * kind: hook * core: cl * spec: (none) * summary: Hook for managing prescription mutation. * score: 1 ### hook usePrescriptionsByChart * file: src/cores/cl/hooks/usePrescriptionsByChart.ts:14 * kind: hook * core: cl * spec: (none) * summary: Hook for managing prescriptions by chart. * score: 1 ### hook useProblemHistory * file: src/cores/cl/hooks/useProblems.ts:100 * kind: hook * core: cl * spec: (none) * summary: CL-46: Append-only state-machine history for a problem (most recent first). * score: 4 ### hook useProblemsByChart * file: src/cores/cl/hooks/useProblems.ts:13 * kind: hook * core: cl * spec: (none) * summary: Hook for managing problems by chart. * score: 1 ### hook useProgramEnrollmentMutation * file: src/cores/cl/hooks/useProgramEnrollments.ts:45 * kind: hook * core: cl * spec: (none) * summary: Hook for managing program enrollment mutation. * score: 1 ### hook useProgramEnrollmentsList * file: src/cores/cl/hooks/useProgramEnrollments.ts:19 * kind: hook * core: cl * spec: (none) * summary: Hook for managing program enrollments list. * score: 1 ### hook useProgramOutcomes * file: src/cores/cl/hooks/useProgramOutcomes.ts:32 * kind: hook * core: cl * spec: (none) * summary: Hook for managing program outcomes. * score: 1 ### hook useProgramScheduleDetail * file: src/cores/cl/hooks/useProgramSchedules.ts:39 * kind: hook * core: cl * spec: (none) * summary: Hook for managing program schedule detail. * score: 1 ### hook useProgramScheduleMutation * file: src/cores/cl/hooks/useProgramSchedules.ts:64 * kind: hook * core: cl * spec: (none) * summary: Hook for managing program schedule mutation. * score: 1 ### hook useProgramSchedulesList * file: src/cores/cl/hooks/useProgramSchedules.ts:17 * kind: hook * core: cl * spec: (none) * summary: Hook for managing program schedules list. * score: 1 ### hook useProgramSessionGeneration * file: src/cores/cl/hooks/useProgramSessionGeneration.ts:31 * kind: hook * core: cl * spec: (none) * summary: Hook for managing program session generation. * score: 1 ### hook useProgressNoteCosignQueue * file: src/cores/cl/hooks/useProgressNoteCosignQueue.ts:13 * kind: hook * core: cl * spec: (none) * summary: Hook for managing progress note cosign queue. * score: 1 ### hook useProgressNoteDetail * file: src/cores/cl/hooks/useProgressNoteDetail.ts:13 * kind: hook * core: cl * spec: (none) * summary: Hook for managing progress note detail. * score: 1 ### hook useProgressNoteMutation * file: src/cores/cl/hooks/useProgressNoteMutation.ts:29 * kind: hook * core: cl * spec: (none) * summary: Hook for managing progress note mutation. * score: 1 ### hook useProgressNotePdf * file: src/cores/cl/hooks/useProgressNotePdf.ts:21 * kind: hook * core: cl * spec: (none) * summary: Hook for managing progress note pdf. * score: 1 ### hook useProgressNotesByChart * file: src/cores/cl/hooks/useProgressNotesByChart.ts:13 * kind: hook * core: cl * spec: (none) * summary: Hook for managing progress notes by chart. * score: 1 ### hook usePublishDsiDisclosure * file: src/cores/cl/dsi-disclosures/hooks/useDsiDisclosures.ts:80 * kind: hook * core: cl * spec: (none) * summary: Publish a disclosure. Re-reads the persisted row, runs the completeness gate for itsdsi\_type, and only then sets status='published'. Throws (with the missing fields) whenincomplete so the UI surfaces exactly what's left — and the DB CHECK is the final backstop. * score: 4 ### hook usePublishMarketplaceBundleVersion * file: src/cores/cl/hooks/useMarketplaceCurator.ts:28 * kind: hook * core: cl * spec: (none) * summary: Insert a new marketplace bundle row + its items in a single client-sidesequence. RLS () is the authoritative gate.Note: this is not transactional — failure to insert items after the bundlerow leaves an empty bundle visible. F-4 MVP accepts this trade-off; afuture iteration should move publish to an Edge Function. * score: 4 ### hook useReadmissionRiskByChart * file: src/cores/cl/hooks/useReadmissionRisk.ts:25 * kind: hook * core: cl * spec: (none) * summary: Hook for managing readmission risk by chart. * score: 1 ### hook useRecentAllergyOverrides * file: src/cores/cl/hooks/useRecentAllergyOverrides.ts:25 * kind: hook * core: cl * spec: (none) * summary: Returns overrides recorded within the configured look-back window(default: 24 hours) for the given chart, newest first. * score: 4 ### hook useRecentCharts * file: src/cores/cl/hooks/useRecentCharts.ts:69 * kind: hook * core: cl * spec: (none) * summary: Hook to track and retrieve recently viewed charts.Call when entering a chart; read (ids + timestamps) andresolve display data via .Returns up to charts excluding . * score: 4 ### hook useRecordConnectivityIssue * file: src/cores/cl/hooks/useConnectivityIssue.ts:28 * kind: hook * core: cl * spec: (none) * summary: Mutation hook that appends one connectivity issue onto a telehealth session. * returns: A TanStack whose invokes on the server. The server enforces caller org access, the 50-issue cap, and atomicity; on success the query subtree is invalidated. * score: 4 ### hook useRecordingConsentCapture * file: src/cores/cl/hooks/useRecordingConsent.ts:36 * kind: hook * core: cl * spec: (none) * summary: Captures recording consent for a specific attendance record.Once captured, consent is immutable per ARS 13-3005. * score: 4 ### hook useRecordingConsentStatus * file: src/cores/cl/hooks/useRecordingConsent.ts:103 * kind: hook * core: cl * spec: (none) * summary: Queries all attendees' recording consent status for a session. * score: 4 ### hook useRecordStandingOrderExecution * file: src/cores/cl/hooks/useStandingOrderExecutions.ts:56 * kind: hook * core: cl * spec: (none) * summary: Record a standing order execution (append-only). * score: 4 ### hook useRecordSuprtAssessment * file: src/cores/cl/hooks/useOutcomeEpisodeMutation.ts:106 * kind: hook * core: cl * spec: (none) * summary: Record a SUPRT assessment timepoint: open/reuse the episode, insert theassessment + DS4P-labeled responses (labeled from instrument metadata), andemit the outcome event. * score: 4 ### hook useReferenceLabMutations * file: src/cores/cl/hooks/useReferenceLabMutations.ts:16 * kind: hook * core: cl * spec: (none) * summary: Hook for managing reference lab mutations. * score: 1 ### hook useReferenceLabs * file: src/cores/cl/hooks/useReferenceLabs.ts:13 * kind: hook * core: cl * spec: (none) * summary: Hook for managing reference labs. * score: 1 ### hook useReferenceRangeLookup * file: src/cores/cl/hooks/useReferenceRangeLookup.ts:38 * kind: hook * core: cl * spec: (none) * summary: Hook for managing reference range lookup. * score: 1 ### hook useReferenceRanges * file: src/cores/cl/hooks/useReferenceRanges.ts:15 * kind: hook * core: cl * spec: (none) * summary: Hook for managing reference ranges. * score: 1 ### hook useReferralCurrentStatus * file: src/cores/cl/hooks/useReferralCurrentStatus.ts:20 * kind: hook * core: cl * spec: (none) * summary: Fetch the latest status for a given referral from the current status view. * params: * referralId — The UUID of the referral. * score: 4 ### hook useReferralStatusHistory * file: src/cores/cl/hooks/useReferralStatusHistory.ts:21 * kind: hook * core: cl * spec: (none) * summary: Fetch the full status history for a given referral, ordered newest-first. * params: * referralId — The UUID of the referral to fetch history for. * score: 4 ### hook useRegulatoryCalendar * file: src/cores/cl/hooks/useRegulatoryCalendar.ts:31 * kind: hook * core: cl * spec: (none) * summary: Returns a list of regulatory calendar deadlines resolved from jurisdiction profiles.Exposes loading/error states so consumers can distinguish real vs fallback data.TODO(PF-96): Replace with dynamic jurisdiction-aware deadlines. * score: 4 ### hook useRejectGeneration * file: src/cores/cl/hooks/useGroupEncounterGenerations.ts:135 * kind: hook * core: cl * spec: (none) * summary: Rejects a single generation record with a reason. * score: 4 ### hook useRejectPendingResult * file: src/cores/cl/hooks/usePendingLabResults.ts:111 * kind: hook * core: cl * spec: (none) * summary: Provides reject pending result queries and mutation actions scoped to the current organization. * score: 4 ### hook useRemoveOrgBlock * file: src/cores/cl/hooks/blocks/useSurfaceTemplateAdmin.ts:86 * kind: hook * core: cl * spec: (none) * summary: Remove an org-optional block from a surface. * score: 4 ### hook useRemoveParticipant * file: src/cores/cl/hooks/useMultiPartyEncounters.ts:253 * kind: hook * core: cl * spec: (none) * summary: Removes a participant from a multi-party encounter.Pre-migration: throws error (table does not exist yet). * score: 4 ### hook useRenewClinicalStandingOrder * file: src/cores/cl/hooks/useClinicalStandingOrders.ts:138 * kind: hook * core: cl * spec: (none) * summary: Renew a clinical standing order: extends expiration\_date, sets status to active,and appends an entry to renewal\_history JSONB. Use for expired or expiring protocols. * score: 4 ### hook useReorderTemplateSections * file: src/cores/cl/hooks/useAssessmentTemplateSectionMutation.ts:110 * kind: hook * core: cl * spec: (none) * summary: Hook for reordering template sections (batch update display\_order). * score: 1 ### hook useReportDefinitionDetail * file: src/cores/cl/hooks/useReportDefinitions.ts:62 * kind: hook * core: cl * spec: (none) * summary: Fetches one report definition by id for the active organization. * score: 4 ### hook useReportDefinitionList * file: src/cores/cl/hooks/useReportDefinitions.ts:33 * kind: hook * core: cl * spec: (none) * summary: Lists report definitions for the current organization, ordered by report name. * score: 4 ### hook useReportRunList * file: src/cores/cl/hooks/useReportRuns.ts:113 * kind: hook * core: cl * spec: (none) * summary: Hook for managing report run list. * score: 1 ### hook useRequiredIntakeElements * file: src/cores/cl/hooks/useRequiredIntakeElements.ts:17 * kind: hook * core: cl * spec: (none) * summary: Returns the list of required intake assessment element codes for the current org. * params: * siteId — Optional site override for site-level jurisdiction profiles. * returns: string array and flag. * score: 4 ### hook useRetireDsiDisclosure * file: src/cores/cl/dsi-disclosures/hooks/useDsiDisclosures.ts:156 * kind: hook * core: cl * spec: (none) * summary: Retire a published disclosure (it stops gating; a new draft can supersede it). * score: 4 ### hook useReviewAppeals * file: src/cores/cl/hooks/useReviewAppeals.ts:12 * kind: hook * core: cl * spec: (none) * summary: List appeals for a given concurrent review. * score: 4 ### hook useReviewPatientSubmission * file: src/cores/cl/hooks/usePatientSubmissionMutation.ts:106 * kind: hook * core: cl * spec: (none) * summary: Hook for managing review patient submission. * score: 1 ### hook useReviewSchedules * file: src/cores/cl/hooks/useReviewSchedules.ts:12 * kind: hook * core: cl * spec: (none) * summary: List review schedules (active by default) for the active organization. * score: 4 ### hook useRevokeConsent * file: src/cores/cl/hooks/useConsents.ts:134 * kind: hook * core: cl * spec: (none) * summary: Hook for managing revoke consent. * score: 1 ### hook useRevokeDdiSuppression * file: src/cores/cl/hooks/useDdiAlertSuppressions.ts:94 * kind: hook * core: cl * spec: (none) * summary: Revokes an existing DDI alert suppression. * score: 4 ### hook useRevokeElectronicConsent * file: src/cores/cl/hooks/useElectronicConsentMutation.ts:86 * kind: hook * core: cl * spec: (none) * summary: Revoke an active consent. * score: 1 ### hook useRevokeSafetyPlanShare * file: src/cores/cl/hooks/useRevokeSafetyPlanShare.ts:16 * kind: hook * core: cl * spec: (none) * summary: Revoke an active safety plan share by setting status to 'revoked'. * score: 4 ### hook useRevokeTelehealthConsent * file: src/cores/cl/hooks/useTelehealthConsents.ts:111 * kind: hook * core: cl * spec: (none) * summary: Revoke a previously captured telehealth consent. * returns: A whose sets and stores the reason. The append-only-revoke trigger blocks any further mutations of the revocation timestamp for non-admins. Invalidates the subtree on success. * score: 4 ### hook useRiskScreeningDetail * file: src/cores/cl/hooks/useRiskScreenings.ts:61 * kind: hook * core: cl * spec: (none) * summary: Fetch a single risk screening by ID. * score: 4 ### hook useRiskScreeningsByChart * file: src/cores/cl/hooks/useRiskScreenings.ts:34 * kind: hook * core: cl * spec: (none) * summary: Fetch all non-deleted risk screenings for a chart, newest first. * score: 4 ### hook useRiskStratifications * file: src/cores/cl/hooks/useRiskStratifications.ts:18 * kind: hook * core: cl * spec: (none) * summary: Hook to list risk stratifications for the current organization. * score: 4 ### hook useRollbackMarketplaceImport * file: src/cores/cl/hooks/useMarketplaceImports.ts:124 * kind: hook * core: cl * spec: (none) * summary: Roll back a previously completed marketplace import.Deletes rows recorded in the import's and updatesstatus to . * score: 4 ### hook useRunReport * file: src/cores/cl/hooks/useReportRuns.ts:149 * kind: hook * core: cl * spec: (none) * summary: Hook for managing run report. * score: 1 ### hook useSafetyPlanPdf * file: src/cores/cl/hooks/useSafetyPlanPdf.ts:18 * kind: hook * core: cl * spec: (none) * summary: Hook for managing safety plan pdf. * score: 1 ### hook useSafetyPlansByChart * file: src/cores/cl/hooks/useSafetyPlans.ts:35 * kind: hook * core: cl * spec: (none) * summary: Fetch all non-deleted safety plans for a chart (all versions), newest first. * score: 4 ### hook useSafetyPlanShares * file: src/cores/cl/hooks/useSafetyPlanShares.ts:19 * kind: hook * core: cl * spec: (none) * summary: Fetch all shares for a safety plan, newest first. * score: 4 ### hook useScheduleFollowUps * file: src/cores/cl/hooks/useScheduleFollowUps.ts:33 * kind: hook * core: cl * spec: (none) * summary: Schedule 24/48/72h follow-up appointments for high/imminent risk patients.Uses /platform/scheduling indirectly via pm\_encounters insert for follow-upencounter requests. Only triggers for riskLevel 'high' or 'imminent'. * score: 4 ### hook useSdohScreeningsByChart * file: src/cores/cl/hooks/useSdohScreenings.ts:29 * kind: hook * core: cl * spec: (none) * summary: Hook for managing sdoh screenings by chart. * score: 1 ### hook useSignLocAssessment * file: src/cores/cl/hooks/useLocAssessments.ts:175 * kind: hook * core: cl * spec: (none) * summary: Sign / finalize a LOC assessment. Sets , ,, and (optionally) the override fields. Spec rule: when, an override reason + ≥20-charrationale are required (enforced in DB by trigger; we surface it here too). * score: 4 ### hook useSignSafetyPlan * file: src/cores/cl/hooks/useSafetyPlans.ts:258 * kind: hook * core: cl * spec: (none) * summary: Capture a SignatureCanvas signature on a safety plan (Pattern A — Errata E-6).Updates patient\_signature\_data + patient\_signed\_at OR clinician\_signature\_data + clinician\_signed\_atbased on signerType.Requires: cl.safety\_plan.sign (category: approve) permission at call site. * score: 4 ### hook useSnapshotCohort * file: src/cores/cl/hooks/cohorts/useCohortMembership.ts:102 * kind: hook * core: cl * spec: (none) * summary: Materialize a snapshot for the active cohort version on a given as-of date.Inserts use the partial unique index for idempotency. * score: 4 ### hook useSocialReferralsByChart * file: src/cores/cl/hooks/useSocialReferrals.ts:30 * kind: hook * core: cl * spec: (none) * summary: Hook for managing social referrals by chart. * score: 1 ### hook useSoftDeleteAllergy * file: src/cores/cl/hooks/useAllergyMutation.ts:107 * kind: hook * core: cl * spec: (none) * summary: Provides soft delete allergy queries and mutation actions scoped to the current organization. * score: 4 ### hook useSoftDeleteAssessment * file: src/cores/cl/hooks/useAssessmentMutation.ts:93 * kind: hook * core: cl * spec: (none) * summary: Hook for managing soft delete assessment. * score: 1 ### hook useSoftDeleteCareTeamMember * file: src/cores/cl/hooks/useCareTeams.ts:161 * kind: hook * core: cl * spec: (none) * summary: Provides soft delete care team member queries and mutation actions scoped to the current organization. * score: 4 ### hook useSoftDeleteConcurrentReview * file: src/cores/cl/hooks/useConcurrentReviewMutation.ts:74 * kind: hook * core: cl * spec: (none) * summary: Soft-delete a concurrent review. * score: 4 ### hook useSoftDeleteConsent * file: src/cores/cl/hooks/useConsents.ts:252 * kind: hook * core: cl * spec: (none) * summary: Hook for managing soft delete consent. * score: 1 ### hook useSoftDeleteDiagnosis * file: src/cores/cl/hooks/useDiagnoses.ts:206 * kind: hook * core: cl * spec: (none) * summary: Soft-deletes a diagnosis with organization\_id defense-in-depth. * score: 4 ### hook useSoftDeleteGroupAttendance * file: src/cores/cl/hooks/useGroupAttendance.ts:145 * kind: hook * core: cl * spec: (none) * summary: Provides soft delete group attendance queries and mutation actions scoped to the current organization. * score: 4 ### hook useSoftDeleteGroupCurriculum * file: src/cores/cl/hooks/useGroupCurricula.ts:130 * kind: hook * core: cl * spec: (none) * summary: Provides soft delete group curriculum queries and mutation actions scoped to the current organization. * score: 4 ### hook useSoftDeleteGroupSession * file: src/cores/cl/hooks/useGroupSessions.ts:202 * kind: hook * core: cl * spec: (none) * summary: Provides soft delete group session queries and mutation actions scoped to the current organization. * score: 4 ### hook useSoftDeleteIncident * file: src/cores/cl/hooks/useIncidents.ts:204 * kind: hook * core: cl * spec: (none) * summary: Provides soft delete incident queries and mutation actions scoped to the current organization. * score: 4 ### hook useSoftDeletePeerEncounter * file: src/cores/cl/hooks/usePeerEncounters.ts:183 * kind: hook * core: cl * spec: (none) * summary: Soft-deletes a peer encounter record with organization\_id defense-in-depth. * score: 4 ### hook useSoftDeleteProblem * file: src/cores/cl/hooks/useProblemMutation.ts:120 * kind: hook * core: cl * spec: (none) * summary: Hook for managing soft delete problem. * score: 1 ### hook useSoftDeleteTreatmentGoal * file: src/cores/cl/hooks/useTreatmentGoalMutations.ts:99 * kind: hook * core: cl * spec: (none) * summary: Hook for managing soft delete treatment goal. * score: 1 ### hook useSoftDeleteTreatmentIntervention * file: src/cores/cl/hooks/useTreatmentInterventionMutations.ts:99 * kind: hook * core: cl * spec: (none) * summary: Hook for managing soft delete treatment intervention. * score: 1 ### hook useSoftDeleteTreatmentPlan * file: src/cores/cl/hooks/useTreatmentPlanMutations.ts:99 * kind: hook * core: cl * spec: (none) * summary: Hook for managing soft delete treatment plan. * score: 1 ### hook useStandingOrderExecutions * file: src/cores/cl/hooks/useStandingOrderExecutions.ts:28 * kind: hook * core: cl * spec: (none) * summary: List standing order executions with optional filters. * score: 4 ### hook useStandingOrderProtocols * file: src/cores/cl/hooks/useStandingOrderProtocols.ts:15 * kind: hook * core: cl * spec: (none) * summary: Hook for managing standing order protocols. * score: 1 ### hook useStartAmbientSession * file: src/cores/cl/ai-documentation/hooks/useAmbientSession.ts:102 * kind: hook * core: cl * spec: (none) * summary: Creates a new ambient recording session. * score: 4 ### hook useStartClinicalDraft * file: src/cores/cl/hooks/useAgentClinicalDraft.ts:55 * kind: hook * core: cl * spec: (none) * summary: Start a clinical draft run: invoke the edge function with .The server runs the fail-closed gate chain (flag, tenant ai-enabled, DSI disclosure,patient opt-out, SUD consent, PHI-lane) and creates the PF-128 clinical-tier artifact. is captured at hook-call time (React pattern, mirrors useStartIntakeRun)., , and are provided at mutation-call time. CL-36-EN-03 AC-1 (flag OFF → disabled) AC-2 (gates pass → drafted artifact) * score: 4 ### hook useSuicideSuite * file: src/cores/cl/hooks/blocks/useSuicideSuite.ts:92 * kind: hook * core: cl * spec: (none) * summary: Resolve the suicide-suite context for the current org + patient — the age-routedinstrument, TJC overlay state, PF-96 crisis lines + cadence, and requiredness. * score: 4 ### hook useSurfaceBlockDefinitions * file: src/cores/cl/hooks/blocks/useSurfaceBlockDefinitions.ts:17 * kind: hook * core: cl * spec: (none) * summary: React Query hook for the block definitions behind a set of resolved slugs. * score: 4 ### hook useSurfaceDocumentationCompleteness * file: src/cores/cl/hooks/completeness/useSurfaceDocumentationCompleteness.ts:24 * kind: hook * core: cl * spec: (none) * summary: React Query hook for an encounter/surface's documentation completeness. * score: 4 ### hook useTefcaExchangeDetail * file: src/cores/cl/hooks/useTefcaExchangeDetail.ts:13 * kind: hook * core: cl * spec: (none) * summary: Fetches a single TEFCA exchange log record by ID. * score: 4 ### hook useTefcaExchangeList * file: src/cores/cl/hooks/useTefcaExchangeList.ts:16 * kind: hook * core: cl * spec: (none) * summary: Fetches paginated TEFCA exchange log entries scoped to current organization.Supports status, direction, QHIN, purpose, and date range filters.Default sort: exchanged\_at DESC (newest first per CONTEXT.md). * score: 4 ### hook useTefcaExchangeMutation * file: src/cores/cl/hooks/useTefcaExchangeMutation.ts:16 * kind: hook * core: cl * spec: (none) * summary: Inserts a new TEFCA exchange log entry.Organization ID is enforced from context. * score: 4 ### hook useTefcaJurisdictionDefaults * file: src/cores/cl/hooks/useTefcaJurisdictionDefaults.ts:17 * kind: hook * core: cl * spec: (none) * summary: Returns TEFCA operational settings for the current organization,falling back to spec-defined defaults when not configured. * score: 4 ### hook useTelehealthComplianceMetrics * file: src/cores/cl/hooks/useTelehealthComplianceMetrics.ts:51 * kind: hook * core: cl * spec: (none) * summary: Compliance metrics for the current organization's telehealth dashboard. * returns: result whose is a . The hook is disabled until an organization is selected; on a backend error the query enters the error state so the dashboard can show a retry control rather than silently rendering zeros. * score: 4 ### hook useTelehealthConsents * file: src/cores/cl/hooks/useTelehealthConsents.ts:35 * kind: hook * core: cl * spec: (none) * summary: List telehealth consents for one patient chart, newest first. * params: * chartId — Patient chart id to scope the consent list to. * returns: A TanStack result yielding an ordered (revoked rows included; consumers decide how to render them). Disabled until both and the current organization id are available. * score: 4 ### hook useTelehealthDocumentationEnabled * file: src/cores/cl/hooks/useTelehealthDocumentationEnabled.ts:51 * kind: hook * core: cl * spec: (none) * summary: Reads the four CL-24 telehealth feature flags from forthe current organization. * returns: A TanStack result. is the four-flag record. When no row exists for the org (brand-new tenant or pre-CL-24 install) the resolver returns (, validity=365 days, both block flags ) so consumers never have to special-case and stage-1 (flag-off) is the safe default. * score: 4 ### hook useTelehealthMetadata * file: src/cores/cl/hooks/useVirtualGroupSessions.ts:64 * kind: hook * core: cl * spec: (none) * summary: Fetches telehealth metadata for a specific group session.Requires cl\_group\_session\_telehealth\_metadata table (post-migration). * score: 4 ### hook useTelehealthSession * file: src/cores/cl/hooks/useTelehealthSessions.ts:72 * kind: hook * core: cl * spec: (none) * summary: Single telehealth session detail by id, scoped to the current organization. * score: 4 ### hook useTelehealthSessions * file: src/cores/cl/hooks/useTelehealthSessions.ts:39 * kind: hook * core: cl * spec: (none) * summary: Paginated list of telehealth sessions in the current organization,newest first, capped at 25. * params: * filters — Optional filter set (date range, modality, state involvement, missing-safety-checklist). Filters compose AND-wise except , which matches when either OR equals the value. * score: 4 ### hook useTemperatureUnit * file: src/cores/cl/hooks/useTemperatureUnit.ts:46 * kind: hook * core: cl * spec: (none) * summary: Hook providing the org's temperature unit preference and conversion utilities.DB column is always (Celsius). Conversion is UI-layer only. * score: 4 ### hook useToggleStandingOrderProtocol * file: src/cores/cl/hooks/useStandingOrderMutations.ts:72 * kind: hook * core: cl * spec: (none) * summary: Provides toggle standing order protocol queries and mutation actions scoped to the current organization. * score: 4 ### hook useTransitionsByChart * file: src/cores/cl/hooks/useTransitions.ts:34 * kind: hook * core: cl * spec: (none) * summary: Hook for managing transitions by chart. * score: 1 ### hook useTreatmentGoalBank * file: src/cores/cl/hooks/useTreatmentGoalBank.ts:12 * kind: hook * core: cl * spec: (none) * summary: Hook for managing treatment goal bank. * score: 1 ### hook useTreatmentGoalProgress * file: src/cores/cl/hooks/useTreatmentGoalProgress.ts:12 * kind: hook * core: cl * spec: (none) * summary: Hook for managing treatment goal progress. * score: 1 ### hook useTreatmentGoals * file: src/cores/cl/hooks/useTreatmentGoals.ts:12 * kind: hook * core: cl * spec: (none) * summary: Hook for managing treatment goals. * score: 1 ### hook useTreatmentInterventions * file: src/cores/cl/hooks/useTreatmentInterventions.ts:12 * kind: hook * core: cl * spec: (none) * summary: Hook for managing treatment interventions. * score: 1 ### hook useTreatmentPlanDetail * file: src/cores/cl/hooks/useTreatmentPlanDetail.ts:12 * kind: hook * core: cl * spec: (none) * summary: Hook for managing treatment plan detail. * score: 1 ### hook useTreatmentPlanList * file: src/cores/cl/hooks/useTreatmentPlanList.ts:14 * kind: hook * core: cl * spec: (none) * summary: Hook for managing treatment plan list. * score: 1 ### hook useTreatmentPlanPdf * file: src/cores/cl/hooks/useTreatmentPlanPdf.ts:18 * kind: hook * core: cl * spec: (none) * summary: Hook for managing treatment plan pdf. * score: 1 ### hook useTreatmentPlansByChart * file: src/cores/cl/hooks/useTreatmentPlansByChart.ts:12 * kind: hook * core: cl * spec: (none) * summary: Hook for managing treatment plans by chart. * score: 1 ### hook useTreatmentPlanTemplateList * file: src/cores/cl/hooks/useTreatmentPlanTemplateList.ts:12 * kind: hook * core: cl * spec: (none) * summary: Hook for managing treatment plan template list. * score: 1 ### hook useTriggerFamilyNotification * file: src/cores/cl/hooks/useFamilyNotifications.ts:181 * kind: hook * core: cl * spec: (none) * summary: Provides trigger family notification queries and mutation actions scoped to the current organization. * score: 4 ### hook useUdsInterpretationNotes * file: src/cores/cl/hooks/useUdsResults.ts:176 * kind: hook * core: cl * spec: (none) * summary: Fetch interpretation notes for a UDS order. * score: 4 ### hook useUdsOrderDetail * file: src/cores/cl/hooks/useUdsOrders.ts:65 * kind: hook * core: cl * spec: (none) * summary: Fetch a single UDS order by ID. * score: 4 ### hook useUdsOrdersByChart * file: src/cores/cl/hooks/useUdsOrders.ts:26 * kind: hook * core: cl * spec: (none) * summary: Fetch UDS orders for a chart, sorted by ordered\_at descending (per CONTEXT.md).Supports optional status and date range filters. * score: 4 ### hook useUdsResultsByOrder * file: src/cores/cl/hooks/useUdsResults.ts:36 * kind: hook * core: cl * spec: (none) * summary: Fetch all results for a UDS order, sorted by drug\_class. * score: 4 ### hook useUMMetrics * file: src/cores/cl/hooks/useUMMetrics.ts:12 * kind: hook * core: cl * spec: (none) * summary: UM dashboard metrics for the active organization. * score: 4 ### hook useUnacknowledgedAlertCount * file: src/cores/cl/hooks/useCdsAlerts.ts:40 * kind: hook * core: cl * spec: (none) * summary: Hook for managing unacknowledged alert count. * score: 1 ### hook useUpdate988Transfer * file: src/cores/cl/hooks/use988Transfers.ts:79 * kind: hook * core: cl * spec: (none) * summary: Provides update988 transfer queries and mutation actions scoped to the current organization. * score: 4 ### hook useUpdateAftercarePlan * file: src/cores/cl/hooks/useAftercarePlans.ts:121 * kind: hook * core: cl * spec: (none) * summary: Provides update aftercare plan queries and mutation actions scoped to the current organization. * score: 4 ### hook useUpdateAISessionStatus * file: src/cores/cl/ai-documentation/hooks/useAIDocumentationSession.ts:107 * kind: hook * core: cl * spec: (none) * summary: Updates an AI documentation session status (cancel, draft\_generated, etc.). * score: 4 ### hook useUpdateAllergy * file: src/cores/cl/hooks/useAllergyMutation.ts:57 * kind: hook * core: cl * spec: (none) * summary: Provides update allergy queries and mutation actions scoped to the current organization. * score: 4 ### hook useUpdateAmbientSession * file: src/cores/cl/ai-documentation/hooks/useAmbientSession.ts:127 * kind: hook * core: cl * spec: (none) * summary: Updates an ambient session (e.g., stop recording, update status). * score: 4 ### hook useUpdateAssessment * file: src/cores/cl/hooks/useAssessmentMutation.ts:51 * kind: hook * core: cl * spec: (none) * summary: Hook for managing update assessment. * score: 1 ### hook useUpdateAssessmentTemplate * file: src/cores/cl/hooks/useAssessmentTemplateMutation.ts:50 * kind: hook * core: cl * spec: (none) * summary: Hook for updating an existing assessment template. * score: 1 ### hook useUpdateCareTeamMember * file: src/cores/cl/hooks/useCareTeams.ts:110 * kind: hook * core: cl * spec: (none) * summary: Provides update care team member queries and mutation actions scoped to the current organization. * score: 4 ### hook useUpdateChecklistItem * file: src/cores/cl/hooks/useDischargeChecklists.ts:72 * kind: hook * core: cl * spec: (none) * summary: Provides update checklist item queries and mutation actions scoped to the current organization. * score: 4 ### hook useUpdateClinicalStandingOrder * file: src/cores/cl/hooks/useClinicalStandingOrders.ts:86 * kind: hook * core: cl * spec: (none) * summary: Update a clinical standing order (renew, retire, edit). * score: 4 ### hook useUpdateConcurrentReview * file: src/cores/cl/hooks/useConcurrentReviewMutation.ts:44 * kind: hook * core: cl * spec: (none) * summary: Update a concurrent review. * score: 1 ### hook useUpdateConsent * file: src/cores/cl/hooks/useConsents.ts:97 * kind: hook * core: cl * spec: (none) * summary: Hook for managing update consent. * score: 1 ### hook useUpdateDesignatedContact * file: src/cores/cl/hooks/useFamilyNotifications.ts:90 * kind: hook * core: cl * spec: (none) * summary: Provides update designated contact queries and mutation actions scoped to the current organization. * score: 4 ### hook useUpdateDiagnosis * file: src/cores/cl/hooks/useDiagnoses.ts:157 * kind: hook * core: cl * spec: (none) * summary: Updates an existing diagnosis with organization\_id defense-in-depth. * score: 4 ### hook useUpdateDsiDisclosure * file: src/cores/cl/dsi-disclosures/hooks/useDsiDisclosures.ts:49 * kind: hook * core: cl * spec: (none) * summary: Save edits to a disclosure's source-attribute fields (does not change status). * score: 4 ### hook useUpdateElectronicConsent * file: src/cores/cl/hooks/useElectronicConsentMutation.ts:53 * kind: hook * core: cl * spec: (none) * summary: Update an existing electronic consent (e.g., draft → active). * score: 4 ### hook useUpdateEnvironmentalAssessment * file: src/cores/cl/hooks/useEnvironmentalAssessments.ts:139 * kind: hook * core: cl * spec: (none) * summary: Update an environmental assessment. Cannot change organization\_id or site\_id. * score: 4 ### hook useUpdateGroupAttendance * file: src/cores/cl/hooks/useGroupAttendance.ts:103 * kind: hook * core: cl * spec: (none) * summary: Provides update group attendance queries and mutation actions scoped to the current organization. * score: 4 ### hook useUpdateGroupCurriculum * file: src/cores/cl/hooks/useGroupCurricula.ts:94 * kind: hook * core: cl * spec: (none) * summary: Provides update group curriculum queries and mutation actions scoped to the current organization. * score: 4 ### hook useUpdateGroupSession * file: src/cores/cl/hooks/useGroupSessions.ts:138 * kind: hook * core: cl * spec: (none) * summary: Provides update group session queries and mutation actions scoped to the current organization. * score: 4 ### hook useUpdateInbasketItem * file: src/cores/cl/hooks/useInbasketItemMutation.ts:25 * kind: hook * core: cl * spec: (none) * summary: Hook for managing update inbasket item. * score: 1 ### hook useUpdateIncident * file: src/cores/cl/hooks/useIncidents.ts:139 * kind: hook * core: cl * spec: (none) * summary: Provides update incident queries and mutation actions scoped to the current organization. * score: 4 ### hook useUpdateIntakeAssessment * file: src/cores/cl/hooks/useIntakeAssessmentMutation.ts:76 * kind: hook * core: cl * spec: (none) * summary: Updates a draft intake assessment. * score: 4 ### hook useUpdateInventoryTransaction * file: src/cores/cl/hooks/useControlledSubstanceInventory.ts:123 * kind: hook * core: cl * spec: (none) * summary: Provides update inventory transaction queries and mutation actions scoped to the current organization. * score: 4 ### hook useUpdateLethalMeans * file: src/cores/cl/hooks/useLethalMeansCounseling.ts:25 * kind: hook * core: cl * spec: (none) * summary: Hook for managing update lethal means. * score: 1 ### hook useUpdateMultiPartyEncounter * file: src/cores/cl/hooks/useMultiPartyEncounters.ts:150 * kind: hook * core: cl * spec: (none) * summary: Updates an existing multi-party encounter.Pre-migration: throws error (table does not exist yet). * score: 4 ### hook useUpdateOrderSetTemplate * file: src/cores/cl/hooks/useOrderSetTemplates.ts:93 * kind: hook * core: cl * spec: (none) * summary: Update an order set template (draft edits, approval, retirement). * score: 4 ### hook useUpdateOutcomeMeasure * file: src/cores/cl/hooks/useOutcomeMeasureMutation.ts:89 * kind: hook * core: cl * spec: (none) * summary: Hook for managing update outcome measure. * score: 1 ### hook useUpdatePeerEncounter * file: src/cores/cl/hooks/usePeerEncounters.ts:142 * kind: hook * core: cl * spec: (none) * summary: Updates an existing peer encounter record with organization\_id defense-in-depth. * score: 4 ### hook useUpdatePeerSupervision * file: src/cores/cl/hooks/usePeerSupervision.ts:112 * kind: hook * core: cl * spec: (none) * summary: Hook for managing update peer supervision. * score: 1 ### hook useUpdateProblem * file: src/cores/cl/hooks/useProblemMutation.ts:71 * kind: hook * core: cl * spec: (none) * summary: Hook for managing update problem. * score: 1 ### hook useUpdateProblemStatus * file: src/cores/cl/hooks/useProblemMutation.ts:152 * kind: hook * core: cl * spec: (none) * summary: CL-46: Status transition (active → resolved/inactive/chronic/entered\_in\_error).The DB BEFORE-UPDATE trigger enforces the state-machine; the AFTER-UPDATEtrigger appends to cl\_problem\_history. * score: 4 ### hook useUpdateReferenceRange * file: src/cores/cl/hooks/useReferenceRangeMutations.ts:43 * kind: hook * core: cl * spec: (none) * summary: Hook for managing update reference range. * score: 1 ### hook useUpdateReportDefinition * file: src/cores/cl/hooks/useReportDefinitions.ts:133 * kind: hook * core: cl * spec: (none) * summary: Updates a report definition within the active organization and refreshes caches. * score: 4 ### hook useUpdateReviewAppeal * file: src/cores/cl/hooks/useReviewAppeals.ts:64 * kind: hook * core: cl * spec: (none) * summary: Update a review appeal. * score: 1 ### hook useUpdateReviewSchedule * file: src/cores/cl/hooks/useReviewSchedules.ts:61 * kind: hook * core: cl * spec: (none) * summary: Update an existing review schedule (admin only — DB enforces). * score: 4 ### hook useUpdateRiskScreening * file: src/cores/cl/hooks/useRiskScreenings.ts:173 * kind: hook * core: cl * spec: (none) * summary: Update a risk screening (e.g., correct a field after save).Cannot change organization\_id or chart\_id. * score: 4 ### hook useUpdateSafetyPlan * file: src/cores/cl/hooks/useSafetyPlans.ts:138 * kind: hook * core: cl * spec: (none) * summary: Update safety plan content fields. Cannot change version, status, or organization\_id. * score: 4 ### hook useUpdateSocialReferral * file: src/cores/cl/hooks/useSocialReferrals.ts:106 * kind: hook * core: cl * spec: (none) * summary: Hook for managing update social referral. * score: 1 ### hook useUpdateStandingOrderProtocol * file: src/cores/cl/hooks/useStandingOrderMutations.ts:43 * kind: hook * core: cl * spec: (none) * summary: Provides update standing order protocol queries and mutation actions scoped to the current organization. * score: 4 ### hook useUpdateTelehealthMetadata * file: src/cores/cl/hooks/useVirtualGroupSessions.ts:144 * kind: hook * core: cl * spec: (none) * summary: Updates telehealth metadata for a group session.Requires cl\_group\_session\_telehealth\_metadata table (post-migration).Currently a placeholder that updates custom\_fields on the session. * score: 4 ### hook useUpdateTransition * file: src/cores/cl/hooks/useTransitions.ts:156 * kind: hook * core: cl * spec: (none) * summary: Hook for managing update transition. * score: 1 ### hook useUpdateTreatmentGoal * file: src/cores/cl/hooks/useTreatmentGoalMutations.ts:49 * kind: hook * core: cl * spec: (none) * summary: Hook for managing update treatment goal. * score: 1 ### hook useUpdateTreatmentIntervention * file: src/cores/cl/hooks/useTreatmentInterventionMutations.ts:49 * kind: hook * core: cl * spec: (none) * summary: Hook for managing update treatment intervention. * score: 1 ### hook useUpdateTreatmentPlan * file: src/cores/cl/hooks/useTreatmentPlanMutations.ts:54 * kind: hook * core: cl * spec: (none) * summary: Hook for managing update treatment plan. * score: 1 ### hook useUpdateUdsOrder * file: src/cores/cl/hooks/useUdsOrders.ts:129 * kind: hook * core: cl * spec: (none) * summary: Hook for managing update uds order. * score: 1 ### hook useUpdateUdsResult * file: src/cores/cl/hooks/useUdsResults.ts:100 * kind: hook * core: cl * spec: (none) * summary: Hook for managing update uds result. * score: 1 ### hook useUpsertAssessmentSection * file: src/cores/cl/hooks/useAssessmentSectionMutation.ts:16 * kind: hook * core: cl * spec: (none) * summary: Hook for managing upsert assessment section. * score: 1 ### hook useUpsertTemplateSection * file: src/cores/cl/hooks/useAssessmentTemplateSectionMutation.ts:20 * kind: hook * core: cl * spec: (none) * summary: Hook for creating or updating a template section. * score: 1 ### hook useVirtualGroupSessionsList * file: src/cores/cl/hooks/useVirtualGroupSessions.ts:46 * kind: hook * core: cl * spec: (none) * summary: Lists group sessions, optionally filtered by modality (virtual/hybrid/in\_person).Wraps the existing CL-14 useGroupSessionsList and applies client-side modalityfiltering. Once the column is added to cl\_group\_sessions via migration,server-side filtering can be added. * score: 4 ### hook useVitalSignsList * file: src/cores/cl/hooks/useVitalSignsList.ts:18 * kind: hook * core: cl * spec: (none) * summary: Hook for managing vital signs list. * score: 1 ### hook useVitalSignsMutation * file: src/cores/cl/hooks/useVitalSignsMutation.ts:13 * kind: hook * core: cl * spec: (none) * summary: Hook for managing vital signs mutation. * score: 1 ### hook useWaiveChecklist * file: src/cores/cl/hooks/useDischargeChecklists.ts:212 * kind: hook * core: cl * spec: (none) * summary: Provides waive checklist queries and mutation actions scoped to the current organization. * score: 4 ### hook useWarmHandoffsByChart * file: src/cores/cl/hooks/useWarmHandoffs.ts:25 * kind: hook * core: cl * spec: (none) * summary: Hook for managing warm handoffs by chart. * score: 1 ## Components ### component ActiveMedicationsCard * file: src/cores/cl/components/summary/ActiveMedicationsCard.tsx:23 * kind: component * core: cl * spec: (none) * summary: Renders the active medications card interface. * score: 2 ### component AddParticipantDialog * file: src/cores/cl/components/multi-party/AddParticipantDialog.tsx:61 * kind: component * core: cl * spec: CL-14 * summary: Dialog for adding a participant to an existing multi-party clinicalencounter (family therapy, couples session, MDT, court-ordered review).Accepts either an internal participant (chart id for a patient, staffuser id for clinician) or an external participant identified by free-text name — the form-level refinement enforces that at least oneidentifier is supplied before submit. * params: * props — Dialog props. - : Whether the dialog is open. - : Callback fired when the dialog wants to close. - : to which the participant is being added. * score: 5 ### component AddProblemDialog * file: src/cores/cl/components/problem-list/AddProblemDialog.tsx:205 * kind: component * core: cl * spec: CL-46 * summary: Add-problem dialog (responsive: full-screen Sheet on mobile, Dialog ondesktop). Hosts the create form, force-remounts on each open so theform state is always fresh, and is permission-gated to so the form never renders for read-only users. * params: * props — Dialog props. - : the new problem will be attached to. - : The patient owning the chart. - : Whether the dialog is open. - : Callback fired when the dialog wants to close. * score: 5 ### component AdherenceFormDialog * file: src/cores/cl/components/AdherenceFormDialog.tsx:26 * kind: component * core: cl * spec: (none) * summary: Renders the adherence form dialog interface. * score: 2 ### component AdherenceList * file: src/cores/cl/components/AdherenceList.tsx:34 * kind: component * core: cl * spec: (none) * summary: Renders the adherence list interface. * score: 2 ### component AftercarePlanFormDialog * file: src/cores/cl/components/discharge/AftercarePlanFormDialog.tsx:48 * kind: component * core: cl * spec: (none) * summary: Utility for aftercare plan form dialog. * score: 1 ### component AIAttestationCheckbox * file: src/cores/cl/ai-documentation/components/AIAttestationCheckbox.tsx:20 * kind: component * core: cl * spec: (none) * summary: Attestation checkbox for clinician review of AI-generated content. * score: 2 ### component AIAttributionBadge * file: src/cores/cl/ai-documentation/components/AIAttributionBadge.tsx:20 * kind: component * core: cl * spec: (none) * summary: Visual indicator for AI-assisted documentation status. * score: 2 ### component AIDocumentationSettingsCard * file: src/cores/cl/ai-documentation/components/AIDocumentationSettingsCard.tsx:26 * kind: component * core: cl * spec: (none) * summary: Admin settings card for AI-assisted clinical documentation. * score: 2 ### component AiDraftBadge * file: src/cores/cl/components/AiDraftBadge.tsx:18 * kind: component * core: cl * spec: (none) * summary: Utility for ai draft badge. * score: 1 ### component AIDraftTreatmentPlanButton * file: src/cores/cl/ai-treatment-plan/components/AIDraftTreatmentPlanButton.tsx:44 * kind: component * core: cl * spec: (none) * summary: AI draft trigger button for the Goals card header on the TreatmentPlanDetailPage.Only visible when plan.status === 'draft' and aiEnabled (controlled by parent).Permission-gated: requires cl.treatment\_plan.create. * score: 2 ### component AllergyAlertInlinePanel * file: src/cores/cl/components/medications/AllergyAlertInlinePanel.tsx:26 * kind: component * core: cl * spec: (none) * summary: Shows the highest-priority allergy warning and override action for medication workflows. * score: 2 ### component AllergyAlertOverrideDialog * file: src/cores/cl/components/AllergyAlertOverrideDialog.tsx:31 * kind: component * core: cl * spec: (none) * summary: Captures and persists a clinician override for a drug-allergy warning. * score: 2 ### component AllergyFormDialog * file: src/cores/cl/components/AllergyFormDialog.tsx:51 * kind: component * core: cl * spec: (none) * summary: Renders the add/edit dialog for coded allergy and adverse-reaction rows. * score: 2 ### component AllergyNkaBanner * file: src/cores/cl/components/AllergyNkaBanner.tsx:41 * kind: component * core: cl * spec: CL-45 * summary: Renders an NKA / NKDA attestation banner for the patient chart's allergysection. Shown when the chart has no active allergic-reaction rows: promptsa permitted clinician to confirm "No Known Allergies" (NKA) or "No KnownDrug Allergies" (NKDA), persisting the attestation as a sentinel row. Switches to a success card once an attestation exists. * params: * props — Banner props. - : the attestation will be written against. - : Current allergy list for the chart; the component inspects and to decide which state to render. * score: 5 ### component AmbientRecordingButton * file: src/cores/cl/ai-documentation/components/AmbientRecordingButton.tsx:38 * kind: component * core: cl * spec: (none) * summary: Ambient recording toggle button with consent and permission gates. * score: 2 ### component AmbientReviewDetailPage * file: src/cores/cl/pages/AmbientReviewDetailPage.tsx:66 * kind: component * core: cl * spec: (none) * summary: Detail page for reviewing a single ambient session. * score: 2 ### component AmbientReviewQueuePage * file: src/cores/cl/pages/AmbientReviewQueuePage.tsx:95 * kind: component * core: cl * spec: (none) * summary: Ambient review queue page listing sessions for review. * score: 2 ### component AmbientSettingsSection * file: src/cores/cl/ai-documentation/components/settings/AmbientSettingsSection.tsx:29 * kind: component * core: cl * spec: (none) * summary: Admin card for ambient-specific settings (retention, vendor, enable/disable). * score: 2 ### component AppealsSection * file: src/cores/cl/components/concurrent-reviews/AppealsSection.tsx:24 * kind: component * core: cl * spec: (none) * summary: Appeals list and inline create form for a concurrent review. * score: 2 ### component ArcosExportButton * file: src/cores/cl/components/ArcosExportButton.tsx:20 * kind: component * core: cl * spec: (none) * summary: Renders the arcos export button interface. * score: 2 ### component ASI6AssessmentFormDialog * file: src/cores/cl/components/cod/ASI6AssessmentFormDialog.tsx:92 * kind: component * core: cl * spec: CL-31 * summary: Co-occurring-disorder (COD) assessment form dialog. Hosts the ASI-6,BASIS-32, and GAIN-SS instruments in an accordion-grouped layout (not awizard) so the clinician can move between domains freely; supports bothcreate and edit/amend flows. SUD-related domains (Alcohol / Drug) carry aninfo tooltip noting that disclosure of SUD content is gated by 42 CFRPart 2 consent, not the act of authoring the assessment. * params: * props — Dialog props. - : Whether the dialog is open. - : Callback fired when the dialog wants to close. - : the assessment is being authored against. - : Existing row when editing or amending; / for a new assessment. - : Fired after a successful create so the parent can prompt the user to set the chart's COD flag. * score: 5 ### component AssessmentExpirationDashboardPage * file: src/cores/cl/pages/AssessmentExpirationDashboardPage.tsx:69 * kind: component * core: cl * spec: (none) * summary: Utility for assessment expiration dashboard page. * score: 1 ### component AssessmentForm * file: src/cores/cl/components/AssessmentForm.tsx:59 * kind: component * core: cl * spec: (none) * summary: Utility for assessment form. * score: 1 ### component AssessmentSignDialog * file: src/cores/cl/components/AssessmentSignDialog.tsx:30 * kind: component * core: cl * spec: (none) * summary: Renders the assessment sign dialog interface. * score: 2 ### component AssessmentTemplateEditor * file: src/cores/cl/components/AssessmentTemplateEditor.tsx:41 * kind: component * core: cl * spec: (none) * summary: Assessment template editor dialog. * score: 2 ### component AssessmentTemplateSectionForm * file: src/cores/cl/components/AssessmentTemplateSectionForm.tsx:29 * kind: component * core: cl * spec: (none) * summary: Section form dialog for adding/editing template sections. * score: 2 ### component AssessmentTemplatesPage * file: src/cores/cl/pages/AssessmentTemplatesPage.tsx:29 * kind: component * core: cl * spec: (none) * summary: Assessment templates management page. * score: 2 ### component AssessmentTemplateVersionHistory * file: src/cores/cl/components/AssessmentTemplateVersionHistory.tsx:25 * kind: component * core: cl * spec: (none) * summary: Version history dialog for assessment templates. * score: 2 ### component BASIS32Section * file: src/cores/cl/components/cod/BASIS32Section.tsx:54 * kind: component * core: cl * spec: CL-31 * summary: BASIS-32 subscale section embedded inside the COD assessment dialog.Renders all 5 subscales as collapsible accordion panels with 0–4 itemratings, computes per-subscale and overall means as the clinician scores,and surfaces a severity badge derived from the overall mean. * params: * props — Section props. - : react-hook-form control object from the parent form. - : from the parent form, used to recompute means. - : from the parent form for free-text subscale notes. * score: 5 ### component BillingOverrideRuleFormDialog * file: src/cores/cl/components/BillingOverrideRuleFormDialog.tsx:113 * kind: component * core: cl * spec: (none) * summary: Utility for billing override rule form dialog. * score: 1 ### component BillingOverrideRulesPage * file: src/cores/cl/pages/BillingOverrideRulesPage.tsx:91 * kind: component * core: cl * spec: (none) * summary: Utility for billing override rules page. * score: 1 ### component BiometricsForm * file: src/cores/cl/components/BiometricsForm.tsx:78 * kind: component * core: cl * spec: (none) * summary: Renders the biometrics form interface with unit-aware inputs. * score: 2 ### component BreakGlassDialog * file: src/cores/cl/components/BreakGlassDialog.tsx:28 * kind: component * core: cl * spec: (none) * summary: Renders the break glass dialog interface. * score: 2 ### component BreakGlassReviewDialog * file: src/cores/cl/components/audit-dashboard/BreakGlassReviewDialog.tsx:28 * kind: component * core: cl * spec: (none) * summary: Dialog for reviewing a break-glass PHI access event. * score: 2 ### component BulkApproveConfirmDialog * file: src/cores/cl/components/group-encounter-generation/BulkApproveConfirmDialog.tsx:31 * kind: component * core: cl * spec: (none) * summary: Confirmation dialog for bulk approving encounter generations. * score: 2 ### component BulkCosignDialog * file: src/cores/cl/components/BulkCosignDialog.tsx:31 * kind: component * core: cl * spec: (none) * summary: Renders the bulk cosign dialog interface. * score: 2 ### component BundleItemList * file: src/cores/cl/components/marketplace/BundleItemList.tsx:31 * kind: component * core: cl * spec: (none) * summary: Displays a list of items within a marketplace bundle.Renders skeleton loaders while data is loading, shows an empty state whenno items exist, and displays a list of bundle items with their type labels.Used in bundle detail pages and import preview dialogs. * params: * items — Array of marketplace bundle items to display. Each item must have id, item\_key (display name), and item\_type (template type). * isLoading — Whether the items are currently being fetched. Shows skeleton placeholders when true. * returns: A JSX element showing the bundle items list or appropriate fallback. * score: 2 ### component CaptureConsentSignatureDialog * file: src/cores/cl/components/CaptureConsentSignatureDialog.tsx:54 * kind: component * core: cl * spec: CL-11 * summary: Dialog for recording a patient signature on a consent (#2009). Renders the or variant per and writes via, closing on success. * score: 3 ### component CareGapWorkListPage * file: src/cores/cl/pages/population-health/CareGapWorkListPage.tsx:45 * kind: component * core: cl * spec: (none) * summary: Utility for care gap work list page. * score: 1 ### component CaregiverParticipationSection * file: src/cores/cl/components/CaregiverParticipationSection.tsx:43 * kind: component * core: cl * spec: (none) * summary: Renders the caregiver participation section interface. * score: 2 ### component CdaConsentBanner * file: src/cores/cl/components/cda/CdaConsentBanner.tsx:45 * kind: component * core: cl * spec: CL-48 * summary: 42 CFR Part 2 consent-status banner shown above CDA generation. Surfaceswhether the patient has an active SUD-disclosure consent so the cliniciansees up-front that SUD-related diagnoses, MAT/MOUD medications, andcounseling notes will be filtered when consent is missing (FR-2.1 / FR-2.2). * params: * props — Banner props. - : = active SUD consent, = no active consent (data will be filtered), = still loading. - : Render a skeleton-style message while the consent lookup is in flight. * score: 5 ### component CdaDocumentHistory * file: src/cores/cl/components/cda/CdaDocumentHistory.tsx:55 * kind: component * core: cl * spec: CL-48 * summary: List of previously generated C-CDA documents for a chart. Rendersskeletons while loading, an empty state when no documents exist, and anaccessible single-select list otherwise. Selecting a row drives theneighboring preview pane via . * params: * props — History props. - : Documents to render, or while loading. - : Whether the parent query is still in flight. - : to mark as the active row. - : Callback invoked with the chosen document row. * score: 5 ### component CdaDocumentPreview * file: src/cores/cl/components/cda/CdaDocumentPreview\.tsx:44 * kind: component * core: cl * spec: CL-48 * summary: Read-only preview of a generated C-CDA document. Shows validation status(valid / invalid / pending), an explicit 42 CFR Part 2 indicator when thepayload contains SUD data, the transmission status badge, and the raw XMLbody — satisfying NFR-4 (preview-before-transmit). * params: * props — Preview props. - : The row to render. * score: 5 ### component CdaDocumentTypeSelector * file: src/cores/cl/components/cda/CdaDocumentTypeSelector.tsx:53 * kind: component * core: cl * spec: CL-48 * summary: Accessible radio-group selector for the C-CDA document type. Lets theclinician pick between Continuity-of-Care (CCD), Discharge Summary, andReferral Note before generating the document, with a short descriptionunder each label to clarify the intended downstream audience. * params: * props — Selector props. - : Currently selected CDA document type. - : Invoked with the newly selected type. * score: 5 ### component CdsAlertRationale * file: src/cores/cl/components/CdsAlertRationale.tsx:25 * kind: component * core: cl * spec: (none) * summary: Renders the AI "Explain this alert" control and rationale for a CDS alert. * score: 2 ### component CdsAlertsPanel * file: src/cores/cl/components/CdsAlertsPanel.tsx:56 * kind: component * core: cl * spec: (none) * summary: Renders the cds alerts panel interface. * score: 2 ### component CdsAlertsSummaryCard * file: src/cores/cl/components/summary/CdsAlertsSummaryCard.tsx:23 * kind: component * core: cl * spec: (none) * summary: Utility for cds alerts summary card. * score: 1 ### component CdsAnalyticsDashboardPage * file: src/cores/cl/pages/CdsAnalyticsDashboardPage.tsx:33 * kind: component * core: cl * spec: (none) * summary: Utility for cds analytics dashboard page. * score: 1 ### component CdsHardStopDialog * file: src/cores/cl/components/CdsHardStopDialog.tsx:30 * kind: component * core: cl * spec: (none) * summary: Utility for cds hard stop dialog. * score: 1 ### component CdsRulesListPage * file: src/cores/cl/pages/CdsRulesListPage.tsx:517 * kind: component * core: cl * spec: (none) * summary: Utility for cds rules list page. * score: 1 ### component ChartAllergiesSection * file: src/cores/cl/components/ChartAllergiesSection.tsx:62 * kind: component * core: cl * spec: CL-45 * summary: Allergy management section for the patient chart. Lists active andinactive allergies with severity badges, surfaces the NKA / NKDAattestation banner when nothing is documented, and exposes add / edit /soft-delete via . Inactive (resolved or entered-in-error)allergies are kept visible for clinical traceability. * params: * props — Section props. - : whose allergies should be loaded and mutated. * score: 5 ### component ChartAllergyAlertStrip * file: src/cores/cl/components/ChartAllergyAlertStrip.tsx:48 * kind: component * core: cl * spec: (none) * summary: Sticky safety strip rendered below the patient banner on the chart page. * score: 2 ### component ChartAssessmentsSection * file: src/cores/cl/components/ChartAssessmentsSection.tsx:74 * kind: component * core: cl * spec: (none) * summary: Renders the chart assessments section interface. * score: 2 ### component ChartCareTeamSection * file: src/cores/cl/components/ChartCareTeamSection.tsx:299 * kind: component * core: cl * spec: (none) * summary: Utility for chart care team section. * score: 1 ### component ChartConsentsSection * file: src/cores/cl/components/ChartConsentsSection.tsx:349 * kind: component * core: cl * spec: (none) * summary: Utility for chart consents section. * score: 1 ### component ChartContextSidebar * file: src/cores/cl/components/ChartContextSidebar.tsx:68 * kind: component * core: cl * spec: (none) * summary: Renders the chart context sidebar interface. * score: 2 ### component ChartDischargeSection * file: src/cores/cl/components/ChartDischargeSection.tsx:66 * kind: component * core: cl * spec: (none) * summary: Renders the chart discharge section interface. * score: 2 ### component ChartDisclosureLogSection * file: src/cores/cl/components/ChartDisclosureLogSection.tsx:315 * kind: component * core: cl * spec: (none) * summary: Orchestrates disclosure-log listing, entry creation, and accounting-of-disclosures export. * score: 2 ### component ChartDocumentationBlocksSection * file: src/cores/cl/components/ChartDocumentationBlocksSection.tsx:49 * kind: component * core: cl * spec: (none) * summary: Render the Documentation Blocks section for a patient chart. * score: 2 ### component ChartExportDialog * file: src/cores/cl/components/ChartExportDialog.tsx:66 * kind: component * core: cl * spec: (none) * summary: Renders the chart export dialog interface. * score: 2 ### component ChartLabOrdersSection * file: src/cores/cl/components/ChartLabOrdersSection.tsx:53 * kind: component * core: cl * spec: (none) * summary: Utility for chart lab orders section. * score: 1 ### component ChartLabResultsSection * file: src/cores/cl/components/ChartLabResultsSection.tsx:45 * kind: component * core: cl * spec: (none) * summary: Shows chart lab results, abnormality badges, and per-code trend drill-down. * score: 2 ### component ChartListPage * file: src/cores/cl/pages/ChartListPage.tsx:27 * kind: component * core: cl * spec: (none) * summary: Utility for chart list page. * score: 1 ### component ChartMedicationsSection * file: src/cores/cl/components/ChartMedicationsSection.tsx:81 * kind: component * core: cl * spec: (none) * summary: Utility for chart medications section. * score: 1 ### component ChartMobileNav * file: src/cores/cl/components/ChartSideNav.tsx:174 * kind: component * core: cl * spec: (none) * summary: Mobile: horizontal grouped tab selector using the same nav groups * score: 2 ### component ChartOutcomesSection * file: src/cores/cl/components/ChartOutcomesSection.tsx:76 * kind: component * core: cl * spec: (none) * summary: Utility for chart outcomes section. * score: 1 ### component ChartPeerSection * file: src/cores/cl/components/ChartPeerSection.tsx:67 * kind: component * core: cl * spec: (none) * summary: Renders the chart peer section interface. * score: 2 ### component ChartProgressNotesSection * file: src/cores/cl/components/ChartProgressNotesSection.tsx:54 * kind: component * core: cl * spec: (none) * summary: Renders the chart progress notes section interface. * score: 2 ### component ChartQuickActions * file: src/cores/cl/components/ChartQuickActions.tsx:56 * kind: component * core: cl * spec: (none) * summary: Renders the chart quick actions interface. * score: 2 ### component ChartRiskSection * file: src/cores/cl/components/ChartRiskSection.tsx:426 * kind: component * core: cl * spec: (none) * summary: Composes risk overview, safety planning, screening history, and related CL-07 risk workflows. * score: 2 ### component ChartScreeningSection * file: src/cores/cl/components/screening/ChartScreeningSection.tsx:58 * kind: component * core: cl * spec: CL-47 * summary: Patient-chart screening section. Drives selection of a behavioral-healthscreening instrument (PHQ-9, GAD-7, AUDIT, etc.) for administration andtrend visualization, lists prior administrations grouped by instrumentcode, and hosts the modal flow for new administrations. Encounter isoptional so screenings can be administered outside a scheduled visit. * params: * props — Section props. - : whose screenings are listed. - : The patient owning the chart. - : Optional to attach the new administration to. - : The signed-in user, recorded as the administering clinician. * score: 5 ### component ChartSdohSection * file: src/cores/cl/components/ChartSdohSection.tsx:59 * kind: component * core: cl * spec: (none) * summary: Renders the chart sdoh section interface. * score: 2 ### component ChartSideNav * file: src/cores/cl/components/ChartSideNav.tsx:26 * kind: component * core: cl * spec: (none) * summary: Renders the chart side nav interface. * score: 2 ### component ChartSummaryCard * file: src/cores/cl/ai-documentation/components/ChartSummaryCard.tsx:176 * kind: component * core: cl * spec: (none) * summary: Public entry point. Permission-gated so only staff with see the affordance; renders nothing for everyone else. * score: 2 ### component ChartTransitionsSection * file: src/cores/cl/components/ChartTransitionsSection.tsx:385 * kind: component * core: cl * spec: (none) * summary: Utility for chart transitions section. * score: 1 ### component ChartTreatmentPlansSection * file: src/cores/cl/components/ChartTreatmentPlansSection.tsx:60 * kind: component * core: cl * spec: (none) * summary: Renders the chart treatment plans section interface. * score: 2 ### component ChartVitalsSection * file: src/cores/cl/components/ChartVitalsSection.tsx:41 * kind: component * core: cl * spec: (none) * summary: Renders the chart vitals section interface. * score: 2 ### component ClinicalAuditDashboardPage * file: src/cores/cl/pages/ClinicalAuditDashboardPage.tsx:49 * kind: component * core: cl * spec: (none) * summary: Clinical Audit & Compliance Dashboard. * score: 2 ### component ClinicalBlockRenderer * file: src/cores/cl/components/blocks/ClinicalBlockRenderer.tsx:49 * kind: component * core: cl * spec: (none) * summary: Render the resolved clinical blocks for a documentation surface + encounter. * score: 2 ### component ClinicalBlockSection * file: src/cores/cl/components/blocks/ClinicalBlockSection.tsx:64 * kind: component * core: cl * spec: (none) * summary: Render + persist a single resolved clinical block. * score: 2 ### component ClinicalCatalogsHubPage * file: src/cores/cl/pages/ClinicalCatalogsHubPage.tsx:37 * kind: component * core: cl * spec: (none) * summary: Clinical Catalogs hub page. Renders the pharmacy directory, order sets, andstanding order protocols tab strip via the shared primitive. * score: 2 ### component ClinicalDraftReviewPanel * file: src/cores/cl/components/agent-clinical/ClinicalDraftReviewPanel.tsx:142 * kind: component * core: cl * spec: (none) * summary: ClinicalDraftReviewPanel — compose narrative preview + DSI disclosure + approval prompt. CL-36-EN-03 AC-2 * score: 2 ### component ClinicalFormErrorSummary * file: src/cores/cl/components/ClinicalFormErrorSummary.tsx:38 * kind: component * core: cl * spec: (none) * summary: Accessible error summary for CL forms.Focus links let keyboard users jump directly to fields after validation. * score: 2 ### component ClinicalStatusBadge * file: src/cores/cl/components/ClinicalStatusBadge.tsx:35 * kind: component * core: cl * spec: (none) * summary: Renders a CL status as a semantically-coloured badge. * example: | ClinicalStatusBadge entity="chart" status=chart.status / ClinicalStatusBadge entity="progressNote" status=note.status hideDot / * score: 5 ### component ClinicalSummarySection * file: src/cores/cl/components/ClinicalSummarySection.tsx:50 * kind: component * core: cl * spec: (none) * summary: Renders the clinical summary section interface. * score: 2 ### component ClinicalUrgencyIndicator * file: src/cores/cl/components/ClinicalUrgencyIndicator.tsx:31 * kind: component * core: cl * spec: (none) * summary: Renders the clinical urgency indicator interface. * score: 2 ### component ClinicianPanelPage * file: src/cores/cl/pages/population-health/ClinicianPanelPage.tsx:35 * kind: component * core: cl * spec: (none) * summary: Clinician Panel page — shows the logged-in clinician's attributed patients. * score: 2 ### component CloseGapDialog * file: src/cores/cl/components/population-health/CloseGapDialog.tsx:33 * kind: component * core: cl * spec: (none) * summary: Renders the close gap dialog interface. * score: 2 ### component CLOverview * file: src/cores/cl/pages/CLOverview\.tsx:43 * kind: component * core: cl * spec: (none) * summary: Utility for cloverview. * score: 1 ### component CLSettingsForm * file: src/cores/cl/components/CLSettingsForm.tsx:95 * kind: component * core: cl * spec: (none) * summary: Utility for clsettings form. * score: 1 ### component CLSettingsPage * file: src/cores/cl/pages/CLSettingsPage.tsx:31 * kind: component * core: cl * spec: (none) * summary: Utility for clsettings page. * score: 1 ### component CODAssessmentTab * file: src/cores/cl/components/cod/CODAssessmentTab.tsx:56 * kind: component * core: cl * spec: CL-31 * summary: COD assessment tab embedded in the patient chart. Lists prior ASI-6,BASIS-32, and GAIN-SS assessments in a status-filterable table, exposescreate / edit / amend actions, and — after a fresh assessment is saved —surfaces the COD-flag prompt when the chart is not yet markedco-occurring. Hidden entirely when the user lacks. * params: * props — Tab props. - : whose COD assessments are listed. - : Current value on the chart; gates whether to prompt for the flag after a new assessment. * score: 5 ### component CodedTypeahead * file: src/cores/cl/components/CodedTypeahead.tsx:36 * kind: component * core: cl * spec: (none) * summary: Typeahead that combines free-text entry with coded suggestions. * score: 2 ### component CODFlagBadge * file: src/cores/cl/components/cod/CODFlagBadge.tsx:33 * kind: component * core: cl * spec: CL-31 * summary: Co-occurring-disorder indicator badge for the chart header. Shows a"COD" badge when the chart already carries . Whenthe chart is not yet flagged, authorized users (with) see a compact "+ COD" affordance to set theflag inline; unauthorized users see nothing. * params: * props — Badge props. - : the flag toggle targets. - : Current value on the chart. * score: 5 ### component CODFlagPromptDialog * file: src/cores/cl/components/cod/CODFlagPromptDialog.tsx:41 * kind: component * core: cl * spec: CL-31 * summary: Post-assessment prompt asking whether to set onthe chart. Surfaces as a modal dialog (per CONTEXT.md Area 4, not atoast) immediately after a fresh COD assessment is saved when the chartisn't yet COD-flagged. Uses to suppress re-promptswithin the same session/chart. * params: * props — Dialog props. - : whose COD flag is being prompted. - : Whether the dialog is open. - : Fired after either "Set flag" succeeds or the user dismisses; the parent should close the dialog in response. * score: 5 ### component CODTreatmentPlanSection * file: src/cores/cl/components/cod/CODTreatmentPlanSection.tsx:67 * kind: component * core: cl * spec: CL-31 * summary: COD-specific extension section injected into the CL-03 treatment-planform when the chart carries . Captures the ASAMCOD level, ASAM dimensions 5 and 6 narrative notes, and an integratedgoals summary. Renders nothing for non-COD charts so the form layoutstays clean for the majority case. * params: * props — Section props. - : the plan belongs to. - : the extension row keys off. - : When , the component renders nothing. - : Optional MOUD context to surface alongside the COD extension (medication, current phase, start date). * score: 5 ### component CognitiveAssessmentForm * file: src/cores/cl/components/CognitiveAssessmentForm.tsx:107 * kind: component * core: cl * spec: (none) * summary: Cognitive screening assessment form dialog.Handles MoCA (with education adjustment), SLUMS, and MMSE scoring. * score: 2 ### component CognitiveResultAlert * file: src/cores/cl/components/CognitiveResultAlert.tsx:26 * kind: component * core: cl * spec: (none) * summary: Renders an inline alert banner when a cognitive screening scorefalls below the population-specific threshold.Text per CONTEXT.md: "Score below threshold — consider follow-up." * score: 2 ### component CohortAuditTab * file: src/cores/cl/components/cohorts/CohortAuditTab.tsx:60 * kind: component * core: cl * spec: CL-54 * summary: Cohort lifecycle + snapshot audit timeline. Merges creation, definitionversioning (), publication / archival events, anddistinct snapshot runs into a reverse-chronological feed so reviewershave a single, scannable record of how a clinical registry evolved. * params: * props — Tab props. - : The row whose audit feed is rendered. - : All rows for the cohort, one per saved revision. * score: 5 ### component CohortExportButton * file: src/cores/cl/components/cohorts/CohortExportButton.tsx:72 * kind: component * core: cl * spec: CL-54 * summary: Exports the latest cohort membership snapshot as a CSV. Detects whetherany chart in the snapshot is SUD-flagged and, when so, prepends thefederal 42 CFR Part 2 redisclosure notice as a CSV comment row beforethe header. Escapes leading characters to neutralize spreadsheetformula injection, and writes a row recording the actor,member count, and whether SUD content was included. * params: * props — Button props. - : whose snapshot is exported. - : Cohort name used in the generated filename and audit-log payload. * score: 5 ### component CohortFormSheet * file: src/cores/cl/components/cohorts/CohortFormSheet.tsx:72 * kind: component * core: cl * spec: CL-54 * summary: Create / edit Sheet for a clinical cohort. Drives name / description /definition-type capture and either the rule builder (rule-based) or amanual chart-ID picker (manual) depending on the chosen definition type.In edit mode the form only writes a NEW definition version — definitionhistory is immutable per spec — while parent-row metadata edits flowthrough the same call. * params: * props — Sheet props. - : Whether the sheet is mounted. - : Callback fired when the sheet wants to close. - : When present, switches the sheet to edit-definition mode for this cohort; when absent, the sheet is in create mode. - : The cohort's active definition version, used to seed the form when editing. * score: 5 ### component CohortMembershipTab * file: src/cores/cl/components/cohorts/CohortMembershipTab.tsx:46 * kind: component * core: cl * spec: CL-54 * summary: Per-chart membership view for a cohort, scoped to a chosen as-of date.Derives the list of available snapshot dates from the latest fetch, letsthe user pick which historical snapshot to inspect, and links each rowto the underlying chart via the org-aware slug prefix. * params: * props — Tab props. - : whose membership is rendered. * score: 5 ### component CohortRuleBuilder * file: src/cores/cl/components/cohorts/CohortRuleBuilder.tsx:89 * kind: component * core: cl * spec: CL-54 * summary: Visual rule builder for rule-based cohorts. Edits a v1 tree — / top-level logic plus a flat listof conditions with operator-appropriateinputs (single value, value list, or no-value for -stylepredicates). Designed so the entire criteria payload round-trips losslesslyto JSONB in . * params: * props — Builder props. - : Current criteria tree. - : Invoked with the next criteria tree on every edit. - : Disables all inputs (used during save). * score: 5 ### component CohortSnapshotDialog * file: src/cores/cl/components/cohorts/CohortSnapshotDialog.tsx:59 * kind: component * core: cl * spec: CL-54 * summary: Materialize-membership dialog for a cohort. Prompts for an "as-of" date(defaulting to today, ISO ) and triggers to write a fresh snapshot forthat date. Used both for ad-hoc snapshots and to backfill historicaldates after a definition change. * params: * props — Dialog props. - : Whether the dialog is open. - : Callback fired when the dialog wants to close. - : to snapshot. * score: 5 ### component CohortVersionsTab * file: src/cores/cl/components/cohorts/CohortVersionsTab.tsx:45 * kind: component * core: cl * spec: CL-54 * summary: Immutable definition-version history for a cohort. Lists every revision and visually marks the row whose matches . Used both for audit /compliance review and as the entry point for "view criteria at thisversion" affordances. * params: * props — Tab props. - : The owning row (for current-version marker). - : All saved definition versions, oldest-first or newest-first depending on caller — both render correctly. * score: 5 ### component CompletenessSummary * file: src/cores/cl/components/completeness/CompletenessSummary.tsx:42 * kind: component * core: cl * spec: (none) * summary: Render a documentation-completeness result. * score: 2 ### component ComplianceDashboardPage * file: src/cores/cl/pages/ComplianceDashboardPage.tsx:23 * kind: component * core: cl * spec: (none) * summary: Utility for compliance dashboard page. * score: 1 ### component ConcurrentReviewDetailPage * file: src/cores/cl/pages/ConcurrentReviewDetailPage.tsx:27 * kind: component * core: cl * spec: (none) * summary: Detail / work surface for a single concurrent review. * score: 2 ### component ConductSdohScreeningDialog * file: src/cores/cl/components/ConductSdohScreeningDialog.tsx:49 * kind: component * core: cl * spec: (none) * summary: Utility for conduct sdoh screening dialog. * score: 1 ### component ConfirmStep * file: src/cores/cl/wizards/e-prescribing/steps/ConfirmStep.tsx:21 * kind: component * core: cl * spec: (none) * summary: Step 4: Review prescription details before sending. * score: 2 ### component ConsentCaptureSheet * file: src/cores/cl/components/ConsentCaptureSheet.tsx:58 * kind: component * core: cl * spec: CL-11 * summary: Wizard-style sheet for capturing a 42 CFR Part 2 § 2.31 electronicconsent. Drives granular category checkboxes (treatment / payment / ops /specific providers / research), a typed e-signature with requiredattestation, and inline pre-submit validation per the regulatory checklist.Submits via and closes the sheet on success. * params: * props — Sheet props. - : Whether the sheet is mounted and visible. - : Callback invoked when the sheet wants to close (cancel button, backdrop click, or after a successful submit). * score: 5 ### component ConsentRevocationRequestDialog * file: src/cores/cl/components/consents/ConsentRevocationRequestDialog.tsx:28 * kind: component * core: cl * spec: (none) * summary: Collects patient consent change/revocation requests and submits them for staff review. * score: 2 ### component ControlledSubstanceInventoryPage * file: src/cores/cl/pages/ControlledSubstanceInventoryPage.tsx:23 * kind: component * core: cl * spec: (none) * summary: Utility for controlled substance inventory page. * score: 1 ### component CreateEditGroupSessionDialog * file: src/cores/cl/components/group-therapy/CreateEditGroupSessionDialog.tsx:49 * kind: component * core: cl * spec: (none) * summary: Utility for create edit group session dialog. * score: 1 ### component CreatePathwayDialog * file: src/cores/cl/components/pathways/CreatePathwayDialog.tsx:27 * kind: component * core: cl * spec: (none) * summary: Renders the create pathway dialog interface. * score: 2 ### component CreateUdsOrderDialog * file: src/cores/cl/components/uds/CreateUdsOrderDialog.tsx:49 * kind: component * core: cl * spec: (none) * summary: Utility for create uds order dialog. * score: 1 ### component CrisisResourcesBanner * file: src/cores/cl/components/CrisisResourcesBanner.tsx:19 * kind: component * core: cl * spec: (none) * summary: Renders the crisis resources banner interface. * score: 2 ### component CrisisTransferFormDialog * file: src/cores/cl/components/CrisisTransferFormDialog.tsx:35 * kind: component * core: cl * spec: (none) * summary: Renders the crisis transfer form dialog interface. * score: 2 ### component CrisisTransferList * file: src/cores/cl/components/CrisisTransferList.tsx:41 * kind: component * core: cl * spec: (none) * summary: Renders the crisis transfer list interface. * score: 2 ### component CriteriaResponseForm * file: src/cores/cl/components/concurrent-reviews/CriteriaResponseForm.tsx:23 * kind: component * core: cl * spec: (none) * summary: Edit clinical criteria responses for a concurrent review. * score: 2 ### component CurriculumFormDialog * file: src/cores/cl/components/group-therapy/CurriculumFormDialog.tsx:50 * kind: component * core: cl * spec: (none) * summary: Renders the curriculum form dialog interface. * score: 2 ### component CurriculumListPage * file: src/cores/cl/components/group-therapy/CurriculumListPage.tsx:32 * kind: component * core: cl * spec: (none) * summary: Renders the curriculum list page interface. * score: 2 ### component DaysRemainingCell * file: src/cores/cl/components/discharge/DaysRemainingCell.tsx:19 * kind: component * core: cl * spec: (none) * summary: Displays days remaining in a HEDIS follow-up window. * score: 2 ### component DdiAlertPanel * file: src/cores/cl/components/medications/DdiAlertPanel.tsx:79 * kind: component * core: cl * spec: (none) * summary: Inline alert panel for DDI results. Shows skeleton while loading. * score: 2 ### component DdiOverrideDialog * file: src/cores/cl/components/medications/DdiOverrideDialog.tsx:58 * kind: component * core: cl * spec: (none) * summary: Override dialog for DDI alerts. Permission-gated.Contraindicated severity blocks submission until a co-signer name is provided. * score: 2 ### component DdiSuppressionSettings * file: src/cores/cl/components/medications/DdiSuppressionSettings.tsx:24 * kind: component * core: cl * spec: (none) * summary: Settings card for managing DDI alert suppressions. Permission-gated. * score: 2 ### component DesignatedContactsManager * file: src/cores/cl/components/DesignatedContactsManager.tsx:32 * kind: component * core: cl * spec: (none) * summary: Utility for designated contacts manager. * score: 1 ### component DeterminationRecording * file: src/cores/cl/components/concurrent-reviews/DeterminationRecording.tsx:21 * kind: component * core: cl * spec: (none) * summary: Form to record an outcome determination from the payer. * score: 2 ### component DimensionScoreRadarChart * file: src/cores/cl/components/loc-assessment/DimensionScoreRadarChart.tsx:48 * kind: component * core: cl * spec: CL-49 * summary: Radar / spider chart visualization of ASAM or LOCUS dimensional scores.Renders one axis per dimension, normalized to the instrument's maxpossible score, and overlays a second translucent series when is supplied so reviewers can see deltas between twoassessments at a glance. Uses semantic chart-palette colors only. * params: * props — Chart props. - : or — controls dimension labels and max-axis scaling. - : The score map for the assessment being visualized. - : Optional prior-assessment scores rendered as a translucent overlay for comparison. - : Chart height in pixels. Defaults to . * score: 5 ### component DirectorySearchSheet * file: src/cores/cl/components/referral-status/DirectorySearchSheet.tsx:37 * kind: component * core: cl * spec: (none) * summary: Sheet for searching FindTreatment.gov provider directory. * score: 2 ### component DischargeChecklistPanel * file: src/cores/cl/components/DischargeChecklistPanel.tsx:51 * kind: component * core: cl * spec: (none) * summary: Renders the discharge checklist panel interface. * score: 2 ### component DischargeHubPage * file: src/cores/cl/pages/DischargeHubPage.tsx:29 * kind: component * core: cl * spec: (none) * summary: Discharge Hub page with tabbed navigation. * score: 2 ### component DocumentationCompletenessPanel * file: src/cores/cl/components/completeness/DocumentationCompletenessPanel.tsx:30 * kind: component * core: cl * spec: (none) * summary: Render the documentation-completeness panel for an encounter/surface. * score: 2 ### component DsiDisclosureEditor * file: src/cores/cl/dsi-disclosures/components/DsiDisclosureEditor.tsx:33 * kind: component * core: cl * spec: (none) * summary: Sheet wrapper — remounts the body per disclosure so its initial state derives cleanly from props. * score: 2 ### component DsiDisclosuresManagementCard * file: src/cores/cl/dsi-disclosures/components/DsiDisclosuresManagementCard.tsx:32 * kind: component * core: cl * spec: (none) * summary: Admin card for managing + publishing CL-65 DSI transparency disclosures. * score: 2 ### component DualDiagnosisSUDSection * file: src/cores/cl/components/cod/DualDiagnosisSUDSection.tsx:53 * kind: component * core: cl * spec: CL-31 * summary: SUD content section for dual-diagnosis progress notes. Renders only whenthe parent note's is and thepatient has an active 42 CFR Part 2 consent on file. Default-denies (andsurfaces a permission-style banner pointing at )when consent is missing or the lookup fails, so SUD content is neverauthored against a consentless chart. * params: * props — Section props. - : this section is attached to. - : used to look up Part 2 consent. - : Parent note's session type; component short-circuits to for anything other than . - : Prefill values when editing. - : URL the user is directed to when consent is missing (typically the chart-level consent management page). * score: 5 ### component EditEncounterGenerationDialog * file: src/cores/cl/components/group-encounter-generation/EditEncounterGenerationDialog.tsx:25 * kind: component * core: cl * spec: (none) * summary: Dialog for editing a generation record's CPT code and duration. * score: 2 ### component EducationFormDialog * file: src/cores/cl/components/EducationFormDialog.tsx:26 * kind: component * core: cl * spec: (none) * summary: Utility for education form dialog. * score: 1 ### component EducationList * file: src/cores/cl/components/EducationList.tsx:26 * kind: component * core: cl * spec: (none) * summary: Renders the education list interface. * score: 2 ### component EnrollPathwayDialog * file: src/cores/cl/components/pathways/EnrollPathwayDialog.tsx:41 * kind: component * core: cl * spec: CL-42 * summary: Dialog for enrolling a patient in a clinical pathway. Lists publishedpathway templates via , accepts aselection, and persists the enrollment via. Resets template selection each time thedialog opens so a previous abandoned selection doesn't leak acrosssessions. * params: * props — Dialog props. - : Whether the dialog is open. - : Callback fired when the dialog wants to close. - : The patient being enrolled. * score: 5 ### component EnvironmentalAssessmentDialog * file: src/cores/cl/components/EnvironmentalAssessmentDialog.tsx:93 * kind: component * core: cl * spec: (none) * summary: Utility for environmental assessment dialog. * score: 1 ### component EPCSConfirmStep * file: src/cores/cl/components/EPCSConfirmStep.tsx:29 * kind: component * core: cl * spec: (none) * summary: Utility for epcsconfirm step. * score: 1 ### component EpcsStep * file: src/cores/cl/wizards/e-prescribing/steps/EpcsStep.tsx:27 * kind: component * core: cl * spec: (none) * summary: Step 3 (controlled only): EPCS two-factor attestation with PDMP placeholder. * score: 2 ### component EscalationChainEditor * file: src/cores/cl/components/notifications/EscalationChainEditor.tsx:38 * kind: component * core: cl * spec: CL-56 * summary: Editor for the per-severity clinical-notification escalation chain.Lets admins compose rules that determine who is paged — and after how long — when anotification of a given severity is generated. Backed by / . * score: 5 ### component FamilyNotificationLogView * file: src/cores/cl/components/FamilyNotificationLogView\.tsx:29 * kind: component * core: cl * spec: (none) * summary: Utility for family notification log view. * score: 1 ### component FollowUpContactFormDialog * file: src/cores/cl/components/discharge/FollowUpContactFormDialog.tsx:39 * kind: component * core: cl * spec: (none) * summary: Renders the follow up contact form dialog interface. * score: 2 ### component FollowUpRateCard * file: src/cores/cl/components/outcomes/FollowUpRateCard.tsx:74 * kind: component * core: cl * spec: (none) * summary: Per-grant SUPRT follow-up rate card for the outcomes tab.Reads the VIEW via (Unit E).Shows numerator/denominator/rate per grant per quarter — the ≥80% rate SAMHSArequires for SPARS-reporting grants (AC-4). CL-69 AC-4 * score: 2 ### component FollowUpSchedulePanel * file: src/cores/cl/components/zero-suicide/FollowUpSchedulePanel.tsx:65 * kind: component * core: cl * spec: CL-07 * summary: Zero-Suicide follow-up schedule panel for a patient with an activesafety plan. Renders the standard post-discharge / post-crisis follow-upwindows (24h, 48h, 72h, 7d, 14d) and surfaces each scheduled outreachwith its status (pending / confirmed / cancelled). Exposescancel / reschedule affordances to the parent. * params: * props — Panel props. - : Scheduled follow-up rows. - : Whether the parent query is still in flight. - : Invoked with a follow-up id when the user cancels it. - : Invoked with a follow-up id when the user wants to reschedule. * score: 5 ### component FuhDashboardPage * file: src/cores/cl/pages/FuhDashboardPage.tsx:50 * kind: component * core: cl * spec: (none) * summary: Utility for fuh dashboard page. * score: 1 ### component GAINSSSection * file: src/cores/cl/components/cod/GAINSSSection.tsx:54 * kind: component * core: cl * spec: CL-31 * summary: GAIN-SS subscale section embedded inside the COD assessment dialog.Renders all 4 subscales × 5 items as 0/1 controls, computes the TotalDisorder Screener Score (TDSS = sum of positive items) live, and flagsany subscale with ≥3 positives as "high". The Substance (SDScr)subscale is annotated as SUD content; redaction at disclosure time ishandled by , not by this section. * params: * props — Section props. - : react-hook-form control object from the parent. - : from the parent form, used to recompute TDSS and severity as scores change. - : from the parent form, used for subscale notes. * score: 5 ### component GapDetailSheet * file: src/cores/cl/components/population-health/GapDetailSheet.tsx:40 * kind: component * core: cl * spec: (none) * summary: Displays care-gap details with timeline metadata and close action. * score: 2 ### component GenerationStatusBadge * file: src/cores/cl/components/group-encounter-generation/GenerationStatusBadge.tsx:27 * kind: component * core: cl * spec: (none) * summary: Renders a badge for group encounter generation status. * score: 2 ### component GoalProgressCharts * file: src/cores/cl/components/GoalProgressCharts.tsx:31 * kind: component * core: cl * spec: (none) * summary: Renders the goal progress charts interface. * score: 2 ### component GroupEncounterGenerationBatchReviewPage * file: src/cores/cl/pages/GroupEncounterGenerationBatchReviewPage.tsx:42 * kind: component * core: cl * spec: (none) * summary: Batch review page for group encounter generations. * score: 2 ### component GroupOutcomeDashboard * file: src/cores/cl/components/group-therapy/GroupOutcomeDashboard.tsx:20 * kind: component * core: cl * spec: (none) * summary: Utility for group outcome dashboard. * score: 1 ### component GroupSessionDetailPage * file: src/cores/cl/pages/GroupSessionDetailPage.tsx:47 * kind: component * core: cl * spec: (none) * summary: Utility for group session detail page. * score: 1 ### component GroupSessionsListPage * file: src/cores/cl/pages/GroupSessionsListPage.tsx:42 * kind: component * core: cl * spec: (none) * summary: Utility for group sessions list page. * score: 1 ### component HedisDashboard * file: src/cores/cl/components/outcomes/HedisDashboard.tsx:128 * kind: component * core: cl * spec: (none) * summary: Utility for hedis dashboard. * score: 1 ### component HedisFollowUpTab * file: src/cores/cl/components/discharge/HedisFollowUpTab.tsx:29 * kind: component * core: cl * spec: (none) * summary: HEDIS FUH/FUM follow-up worklist tab content. * score: 2 ### component HedisFuhFumPanel * file: src/cores/cl/components/outcomes/HedisFuhFumPanel.tsx:36 * kind: component * core: cl * spec: (none) * summary: Panel showing HEDIS FUH/FUM compliance rate summary. * score: 2 ### component ICD10CodeSearch * file: src/cores/cl/components/problem-list/ICD10CodeSearch.tsx:49 * kind: component * core: cl * spec: (none) * summary: CL-46 ICD-10-CM combobox. Use inside React Hook Form fields by binding to the form value and calling to update it. * score: 2 ### component ICD10SearchCombobox * file: src/cores/cl/components/ICD10SearchCombobox.tsx:27 * kind: component * core: cl * spec: (none) * summary: Searchable combobox for ICD-10-CM diagnosis codes.Requires minimum 2 characters to search. Stores value (e.g. "F11.20"). * score: 2 ### component ImportPreviewSheet * file: src/cores/cl/components/marketplace/ImportPreviewSheet.tsx:62 * kind: component * core: cl * spec: CL-57 * summary: Preview-and-confirm Sheet that runs before a marketplace bundle isimported into a tenant. Summarizes the bundle metadata, lists everyitem with its type label, and surfaces blocking warnings (already on anewer version, missing prerequisites). Submits via only after the user has reviewed the preview. * params: * props — Sheet props. - : Whether the sheet is mounted and visible. - : Callback fired when the sheet wants to close. - : The bundle to import; short-circuits to a no-op render so the parent can hold the sheet mounted between selections. - : The bundle's resolved items list. - : Whether the preview is still being assembled. - : Whether an import is in flight. - : Invoked when the user confirms the import. - : When the tenant already has a newer or equal version installed, this version number is shown as a warning to prevent accidental downgrades. * score: 5 ### component InBasketItemDetailPage * file: src/cores/cl/pages/InBasketItemDetailPage.tsx:47 * kind: component * core: cl * spec: (none) * summary: Utility for in basket item detail page. * score: 1 ### component InBasketListPage * file: src/cores/cl/pages/InBasketListPage.tsx:54 * kind: component * core: cl * spec: (none) * summary: Utility for in basket list page. * score: 1 ### component IncidentFormDialog * file: src/cores/cl/components/reporting/IncidentFormDialog.tsx:55 * kind: component * core: cl * spec: (none) * summary: Utility for incident form dialog. * score: 1 ### component IncidentListPage * file: src/cores/cl/pages/IncidentListPage.tsx:48 * kind: component * core: cl * spec: (none) * summary: Utility for incident list page. * score: 1 ### component IndividualDocumentationDialog * file: src/cores/cl/components/group-therapy/IndividualDocumentationDialog.tsx:42 * kind: component * core: cl * spec: (none) * summary: Utility for individual documentation dialog. * score: 1 ### component InstrumentScoringPanel * file: src/cores/cl/components/InstrumentScoringPanel.tsx:36 * kind: component * core: cl * spec: (none) * summary: Captures dimension scores, computes recommended LOC, and persists assessment scoring. * score: 2 ### component IntakeAssessmentDetailPage * file: src/cores/cl/pages/IntakeAssessmentDetailPage.tsx:228 * kind: component * core: cl * spec: (none) * summary: Full-page intake assessment detail with tabbed/accordion form. * score: 2 ### component IntakeAssessmentListPage * file: src/cores/cl/pages/IntakeAssessmentListPage.tsx:63 * kind: component * core: cl * spec: (none) * summary: Intake assessment work queue page. * score: 2 ### component IntakeClinicalHistorySection * file: src/cores/cl/components/intake/IntakeClinicalHistorySection.tsx:26 * kind: component * core: cl * spec: (none) * summary: Clinical history section capturing AHCCCS-required assessment elements. * score: 2 ### component IntakeComplianceDashboardPage * file: src/cores/cl/pages/IntakeComplianceDashboardPage.tsx:59 * kind: component * core: cl * spec: (none) * summary: Intake compliance dashboard. * score: 1 ### component IntakeDemographicsSection * file: src/cores/cl/components/intake/IntakeDemographicsSection.tsx:25 * kind: component * core: cl * spec: (none) * summary: Demographics and chief complaint section for intake form. * score: 2 ### component IntakeDiagnosesSection * file: src/cores/cl/components/intake/IntakeDiagnosesSection.tsx:46 * kind: component * core: cl * spec: (none) * summary: Diagnoses section with chip display and PF-70 ICD-10 search dialog. * score: 2 ### component IntakeReviewSection * file: src/cores/cl/components/intake/IntakeReviewSection.tsx:67 * kind: component * core: cl * spec: (none) * summary: Review section with validation summary and finalize action. * score: 2 ### component IntakeSdohSection * file: src/cores/cl/components/intake/IntakeSdohSection.tsx:36 * kind: component * core: cl * spec: (none) * summary: SDOH assessment section with referral preview and override checkboxes. * score: 2 ### component InventoryList * file: src/cores/cl/components/InventoryList.tsx:41 * kind: component * core: cl * spec: (none) * summary: Renders the inventory list interface. * score: 2 ### component InventoryTransactionFormDialog * file: src/cores/cl/components/InventoryTransactionFormDialog.tsx:54 * kind: component * core: cl * spec: (none) * summary: Utility for inventory transaction form dialog. * score: 1 ### component JurisdictionMismatchBanner * file: src/cores/cl/components/telehealth/JurisdictionMismatchBanner.tsx:41 * kind: component * core: cl * spec: CL-24 * summary: Renders an interstate-licensure warning alert when a telehealth session'spatient and provider state codes differ. Returns when either sideis unknown or the codes match — callers can mount it unconditionally onany session detail surface. * params: * props — Banner props. - : Patient's state at session time (2-letter US code) or . - : Provider's state at session time (2-letter US code) or . * score: 5 ### component LabOrderDetailDialog * file: src/cores/cl/components/LabOrderDetailDialog.tsx:45 * kind: component * core: cl * spec: (none) * summary: Utility for lab order detail dialog. * score: 1 ### component LabOrderFormDialog * file: src/cores/cl/components/LabOrderFormDialog.tsx:49 * kind: component * core: cl * spec: (none) * summary: Renders the lab order form dialog interface. * score: 2 ### component LabResultPanel * file: src/cores/cl/components/LabResultPanel.tsx:48 * kind: component * core: cl * spec: (none) * summary: Utility for lab result panel. * score: 1 ### component LabResultReviewDialog * file: src/cores/cl/components/LabResultReviewDialog.tsx:26 * kind: component * core: cl * spec: (none) * summary: Utility for lab result review dialog. * score: 1 ### component LabResultTrendChart * file: src/cores/cl/components/LabResultTrendChart.tsx:51 * kind: component * core: cl * spec: (none) * summary: Utility for lab result trend chart. * score: 1 ### component LatestVitalsCard * file: src/cores/cl/components/summary/LatestVitalsCard.tsx:44 * kind: component * core: cl * spec: (none) * summary: Utility for latest vitals card. * score: 1 ### component LethalMeansAssessmentForm * file: src/cores/cl/components/zero-suicide/LethalMeansAssessmentForm.tsx:54 * kind: component * core: cl * spec: CL-07 * summary: Lethal-means assessment form for Zero-Suicide safety planning. Capturesthe presence of firearms, medication stockpiles, sharp objects, and anyother identified means, plus optional counseling and a restriction plan— feeding the patient's safety plan and follow-up outreach. Submits via. * params: * props — Form props. - : The patient chart the assessment is being authored against. - : Optional originating screening (e.g. the PHQ-9 or C-SSRS that triggered the assessment). - : Optional encounter id when the assessment is captured during a scheduled visit. - : Invoked after a successful save so the parent can advance the workflow (e.g. open the safety-plan editor). * score: 5 ### component LethalMeansCounselingFields * file: src/cores/cl/components/LethalMeansCounselingFields.tsx:35 * kind: component * core: cl * spec: (none) * summary: Renders the lethal means counseling fields interface. * score: 2 ### component LifeEventRecordForm * file: src/cores/cl/components/LifeEventRecordForm.tsx:48 * kind: component * core: cl * spec: (none) * summary: Utility for life event record form. * score: 1 ### component LinkPendingResultDialog * file: src/cores/cl/components/LinkPendingResultDialog.tsx:30 * kind: component * core: cl * spec: (none) * summary: Renders the link pending result dialog interface. * score: 2 ### component LocAssessmentComparisonView * file: src/cores/cl/components/loc-assessment/LocAssessmentComparisonView\.tsx:93 * kind: component * core: cl * spec: CL-49 * summary: Side-by-side comparison view for two LOC assessments. Builds aper-dimension diff (score delta, direction, narrative-notes change) andrenders score-comparison plus dimension-delta cards so utilizationreviewers can see exactly how an ASAM/LOCUS picture has shifted betweentwo points in time. * params: * props — View props. - : The newer assessment. - : The older assessment to compare against. - : or — controls dimension labels. * score: 5 ### component LocAssessmentForm * file: src/cores/cl/components/loc-assessment/LocAssessmentForm.tsx:85 * kind: component * core: cl * spec: CL-49 * summary: Editable LOC dimensional-scoring form for ASAM-CONTINUUM or LOCUS.Surfaces all instrument dimensions with score inputs and clinical-notesfields, optionally overlays the prior assessment's scores so theclinician can see drift, and dispatches / / back to the host page. Renders read-only when is true. * params: * props — Form props. - : or . - : Score map to seed the form with. - : Optional prior assessment scores rendered alongside each input for context. - : Invoked with the current score map when the user submits. - : Invoked on every keystroke for live recomputation of the recommendation. - : Invoked when the user cancels. - : Disables submit while the parent persists. - : Renders the form in read-only mode (no editing). * score: 5 ### component LocAssessmentListTable * file: src/cores/cl/components/loc-assessment/LocAssessmentListTable.tsx:43 * kind: component * core: cl * spec: CL-49 * summary: Worklist table listing LOC assessments for a patient or organization.Renders a 5-row skeleton while loading, an empty-state when there are noassessments, and otherwise a row per assessment with assessed-at date,recommended level of care, status badge, and a "view" affordance thatnavigates to the detail page. * params: * props — Table props. - : Assessments to render. - : Whether the parent query is still in flight. * score: 5 ### component LocAssessmentSummaryCard * file: src/cores/cl/components/concurrent-reviews/LocAssessmentSummaryCard.tsx:71 * kind: component * core: cl * spec: CL-43 * summary: Read-only Level-of-Care assessment summary card for the UtilizationManagement worklist. Fetches via the platform wrapper which calls the edge function — the edgefunction enforces 42 CFR Part 2 SUD consent gating and writes a row for SUD disclosures, so the card only everdisplays IDs and redacted fields (no narrative override rationale, no rawdimension scores). Hidden behind . * params: * props — Card props. - : to summarize. - : Caller organization id (verified server-side by the edge function for cross-tenant safety). - : Free-text recipient logged in (e.g. payer UM department). - : Free-text purpose logged in (e.g. ). * score: 5 ### component LocOverrideDialog * file: src/cores/cl/components/loc-assessment/LocOverrideDialog.tsx:58 * kind: component * core: cl * spec: CL-49 * summary: Dialog used when a clinician overrides the algorithm's recommended levelof care. Forces selection of (a) the level being chosen instead, (b) acategorical override reason, and (c) free-text rationale — all three arerequired so the override is auditable and meets regulator expectationsfor documented clinical judgment. * params: * props — Dialog props. - : Whether the dialog is open. - : Callback fired when the dialog wants to close. - : or — controls available LOC options. - : The algorithm's recommended level, shown alongside the override picker for context. - : Invoked with when the user confirms. * score: 5 ### component LocOverrideRateWidget * file: src/cores/cl/components/loc-assessment/LocOverrideRateWidget.tsx:155 * kind: component * core: cl * spec: CL-49 * summary: Operational widget showing the clinician override rate for LOCrecommendations over a selectable rolling window. Calls to fetch the org-wide rate plus the topoverride-reason categories, surfacing a small table so utilizationleadership can spot algorithm drift or chronic clinician disagreement.Hidden behind . * score: 5 ### component LocReassessmentDeltaTable * file: src/cores/cl/components/loc-assessment/LocReassessmentDeltaTable.tsx:110 * kind: component * core: cl * spec: CL-49 * summary: Side-by-side delta table for an LOC reassessment. Renders prior andcurrent dimension scores with ▲ / ▼ / = indicators driven by thesemantic chart palette () so the widget adapts todark mode and tenant rebranding (PF-95); never uses raw color literals. * params: * props — Table props. - : or — controls dimension labels. - : The previous assessment's dimension scores. - : The new assessment's dimension scores. - : Overall direction of change; when supplied, renders a step-up / step-down / lateral badge in the header. * score: 5 ### component LocRecommendationCard * file: src/cores/cl/components/loc-assessment/LocRecommendationCard.tsx:44 * kind: component * core: cl * spec: CL-49 * summary: Card displaying the algorithm-recommended Level of Care for the currentscoring inputs. Shows total score, highest dimension score, and therecommended LOC code. When is true, also renders the that the clinician selected instead and the categoricaloverride reason so reviewers see both signals side-by-side. * params: * props — Card props. - : Output of the LOC scoring engine for the current dimension scores. - : Clinician's chosen final LOC when overriding the algorithm. - : Categorical override reason label. - : When true, render the override panel. * score: 5 ### component LocTransitionRecommendationCard * file: src/cores/cl/components/loc-assessment/LocTransitionRecommendationCard.tsx:45 * kind: component * core: cl * spec: CL-49 * summary: Recommendation card surfaced on a reassessment when the new differs from the prior . Phrasesthe proposed transition in plain language and, when supplied, surfacesthe triggering scoring rule so the clinician understands the rationalebefore signing. Renders nothing when the codes match or either side ismissing. * params: * props — Card props. - : The prior assessment's signed final LOC code; falsy values short-circuit render. - : The new recommendation; falsy or equal-to-prior short-circuits render. - : Human-readable triggering rule from the scoring engine, displayed when present. * score: 5 ### component LoincTypeahead * file: src/cores/cl/components/LoincTypeahead.tsx:20 * kind: component * core: cl * spec: (none) * summary: Renders the loinc typeahead interface. * score: 2 ### component MarketplaceBundleCard * file: src/cores/cl/components/marketplace/MarketplaceBundleCard.tsx:35 * kind: component * core: cl * spec: (none) * summary: Displays a marketplace bundle as a card in the catalogue grid.Shows bundle metadata including name, description, version, tags, andpublication date. Displays status badges for imported bundles and availableupdates. Provides a details button to navigate to the bundle detail page. * params: * bundle — The marketplace bundle to display. Key fields: id, name, version, published\_at (ISO timestamp), description (optional), accreditation\_tags (array), clinical\_area\_tags (array). * importedVersion — The version number currently imported by the org, if any. Used to determine update availability and import status. * onViewDetails — Callback invoked when the user clicks the Details button. Receives the bundle.id as its argument. * returns: A Card component displaying the bundle information. * score: 2 ### component MarketplaceFilterSidebar * file: src/cores/cl/components/marketplace/MarketplaceFilterSidebar.tsx:44 * kind: component * core: cl * spec: CL-57 * summary: Filter sidebar for the clinical content marketplace catalogue. Drives afull-text search input plus checkbox groups for accreditation tags(Joint Commission, CARF, etc.) and clinical-area tags (SUD,co-occurring, etc.), reporting changes back via so thecatalogue list re-queries with the new filter set. * params: * props — Sidebar props. - : Current browse filter state. - : Invoked with the next filter state on every toggle / search keystroke. * score: 5 ### component MeasureSourceBadge * file: src/cores/cl/components/outcomes/MeasureSourceBadge.tsx:23 * kind: component * core: cl * spec: (none) * summary: Renders the measure source badge interface. * score: 2 ### component MedicationDetailsStep * file: src/cores/cl/wizards/e-prescribing/steps/MedicationDetailsStep.tsx:35 * kind: component * core: cl * spec: (none) * summary: Step 1: Medication details form fields. * score: 2 ### component MedicationFormDialog * file: src/cores/cl/components/MedicationFormDialog.tsx:79 * kind: component * core: cl * spec: (none) * summary: Renders the medication form dialog interface. * score: 2 ### component MedicationReconciliationDialog * file: src/cores/cl/components/MedicationReconciliationDialog.tsx:44 * kind: component * core: cl * spec: (none) * summary: Utility for medication reconciliation dialog. * score: 1 ### component MetabolicMonitoringList * file: src/cores/cl/components/MetabolicMonitoringList.tsx:46 * kind: component * core: cl * spec: (none) * summary: Lists due/overdue metabolic events and supports completion actions with permission checks. * score: 2 ### component MobileChartBottomSheet * file: src/cores/cl/components/MobileChartBottomSheet.tsx:27 * kind: component * core: cl * spec: (none) * summary: Renders the mobile chart bottom sheet interface. * score: 2 ### component MobileVitalsKeypad * file: src/cores/cl/components/MobileVitalsKeypad.tsx:43 * kind: component * core: cl * spec: (none) * summary: Renders the mobile vitals keypad interface. * score: 2 ### component MobileVitalsSheet * file: src/cores/cl/components/MobileVitalsSheet.tsx:35 * kind: component * core: cl * spec: (none) * summary: Mobile vitals entry sheet. Slide-up bottom sheet using the primitive. * score: 2 ### component MoudEnrollmentDetailPage * file: src/cores/cl/pages/MoudEnrollmentDetailPage.tsx:61 * kind: component * core: cl * spec: (none) * summary: Utility for moud enrollment detail page. * score: 1 ### component MoudEnrollmentFormDialog * file: src/cores/cl/components/moud/MoudEnrollmentFormDialog.tsx:42 * kind: component * core: cl * spec: (none) * summary: Utility for moud enrollment form dialog. * score: 1 ### component MoudEnrollmentListPage * file: src/cores/cl/pages/MoudEnrollmentListPage.tsx:45 * kind: component * core: cl * spec: (none) * summary: Utility for moud enrollment list page. * score: 1 ### component MoudMedicationEventFormDialog * file: src/cores/cl/components/moud/MoudMedicationEventFormDialog.tsx:43 * kind: component * core: cl * spec: (none) * summary: Utility for moud medication event form dialog. * score: 1 ### component MoudMonitoringEventFormDialog * file: src/cores/cl/components/moud/MoudMonitoringEventFormDialog.tsx:36 * kind: component * core: cl * spec: (none) * summary: Utility for moud monitoring event form dialog. * score: 1 ### component MultiPartyEncounterFormDialog * file: src/cores/cl/components/multi-party/MultiPartyEncounterFormDialog.tsx:54 * kind: component * core: cl * spec: CL-14 * summary: Dialog for creating a new multi-party clinical encounter (familytherapy, couples session, MDT). Captures the primary patient chart,encounter type, modality (in-person / virtual / phone), and free-textnotes, then calls to persist the row. Fires with the new encounter id so thecaller can navigate directly into the encounter for furtherparticipant capture. * params: * props — Dialog props. - : Whether the dialog is open. - : Callback fired when the dialog wants to close. - : Invoked with the new encounter id after a successful create. * score: 5 ### component NoteInlinePreview * file: src/cores/cl/components/NoteInlinePreview\.tsx:25 * kind: component * core: cl * spec: (none) * summary: Utility for note inline preview. * score: 1 ### component NotesSubmissionsHubPage * file: src/cores/cl/pages/NotesSubmissionsHubPage.tsx:37 * kind: component * core: cl * spec: (none) * summary: Notes & Submissions hub page. Renders the co-sign queue, note templates, andpatient submissions tab strip via the shared primitive. * score: 2 ### component NoteTemplatesPage * file: src/cores/cl/pages/NoteTemplatesPage.tsx:174 * kind: component * core: cl * spec: (none) * summary: Utility for note templates page. * score: 1 ### component NotificationAttemptTrailSheet * file: src/cores/cl/components/notifications/NotificationAttemptTrailSheet.tsx:77 * kind: component * core: cl * spec: CL-56 * summary: Delivery-attempt trail Sheet for a single clinical notification event.Aggregates every send / retry / error / acknowledgement row from into a counts strip plus achronological list, so on-call leads can audit whether a given alertactually reached its intended recipients and within SLA. * params: * props — Sheet props. - : whose attempt history is loaded. - : Signal type label shown in the header (e.g. ). - : Severity label shown in the header. - : Whether the sheet is mounted. - : Callback fired when the sheet wants to close. * score: 5 ### component NotificationServiceDisabledBanner * file: src/cores/cl/components/notifications/NotificationServiceDisabledBanner.tsx:41 * kind: component * core: cl * spec: CL-56 * summary: Full-page banner rendered when the clinical-notification service featureflag is disabled for the current organization. Names the controllingfeature flag and, when the user holds the platform permission, links straight to the flags adminpage so they can self-serve the toggle. * params: * props — Banner props. - : The platform feature-flag key that gates the notification service (used both in the message and the deep-link target). * score: 5 ### component OrderSetActivationDialog * file: src/cores/cl/components/order-sets/OrderSetActivationDialog.tsx:40 * kind: component * core: cl * spec: (none) * summary: Activate an order set against a patient chart. * score: 2 ### component OrderSetItemEditor * file: src/cores/cl/components/order-sets/OrderSetItemEditor.tsx:29 * kind: component * core: cl * spec: (none) * summary: Inline editor for order set template items. * score: 2 ### component OrderSetManagementPage * file: src/cores/cl/pages/OrderSetManagementPage.tsx:25 * kind: component * core: cl * spec: (none) * summary: Order set template administration page. * score: 2 ### component OrderSetTemplateDialog * file: src/cores/cl/components/order-sets/OrderSetTemplateDialog.tsx:34 * kind: component * core: cl * spec: (none) * summary: Order set template create/edit dialog. * score: 2 ### component OrderSetTemplateList * file: src/cores/cl/components/order-sets/OrderSetTemplateList.tsx:27 * kind: component * core: cl * spec: (none) * summary: Tabular list of order set templates. * score: 2 ### component OrderSetTemplateListMobile * file: src/cores/cl/components/order-sets/OrderSetTemplateList.mobile.tsx:26 * kind: component * core: cl * spec: (none) * summary: Mobile card list of order set templates. * score: 2 ### component OrderTemplateFormDialog * file: src/cores/cl/components/OrderTemplateFormDialog.tsx:29 * kind: component * core: cl * spec: (none) * summary: Utility for order template form dialog. * score: 1 ### component OrderTemplateManagementPage * file: src/cores/cl/pages/OrderTemplateManagementPage.tsx:28 * kind: component * core: cl * spec: (none) * summary: Utility for order template management page. * score: 1 ### component OrderTemplateSelector * file: src/cores/cl/components/OrderTemplateSelector.tsx:18 * kind: component * core: cl * spec: (none) * summary: Utility for order template selector. * score: 1 ### component OutcomeMeasureFormDialog * file: src/cores/cl/components/OutcomeMeasureFormDialog.tsx:63 * kind: component * core: cl * spec: (none) * summary: Renders the outcome measure form dialog interface. * score: 2 ### component OutcomeTrendChart * file: src/cores/cl/components/OutcomeTrendChart.tsx:38 * kind: component * core: cl * spec: (none) * summary: Renders the outcome trend chart interface. * score: 2 ### component Part2ComplianceDashboardPage * file: src/cores/cl/pages/Part2ComplianceDashboardPage.tsx:115 * kind: component * core: cl * spec: (none) * summary: Utility for part2 compliance dashboard page. * score: 1 ### component PathwayManagementPage * file: src/cores/cl/pages/PathwayManagementPage.tsx:25 * kind: component * core: cl * spec: (none) * summary: Utility for pathway management page. * score: 1 ### component PathwayProgressCard * file: src/cores/cl/components/pathways/PathwayProgressCard.tsx:21 * kind: component * core: cl * spec: (none) * summary: Utility for pathway progress card. * score: 1 ### component PathwayStepList * file: src/cores/cl/components/pathways/PathwayStepList.tsx:18 * kind: component * core: cl * spec: (none) * summary: Renders pathway steps with visual state for current and completed progress. * score: 2 ### component PathwayTemplateFormDialog * file: src/cores/cl/components/pathways/PathwayTemplateFormDialog.tsx:55 * kind: component * core: cl * spec: CL-42 * summary: Create / edit Dialog for a clinical pathway template. Drives name,description, program selection, and an ordered milestone list (eachwith sequence order and expected duration in days). Distinguishes createvs edit modes by the presence of , calling or accordingly. * params: * props — Dialog props. - : Whether the dialog is open. - : Callback fired when the dialog wants to close. - : Existing template + milestones for edit mode; omit or pass for create. * score: 5 ### component PatientBanner * file: src/cores/cl/components/PatientBanner.tsx:130 * kind: component * core: cl * spec: (none) * summary: Displays the sticky patient header with demographics, clinical indicators, and quick actions. * score: 2 ### component PatientBannerSkeleton * file: src/cores/cl/components/PatientBanner.tsx:322 * kind: component * core: cl * spec: (none) * summary: Shows loading placeholders matching the patient banner layout while chart context resolves. * score: 2 ### component PatientCareGapsCard * file: src/cores/cl/components/summary/PatientCareGapsCard.tsx:43 * kind: component * core: cl * spec: (none) * summary: Utility for patient care gaps card. * score: 1 ### component PatientChartPage * file: src/cores/cl/pages/PatientChartPage.tsx:70 * kind: component * core: cl * spec: (none) * summary: Utility for patient chart page. * score: 1 ### component PatientChartSearchCombobox * file: src/cores/cl/components/PatientChartSearchCombobox.tsx:39 * kind: component * core: cl * spec: (none) * summary: Searchable combobox for patient charts.Requires minimum 2 characters to search. Stores chart (UUID). * score: 2 ### component PatientPathwayPanel * file: src/cores/cl/components/pathways/PatientPathwayPanel.tsx:48 * kind: component * core: cl * spec: CL-42 * summary: Patient-side pathways panel. Lists all pathway enrollments for thepatient, lets the user select an active enrollment to see its milestoneprogress, and exposes affordances to enroll in a new pathway, complete amilestone, or document a variance against an at-risk milestone. * params: * props — Panel props. - : The patient whose pathways are shown. * score: 5 ### component PatientSignatureDialog * file: src/cores/cl/components/PatientSignatureDialog.tsx:25 * kind: component * core: cl * spec: (none) * summary: Utility for patient signature dialog. * score: 1 ### component PatientSubmissionDetailPage * file: src/cores/cl/pages/PatientSubmissionDetailPage.tsx:91 * kind: component * core: cl * spec: (none) * summary: Utility for patient submission detail page. * score: 1 ### component PatientSubmissionsListPage * file: src/cores/cl/pages/PatientSubmissionsListPage.tsx:60 * kind: component * core: cl * spec: (none) * summary: Utility for patient submissions list page. * score: 1 ### component PatientTimelineSection * file: src/cores/cl/components/PatientTimelineSection.tsx:63 * kind: component * core: cl * spec: (none) * summary: Renders the patient timeline section interface. * score: 2 ### component PdmpAttestationDialog * file: src/cores/cl/components/PdmpAttestationDialog.tsx:24 * kind: component * core: cl * spec: (none) * summary: Renders the pdmp attestation dialog interface. * score: 2 ### component PdmpConfigurationForm * file: src/cores/cl/components/PdmpConfigurationForm.tsx:40 * kind: component * core: cl * spec: (none) * summary: Renders the pdmp configuration form interface. * score: 2 ### component PdmpConfigurationPage * file: src/cores/cl/pages/PdmpConfigurationPage.tsx:12 * kind: component * core: cl * spec: (none) * summary: Utility for pdmp configuration page. * score: 1 ### component PdmpHistoryPage * file: src/cores/cl/pages/PdmpHistoryPage.tsx:16 * kind: component * core: cl * spec: (none) * summary: Utility for pdmp history page. * score: 1 ### component PdmpResultsView * file: src/cores/cl/components/PdmpResultsView\.tsx:116 * kind: component * core: cl * spec: (none) * summary: Utility for pdmp results view. * score: 1 ### component PeerEncounterFormDialog * file: src/cores/cl/components/PeerEncounterFormDialog.tsx:52 * kind: component * core: cl * spec: (none) * summary: Renders the peer encounter form dialog interface. * score: 2 ### component PeerSupervisionFormDialog * file: src/cores/cl/components/PeerSupervisionFormDialog.tsx:40 * kind: component * core: cl * spec: (none) * summary: Renders the peer supervision form dialog interface. * score: 2 ### component PendingLabResultsPage * file: src/cores/cl/pages/PendingLabResultsPage.tsx:12 * kind: component * core: cl * spec: (none) * summary: Utility for pending lab results page. * score: 1 ### component PendingLabResultsQueue * file: src/cores/cl/components/PendingLabResultsQueue.tsx:25 * kind: component * core: cl * spec: (none) * summary: Utility for pending lab results queue. * score: 1 ### component PharmacyDirectoryPage * file: src/cores/cl/pages/PharmacyDirectoryPage.tsx:39 * kind: component * core: cl * spec: (none) * summary: Utility for pharmacy directory page. * score: 1 ### component PharmacyPickerDialog * file: src/cores/cl/components/PharmacyPickerDialog.tsx:33 * kind: component * core: cl * spec: (none) * summary: Utility for pharmacy picker dialog. * score: 1 ### component Policy940OverrideDialog * file: src/cores/cl/components/Policy940OverrideDialog.tsx:31 * kind: component * core: cl * spec: (none) * summary: Dialog for supervisors to override Policy 940 validation with mandatory justification. * score: 2 ### component Policy940SettingsCard * file: src/cores/cl/components/Policy940SettingsCard.tsx:37 * kind: component * core: cl * spec: (none) * summary: Admin card for configuring Policy 940 enforcement mode and override settings. * score: 2 ### component Policy940ValidationFeedback * file: src/cores/cl/ai-documentation/components/Policy940ValidationFeedback.tsx:19 * kind: component * core: cl * spec: (none) * summary: Renders Policy 940 validation feedback with severity-appropriate styling. * score: 2 ### component PolicyEditorSheet * file: src/cores/cl/components/notifications/PolicyEditorSheet.tsx:47 * kind: component * core: cl * spec: CL-56 * summary: Editor Sheet for a clinical-notification policy(). Captures the signal type, SLA window(seconds), de-dup window (seconds), active flag, and a free-form JSONseverity-rules payload — with inline JSON validation — and persists via for both create and edit flows. * params: * props — Sheet props. - : Existing policy row to edit; opens the sheet in create mode with default SLA / dedup values. - : Whether the sheet is open. - : Callback fired when the sheet wants to close. * score: 5 ### component PopulationDashboardPage * file: src/cores/cl/pages/population-health/PopulationDashboardPage.tsx:53 * kind: component * core: cl * spec: (none) * summary: Population Health Dashboard — aggregate charts with small-cell suppression. * score: 2 ### component PortalCheckinPage * file: src/cores/cl/pages/portal/PortalCheckinPage.tsx:33 * kind: component * core: cl * spec: (none) * summary: Utility for portal checkin page. * score: 1 ### component PortalConsentsPage * file: src/cores/cl/pages/portal/PortalConsentsPage.tsx:44 * kind: component * core: cl * spec: (none) * summary: Utility for portal consents page. * score: 1 ### component PortalScreeningPage * file: src/cores/cl/pages/portal/PortalScreeningPage.tsx:91 * kind: component * core: cl * spec: (none) * summary: Utility for portal screening page. * score: 1 ### component PortalTreatmentPlanPage * file: src/cores/cl/pages/portal/PortalTreatmentPlanPage.tsx:37 * kind: component * core: cl * spec: (none) * summary: Utility for portal treatment plan page. * score: 1 ### component PrescriptionFormDialog * file: src/cores/cl/components/PrescriptionFormDialog.tsx:51 * kind: component * core: cl * spec: (none) * summary: E-Prescribing wizard dialog using DialogWizardShell (CL-UX-04). * score: 2 ### component PrescriptionList * file: src/cores/cl/components/PrescriptionList.tsx:45 * kind: component * core: cl * spec: (none) * summary: Utility for prescription list. * score: 1 ### component ProblemFormDialog * file: src/cores/cl/components/ProblemFormDialog.tsx:52 * kind: component * core: cl * spec: (none) * summary: Utility for problem form dialog. * score: 1 ### component ProblemHistoryTimeline * file: src/cores/cl/components/problem-list/ProblemHistoryTimeline.tsx:41 * kind: component * core: cl * spec: CL-46 * summary: Reverse-chronological history timeline for a single problem-list entry.Renders status transitions, free-text rationale (truncated to a preview,expandable), and audit metadata. Used both inside the problem-list panel(inline expansion) and standalone (e.g. compliance review). * params: * props — Timeline props. - : whose history is rendered. - : Optional label shown in the dialog header when the timeline is launched as a modal (e.g. ICD-10 description). * score: 5 ### component ProblemListPanel * file: src/cores/cl/components/problem-list/ProblemListPanel.tsx:50 * kind: component * core: cl * spec: CL-46 * summary: Patient chart problem-list panel. Partitions entries intoactive/chronic vs historical (resolved/inactive/entered-in-error)groups, exposes the add-problem affordance behind ,and switches to a mobile-friendly layout under the responsivebreakpoint. Returns null when the user lacks . * params: * props — Panel props. - : whose problem list is rendered. - : The patient owning the chart. * score: 5 ### component ProblemStatusActions * file: src/cores/cl/components/problem-list/ProblemStatusActions.tsx:50 * kind: component * core: cl * spec: CL-46 * summary: Per-row status-transition actions for a problem-list entry. Computes thelegal next-states from (which mirrors the DB trigger) and surfaces them asaction buttons or guarded confirmation dialogs (,). Hidden entirely when the user lacks or the row has no legal forward transitions. * params: * props — Action props. - : The problem-list row whose actions are rendered. * score: 5 ### component ProgramEnrollmentsPage * file: src/cores/cl/pages/ProgramEnrollmentsPage.tsx:19 * kind: component * core: cl * spec: (none) * summary: Utility for program enrollments page. * score: 1 ### component ProgramScheduleFormDialog * file: src/cores/cl/components/program-schedules/ProgramScheduleFormDialog.tsx:49 * kind: component * core: cl * spec: (none) * summary: Utility for program schedule form dialog. * score: 1 ### component ProgramSchedulesListPage * file: src/cores/cl/pages/ProgramSchedulesListPage.tsx:26 * kind: component * core: cl * spec: (none) * summary: Utility for program schedules list page. * score: 1 ### component ProgramsPathwaysHubPage * file: src/cores/cl/pages/ProgramsPathwaysHubPage.tsx:39 * kind: component * core: cl * spec: (none) * summary: Programs & Pathways hub page. Renders the program scheduling, enrollment, andclinical pathway tab strip via the shared primitive. * score: 2 ### component ProgressNoteAddendumDialog * file: src/cores/cl/components/ProgressNoteAddendumDialog.tsx:36 * kind: component * core: cl * spec: (none) * summary: Renders the progress note addendum dialog interface. * score: 2 ### component ProgressNoteCosignQueuePage * file: src/cores/cl/pages/ProgressNoteCosignQueuePage.tsx:72 * kind: component * core: cl * spec: (none) * summary: Utility for progress note cosign queue page. * score: 1 ### component ProgressNoteDetailPage * file: src/cores/cl/pages/ProgressNoteDetailPage.tsx:57 * kind: component * core: cl * spec: (none) * summary: Utility for progress note detail page. * score: 1 ### component ProgressNoteForm * file: src/cores/cl/components/ProgressNoteForm.tsx:113 * kind: component * core: cl * spec: (none) * summary: Utility for progress note form. * score: 1 ### component ProgressNoteSignDialog * file: src/cores/cl/components/ProgressNoteSignDialog.tsx:48 * kind: component * core: cl * spec: (none) * summary: Renders the progress note sign dialog interface with EN-66 Policy 940 validation gate. * score: 2 ### component QualityMeasuresPage * file: src/cores/cl/pages/population-health/QualityMeasuresPage.tsx:38 * kind: component * core: cl * spec: (none) * summary: Quality Measures page — HEDIS and MA STARS measure periods. * score: 2 ### component QualityScoreBadge * file: src/cores/cl/components/QualityScoreBadge.tsx:30 * kind: component * core: cl * spec: (none) * summary: Renders the quality score badge interface. * score: 2 ### component ReadmissionRiskFormDialog * file: src/cores/cl/components/discharge/ReadmissionRiskFormDialog.tsx:37 * kind: component * core: cl * spec: (none) * summary: Utility for readmission risk form dialog. * score: 1 ### component RecentNotesCard * file: src/cores/cl/components/summary/RecentNotesCard.tsx:29 * kind: component * core: cl * spec: (none) * summary: Renders the recent notes card interface. * score: 2 ### component ReconciliationSummary * file: src/cores/cl/components/group-encounter-generation/ReconciliationSummary.tsx:20 * kind: component * core: cl * spec: (none) * summary: Displays a summary of generation record statuses for reconciliation. * score: 2 ### component RecordAttendanceDialog * file: src/cores/cl/components/group-therapy/RecordAttendanceDialog.tsx:37 * kind: component * core: cl * spec: (none) * summary: Utility for record attendance dialog. * score: 1 ### component RecordDisclosureSheet * file: src/cores/cl/components/RecordDisclosureSheet.tsx:56 * kind: component * core: cl * spec: CL-11 * summary: Sheet for logging a 42 CFR Part 2 § 2.32 redisclosure event. Captures thereceiving party, purpose, and record types, then previews theauto-generated redisclosure notice text before persisting the entry via. Permission-gated to at the caller. * params: * props — Sheet props. - : Whether the sheet is mounted and visible. - : Callback fired when the sheet wants to close (cancel, backdrop, successful submit). - : Pre-selected ; lets the caller deep-link from a consent's detail view. - : Pre-selected patient identifier matching the chosen consent. * score: 5 ### component RecordingConsentDialog * file: src/cores/cl/components/virtual-group/RecordingConsentDialog.tsx:60 * kind: component * core: cl * spec: CL-55 * summary: Recording-consent capture dialog for a virtual / telehealth groupsession attendance row. Captures the consent modality (verbal,electronic signature, written) and persists via. Locks down to read-only when consent isalready captured — recording consent is immutable once recorded, so thedialog never overwrites an existing capture by accident. * params: * props — Dialog props. - : Whether the dialog is open. - : Callback fired when the dialog wants to close. - : The attendance row being annotated. - : The owning group session. - : Current consent state for the attendance row; when populated, switches the dialog into read-only mode. * score: 5 ### component RecordReferralOutcomeDialog * file: src/cores/cl/components/RecordReferralOutcomeDialog.tsx:41 * kind: component * core: cl * spec: (none) * summary: Utility for record referral outcome dialog. * score: 1 ### component ReferenceLabFormDialog * file: src/cores/cl/components/ReferenceLabFormDialog.tsx:25 * kind: component * core: cl * spec: (none) * summary: Renders the reference lab form dialog interface. * score: 2 ### component ReferenceLabManagementPage * file: src/cores/cl/pages/ReferenceLabManagementPage.tsx:28 * kind: component * core: cl * spec: (none) * summary: Utility for reference lab management page. * score: 1 ### component ReferenceRangeForm * file: src/cores/cl/components/ReferenceRangeForm.tsx:38 * kind: component * core: cl * spec: (none) * summary: Collects LOINC reference range thresholds and submits them from a dialog form. * score: 2 ### component ReferenceRangeManagementPage * file: src/cores/cl/pages/ReferenceRangeManagementPage.tsx:23 * kind: component * core: cl * spec: (none) * summary: Utility for reference range management page. * score: 1 ### component ReferralOutcomeReportPage * file: src/cores/cl/pages/ReferralOutcomeReportPage.tsx:138 * kind: component * core: cl * spec: (none) * summary: Referral outcome report page with filter, metrics, and CSV export. * score: 2 ### component ReferralStatusHistoryTable * file: src/cores/cl/components/referral-status/ReferralStatusHistoryTable.tsx:78 * kind: component * core: cl * spec: (none) * summary: Table showing full status history for a referral (newest first). * score: 2 ### component ReferralStatusUpdateDialog * file: src/cores/cl/components/referral-status/ReferralStatusUpdateDialog.tsx:50 * kind: component * core: cl * spec: (none) * summary: Dialog for recording a new referral status update (append-only). * score: 2 ### component RejectEncounterGenerationDialog * file: src/cores/cl/components/group-encounter-generation/RejectEncounterGenerationDialog.tsx:23 * kind: component * core: cl * spec: (none) * summary: Dialog for rejecting an encounter generation with a required reason. * score: 2 ### component ReportDefinitionFormDialog * file: src/cores/cl/components/reporting/ReportDefinitionFormDialog.tsx:54 * kind: component * core: cl * spec: (none) * summary: Renders the report definition form dialog interface. * score: 2 ### component ReportDefinitionsListPage * file: src/cores/cl/pages/ReportDefinitionsListPage.tsx:31 * kind: component * core: cl * spec: (none) * summary: Utility for report definitions list page. * score: 1 ### component ReportRunsHistoryPage * file: src/cores/cl/pages/ReportRunsHistoryPage.tsx:35 * kind: component * core: cl * spec: (none) * summary: Utility for report runs history page. * score: 1 ### component ReviewFilterBar * file: src/cores/cl/components/concurrent-reviews/ReviewFilterBar.tsx:30 * kind: component * core: cl * spec: (none) * summary: Compact filter row for the review worklist. * score: 2 ### component ReviewScheduleConfigPage * file: src/cores/cl/pages/ReviewScheduleConfigPage.tsx:15 * kind: component * core: cl * spec: (none) * summary: Configure per-payer review cadences. * score: 2 ### component ReviewStatusBadge * file: src/cores/cl/components/concurrent-reviews/ReviewStatusBadge.tsx:43 * kind: component * core: cl * spec: CL-43 * summary: Badge representation of a concurrent-review status. Maps the canonical enum to a Badge variant + human-readablelabel, with highlighted destructive so reviewers spot SLAbreaches at a glance. Falls back gracefully on unrecognized strings so anew enum value renders verbatim rather than breaking the worklist. * params: * props — Badge props. - : Status string from . * score: 5 ### component ReviewWorklist * file: src/cores/cl/components/concurrent-reviews/ReviewWorklist.tsx:40 * kind: component * core: cl * spec: (none) * summary: Worklist of concurrent reviews with mobile-friendly card fallback. * score: 2 ### component RevokeConsentDialog * file: src/cores/cl/components/RevokeConsentDialog.tsx:39 * kind: component * core: cl * spec: CL-11 * summary: Confirmation dialog for revoking an electronic consent. Warns the userthat the action is irreversible — once revoked, no further disclosures /exports / reads are permitted against the consent and a new consent mustbe re-captured. Submits via . * params: * props — Dialog props. - : Whether the alert dialog is open. - : Callback fired when the dialog requests close. - : to revoke; short-circuits submit so the dialog can stay mounted with no target. * score: 5 ### component RiskScreeningFormDialog * file: src/cores/cl/components/RiskScreeningFormDialog.tsx:361 * kind: component * core: cl * spec: (none) * summary: Utility for risk screening form dialog. * score: 1 ### component RosExtentBadge * file: src/cores/cl/components/blocks/ros-exam/RosExamIndicators.tsx:31 * kind: component * core: cl * spec: (none) * summary: Advisory E/M ROS-extent indicator (AC-13). Outline/secondary styling only —this badge never signals an error or blocks completion. * score: 2 ### component RtpbStep * file: src/cores/cl/wizards/e-prescribing/steps/RtpbStep.tsx:25 * kind: component * core: cl * spec: (none) * summary: Step 2: RTPB benefit check results display. * score: 2 ### component SafetyAlertsPanel * file: src/cores/cl/components/SafetyAlertsPanel.tsx:41 * kind: component * core: cl * spec: (none) * summary: Renders the safety alerts panel interface. * score: 2 ### component SafetyPlanDialog * file: src/cores/cl/components/SafetyPlanDialog.tsx:660 * kind: component * core: cl * spec: (none) * summary: Utility for safety plan dialog. * score: 1 ### component SafetyPlanPatientView * file: src/cores/cl/components/SafetyPlanPatientView\.tsx:152 * kind: component * core: cl * spec: (none) * summary: Utility for safety plan patient view. * score: 1 ### component SafetyPlanShareDialog * file: src/cores/cl/components/zero-suicide/SafetyPlanShareDialog.tsx:75 * kind: component * core: cl * spec: CL-07 * summary: Dialog for sharing a Zero-Suicide safety plan with the patient or theirsupport network. Offers three transmission modalities — secure 24-hourlink, PDF download, or printed copy — captures the recipient contact(when applicable), and records the share to sodisclosures are auditable. Share is permission-gated upstream. * params: * props — Dialog props. - : Whether the dialog is open. - : Callback fired when the dialog wants to close. - : The plan being shared. - : The patient's chart id (for audit context). - : Invoked after a successful share so the caller can refresh the share history panel. * score: 5 ### component ScreeningAdministrationDialog * file: src/cores/cl/components/screening/ScreeningAdministrationDialog.tsx:67 * kind: component * core: cl * spec: CL-47 * summary: Administration dialog for a behavioral-health screening instrument(PHQ-9, GAD-7, AUDIT, CIWA-Ar, etc.). Walks the clinician through theinstrument's questions step-by-step, then computes and displays thetotal score, severity band, and any positive-screen dispositionrecommendations before persisting the administration to. * params: * props — Dialog props. - : Whether the dialog is open. - : Callback fired when the dialog wants to close. - : Which screening instrument to administer. - : The patient's chart id. - : The patient receiving the screening. - : Optional encounter to link the administration to. - : User id of the administering clinician. * score: 5 ### component ScreeningTrendChart * file: src/cores/cl/components/screening/ScreeningTrendChart.tsx:37 * kind: component * core: cl * spec: CL-47 * summary: Trend chart for repeated administrations of a screening instrument onone patient chart. Plots total scores over time and overlays theinstrument-specific severity bands (minimal / mild / moderate / severe)so clinicians can see at a glance whether the patient is improving,holding, or worsening since the prior visit. * params: * props — Chart props. - : whose administrations are plotted. - : Which instrument to chart (e.g. ). * score: 5 ### component SeedTranscriptionSessionButton * file: src/cores/cl/ai-documentation/components/SeedTranscriptionSessionButton.tsx:21 * kind: component * core: cl * spec: (none) * summary: Renders an admin-gated button that creates one transcription session andthree synthetic segments for the current organization. No-op for userswithout . * score: 2 ### component ShareHistoryPanel * file: src/cores/cl/components/zero-suicide/ShareHistoryPanel.tsx:75 * kind: component * core: cl * spec: CL-07 * summary: History of every share of a Zero-Suicide safety plan. Lists each sharerow with method (secure link / PDF / print), the recipient contact whensupplied, and the timestamp — giving compliance and clinical staff asingle view of how the plan has been distributed. Gated behind via the wrapping . * params: * props — Panel props. - : The plan whose shares are listed. * score: 5 ### component SocialReferralFormDialog * file: src/cores/cl/components/SocialReferralFormDialog.tsx:41 * kind: component * core: cl * spec: (none) * summary: Utility for social referral form dialog. * score: 1 ### component StandingOrderDialog * file: src/cores/cl/components/order-sets/StandingOrderDialog.tsx:48 * kind: component * core: cl * spec: (none) * summary: Standing order create/edit dialog. * score: 2 ### component StandingOrderExecutionSheet * file: src/cores/cl/components/order-sets/StandingOrderExecutionSheet.tsx:25 * kind: component * core: cl * spec: (none) * summary: Execute a standing order and append an execution log row. * score: 2 ### component StandingOrderForm * file: src/cores/cl/components/StandingOrderForm.tsx:32 * kind: component * core: cl * spec: (none) * summary: Renders the standing order form interface. * score: 2 ### component StandingOrderList * file: src/cores/cl/components/order-sets/StandingOrderList.tsx:37 * kind: component * core: cl * spec: (none) * summary: Standing order list. * score: 1 ### component StandingOrderListMobile * file: src/cores/cl/components/order-sets/StandingOrderList.mobile.tsx:52 * kind: component * core: cl * spec: (none) * summary: Mobile card list of standing orders. * score: 2 ### component StandingOrderManagementPage * file: src/cores/cl/pages/StandingOrderManagementPage.tsx:26 * kind: component * core: cl * spec: (none) * summary: Standing orders administration page. * score: 2 ### component StandingOrderProtocolsPage * file: src/cores/cl/pages/StandingOrderProtocolsPage.tsx:21 * kind: component * core: cl * spec: (none) * summary: Utility for standing order protocols page. * score: 1 ### component StandingOrderRenewDialog * file: src/cores/cl/components/order-sets/StandingOrderRenewDialog.tsx:29 * kind: component * core: cl * spec: (none) * summary: Renewal dialog for clinical standing orders. * score: 2 ### component SupervisorPanelsPage * file: src/cores/cl/pages/population-health/SupervisorPanelsPage.tsx:25 * kind: component * core: cl * spec: (none) * summary: Supervisor Panels page — overview of all clinician panels. * score: 2 ### component SuprtCaptureDialog * file: src/cores/cl/components/outcomes/SuprtCaptureDialog.tsx:188 * kind: component * core: cl * spec: (none) * summary: SUPRT capture dialog: renders SUPRT-A (admin auto-populate) and SUPRT-C(outstanding self-report) items from the CL-47 instrument library andsubmits as a longitudinal outcome episode via . CL-69 AC-3 * score: 2 ### component SurfaceTemplateBuilder * file: src/cores/cl/components/blocks/SurfaceTemplateBuilder.tsx:40 * kind: component * core: cl * spec: (none) * summary: The admin surface-template builder. * score: 2 ### component SurfaceTemplateBuilderView * file: src/cores/cl/components/blocks/SurfaceTemplateBuilderView\.tsx:64 * kind: component * core: cl * spec: (none) * summary: Render the admin surface-template composition UI. * score: 2 ### component SurfaceTemplatesPage * file: src/cores/cl/pages/SurfaceTemplatesPage.tsx:22 * kind: component * core: cl * spec: (none) * summary: Surface templates management page. * score: 2 ### component TbScreeningDueBadge * file: src/cores/cl/components/blocks/ros-exam/RosExamIndicators.tsx:45 * kind: component * core: cl * spec: (none) * summary: Residential-admission TB-screening-due indicator (AC-12). Renders nothing whenthe jurisdiction profile resolves no window () — there isno hardcoded fallback window. * score: 2 ### component TechnologyCheckSheet * file: src/cores/cl/components/virtual-group/TechnologyCheckSheet.tsx:80 * kind: component * core: cl * spec: (none) * summary: Pre-session technology check sheet for virtual group therapy. * params: * props — Component props - open: Controls sheet visibility - onOpenChange: Callback when sheet visibility changes - onComplete: Callback when all checks are completed * returns: Sheet component with technology checklist * score: 2 ### component TefcaExchangeDetailDialog * file: src/cores/cl/components/tefca/TefcaExchangeDetailDialog.tsx:35 * kind: component * core: cl * spec: (none) * summary: Detail dialog for a TEFCA exchange log entry. * score: 2 ### component TefcaExchangeFilters * file: src/cores/cl/components/tefca/TefcaExchangeFilters.tsx:31 * kind: component * core: cl * spec: (none) * summary: Filter bar for TEFCA exchange list. * score: 2 ### component TefcaKpiStrip * file: src/cores/cl/components/tefca/TefcaKpiStrip.tsx:19 * kind: component * core: cl * spec: (none) * summary: KPI strip showing exchange status counts. * score: 2 ### component TefcaMatchReviewQueue * file: src/cores/cl/components/tefca/TefcaMatchReviewQueue.tsx:24 * kind: component * core: cl * spec: (none) * summary: Manual review queue for below-threshold patient match candidates. * score: 2 ### component TefcaOperationsPage * file: src/cores/cl/pages/TefcaOperationsPage.tsx:35 * kind: component * core: cl * spec: (none) * summary: TEFCA operations list page. * score: 1 ### component TefcaStatusBadge * file: src/cores/cl/components/tefca/TefcaStatusBadge.tsx:23 * kind: component * core: cl * spec: (none) * summary: Renders a styled badge for TEFCA exchange status. * score: 2 ### component TelehealthConnectivityIssueDialog * file: src/cores/cl/components/telehealth/TelehealthConnectivityIssueDialog.tsx:58 * kind: component * core: cl * spec: CL-24 * summary: Dialog for logging a mid-session connectivity issue against a telehealthsession. Persists via , which appends to the JSONB column with a client-side cap of 50 entries. * params: * props — Dialog props. - : Whether the dialog is open. - : Callback fired when the dialog wants to close. - : to append the issue to. * score: 5 ### component TelehealthConsentCaptureDialog * file: src/cores/cl/components/telehealth/TelehealthConsentCaptureDialog.tsx:83 * kind: component * core: cl * spec: CL-24 * summary: Dialog for capturing a new telehealth consent (general or audio-only) fora patient chart. Renders the jurisdictionally-correct consent language,captures the method, and persists via . Thee-signature tab is rendered disabled until PF-33 digital signatures areavailable; the rest of the flow is fully functional today. * params: * props — Dialog props. - : Whether the dialog is open. - : Callback fired when the dialog wants to close. - : to attach consent to. - : Org jurisdiction code (e.g. ) — drives which consent-language version is shown. - : Pre-selected consent type radio value; defaults to . * score: 5 ### component TelehealthSafetyChecklistSheet * file: src/cores/cl/components/telehealth/TelehealthSafetyChecklistSheet.tsx:65 * kind: component * core: cl * spec: CL-24 * summary: Renders the pre-session safety checklist Sheet for a telehealth session.Persists via once all required toggles areset (block mode) or any toggle is set (warn-only mode). The CTA exposes a44px touch target so the form is comfortable on mobile devices. * params: * props — Sheet props. - : Whether the sheet is open. - : Callback fired when the sheet wants to close. - : to mark complete. - : When , the CTA only enables once the three required items are set; when , any one item enables it. * score: 5 ### component TemplateSelectStep * file: src/cores/cl/components/TemplateSelectStep.tsx:34 * kind: component * core: cl * spec: (none) * summary: Utility for template select step. * score: 1 ### component TraumaAssessmentForm * file: src/cores/cl/components/TraumaAssessmentForm.tsx:135 * kind: component * core: cl * spec: (none) * summary: Utility for trauma assessment form. * score: 1 ### component TraumaResultAlert * file: src/cores/cl/components/TraumaResultAlert.tsx:28 * kind: component * core: cl * spec: (none) * summary: Renders a destructive alert when the PCL-5 score meets or exceeds theclinical alert threshold. For other trauma instruments, displays score only.Includes a disabled "Link to Treatment Plan" stub per CONTEXT.md. * score: 2 ### component TreatmentGoalForm * file: src/cores/cl/components/TreatmentGoalForm.tsx:44 * kind: component * core: cl * spec: (none) * summary: Utility for treatment goal form. * score: 1 ### component TreatmentInterventionForm * file: src/cores/cl/components/TreatmentInterventionForm.tsx:41 * kind: component * core: cl * spec: (none) * summary: Renders the treatment intervention form interface. * score: 2 ### component TreatmentPlanDetailPage * file: src/cores/cl/pages/TreatmentPlanDetailPage.tsx:96 * kind: component * core: cl * spec: (none) * summary: Utility for treatment plan detail page. * score: 1 ### component TreatmentPlanForm * file: src/cores/cl/components/TreatmentPlanForm.tsx:52 * kind: component * core: cl * spec: (none) * summary: Renders the treatment plan form interface. * score: 2 ### component TreatmentPlanListPage * file: src/cores/cl/pages/TreatmentPlanListPage.tsx:46 * kind: component * core: cl * spec: (none) * summary: Utility for treatment plan list page. * score: 1 ### component TreatmentPlanSignatures * file: src/cores/cl/components/TreatmentPlanSignatures.tsx:38 * kind: component * core: cl * spec: (none) * summary: Renders the treatment plan signatures interface. * score: 2 ### component TriggerNotificationButton * file: src/cores/cl/components/TriggerNotificationButton.tsx:36 * kind: component * core: cl * spec: (none) * summary: Renders the trigger notification button interface. * score: 2 ### component UdsOrderListPage * file: src/cores/cl/pages/UdsOrderListPage.tsx:28 * kind: component * core: cl * spec: (none) * summary: Utility for uds order list page. * score: 1 ### component UdsOrderStatusBadge * file: src/cores/cl/components/uds/UdsOrderStatusBadge.tsx:26 * kind: component * core: cl * spec: (none) * summary: Utility for uds order status badge. * score: 1 ### component UdsResultsSection * file: src/cores/cl/components/uds/UdsResultsSection.tsx:36 * kind: component * core: cl * spec: (none) * summary: Utility for uds results section. * score: 1 ### component UMAnalyticsPage * file: src/cores/cl/pages/UMAnalyticsPage.tsx:13 * kind: component * core: cl * spec: (none) * summary: UM analytics dashboard. * score: 1 ### component UMDashboardPage * file: src/cores/cl/pages/UMDashboardPage.tsx:37 * kind: component * core: cl * spec: (none) * summary: UM dashboard landing page. * score: 1 ### component UpdateBanner * file: src/cores/cl/components/marketplace/UpdateBanner.tsx:30 * kind: component * core: cl * spec: (none) * summary: Renders an inline notification banner when an imported bundle has a newerversion available in the marketplace.Displays the bundle name, current version, and latest version, with a"View Update" button to trigger the import preview dialog. * params: * bundleName — Display name of the bundle. * currentVersion — The version number currently imported by the org. * latestVersion — The newest available version in the marketplace. * onViewUpdate — Callback invoked when the user clicks "View Update". Typically opens the import preview sheet. * returns: A styled info banner with version details and action button. * score: 2 ### component VarianceDialog * file: src/cores/cl/components/pathways/VarianceDialog.tsx:44 * kind: component * core: cl * spec: CL-42 * summary: Dialog for documenting a variance against a clinical pathway milestone.Requires a categorical reason code plus free-text rationale so thevariance is auditable; persists via . Used when amilestone is skipped, deferred, or otherwise deviates from the templatetimeline and the clinician needs to record why. * params: * props — Dialog props. - : Whether the dialog is open. - : Callback fired when the dialog wants to close. - : The patient pathway enrollment id. - : The milestone the variance applies to. * score: 5 ### component VitalSignsForm * file: src/cores/cl/components/VitalSignsForm.tsx:62 * kind: component * core: cl * spec: (none) * summary: Renders the vital signs form interface. * score: 2 ### component VitalsTrendChart * file: src/cores/cl/components/VitalsTrendChart.tsx:39 * kind: component * core: cl * spec: (none) * summary: Plots chart vital-sign trends with metric selection and high/low reference guides. * score: 2 ### component WarmHandoffFormDialog * file: src/cores/cl/components/discharge/WarmHandoffFormDialog.tsx:36 * kind: component * core: cl * spec: (none) * summary: Utility for warm handoff form dialog. * score: 1 ### component WenoAdapterSettingsCard * file: src/cores/cl/components/WenoAdapterSettingsCard.tsx:34 * kind: component * core: cl * spec: (none) * summary: Public component — permission-gated wrapper. * score: 2 ### component WenoAltPharmacyFlag * file: src/cores/cl/components/WenoAltPharmacyFlag.tsx:35 * kind: component * core: cl * spec: (none) * summary: Warning badge + permission-gated toggle for the WENO alternative-pharmacycheck-in flag. The toggle updates for the chart (org-scoped) and invalidates the chart detail query so thebadge updates immediately. Permission-gated by . * score: 2 ### component WenoCredentialsCard * file: src/cores/cl/components/WenoCredentialsCard.tsx:32 * kind: component * core: cl * spec: (none) * summary: Public component — permission-gated wrapper. * score: 2 ### component WenoPrescribeDialog * file: src/cores/cl/components/WenoPrescribeDialog.tsx:73 * kind: component * core: cl * spec: (none) * summary: Dialog that collects the prescriber-supplied fields (address, phone, pharmacy)not held on the chart, builds a ComposeRxPayload from the patient, requests aWENO launch URL via the adapter, and embeds the WENO ComposeRx surface. SUDPart 2 consent is enforced server-side by the launch function via the chart id. * score: 2 ### component WenoRxLogDialog * file: src/cores/cl/components/WenoRxLogDialog.tsx:32 * kind: component * core: cl * spec: (none) * summary: Dialog that requests a fresh WENO RxLog launch URL when opened and embeds it.The URL carries the encrypted launch payload, so it is fetched per-open andnever cached (staleTime/gcTime 0). * score: 2 ### component WenoSyncButton * file: src/cores/cl/components/WenoSyncButton.tsx:35 * kind: component * core: cl * spec: (none) * summary: Button that invokes for the current organization and, onsuccess, invalidates the chart medication query so newly synced/cancelledprescriptions appear immediately. Permission-gated by . * score: 2 ### component ZCodeSelectorDialog * file: src/cores/cl/components/ZCodeSelectorDialog.tsx:43 * kind: component * core: cl * spec: (none) * summary: Renders the zcode selector dialog interface. * score: 2 ## Functions & utilities ### function addBusinessDays * file: src/cores/cl/utils/incidentDeadline.ts:76 * kind: function * core: cl * spec: (none) * summary: Advance by N business days respecting business-day config.Holiday calendar is currently a no-op (deferred per CONTEXT.md). * score: 4 ### function addDays * file: src/cores/cl/utils/review-scheduling.ts:16 * kind: function * core: cl * spec: (none) * summary: Add days to a date and return ISO date string (YYYY-MM-DD). * score: 4 ### function addOrgBlockToSurface * file: src/cores/cl/services/blocks/surfaceTemplateAdmin.ts:160 * kind: function * core: cl * spec: (none) * summary: Add an org-optional block to a surface (creates the org template on first add). * score: 4 ### function allAttendeesHaveConsent * file: src/cores/cl/utils/recording-consent.ts:77 * kind: function * core: cl * spec: (none) * summary: Checks whether all attendees in a session have captured recording consent.Required before recording can be enabled per ARS 13-3005. * score: 4 ### function applyMinimumNecessaryFilter * file: src/cores/cl/services/tefcaMinimumNecessary.ts:70 * kind: function * core: cl * spec: (none) * summary: Filters a record object to include only fields in allowed categories.Categories map to field prefixes or exact field names. * score: 4 ### function assertDisclosureComplete * file: src/cores/cl/lib/dsiDisclosureCompleteness.ts:150 * kind: function * core: cl * spec: (none) * summary: Assert that a disclosure row is complete for its dsi\_type. * score: 4 ### function autopopulateSuprtA * file: src/cores/cl/lib/outcomes/suprt-autopopulate.ts:72 * kind: function * core: cl * spec: (none) * summary: Pre-fill SUPRT-A items from existing chart administrative fields (AC-3). is the config-driven mapping (NFR-config-1: no hardcoded item codes baked into TS). An item is prefilledwhen its mapped chart field resolves to a defined, non-null value; otherwiseit is returned as outstanding. * score: 4 ### function buildAssessmentContent * file: src/cores/cl/templates/assessmentContent.ts:13 * kind: function * core: cl * spec: (none) * summary: Provides build assessment content functionality. * score: 4 ### function buildBlockDefinitions * file: src/cores/cl/services/blocks/blockDefinitionLoader.ts:41 * kind: function * core: cl * spec: (none) * summary: Stitch raw block rows + their version field-schemas into ordered definitions. * params: * slugOrder — the resolved slugs in render order (from ). * blocks — raw rows (platform + org). * versionsById — → its . * returns: one definition per resolved slug that has a block, in ; org rows win ties. * score: 4 ### function buildCcdaAllergySection * file: src/cores/cl/utils/allergy-ccda.ts:33 * kind: function * core: cl * spec: (none) * summary: Build the Allergies & Intolerances section.If any row has , the caller MUST attach thereturned to the export and write a redisclosureaudit log entry per 42 CFR Part 2 § 2.32. * score: 4 ### function buildChartContext * file: src/cores/cl/ai-documentation/lib/buildChartContext.ts:130 * kind: function * core: cl * spec: (none) * summary: Assemble a deterministic, PHI-minimized for AI chart summary.Guarantees: - Whitelist-only: only documented structured fields are included. - Psychotherapy notes (45 CFR 164.501) are excluded unconditionally. - SUD-indicated notes are excluded when is falsy (42 CFR Part 2). - No patient identifiers (name, DOB, MRN, address) are ever included. - No note free text (content, body, narrative) is ever included. - carries counts only, for prompt transparency — no note content. * score: 4 ### function buildChartSummaryPrompt * file: src/cores/cl/ai-documentation/lib/buildChartSummaryPrompt.ts:61 * kind: function * core: cl * spec: (none) * summary: Build the message pair for the chart-summary model call.Returns exactly two messages: a constant safety/system prompt and a usermessage embedding the provided . Deterministic for a givencontext — identical input always produces identical output. * score: 4 ### function buildClinicalSummary * file: src/cores/cl/utils/clinical-summary-extraction.ts:22 * kind: function * core: cl * spec: (none) * summary: Reduce a chart snapshot to the structured clinical summary payload. * score: 4 ### function buildClinicalSummaryContent * file: src/cores/cl/templates/clinicalSummaryContent.ts:20 * kind: function * core: cl * spec: (none) * summary: Provides build clinical summary content functionality. * score: 4 ### function buildComposeRxObject * file: src/cores/cl/integrations/weno/request-builder.ts:30 * kind: function * core: cl * spec: (none) * summary: Build the WENO ComposeRx wire object in the vendor's documented field order.Credentials (, , ) are injected from theserver-resolved ; never from the client payload.Empty optionals are omitted (WENO errors on empty-valued optional fields). * score: 4 ### function buildConsentContent * file: src/cores/cl/templates/consentContent.ts:20 * kind: function * core: cl * spec: (none) * summary: Provides build consent content functionality. * score: 4 ### function buildCptProposal * file: src/cores/cl/utils/groupEncounterCptProposal.ts:63 * kind: function * core: cl * spec: (none) * summary: Builds the complete CPT proposal with modifiers for a generation record. * params: * groupType — Session group type. * groupSubtype — Session group subtype. * participantCount — Number of present/partial attendees. * returns: Object with proposed\_cpt\_code and modifiers array. * score: 4 ### function buildExemptionAttestation * file: src/cores/cl/lib/ceem/minimumNecessary.ts:140 * kind: function * core: cl * spec: (none) * summary: Build the minimum-necessary attestation (FR-4). Emits ONLY the allow-listedfields; the category is included only per . * score: 4 ### function buildFuaFuiMeasureParams * file: src/cores/cl/utils/fua-fui-measure-spec.ts:53 * kind: function * core: cl * spec: (none) * summary: Hydrate from the (already PF-96-resolved) inputs.The per-field fallback to applies only to amissing single field within a *present* compliance pack; callers must stillfail safe when the whole pack is absent (see ). is the PF-96 active ruleset version (ornull/undefined ⇒ DEFAULT); is the PF-96 AC-4opt-in (or null/undefined ⇒ false). * params: * input — PF-96-resolved measure inputs. * score: 4 ### function buildGroupSessionContent * file: src/cores/cl/templates/groupSessionContent.ts:13 * kind: function * core: cl * spec: (none) * summary: Provides build group session content functionality. * score: 4 ### function buildNoteContext * file: src/cores/cl/ai-documentation/lib/buildNoteContext.ts:95 * kind: function * core: cl * spec: (none) * summary: Assemble a deterministic, PHI-minimized .- Whitelist-only: only the documented narrative-drafting fields are copied; patient identifiers are never propagated.- Deterministic: stable key order and array ordering for identical input.- Absent sources are omitted (optional fields stay ); list sources default to empty arrays. * score: 4 ### function buildNotePrompt * file: src/cores/cl/ai-documentation/lib/buildNotePrompt.ts:65 * kind: function * core: cl * spec: (none) * summary: Build the message pair for the note-drafting model call.Returns exactly two messages: a constant safety/system prompt and a usermessage embedding the provided . Deterministic for a givencontext. * score: 4 ### function buildOrgTemplateBlockRow * file: src/cores/cl/services/blocks/surfaceTemplateAdmin.ts:41 * kind: function * core: cl * spec: (none) * summary: Build the row for an org-added optional block (always ). * score: 4 ### function buildProgressNoteContent * file: src/cores/cl/templates/progressNoteContent.ts:15 * kind: function * core: cl * spec: (none) * summary: Provides build progress note content functionality. * score: 4 ### function buildRationalePrompt * file: src/cores/cl/lib/cds-rationale.ts:84 * kind: function * core: cl * spec: (none) * summary: Build the LLM prompt for a CDS rationale explanation.PHI contract: accepts ONLY rule metadata — never alert.message, chart\_id,patient name, DOB, MRN, SSN, or any other patient identifier. * params: * input — Rule metadata (alert\_type, severity, and optional rule info) * returns: systemPrompt + userMessage to pass to the AI provider * score: 4 ### function buildRedisclosureNotice * file: src/cores/cl/services/tefcaRedisclosureNotice.ts:32 * kind: function * core: cl * spec: (none) * summary: Builds a 42 CFR Part 2 redisclosure notice for attachment tooutbound TEFCA exchange payloads containing SUD-protected data. * score: 4 ### function buildRxLogObject * file: src/cores/cl/integrations/weno/request-builder.ts:95 * kind: function * core: cl * spec: (none) * summary: WENO's RxLog launch payload is exactly two fields — the user's credentials.Which prescriber's log is shown is determined by these credentials. * score: 4 ### function buildSafetyPlanContent * file: src/cores/cl/templates/safetyPlanContent.ts:13 * kind: function * core: cl * spec: (none) * summary: Provides build safety plan content functionality. * score: 4 ### function buildTreatmentPlanContent * file: src/cores/cl/templates/treatmentPlanContent.ts:13 * kind: function * core: cl * spec: (none) * summary: Provides build treatment plan content functionality. * score: 4 ### function buildTreatmentPlanPrompt * file: src/cores/cl/ai-treatment-plan/lib/buildTreatmentPlanPrompt.ts:75 * kind: function * core: cl * spec: (none) * summary: Build PHI-minimized prompt messages for treatment-plan AI drafting.Returns exactly 2 messages: system + user.The user message contains only icd10\_code + description from active problemsand prior goal text for continuity context. * score: 4 ### function buildWenoUrl * file: src/cores/cl/integrations/weno/crypto.ts:57 * kind: function * core: cl * spec: (none) * summary: Build a full WENO request URL. The payload must already be ordered/validatedper the endpoint schema (field order is vendor-significant). * score: 4 ### function calculateAhcccsDeadline * file: src/cores/cl/utils/incidentDeadline.ts:106 * kind: function * core: cl * spec: (none) * summary: AHCCCS Policy 961: sentinel within 1 business day, standard within 2 business days. * score: 4 ### function calculateAzdhsDeadline * file: src/cores/cl/utils/incidentDeadline.ts:57 * kind: function * core: cl * spec: (none) * summary: AZDHS licensing rule — matches trigger. * score: 4 ### function calculateDurationMinutes * file: src/cores/cl/lib/peerEncounterUtils.ts:11 * kind: function * core: cl * spec: (none) * summary: Calculate duration in minutes from start and end time strings (HH:MM format). * returns: duration in minutes, or null if invalid * score: 4 ### function calculateFollowUpWindows * file: src/cores/cl/services/followUpScheduling.ts:28 * kind: function * core: cl * spec: (none) * summary: Calculate follow-up scheduling requests for 24/48/72h windows. * params: * baseTime — The starting point (usually screening/assessment time) * returns: Array of 3 follow-up requests * score: 4 ### function calculateIncidentDeadlines * file: src/cores/cl/utils/incidentDeadline.ts:129 * kind: function * core: cl * spec: (none) * summary: Compute incident reporting deadlines per the configured regulatory track.Defaults to AZDHS-only when no settings are present (Phase 1 behavior). * score: 4 ### function calculateMatchScore * file: src/cores/cl/services/tefcaPatientMatching.ts:59 * kind: function * core: cl * spec: (none) * summary: Calculates a weighted confidence score (0..1) for a candidate match. * score: 4 ### function calculateMeasureRate * file: src/cores/cl/utils/hedisCalculation.ts:76 * kind: function * core: cl * spec: (none) * summary: Compute a measure rate as NUMERIC(5,4). Zero denominator → 0.0000.Result is clamped to \[0, 1] and rounded to 4 decimal places. * score: 4 ### function calculateNextReviewDate * file: src/cores/cl/utils/review-scheduling.ts:23 * kind: function * core: cl * spec: (none) * summary: Compute the next review due date from the prior review and schedule. * score: 4 ### function calculateNextScreeningDue * file: src/cores/cl/utils/screeningDueDate.ts:26 * kind: function * core: cl * spec: (none) * summary: Calculate the next screening due date based on risk level. * params: * riskLevel — The assessed risk level * screenedAt — When the screening was conducted (Date or ISO string) * lowRiskIntervalDays — Org setting for low-risk rescreen interval (default 30) * returns: ISO 8601 string for next\_screening\_due * score: 4 ### function calculateNoteQualityScore * file: src/cores/cl/utils/quality-score.ts:49 * kind: function * core: cl * spec: (none) * summary: Calculate documentation quality score for a progress note. * returns: Score between 0.00 and 100.00 * score: 4 ### function calculatePdc * file: src/cores/cl/utils/pdc.ts:35 * kind: function * core: cl * spec: (none) * summary: Calculate Proportion of Days Covered for a single medication. * params: * records — Adherence records for the medication (already filtered by medication\_id). * periodStartDate — Start of measurement period (ISO date string, e.g. '2026-01-01'). * periodEndDate — End of measurement period (ISO date string, e.g. '2026-03-31'). * returns: PdcResult with the calculated PDC and details. * score: 4 ### function calculateProgress * file: src/cores/cl/utils/assessment-progress.ts:25 * kind: function * core: cl * spec: (none) * summary: Calculate integer percentage of completed sections. * score: 4 ### function calculateReviewDueDate * file: src/cores/cl/utils/treatmentPlanTimeframes.ts:35 * kind: function * core: cl * spec: (none) * summary: Provides calculate review due date functionality. * score: 4 ### function calculateSlaDeadline * file: src/cores/cl/utils/notification-escalation-logic.ts:29 * kind: function * core: cl * spec: (none) * summary: Returns ISO string for . Edge function uses DB now(); thishelper is for client-side previews and unit tests. * score: 4 ### function canCaptureConsent * file: src/cores/cl/utils/recording-consent.ts:21 * kind: function * core: cl * spec: (none) * summary: Checks whether consent can still be captured for an attendance record.Returns false if consent has already been captured (immutable). * score: 4 ### function checkDrugAllergies * file: src/cores/cl/utils/allergy-checking.ts:16 * kind: function * core: cl * spec: (none) * summary: Checks a drug name against active allergies and returns any alerts.Matching is case-insensitive on allergen display name. * score: 4 ### function checkMedicationInteractions * file: src/cores/cl/services/drugInteraction.ts:105 * kind: function * core: cl * spec: (none) * summary: Given medications with rxcui codes, resolve any missing rxcuisthen perform an interaction check via FDB edge function.When is set and any medication has ,calls and excludes those RxCUIs from the vendor payloadif consent is absent (FR-4.2). * score: 4 ### function checkSudConsent * file: src/cores/cl/services/tefcaConsentEnforcement.ts:91 * kind: function * core: cl * spec: (none) * summary: Checks SUD-specific consent for 42 CFR Part 2 protected records.More restrictive than general consent — requires explicit SUD consent type. * score: 4 ### function checkTefcaConsent * file: src/cores/cl/services/tefcaConsentEnforcement.ts:28 * kind: function * core: cl * spec: (none) * summary: Checks whether a valid, active consent exists for the given chartthat covers TEFCA data exchange (TPO or specific consent type).Fail-closed: returns allowed: false if any error occurs during lookup. * score: 4 ### function classifyPdc * file: src/cores/cl/utils/pdc.ts:78 * kind: function * core: cl * spec: (none) * summary: Classify PDC into adherence categories.PDC ≥ 80% is generally considered adherent. * score: 4 ### function cmToFeetInches * file: src/cores/cl/hooks/useMeasurementUnit.ts:29 * kind: function * core: cl * spec: (none) * summary: Convert cm to feet and inches * score: 1 ### function computeAsamRecommendation * file: src/cores/cl/utils/loc-scoring.ts:56 * kind: function * core: cl * spec: (none) * summary: ASAM LOC recommendation based on dimensional profile.The algorithm uses the highest dimension score and total score todetermine recommended level of care. This follows published ASAMCriteria dimensional matching (simplified for algorithmic scoring). * score: 4 ### function computeAvailableBlocks * file: src/cores/cl/services/blocks/surfaceTemplateAdmin.ts:56 * kind: function * core: cl * spec: (none) * summary: The blocks still addable: neither already-required nor already-added by the org. * score: 4 ### function computeLocRecommendation * file: src/cores/cl/utils/loc-scoring.ts:159 * kind: function * core: cl * spec: (none) * summary: Unified scoring dispatcher based on instrument type. * score: 4 ### function computeLocusRecommendation * file: src/cores/cl/utils/loc-scoring.ts:112 * kind: function * core: cl * spec: (none) * summary: LOCUS LOC recommendation based on dimensional profile.The LOCUS uses a composite score (sum of 6 dimensions, each 1-5)mapped to six levels of care. * score: 4 ### function computeMaxDimensionScore * file: src/cores/cl/utils/loc-scoring.ts:42 * kind: function * core: cl * spec: (none) * summary: Find the highest individual dimension score. * score: 4 ### function computeMmseScore * file: src/cores/cl/utils/cognitiveScoring.ts:88 * kind: function * core: cl * spec: (none) * summary: Sum MMSE item responses (item\_1..item\_11) across 5 domains. Max score: 30.Items have varying point values per domain. * example: | // De-identified: orientation items each 1 pointcomputeMmseScore( item\_1: 5, item\_2: 5, ..., item\_11: 1 ) // → 30 * score: 4 ### function computeMocaScore * file: src/cores/cl/utils/cognitiveScoring.ts:33 * kind: function * core: cl * spec: (none) * summary: Sum MoCA item responses (item\_1..item\_30), each 0 or 1. Max score: 30.Apply +1 education adjustment when yearsOfSchooling ≤ threshold (default 12).Cap total at 30. * example: | // De-identified: all items answered 1 with 10 years schoolingcomputeMocaScore( item\_1: 1, ..., item\_30: 1 , 10) // → 30 (capped) * score: 4 ### function computePerformanceRate * file: src/cores/cl/services/qualityMeasureEngine.ts:131 * kind: function * core: cl * spec: (none) * summary: Pure helper: eCQM performance rate = numerator / (denominator − exclusions − exceptions),rounded to 4 decimals; when there is no eligible population. Mirrors the DB'sderivation so callers can preview a rate before persisting (NFR-reliability-1 parity). * score: 4 ### function computeScore * file: src/cores/cl/utils/assessmentScoring.ts:11 * kind: function * core: cl * spec: (none) * summary: Compute a numeric score from instrument scoring rules and section responses. * score: 4 ### function computeSlumsScore * file: src/cores/cl/utils/cognitiveScoring.ts:69 * kind: function * core: cl * spec: (none) * summary: Sum SLUMS item responses (item\_1..item\_11). Max score: 30.Items have varying point values per the instrument. * example: | // De-identified: perfect scorecomputeSlumsScore( item\_1: 1, item\_2: 1, ..., item\_11: 5 ) // → 30 * score: 4 ### function computeTotalScore * file: src/cores/cl/utils/loc-scoring.ts:32 * kind: function * core: cl * spec: (none) * summary: Compute total score from dimension scores.Returns the sum of all dimension scores. * score: 4 ### function createAbnormalResultAlert * file: src/cores/cl/hooks/useCdsLabMonitoring.ts:141 * kind: function * core: cl * spec: (none) * summary: Create a CDS alert for an abnormal lab result.Called from the result ingestion pipeline or from result display. * score: 4 ### function createCrisisNotification * file: src/cores/cl/hooks/usePatientSubmissionInbasket.ts:120 * kind: function * core: cl * spec: (none) * summary: Creates PF-10 crisis\_alert notifications for org staff/admins (fan-out, capped at 10).Fire-and-forget: failures are silently ignored. * score: 4 ### function createInbasketForCheckin * file: src/cores/cl/hooks/usePatientSubmissionInbasket.ts:83 * kind: function * core: cl * spec: (none) * summary: Creates an urgent in-basket item for a crisis-flagged check-in. * score: 4 ### function createInbasketForSubmission * file: src/cores/cl/hooks/usePatientSubmissionInbasket.ts:40 * kind: function * core: cl * spec: (none) * summary: Creates an in-basket item for a new patient submission.If crisis is detected, creates an urgent item instead. * score: 4 ### function daysRemainingInWindow * file: src/cores/cl/utils/hedis-flags.ts:136 * kind: function * core: cl * spec: (none) * summary: Calculate days remaining in a follow-up window. * returns: negative if overdue * score: 4 ### function daysUntilDue * file: src/cores/cl/utils/review-scheduling.ts:43 * kind: function * core: cl * spec: (none) * summary: Days until (or past, if negative) the review due date. * score: 4 ### function decryptWenoData * file: src/cores/cl/integrations/weno/crypto.ts:35 * kind: function * core: cl * spec: (none) * summary: Decrypt the parameter back to the original JSON string (debug/verify). * score: 4 ### function defaultLanguageVersionFor * file: src/cores/cl/data/telehealth-consent-language/index.ts:30 * kind: function * core: cl * spec: (none) * summary: Maps an organization's jurisdiction (from orsettings) to the default consent-language version. Falls back to thefederal-floor US version when the jurisdiction isn't AZ. * score: 4 ### function deriveActiveOverlays * file: src/cores/cl/hooks/blocks/useActiveAccreditationOverlays.ts:58 * kind: function * core: cl * spec: (none) * summary: Derive the active overlay-tag set from a result: the recognized accreditation bodies (lowercased), plus when — and only when — the resolver reports the CMS-psych-hospital tenantsignal as literally (fail-closed for any other value). * params: * result — the RPC payload (or null when none / on error). * returns: the set of active overlay tags. * score: 4 ### function deriveConfidentialityCode * file: src/cores/cl/lib/ds4p/confidentiality.ts:56 * kind: function * core: cl * spec: (none) * summary: Derives the HL7 confidentiality code for a clinical payload.Matrix (per the DS4P IG + 42 CFR Part 2):- / → - (HIPAA TPO, non-SUD) → - (HIV, mental health) → ( when consent-restricted)- → ( when consent-restricted)- break-glass → - segmentation unresolved / unknown class → (fail-closed)Part 2 data is never — the floor is . * score: 4 ### function deriveNkaStatus * file: src/cores/cl/utils/allergy-checking.ts:60 * kind: function * core: cl * spec: (none) * summary: Derives the NKA status from a chart's allergy list.Returns 'has\_allergies' if any active allergies exist,'not\_reviewed' if the list is empty (no explicit NKA confirmation). * score: 4 ### function deriveSecurityLabels * file: src/cores/cl/lib/ds4p/security-labels.ts:57 * kind: function * core: cl * spec: (none) * summary: Derives a complete DS4P security-label set for a clinical payload.Part 2-protected (or break-glass) data always receives the federal floor: + sensitivity codes, the obligation, the § 2.32notice, and . Non-sensitive data receives onlyits confidentiality code with no sensitivity/obligation markings. * score: 4 ### function deriveSuiteContext * file: src/cores/cl/hooks/blocks/useSuicideSuite.ts:65 * kind: function * core: cl * spec: (none) * summary: Derive the suite context from org overlays + jurisdiction clinical rules (pure). * score: 4 ### function detectOverlaps * file: src/cores/cl/utils/overlap-detection.ts:34 * kind: function * core: cl * spec: (none) * summary: Detect overlapping service times among a list of notes for the same clinician.Notes must share the same and to overlap. * score: 4 ### function dropOptionalEmpty * file: src/cores/cl/integrations/weno/validators.ts:152 * kind: function * core: cl * spec: (none) * summary: Strip optional nulls/empty strings/empty arrays so we don't emit them to the vendor. * score: 4 ### function encryptWenoData * file: src/cores/cl/integrations/weno/crypto.ts:28 * kind: function * core: cl * spec: (none) * summary: Encrypt a payload object → URL-safe parameter value. * score: 4 ### function ensureOrgSurfaceTemplate * file: src/cores/cl/services/blocks/surfaceTemplateAdmin.ts:88 * kind: function * core: cl * spec: (none) * summary: Get-or-create the org's active surface template for a surface; returns its id. * score: 4 ### function escapeXml * file: src/cores/cl/utils/cda/escape.ts:5 * kind: function * core: cl * spec: (none) * summary: Shared XML escaping helper for CDA section builders.Mirrors the helper used in (CL-45). * score: 4 ### function evaluateCdsRules * file: src/cores/cl/lib/cds-evaluate.ts:29 * kind: function * core: cl * spec: (none) * summary: Utility for evaluate cds rules. * score: 1 ### function evaluateChartSummaryClientGate * file: src/cores/cl/ai-documentation/lib/evaluateChartSummaryClientGate.ts:43 * kind: function * core: cl * spec: (none) * summary: Evaluate the fail-closed client gate for the AI chart-summary affordance. * returns: when all preconditions hold; otherwise naming the first failed condition. * score: 4 ### function evaluateChartSummaryGate * file: src/cores/cl/ai-documentation/lib/evaluateChartSummaryGate.ts:49 * kind: function * core: cl * spec: (none) * summary: Evaluate the fail-closed chart-summary generation gate. * returns: when all preconditions hold; otherwise naming the first failed condition. * score: 4 ### function evaluateCohortRules * file: src/cores/cl/utils/cohort-rule-engine.ts:247 * kind: function * core: cl * spec: (none) * summary: Evaluate a cohort criteria tree against a list of chart rows.- Empty (root with zero conditions) returns ALL chart IDs.- Otherwise returns only chart IDs whose data satisfies the rules. * score: 4 ### function evaluateGenerationGate * file: src/cores/cl/ai-documentation/lib/evaluateGenerationGate.ts:43 * kind: function * core: cl * spec: (none) * summary: Evaluate the fail-closed generation gate. * returns: when all preconditions hold; otherwise naming the first failed condition. * score: 4 ### function evaluateMmseThreshold * file: src/cores/cl/utils/cognitiveScoring.ts:162 * kind: function * core: cl * spec: (none) * summary: Evaluate MMSE score against education-stratified cutoffs. * params: * score — MMSE total score (0–30) * thresholds — MMSE threshold configuration from scoring\_rules * educationLevel — 'illiterate' | 'primary' | 'secondary\_plus' * score: 4 ### function evaluateMocaThreshold * file: src/cores/cl/utils/cognitiveScoring.ts:106 * kind: function * core: cl * spec: (none) * summary: Evaluate MoCA score against population-specific thresholds. * params: * score — Adjusted MoCA score (0–30) * thresholds — MoCA threshold configuration from scoring\_rules * population — Population key (default, geriatric, sud, geriatric\_tbi) * score: 4 ### function evaluateRationaleGate * file: src/cores/cl/lib/cds-rationale.ts:121 * kind: function * core: cl * spec: (none) * summary: Gate evaluation: both PHI lane and DSI disclosure must be in place.Fail-closed: any missing precondition blocks the LLM call. * params: * config — Current configuration state * returns: or * score: 4 ### function evaluateSlumsThreshold * file: src/cores/cl/utils/cognitiveScoring.ts:130 * kind: function * core: cl * spec: (none) * summary: Evaluate SLUMS score against education-stratified thresholds. * params: * score — SLUMS total score (0–30) * thresholds — SLUMS threshold configuration from scoring\_rules * highEducation — true if ≥ 12 years schooling * score: 4 ### function evaluateVitalThresholds * file: src/cores/cl/services/vitalsTrendService.ts:74 * kind: function * core: cl * spec: (none) * summary: Evaluate a single vital sign record against thresholds.Returns an array of findings (empty = all normal). * params: * thresholds — Org-configurable thresholds; defaults to DEFAULT\_VITAL\_THRESHOLDS so callers without org settings are unchanged. * score: 4 ### function feetInchesToCm * file: src/cores/cl/hooks/useMeasurementUnit.ts:37 * kind: function * core: cl * spec: (none) * summary: Convert feet and inches to cm * score: 1 ### function filterPortalMeasures * file: src/cores/cl/utils/portalQmConfig.ts:77 * kind: function * core: cl * spec: (none) * summary: Apply org-configurable measure-set filter and 42 CFR Part 2 SUD consentgating to a patient's outcome measures. Returns the visible set plus acount of measures hidden by consent so the UI can show a generic noticewithout revealing PHI. * score: 4 ### function filterPsychotherapyNotes * file: src/cores/cl/ai-documentation/lib/filterPsychotherapyNotes.ts:47 * kind: function * core: cl * spec: (none) * summary: Return only the notes that are NOT psychotherapy process notes.Psychotherapy notes are excluded (not included) per 45 CFR 164.501.This function is the enforcement point for AI chart-summary context assembly. * score: 4 ### function findExistingImportItem * file: src/cores/cl/utils/marketplace/idempotency.ts:26 * kind: function * core: cl * spec: (none) * summary: Returns the rollback-snapshot fragment for a previously imported item,or null if no completed import exists for this org / bundle / item. * score: 4 ### function findMinimumNecessaryViolations * file: src/cores/cl/lib/ds4p/ceem-exemption-profile.ts:170 * kind: function * core: cl * spec: (none) * summary: Validates a candidate disclosure payload against the minimum-necessarycontract. Returns the list of violation TYPES (never values — no PHI). Anempty list means the payload is minimum-necessary clean. * score: 4 ### function flattenInstrumentItems * file: src/cores/cl/lib/outcomes/suprt-autopopulate.ts:35 * kind: function * core: cl * spec: (none) * summary: Flatten an instrument's into a flat item list,carrying each item's domain and the domain's SUD-derived flag. Tolerant of amissing/malformed (returns ). * score: 4 ### function formatCdaTime * file: src/cores/cl/utils/cda/escape.ts:16 * kind: function * core: cl * spec: (none) * summary: Format an ISO date as a CDA effectiveTime value (). * score: 4 ### function formatExpirationAlert * file: src/cores/cl/utils/consent-expiration.ts:51 * kind: function * core: cl * spec: (none) * summary: Formats an expiration alert message per CONTEXT.md phrasing. * score: 4 ### function formatHeight * file: src/cores/cl/hooks/useMeasurementUnit.ts:43 * kind: function * core: cl * spec: (none) * summary: Format cm as a display string in the preferred unit * score: 4 ### function formatPdc * file: src/cores/cl/utils/pdc.ts:70 * kind: function * core: cl * spec: (none) * summary: Format PDC as a percentage string (e.g. "85%"). * score: 4 ### function formatWaist * file: src/cores/cl/hooks/useMeasurementUnit.ts:58 * kind: function * core: cl * spec: (none) * summary: Format waist cm as a display string in the preferred unit * score: 4 ### function formatWeight * file: src/cores/cl/hooks/useMeasurementUnit.ts:52 * kind: function * core: cl * spec: (none) * summary: Format kg as a display string in the preferred unit * score: 4 ### function generateChartSummaryHandler * file: src/cores/cl/ai-documentation/lib/generateChartSummaryHandler.ts:125 * kind: function * core: cl * spec: (none) * summary: Generate an AI chart summary, fail-closed.Flow: 1. getModuleSettings → gate check (aiEnabled) 2. getChartSummaryDisclosure → gate check (disclosurePublished; null = fail closed) 3. getPatientOptOut → gate check 4. phiLaneConfigured from input → gate check 5. evaluateChartSummaryGate → if denied return ok:false gate:reason 6. checkSudConsent → if false return ok:false gate:'sud\_consent' 7. loadChartContextRows → buildChartContext (psychotherapy excluded) 8. buildChartSummaryPrompt → ai.generateSummary 9. getCurrentVersion → version + 110. writeChartSummaryMetadata (ai\_summary\_ready=true, last\_summary\_at=now, version++)11. Return ok:true with meta+summary — summary text NEVER in audit payloadReturns without calling the model or writing metadatawhen any precondition fails. * score: 4 ### function generateDraftHandler * file: src/cores/cl/ai-documentation/lib/generateDraftHandler.ts:141 * kind: function * core: cl * spec: (none) * summary: Generate a progress-note draft, fail-closed.Returns (without calling the model or persisting) whenany precondition fails; otherwise . * score: 4 ### function generateRedisclosureNotice * file: src/cores/cl/utils/redisclosure-notice.ts:15 * kind: function * core: cl * spec: (none) * summary: Generates the federally-mandated redisclosure prohibition notice.Per 42 CFR Part 2 § 2.32, this language must accompany alldisclosures of substance use disorder patient records. * score: 4 ### function generateTreatmentPlanDraftHandler * file: src/cores/cl/ai-treatment-plan/lib/generateTreatmentPlanDraftHandler.ts:134 * kind: function * core: cl * spec: (none) * summary: Generate a treatment-plan draft, fail-closed.Returns (without calling the model or persisting) whenany precondition fails; otherwise .plan\_type, service\_line, and effective\_date in the persisted data always comefrom (the session context), never from model output. * score: 4 ### function getActualAttendanceMinutes * file: src/cores/cl/utils/groupEncounterDuration.ts:20 * kind: function * core: cl * spec: (none) * summary: Calculates actual attendance duration in minutes. * params: * startTime — ISO 8601 start time (sign-in or session start). * endTime — ISO 8601 end time (sign-out or session end). May be null for partial attendance. * sessionEndTime — ISO 8601 session end time, used as fallback when endTime is null. * returns: Duration in minutes, or null if calculation is not possible. * score: 4 ### function getAllowedCategories * file: src/cores/cl/services/tefcaMinimumNecessary.ts:55 * kind: function * core: cl * spec: (none) * summary: Returns the list of allowed data categories for a given purpose of use. * score: 4 ### function getBlockVersionSchema * file: src/cores/cl/services/blocks/blockDefinitionLoader.ts:121 * kind: function * core: cl * spec: (none) * summary: Fetch one block version's immutable by id — used to render anote against the version it was snapshotted under when the block has since beenrepublished (CL-75 AC-2 / FR-5). Versions are immutable, so this is cacheableindefinitely. * params: * versionId — the snapshotted . * client — injectable Supabase-shaped client (defaults to the app client). * returns: the version's field schema, or null on error / not found (caller falls back to current). * score: 4 ### function getClinicalAlertThreshold * file: src/cores/cl/utils/traumaScoring.ts:123 * kind: function * core: cl * spec: (none) * summary: Extract clinical alert threshold from instrument scoring\_rules.Returns the threshold value only when alert\_enabled is true. * score: 4 ### function getConsentLanguage * file: src/cores/cl/data/telehealth-consent-language/index.ts:21 * kind: function * core: cl * spec: (none) * summary: Returns the consent language literal for a given version string. * score: 4 ### function getConsentModalityLabel * file: src/cores/cl/utils/recording-consent.ts:63 * kind: function * core: cl * spec: (none) * summary: Returns a human-readable label for a consent modality. * score: 4 ### function getDaysUntilExpiration * file: src/cores/cl/utils/consent-expiration.ts:17 * kind: function * core: cl * spec: (none) * summary: Returns the number of days until a consent expires.Returns null if no expiration date is set.Returns negative values for already-expired consents. * score: 4 ### function getDefaultRequiredElements * file: src/cores/cl/utils/assessment-template-merge.ts:93 * kind: function * core: cl * spec: (none) * summary: Get the default required elements for assessments.Used as fallback when no jurisdiction profile is configured. * score: 4 ### function getDimensionsForInstrument * file: src/cores/cl/utils/loc-scoring.ts:174 * kind: function * core: cl * spec: (none) * summary: Get the dimension list for the given instrument type. * score: 4 ### function getExpirationStatus * file: src/cores/cl/utils/consent-expiration.ts:30 * kind: function * core: cl * spec: (none) * summary: Determines the expiration status for UI display.- : already past expiration- : within 7 days- : within 14 days- : more than 14 days or no expiration * score: 4 ### function getMaxDimensionScoreForInstrument * file: src/cores/cl/utils/loc-scoring.ts:188 * kind: function * core: cl * spec: (none) * summary: Get the max score per dimension for an instrument. * score: 4 ### function getModifierCodes * file: src/cores/cl/utils/virtual-group-modifiers.ts:71 * kind: function * core: cl * spec: (none) * summary: Extracts just the modifier codes from suggestions (for event payloads). * score: 4 ### function getNumeratorStatus * file: src/cores/cl/utils/hedis-flags.ts:146 * kind: function * core: cl * spec: (none) * summary: Determine the numerator status for a HEDIS measure on a single aftercare plan. * score: 4 ### function getOrgSurfaceTemplate * file: src/cores/cl/services/blocks/surfaceTemplateAdmin.ts:68 * kind: function * core: cl * spec: (none) * summary: The org's active surface template for a surface, or null when none exists yet. * score: 4 ### function getOverdueMetabolicEvents * file: src/cores/cl/services/vitalsTrendService.ts:116 * kind: function * core: cl * spec: (none) * summary: Return metabolic monitoring events that are overdue.An event is overdue if status='overdue' OR (status='due' AND due\_by now). * score: 4 ### function getPatientAgeYears * file: src/cores/cl/utils/patient-age.ts:20 * kind: function * core: cl * spec: (none) * summary: Compute a patient's age in completed years from a date-of-birth string. * params: * dob — Date of birth as an ISO date string (), or /. * asOf — Reference date to compute age against. Defaults to now. * returns: Age in completed years (non-negative integer), or when is missing, unparseable, or in the future. * score: 4 ### function getPlaceOfServiceCode * file: src/cores/cl/utils/virtual-group-modifiers.ts:87 * kind: function * core: cl * spec: (none) * summary: Returns the Place of Service code for a session modality.US-AZ default profile (PF-96 fallback): virtual → 02 (Telehealth — PatientHome), hybrid → 10 (Telehealth — Other). Jurisdiction-specific Place ofService is resolved from the PF-96 profile's by callers; in-person POS depends on site type (not determined here). * score: 4 ### function getRedisclosureNoticeSummary * file: src/cores/cl/utils/redisclosure-notice.ts:54 * kind: function * core: cl * spec: (none) * summary: Returns a short-form redisclosure notice for UI preview. * score: 4 ### function getReviewFrequency * file: src/cores/cl/utils/treatmentPlanTimeframes.ts:27 * kind: function * core: cl * spec: (none) * summary: Provides get review frequency functionality. * score: 4 ### function getScreeningIntervalLabel * file: src/cores/cl/utils/screeningDueDate.ts:48 * kind: function * core: cl * spec: (none) * summary: Human-readable description of the next screening interval. * score: 4 ### function getStatusDescriptor * file: src/cores/cl/constants/status-variants.ts:240 * kind: function * core: cl * spec: (none) * summary: Look up a status descriptor by entity + status. Unknown statuses fall backto an badge with a humanised label, so the UI degrades gracefullyif the database introduces a new enum value before the map is updated. * score: 4 ### function getSurfaceBlockDefinitions * file: src/cores/cl/services/blocks/blockDefinitionLoader.ts:80 * kind: function * core: cl * spec: (none) * summary: Fetch + stitch the block definitions for a set of resolved slugs. * params: * slugs — resolved block slugs in render order. * organizationId — the current tenant (for org-customized blocks; platform rows are always readable). * client — injectable Supabase-shaped client (defaults to the app client). * returns: ordered block definitions; empty array on error (fail-closed) or no slugs. * score: 4 ### function getUrgencyBorderClass * file: src/cores/cl/components/clinicalUrgencyUtils.ts:29 * kind: function * core: cl * spec: (none) * summary: Returns a border accent class based on urgency (for card left-border styling). * score: 4 ### function getValidTransitions * file: src/cores/cl/components/problem-list/problemTransitions.ts:31 * kind: function * core: cl * spec: CL-46 * summary: Returns the set of problem statuses that can legally follow ,mirroring the BEFORE-UPDATEtrigger so UI affordances never offer a transition the database willreject. is terminal and returns an empty array. * params: * current — The problem's current status. * returns: Array of statuses that are valid next-states; empty for terminal statuses or unrecognized inputs. * score: 5 ### function getVitalsTrend * file: src/cores/cl/services/vitalsTrendService.ts:58 * kind: function * core: cl * spec: (none) * summary: Extract a time-series for a single metric from an array of vital sign rows.Returns points sorted by capturedAt ascending. * score: 4 ### function getWenoCredStatus * file: src/cores/cl/services/wenoCredentials.ts:53 * kind: function * core: cl * spec: (none) * summary: Report which WENO credentials are provisioned for an org (booleans only — never secret values). * score: 4 ### function hasActiveFilter * file: src/cores/cl/hooks/usePharmacySearch.ts:48 * kind: function * core: cl * spec: (none) * summary: A search is runnable only with a state + at least one filter selected. * score: 4 ### function hasHighSeverityAlert * file: src/cores/cl/utils/allergy-checking.ts:51 * kind: function * core: cl * spec: (none) * summary: Determines if any alerts in the list are severe or life-threatening,which should trigger a hard-stop rather than a soft warning. * score: 4 ### function hasPublishedCdsDisclosure * file: src/cores/cl/lib/cds-rationale-disclosure.ts:33 * kind: function * core: cl * spec: (none) * summary: True iff a published DSI disclosure exists among the supplied rows.Fail-closed: a null/undefined/empty list, or any non-published row, returnsfalse so the "Explain this alert" affordance stays hidden until a complianceofficer publishes the disclosure. * params: * rows — Candidate cl\_dsi\_disclosures rows (already org-scoped by RLS). * returns: Whether the CDS rationale feature is disclosure-gated open. * score: 4 ### function ingestFuaAdtEvent * file: src/cores/cl/services/fuaAdtIngest.ts:41 * kind: function * core: cl * spec: (none) * summary: Ingest a single ADT event via the hardened RPC.Maps the feed event to RPC params (which fail-closes on missing requiredfields), calls the RPC, and returns a discriminated result. A Supabase erroris sanitized at the boundary — the raw error never reaches the caller. * params: * event — Feed-facing ADT event (PF-108 stub contract). * returns: on success, else (sanitized). * score: 4 ### variable invokeExemptionDisclosureGate * file: src/cores/cl/services/ceem/disclosureGate.ts:26 * kind: variable * core: cl * spec: (none) * summary: Invoke the server-side disclosure gate. Returns the structured permit/denydecision; an is present ONLY on a permit. Fails closed — anytransport error is surfaced (the caller must treat it as non-disclosure). * score: 2 ### function isAgeEligible * file: src/cores/cl/utils/hedis-flags.ts:60 * kind: function * core: cl * spec: (none) * summary: Check if a patient's age at discharge qualifies for HEDIS FUH/FUM denominator.Delegates to with the FUH/FUM minimum age (6). * params: * patientDob — Patient date of birth (ISO string) * dischargeDate — Discharge or encounter date (ISO string) * returns: true if patient is = HEDIS\_MIN\_AGE (6) at discharge * score: 4 ### function isAgeEligibleForFloor * file: src/cores/cl/utils/hedis-flags.ts:48 * kind: function * core: cl * spec: (none) * summary: Check if a patient's age at a reference date meets a configurable minimum floor.Extracted so that EN-65 (FUH/FUM, floor = HEDIS\_MIN\_AGE = 6) and EN-66(FUA/FUI, floor = FUA\_MIN\_AGE / FUI\_MIN\_AGE = 13) share the same age logicwithout duplicating it. * params: * patientDob — Patient date of birth (ISO string) * referenceDate — Date to compute age at (ISO string) * minAge — Minimum age in whole years (inclusive) * returns: true if the patient is = minAge on referenceDate * score: 4 ### function isAtLeastAsRestrictive * file: src/cores/cl/lib/ds4p/confidentiality.ts:94 * kind: function * core: cl * spec: (none) * summary: True when is at least as restrictive as . * score: 4 ### function isCategoryAllowed * file: src/cores/cl/services/tefcaMinimumNecessary.ts:62 * kind: function * core: cl * spec: (none) * summary: Checks whether a specific data category is permitted for the given purpose. * score: 4 ### function isCognitiveInstrument * file: src/cores/cl/constants/cognitive-instruments.ts:19 * kind: function * core: cl * spec: (none) * summary: Check whether an instrument code is a cognitive screening instrument. * score: 4 ### function isConsentImmutable * file: src/cores/cl/utils/recording-consent.ts:28 * kind: function * core: cl * spec: (none) * summary: Checks whether consent is immutable (already captured and locked). * score: 4 ### function isCrisisDetected * file: src/cores/cl/utils/patientSubmissionScoring.ts:180 * kind: function * core: cl * spec: (none) * summary: Check if a score result indicates a crisis requiring escalation. * score: 4 ### function isDenominatorFua * file: src/cores/cl/utils/hedis-flags.ts:211 * kind: function * core: cl * spec: (none) * summary: Check FUA denominator eligibility: - Patient age ≥ params.fuaMinAge (NCQA SUD measure: 13+) - ED encounter in params.fuaEncounterTypes - Qualifying SUD dx: principal (MY2025) or any-position (MY2026, anyPositionSudDx=true)**NCQA compliance note:** Exact numerator criteria are human-verify-gated (compliancegate 1). The engine encodes documented NCQA MY2025/MY2026 defaults; site-leveloverrides are supplied via . CL-29-EN-66 AC-1 AC-2 * score: 4 ### function isDenominatorFuh * file: src/cores/cl/utils/hedis-flags.ts:67 * kind: function * core: cl * spec: (none) * summary: Check FUH denominator eligibility: age = 6, IP/residential discharge, qualifying MH dx. * score: 4 ### function isDenominatorFui * file: src/cores/cl/utils/hedis-flags.ts:248 * kind: function * core: cl * spec: (none) * summary: Check FUI denominator eligibility: - Patient age ≥ params.fuiMinAge (NCQA SUD measure: 13+) - Discharge from a high-intensity SUD setting: params.fuiEncounterTypes, plus FUI\_HIGH\_INTENSITY\_EXPANSION\_TYPES when params.fuiHighIntensityExpansion=true (AC-4) - Qualifying SUD dx: principal (MY2025) or any-position (MY2026)**NCQA compliance note:** Exact numerator criteria are human-verify-gated (compliancegate 1). The engine encodes documented NCQA MY2025/MY2026 defaults; site-leveloverrides are supplied via . CL-29-EN-66 AC-1 AC-2 AC-4 * score: 4 ### function isDenominatorFum * file: src/cores/cl/utils/hedis-flags.ts:83 * kind: function * core: cl * spec: (none) * summary: Check FUM denominator eligibility: age = 6, ED visit, qualifying MH dx. * score: 4 ### function isDisclosureComplete * file: src/cores/cl/lib/dsiDisclosureCompleteness.ts:77 * kind: function * core: cl * spec: (none) * summary: Check whether a disclosure row has all required fields for its dsi\_type. * params: * row — Partial cl\_dsi\_disclosures row to validate. * returns: when all required fields are populated; otherwise listing every missing field by its DB column name. * score: 4 ### function isExpiringWithin * file: src/cores/cl/utils/consent-expiration.ts:42 * kind: function * core: cl * spec: (none) * summary: Checks whether a consent is expiring within a given threshold. * score: 4 ### function isFieldRequired * file: src/cores/cl/services/blocks/blockFieldMapping.ts:61 * kind: function * core: cl * spec: (none) * summary: Whether a field is required given the active overlays. A field is required whenits names a standing basis (any non-overlay token, e.g. )or an overlay basis whose overlay is currently active — so an overlay basisraises requiredness *additively* (optional when the overlay is off, requiredwhen on) while the field stays visible (unlike , which hides). No → never required (unchanged for existing blocks). * params: * field — the block field-schema entry. * activeOverlays — overlay tags currently active for the org/encounter. * returns: true when the field is mandatory in this context. * score: 4 ### function isFieldVisible * file: src/cores/cl/services/blocks/blockFieldMapping.ts:79 * kind: function * core: cl * spec: (none) * summary: Whether a field renders given the set of active overlays. A field with no always renders; a tagged field renders when **any** of itspipe-separated tags (e.g. ) is active. * params: * field — the block field-schema entry. * activeOverlays — overlay tags currently active for the org/encounter. * returns: true when the field should be rendered. * score: 4 ### function isFollowUpEligible * file: src/cores/cl/services/followUpScheduling.ts:41 * kind: function * core: cl * spec: (none) * summary: Check if a risk level is eligible for automated follow-up scheduling. * score: 4 ### function isFollowUpQualifyingFua * file: src/cores/cl/utils/hedis-flags.ts:287 * kind: function * core: cl * spec: (none) * summary: Check if a follow-up contact meets FUA numerator criteria.FUA is ED-based (like FUM): **same-day follow-up IS included** (days = 0).Qualifies if modality is in FUA\_QUALIFYING\_MODALITIES OR(params.peerSupportQualifies && isPeerSupport) for MY2026+.**NCQA compliance note:** Same-day inclusion and exact NCQA numerator criteriaare human-verify-gated (compliance gate 1). The engine encodes documented defaults. CL-29-EN-66 AC-1 AC-2 * score: 4 ### function isFollowUpQualifyingFuh * file: src/cores/cl/utils/hedis-flags.ts:102 * kind: function * core: cl * spec: (none) * summary: Check if a follow-up contact meets FUH numerator criteria.FUH: must be in-person or telehealth, within window, NOT same day as discharge. * score: 4 ### function isFollowUpQualifyingFui * file: src/cores/cl/utils/hedis-flags.ts:324 * kind: function * core: cl * spec: (none) * summary: Check if a follow-up contact meets FUI numerator criteria.FUI is discharge-based (like FUH): **same-day follow-up is EXCLUDED** (days 0).Qualifies if modality is in FUI\_QUALIFYING\_MODALITIES OR(params.peerSupportQualifies && (isPeerSupport || isResidentialStepDown)) for MY2026+.**NCQA compliance note:** Same-day exclusion and exact NCQA numerator criteriaare human-verify-gated (compliance gate 1). The engine encodes documented defaults. CL-29-EN-66 AC-1 AC-2 * score: 4 ### function isFollowUpQualifyingFum * file: src/cores/cl/utils/hedis-flags.ts:118 * kind: function * core: cl * spec: (none) * summary: Check if a follow-up contact meets FUM numerator criteria.FUM: can be in-person, telehealth, or telephone; within window; same-day IS included. * score: 4 ### function isInAmmDenominator * file: src/cores/cl/utils/hedisCalculation.ts:46 * kind: function * core: cl * spec: (none) * summary: AMM denominator: depression dx + at least one antidepressant dispensing event. * score: 4 ### function isInAmmNumerator * file: src/cores/cl/utils/hedisCalculation.ts:55 * kind: function * core: cl * spec: (none) * summary: AMM numerator: - acute phase: ≥ 84 days of antidepressant coverage - continuation phase: ≥ 180 days of antidepressant coverage * score: 4 ### function isInIetDenominator * file: src/cores/cl/utils/hedisCalculation.ts:63 * kind: function * core: cl * spec: (none) * summary: IET denominator: patient has a new SUD episode in the measurement period. * score: 4 ### function isInIetNumerator * file: src/cores/cl/utils/hedisCalculation.ts:68 * kind: function * core: cl * spec: (none) * summary: IET numerator: initiation visit ≤ 14 days AND ≥ 2 engagement visits within 34 days. * score: 4 ### function isJurisdictionMismatch * file: src/cores/cl/utils/jurisdiction-mismatch.ts:31 * kind: function * core: cl * spec: CL-24 * summary: Returns whether a telehealth session's patient and provider state codesrepresent an interstate-licensure mismatch worth surfacing in the UI. * params: * patientState — Patient's state at session time (2-letter US code) or . * providerState — Provider's state at session time (2-letter US code) or . * returns: when both codes are present and differ; otherwise. * score: 5 ### function isOverdue * file: src/cores/cl/lib/outcomes/reassessment-window\.ts:105 * kind: function * core: cl * spec: (none) * summary: Returns true when a reassessment is overdue — the collection window hasclosed without a completed follow-up assessment.Overdue = * params: * input — Episode + last follow-up reference. * cadence — PF-96 reassessment\_cadence\_months from ClinicalRules.suprt. * timepointKey — Which cadence slot to evaluate ('6mo' or 'annual'). * asOf — Reference "now"; defaults to the real wall-clock time. * options — Optional grace-period override. * score: 4 ### function isPart2Protected * file: src/cores/cl/lib/ds4p/confidentiality.ts:39 * kind: function * core: cl * spec: (none) * summary: True when the classification is 42 CFR Part 2 SUD-protected data. * score: 4 ### function isPsychotherapyNote * file: src/cores/cl/ai-documentation/lib/filterPsychotherapyNotes.ts:35 * kind: function * core: cl * spec: (none) * summary: Return when the row is a psychotherapy process note under 45 CFR 164.501.Criteria (either is sufficient): - (canonical CL-30 type designation), or - (forward-compat flag). * score: 4 ### function isReassessmentDue * file: src/cores/cl/lib/outcomes/reassessment-window\.ts:78 * kind: function * core: cl * spec: (none) * summary: Returns true when a reassessment is currently due (the collection window is open)and no completed reassessment has yet advanced the reference date.Due = * params: * input — Episode + last follow-up reference. * cadence — PF-96 reassessment\_cadence\_months from ClinicalRules.suprt. * timepointKey — Which cadence slot to evaluate ('6mo' or 'annual'). * asOf — Reference "now"; defaults to the real wall-clock time. * options — Optional grace-period override. * score: 4 ### function isRecognizedFuaFuiProxyType * file: src/cores/cl/utils/fua-adt-ingest.ts:105 * kind: function * core: cl * spec: (none) * summary: Whether a (case-insensitively normalized) proxy encounter-type token is in theconfig-sourced FUA/FUI proxy vocabulary — the sets(-tagged), the single source of truth for proxy classification.Exposed for the future PF-108 feed to flag unrecognized inboundclassifications. The mapper itself does NOT reject on an unrecognized type —denominator membership is decided later (P3c aggregation), not here. * score: 4 ### function isReviewOverdue * file: src/cores/cl/utils/review-scheduling.ts:32 * kind: function * core: cl * spec: (none) * summary: True when the review's due date has passed (factoring grace period). * score: 4 ### function isTraumaInstrument * file: src/cores/cl/constants/instruments.ts:20 * kind: function * core: cl * spec: (none) * summary: Check whether an instrument code is a trauma instrument. * score: 4 ### function isValidProblemTransition * file: src/cores/cl/components/problem-list/problemTransitions.ts:51 * kind: function * core: cl * spec: CL-46 * summary: Predicate that returns when transitioning is allowedby the problem-status state machine. Used by callers that want aboolean check (e.g. button enable/disable) without enumerating alllegal transitions. * params: * from — Current status. * to — Proposed next status. * returns: when the transition is allowed; otherwise. * score: 5 ### function isValidTimeRange * file: src/cores/cl/lib/peerEncounterUtils.ts:30 * kind: function * core: cl * spec: (none) * summary: Validate that end\_time is after start\_time. * score: 4 ### function listAvailableClinicalBlocks * file: src/cores/cl/services/blocks/surfaceTemplateAdmin.ts:214 * kind: function * core: cl * spec: (none) * summary: List the active clinical blocks an org can add (platform is\_system + org-owned). * score: 4 ### function listOrgSurfaceBlocks * file: src/cores/cl/services/blocks/surfaceTemplateAdmin.ts:121 * kind: function * core: cl * spec: (none) * summary: List the org-optional blocks composed onto a surface (empty when no org template). * score: 4 ### function loadBlockInstance * file: src/cores/cl/services/blocks/blockInstanceStore.ts:117 * kind: function * core: cl * spec: (none) * summary: Load the persisted instance for a block on an encounter, routing by binding. * params: * def — the resolved block + its storage binding. * ctx — tenant/encounter identity + the snapshotted version. * deps — the adapter registry and (optionally) an injected client. * returns: the stored values + the snapshotted , or null when none exist. * score: 4 ### function loadFuaFuiValueSetOids * file: src/cores/cl/utils/fua-fui-measure-spec.ts:86 * kind: function * core: cl * spec: (none) * summary: Value-set OID acquisition surface (compliance gate 1).Returns empty arrays as a documented stub. NCQA value-set OIDs/codes arelicensed and human-verify-gated; they must NOT be inlined in source. * score: 4 ### function logAuditDashboardAction * file: src/cores/cl/utils/auditDashboardLog.ts:21 * kind: function * core: cl * spec: (none) * summary: Logs a CL-25 audit dashboard action to pf\_audit\_logs.Fire-and-forget — errors are silently caught. * score: 4 ### function logClinicalAudit * file: src/cores/cl/utils/clinicalAuditLog.ts:46 * kind: function * core: cl * spec: (none) * summary: Insert a clinical-audit row into . Fire-and-forget — errorsare captured via Sentry but never rethrown. * returns: if the insert succeeded, if it was swallowed. * score: 4 ### function logExportAudit * file: src/cores/cl/utils/exportAudit.ts:31 * kind: function * core: cl * spec: (none) * summary: Logs a clinical export event to pf\_audit\_logs. Non-fatal — errors aresilently caught so they never block the PDF export flow. * score: 4 ### function logPortalAudit * file: src/cores/cl/utils/portalAudit.ts:35 * kind: function * core: cl * spec: (none) * summary: Logs a portal PHI access event to pf\_audit\_logs. Non-fatal — errors aresilently caught so they never block the portal user flow. * score: 4 ### function mapAdtEventToFuaIngest * file: src/cores/cl/utils/fua-adt-ingest.ts:48 * kind: function * core: cl * spec: (none) * summary: Map a feed-facing ADT event to the RPC params.Fail-closed: throws (field-NAME only, never a value) if a required field ismissing/blank, rather than sending a partial/invalid row. Optional fields thatare null/blank are OMITTED (key absent), not sent as . The proxyencounter type is normalized and passed through — external→proxy classificationis owned by the PF-108 feed / PM-03 taxonomy, not translated here. * score: 4 ### function mapBlockToRenderModel * file: src/cores/cl/services/blocks/blockFieldMapping.ts:118 * kind: function * core: cl * spec: (none) * summary: Build the render model for one resolved block: a PF-08 of theoverlay-visible editable axes, plus the deferred structured axes. * params: * def — the resolved block joined to its current version's . * activeOverlays — overlay tags active for the org/encounter (drives FR-7 gating). * returns: the editable form definition and the deferred (composite/instrument) fields. * score: 4 ### function mapDraftToNote * file: src/cores/cl/ai-documentation/lib/mapDraftToNote.ts:45 * kind: function * core: cl * spec: (none) * summary: Merge a model with authoritative .Narrative fields are picked explicitly from ; structured facts arepicked explicitly from . Because both sides are whitelist-picked,unexpected keys on either input (including structured-fact names smuggled intothe draft) cannot influence the result. * score: 4 ### function mapPlanDraft * file: src/cores/cl/ai-treatment-plan/lib/mapPlanDraft.ts:84 * kind: function * core: cl * spec: (none) * summary: Map untrusted model output to database insert shapes.plan\_id, organization\_id, plan\_type, service\_line, and effective\_date areALWAYS sourced from — any matching fields in are silently discarded (they come from an untrusted source).Goals with empty required fields (patient\_words, measurable\_criteria,frequency, duration) are filtered out. * score: 4 ### function markOutcomeEnd * file: src/cores/cl/utils/outcomes-performance.ts:72 * kind: function * core: cl * spec: (none) * summary: Mark the end of an outcome performance operation and measure latency.Requires the invocation ID returned from markOutcomeStart.Returns the duration in milliseconds, or undefined if measurement fails. * score: 4 ### function markOutcomeStart * file: src/cores/cl/utils/outcomes-performance.ts:57 * kind: function * core: cl * spec: (none) * summary: Mark the start of an outcome performance operation.Returns an invocation ID to pair with markOutcomeEnd for parallel-safe measurement. * score: 4 ### function maskSmallCell * file: src/cores/cl/hooks/usePopulationDashboard.ts:33 * kind: function * core: cl * spec: (none) * summary: Masks values less than 5 for small-cell suppression (PHI protection). * score: 4 ### function md5Password * file: src/cores/cl/integrations/weno/crypto.ts:49 * kind: function * core: cl * spec: (none) * summary: WENO accepts the user's plain-text password OR its MD5 (UTF-8) hash in the field. We always send the hash so the plaintext never leavessecure storage. * score: 4 ### function measurementYearToCalendarYear * file: src/cores/cl/utils/fua-fui-measure-spec.ts:36 * kind: function * core: cl * spec: (none) * summary: Map an NCQA measurement-year ruleset version to its calendar reporting yearby parsing the 4-digit year suffix (, ).This is a structural transform of the version label, not an NCQA-coded literal. * score: 4 ### function measureOutcomeLatency * file: src/cores/cl/utils/outcomes-performance.ts:96 * kind: function * core: cl * spec: (none) * summary: Convenience: measure an async function's execution time. * score: 4 ### function mergeAssessmentSections * file: src/cores/cl/utils/assessment-template-merge.ts:30 * kind: function * core: cl * spec: (none) * summary: Merge jurisdiction-required elements with organization template sections.Order: required (jurisdiction) sections first by their canonical order,then optional (template) sections by display\_order.Duplicate section\_codes from the template that overlap with required elementsare deduplicated (jurisdiction wins). * score: 4 ### function mergeSurfaceBlocks * file: src/cores/cl/utils/surface-block-merge.ts:47 * kind: function * core: cl * spec: (none) * summary: Resolve the ordered block set for a documentation surface by merging the threeadditive sources, mirroring the SQL RPC.Required sources are locked: a jurisdiction- or accreditation-required block alwaysappears in the result, and an org-optional block that overlaps a required one isde-duplicated to the required source (an org can never drop a required block).On overlap, jurisdiction wins over accreditation, and required sources win over org. * params: * jurisdictionRequired — Block slugs the PF-96 jurisdiction profile requires for this surface (). Rendered first. * accreditationRequired — Block slugs the enabled CARF/TJC accreditation overlays require for this surface; appended after jurisdiction, minus any already required there. * orgOptional — The org's optional blocks for the surface (soft-deleted excluded); appended last in , minus any covered by a required source. * surface — The documentation surface being composed (e.g. , ). * returns: The surface plus the ordered, source-tagged, sequentially-numbered block set. * score: 4 ### function nextDisplayOrder * file: src/cores/cl/services/blocks/surfaceTemplateAdmin.ts:36 * kind: function * core: cl * spec: (none) * summary: The next for a block appended to a template. * score: 4 ### function notifyHighRiskScreening * file: src/cores/cl/utils/riskAlerts.ts:40 * kind: function * core: cl * spec: (none) * summary: Insert a PF-10 in-app notification for high/imminent risk screening.Called immediately after a successful useCreateRiskScreening mutation.NOTE: This inserts into pf\_notifications for the screened\_by user (the clinician).In a future iteration, this should fan-out to the full treatment team viathe fw\_workflow\_events subscription system.Errors are logged (not thrown) — alert failure must not block the primary save. * score: 4 ### function parsePortalQmConfig * file: src/cores/cl/utils/portalQmConfig.ts:41 * kind: function * core: cl * spec: (none) * summary: Parse a raw JSONB value from intoa typed config, falling back to defaults for any missing or invalid field. * score: 4 ### function parseSOAPSections * file: src/cores/cl/ai-documentation/hooks/useAmbientTranscript.ts:44 * kind: function * core: cl * spec: (none) * summary: Parses the SOAP sections from a transcript's JSONB field.Returns undefined if no structured SOAP data is available. * score: 4 ### function parseTranscriptData * file: src/cores/cl/ai-documentation/hooks/useAmbientTranscript.ts:53 * kind: function * core: cl * spec: (none) * summary: Parses the raw transcript data from a transcript's JSONB field.Returns undefined if no transcript data is available. * score: 4 ### function persistHedisMeasurePeriods * file: src/cores/cl/services/hedisMeasurePersist.ts:74 * kind: function * core: cl * spec: (none) * summary: Persist the computed FUA/FUI measure set as MY-stamped snapshot rows.Calls the hardened SECURITY DEFINER RPC onceper measure (org-guarded, MY-versioned ON CONFLICT upsert). Returns the row idson full success, else a sanitized error on the first failure. * params: * input — The org, period, Measurement Year, and the measure snapshots. * returns: on success, else (sanitized). * score: 4 ### function persistMeasureResult * file: src/cores/cl/services/qualityMeasureEngine.ts:98 * kind: function * core: cl * spec: (none) * summary: Persist a calculated measure as an immutable result + cohort snapshot.Calls the org-guarded RPC; the engine derivesdenominator/numerator/exclusion/exception counts and the eCQM performance rate(numerator / (denominator − exclusions − exceptions)) and writes both rows atomically. * params: * input — org, registered measure, period, value-set version, data-as-of, members. * returns: on success, else (sanitized). * score: 4 ### function priorityBadgeVariant * file: src/cores/cl/components/problem-list/problemTransitions.ts:92 * kind: function * core: cl * spec: CL-46 * summary: Maps a problem-list priority value to a Badge variant. Priority (the"primary problem" slot) renders destructive to draw the eye; –render warning; everything else (including / ) renderssecondary so the row stays calm. Keeps colour decisions out of thecall site. * params: * priority — The numeric priority on , or nullish when unset. * returns: The Badge variant token to use. * score: 5 ### function proposeCptCode * file: src/cores/cl/utils/groupEncounterCptProposal.ts:46 * kind: function * core: cl * spec: (none) * summary: Proposes a CPT code based on the group session type and subtype. * params: * groupType — The group type (e.g., 'process', 'psychoeducation', 'cbt'). * groupSubtype — The group subtype (e.g., 'standard', 'family', 'multi\_family'). * returns: Proposed CPT code string. * score: 4 ### function raiseToHighest * file: src/cores/cl/lib/ds4p/confidentiality.ts:83 * kind: function * core: cl * spec: (none) * summary: Raises a set of member confidentiality codes to the highest (mostrestrictive) — used to label a Bundle/document by its most-sensitive member.An empty set returns (nothing to protect). * score: 4 ### function redactLaunchUrl * file: src/cores/cl/integrations/weno/request-builder.ts:108 * kind: function * core: cl * spec: (none) * summary: Strip the encrypted param from a URL for safe logging. * score: 4 ### function removeOrgSurfaceBlock * file: src/cores/cl/services/blocks/surfaceTemplateAdmin.ts:186 * kind: function * core: cl * spec: (none) * summary: Remove an org-optional block from a surface template. * score: 4 ### function requestFuaPayerExport * file: src/cores/cl/services/fuaPayerExport.ts:54 * kind: function * core: cl * spec: (none) * summary: Request an event-level export of FUA/FUI SUD denominator data via the gated table.The insert passes through the BEFORE-INSERTtrigger, which fail-closes on absent 42 CFR Part 2 consent, a disabledper-org payer-export flag (AC-5, default off), or a cross-org chart, and logsthe disclosure to on the allowed-payer success path.A Supabase/trigger error is sanitized at the boundary — the raw error neverreaches the caller. * params: * params — The disclosure request (org, chart, measure, period, destination). * returns: on a gated-success insert, else (sanitized). * score: 4 ### function requiredFieldKeys * file: src/cores/cl/dsi-disclosures/lib/disclosureFields.ts:136 * kind: function * core: cl * spec: (none) * summary: Canonical required-field set for a dsi\_type — derived from isDisclosureComplete so theeditor's required markers and completeness display can never drift from the publish gate.Running the completeness check against an empty row yields exactly the required columns. * score: 4 ### function requiresRedisclosureNotice * file: src/cores/cl/services/tefcaRedisclosureNotice.ts:45 * kind: function * core: cl * spec: (none) * summary: Determines whether a redisclosure notice is required for a givendocument type. SUD counseling notes always require it. * score: 4 ### function resolveAttestationText * file: src/cores/cl/utils/note-requirements-resolver.ts:33 * kind: function * core: cl * spec: (none) * summary: Resolves the attestation text for the note signing dialog.Falls back to Arizona AHCCCS attestation text when profile is null. * score: 4 ### function resolveClient * file: src/cores/cl/utils/marketplace/import-handler-registry.ts:63 * kind: function * core: cl * spec: (none) * summary: Helper for handlers; resolves to the singleton supabase client when no override is provided. * score: 1 ### function resolveDisclosableCategory * file: src/cores/cl/lib/ceem/minimumNecessary.ts:123 * kind: function * core: cl * spec: (none) * summary: Resolve which (if any) category code may be disclosed, applying the FR-4afail-safe ladder: omit by default → include only when permitted → coarsenSUD-revealing categories unless SUD-category disclosure is explicitly allowed. * score: 4 ### function resolveMandatoryNoteValidation * file: src/cores/cl/utils/note-requirements-resolver.ts:68 * kind: function * core: cl * spec: (none) * summary: Resolves whether note validation is mandatory (cannot be disabled).Falls back to true (Arizona AHCCCS behavior). * score: 4 ### function resolvePolicyCitation * file: src/cores/cl/utils/note-requirements-resolver.ts:60 * kind: function * core: cl * spec: (none) * summary: Resolves the policy citation metadata for UI labels.Falls back to "AHCCCS Policy 940" when profile is null. * score: 4 ### function resolveRequiredElements * file: src/cores/cl/utils/assessment-progress.ts:13 * kind: function * core: cl * spec: (none) * summary: Resolve required assessment elements from a clinical-rules profile,falling back to the canonical INTAKE\_SECTION\_CODES when the profileprovides an empty or missing list. * score: 4 ### function resolveRequiredNoteElements * file: src/cores/cl/utils/note-requirements-resolver.ts:41 * kind: function * core: cl * spec: (none) * summary: Resolves the required note elements for validation.Falls back to the 12-element POLICY\_940\_ELEMENTS when profile is null. * score: 4 ### function resolveTimedThresholds * file: src/cores/cl/utils/groupEncounterJurisdiction.ts:31 * kind: function * core: cl * spec: (none) * summary: Resolves timed-code unit thresholds from billing rules.Uses from the jurisdiction profile to derivestandard midpoint thresholds, or falls back to AZ defaults. * params: * billingRules — BillingRules from the resolved jurisdiction profile, or null. * returns: Array of minute thresholds for unit 1, 2, 3, 4. * score: 4 ### function resolveTimelinessHours * file: src/cores/cl/utils/note-requirements-resolver.ts:52 * kind: function * core: cl * spec: (none) * summary: Resolves the documentation timeliness threshold (hours).Falls back to 24h (Arizona late-entry threshold). * score: 4 ### function resolveUnitsFromDuration * file: src/cores/cl/utils/groupEncounterJurisdiction.ts:51 * kind: function * core: cl * spec: (none) * summary: Resolves unit count from duration using jurisdiction thresholds. * params: * durationMinutes — Actual attendance duration in minutes. * thresholds — Timed-code thresholds from . * returns: Number of billable units (0 if below minimum threshold). * score: 4 ### function riskLevelToUrgency * file: src/cores/cl/components/clinicalUrgencyUtils.ts:11 * kind: function * core: cl * spec: (none) * summary: Maps a risk level string from the database to a ClinicalUrgency value. * score: 4 ### function routeMatchCandidates * file: src/cores/cl/services/tefcaPatientMatching.ts:78 * kind: function * core: cl * spec: (none) * summary: Routes match candidates based on threshold.- Above threshold → auto-linked (best match only)- Below threshold → manual review queue (never auto-linked) * score: 4 ### function runAtRiskCohortJob * file: src/cores/cl/services/outcomes/atRiskCohortJob.ts:80 * kind: function * core: cl * spec: (none) * summary: Run the at-risk reassessment cohort scan for one organization. * params: * db — Supabase client (service-role for cron context; passes RLS as caller for tests). * organizationId — The organization to scan. * suprt — Resolved PF-96 suprt rule pack. Callers MUST pass this; never null-substitute. * asOf — Reference "now" (defaults to wall-clock; injectable for tests). * score: 4 ### function saveBlockInstance * file: src/cores/cl/services/blocks/blockInstanceStore.ts:74 * kind: function * core: cl * spec: (none) * summary: Persist a block instance for an encounter, routing by . * params: * def — the resolved block + its storage binding. * ctx — tenant/encounter identity + the snapshotted version + . * values — the field values keyed by . * deps — the adapter registry and (optionally) an injected client. * returns: where the save routed and whether it succeeded. * score: 4 ### function scoreAce10 * file: src/cores/cl/utils/traumaScoring.ts:30 * kind: function * core: cl * spec: (none) * summary: Sum 10 binary items (item\_1..item\_10), each 0 or 1. Max score: 10. * score: 4 ### function scoreAUDITC * file: src/cores/cl/utils/patientSubmissionScoring.ts:73 * kind: function * core: cl * spec: (none) * summary: Implements score auditc behavior. * score: 4 ### function scoreBtq * file: src/cores/cl/utils/traumaScoring.ts:98 * kind: function * core: cl * spec: (none) * summary: BTQ Criterion-A counter per Schnurr et al. (2002).Items 1–10 are event endorsements (0/1).Follow-up items determine Criterion A qualification: item\_N\_life\_threat (0/1) — perceived life threat item\_N\_serious\_injury (0/1) — serious injury occurredAn endorsed event meets Criterion A if life\_threat=1 OR serious\_injury=1. * score: 4 ### function scoreCSSRSScreener * file: src/cores/cl/utils/patientSubmissionScoring.ts:123 * kind: function * core: cl * spec: (none) * summary: Implements score cssrsscreener behavior. * score: 4 ### function scoreDAST10 * file: src/cores/cl/utils/patientSubmissionScoring.ts:100 * kind: function * core: cl * spec: (none) * summary: Implements score dast10 behavior. * score: 4 ### function scoreGAD7 * file: src/cores/cl/utils/patientSubmissionScoring.ts:52 * kind: function * core: cl * spec: (none) * summary: Implements score gad7 behavior. * score: 4 ### function scoreLec5 * file: src/cores/cl/utils/traumaScoring.ts:59 * kind: function * core: cl * spec: (none) * summary: Utility for score lec5. * score: 1 ### function scorePcl5 * file: src/cores/cl/utils/traumaScoring.ts:18 * kind: function * core: cl * spec: (none) * summary: Sum 20 items (item\_1..item\_20), each 0–4. Max score: 80. * score: 4 ### function scorePHQ9 * file: src/cores/cl/utils/patientSubmissionScoring.ts:22 * kind: function * core: cl * spec: (none) * summary: Implements score phq9 behavior. * score: 4 ### function scoreSubmission * file: src/cores/cl/utils/patientSubmissionScoring.ts:169 * kind: function * core: cl * spec: (none) * summary: Score a patient submission by instrument type.Returns null if the instrument type is not recognized. * score: 4 ### function searchAllergens * file: src/cores/cl/utils/allergenSearch.ts:87 * kind: function * core: cl * spec: (none) * summary: Search allergens by free-text query (display or code prefix). * score: 4 ### function searchReactions * file: src/cores/cl/utils/allergenSearch.ts:92 * kind: function * core: cl * spec: (none) * summary: Search SNOMED reactions by free-text query (display or code prefix). * score: 4 ### function segmentCeemExemptionDisclosure * file: src/cores/cl/lib/ds4p/ceem-exemption-profile.ts:239 * kind: function * core: cl * spec: (none) * summary: Runs the CEEM exemption-disclosure segmentation profile. Pure and total:always returns a decision + an audit event, never throws on policy gaps(those produce a fail-closed block). * score: 4 ### function selectOutstandingSuprtCItems * file: src/cores/cl/lib/outcomes/suprt-autopopulate.ts:99 * kind: function * core: cl * spec: (none) * summary: Select the outstanding SUPRT-C (client self-report) items, excluding any itemalready captured administratively via SUPRT-A (AC-3). Dedup is by ,so a self-report item that duplicates an administratively-sourced item is notre-asked of the client. * score: 4 ### function serializeDs4pSecurityLabel * file: src/cores/cl/lib/ds4p/security-labels.ts:107 * kind: function * core: cl * spec: (none) * summary: Canonical, stable serialization of a into thesingle text column.The HL7 sensitivity ActCodes and the redisclosure-obligation codes are eachsorted ascending (lexicographic, codepoint order) and comma-joined; the twogroups are then pipe-delimited as the sorted sensitivity codes, a pipe ,then the sorted obligation codes.The Part 2 floor therefore serializes to the literal ( sorts before by codepoint, single obligation). The form is**deterministic and order-independent**: any permutation of the input arraysyields byte-identical output, so the value a DB trigger writes and the value TSderives can be asserted byte-equal (the DB↔TS drift trap exercised by theintegration test).A label set carrying neither sensitivity nor obligation codes (non-Part 2)serializes to the empty string. The DB trigger only ever writes the Part 2floor below — never the empty case. * score: 4 ### function serializeWenoJson * file: src/cores/cl/integrations/weno/request-builder.ts:103 * kind: function * core: cl * spec: (none) * summary: Serialize a WENO wire object preserving insertion (= vendor) order. WENO'sfield order is significant; never substitute a key-sorting serializer. * score: 4 ### variable setWenoAdminCred * file: src/cores/cl/services/wenoCredentials.ts:21 * kind: variable * core: cl * spec: (none) * summary: Store the org-admin WENO login; the password is MD5-hashed server-side, never stored plaintext. * score: 2 ### variable setWenoKey * file: src/cores/cl/services/wenoCredentials.ts:18 * kind: variable * core: cl * spec: (none) * summary: Store the org's WENO EZ encryption key in the vault. Returns the credential id. * score: 2 ### variable setWenoPrescriberMap * file: src/cores/cl/services/wenoCredentials.ts:39 * kind: variable * core: cl * spec: (none) * summary: Map a WENO PrescriberWENOID (e.g. "U6911") to a platform profile for an org (#1961).cl\_weno\_apply\_newrx\_sync uses this to resolve cl\_prescriptions.prescriber\_id forWENO-synced rows. Returns the mapping id. * score: 2 ### variable setWenoUserCred * file: src/cores/cl/services/wenoCredentials.ts:25 * kind: variable * core: cl * spec: (none) * summary: Store a prescriber's WENO login + location; the password is MD5-hashed server-side. * score: 2 ### function shouldApplyHqModifier * file: src/cores/cl/utils/groupEncounterCptProposal.ts:35 * kind: function * core: cl * spec: (none) * summary: Determines whether the HQ modifier should be applied. * params: * participantCount — Number of attendees present/partial in the session. * returns: if HQ modifier should be applied (≥ 2 participants). * score: 4 ### function shouldEscalate * file: src/cores/cl/utils/review-scheduling.ts:49 * kind: function * core: cl * spec: (none) * summary: True when the review crosses the escalation threshold beyond the due date. * score: 4 ### function stubCheckRTPB * file: src/cores/cl/services/rtpb.ts:32 * kind: function * core: cl * spec: (none) * summary: Stub: simulates a Real-Time Prescription Benefit (RTPB) check.In production: invoke a real RTPB vendor API. No PHI is sent — only themedication name and organization ID are used for lookup. * params: * medicationName — Drug name to check formulary status for * organizationId — Organization context (for future payer configuration lookup) * score: 4 ### function suggestVirtualGroupModifiers * file: src/cores/cl/utils/virtual-group-modifiers.ts:39 * kind: function * core: cl * spec: (none) * summary: Returns modifier suggestions for a group therapy session based on modality.Resolution order: an explicit PF-96 override wins;otherwise the US-AZ default profile applies (constitution §1: AZ is thedefault jurisdiction, not a hardcoded global). * params: * modality — Session modality ('in\_person' | 'virtual' | 'hybrid') * jurisdictionModifiers — PF-96 jurisdiction-profile modifier override codes * returns: Array of modifier suggestions; empty for in-person sessions * score: 4 ### function TelehealthConsentBadge * file: src/cores/cl/components/telehealth/TelehealthConsentBadge.tsx:47 * kind: function * core: cl * spec: CL-24 * summary: Renders a telehealth-consent status pill for a patient chart. Reads thelatest non-revoked consent of the requested type via TanStack Query andderives the badge visual from the validity state. Returns when theCL-24 feature flag is off so callers can mount it unconditionally. * params: * props — Badge props. - : to inspect consent for. - : Consent kind to check — defaults to . Pass from audio-only surfaces. * score: 5 ### function toFhirAllergyIntolerance * file: src/cores/cl/utils/allergy-fhir.ts:72 * kind: function * core: cl * spec: (none) * summary: Map a single allergy row to a FHIR AllergyIntolerance resource. * score: 4 ### function toSegmentationDecisionInsert * file: src/cores/cl/lib/ds4p/ceem-exemption-profile.ts:360 * kind: function * core: cl * spec: (none) * summary: Projects a segmentation result into the insert row. Carries no raw clinical content (only the category code + labelmetadata), satisfying the minimum-necessary audit contract. * score: 4 ### function use988TransfersByChart * file: src/cores/cl/hooks/use988Transfers.ts:21 * kind: function * core: cl * spec: (none) * summary: Implements use988 transfers by chart behavior. * score: 4 ### function validateCohortRuleCriteria * file: src/cores/cl/utils/cohort-rule-engine.ts:234 * kind: function * core: cl * spec: (none) * summary: Validate criteria via Zod + structural checks.Throws if invalid (max depth, unknown field, malformed shape). * score: 4 ### function validateConsentCapture * file: src/cores/cl/utils/recording-consent.ts:35 * kind: function * core: cl * spec: (none) * summary: Validates a consent capture attempt. * score: 4 ### function validateDimensionScores * file: src/cores/cl/utils/loc-scoring.ts:195 * kind: function * core: cl * spec: (none) * summary: Validate that all dimensions have valid scores. * score: 4 ### function validateMinimumNecessary * file: src/cores/cl/lib/ceem/minimumNecessary.ts:169 * kind: function * core: cl * spec: (none) * summary: Allow-list content validator (FR-5). Fails CLOSED: any key outside theallow-list, any forbidden-substring key, or a malformed core field yields aviolation — the gate maps a non-empty result to a deny and emits NO payload. * score: 4 ### function validateNoDuplicateSectionCodes * file: src/cores/cl/utils/assessment-template-merge.ts:75 * kind: function * core: cl * spec: (none) * summary: Validate that no duplicate section\_codes exist in a list of sections.Returns an array of duplicate codes (empty if valid). * score: 4 ### function validatePolicy940 * file: src/cores/cl/shared/validation/validatePolicy940.ts:200 * kind: function * core: cl * spec: (none) * summary: Validates a progress note against AHCCCS Policy 940 requirements. * params: * ctx — Note/encounter context with the 12 required fields * mode — Enforcement mode from org settings * isFinalizing — Whether this is a finalization attempt (affects ) * options — Optional configuration (CL-04-EN-67: supports jurisdiction-driven element lists) - requiredElements: Override default Policy 940 elements with jurisdiction-specific requirements * returns: Validation result with missing elements, severity, and block status * score: 4 ### function validateStep * file: src/cores/cl/wizards/e-prescribing/hooks/useEPrescribingWizard.ts:60 * kind: function * core: cl * spec: (none) * summary: Validate a step's required fields. Returns true if step is valid. * score: 4 ## Classes ### class UnsupportedItemTypeError * file: src/cores/cl/utils/marketplace/errors.ts:5 * kind: class * core: cl * spec: (none) * summary: CL-57: Typed errors for marketplace import handling. * score: 4 # edge-functions — Public API surface Source: https://docs.encoreos.io/api/edge-functions Per-symbol API documentation for the edge-functions area, generated from TSDoc blocks. Refresh with `npm run docs:api:generate`. # edge-functions — Public API surface ## Types & interfaces ### interface AftercarePlanHedisFlags * file: supabase/functions/\_shared/cl-followup-gap.ts:59 * kind: interface * core: edge-functions * spec: (none) * summary: Minimal row shape this predicate reads. * score: 2 ### interface AgentActionClassification * file: supabase/functions/\_shared/ai/agent-action-classifier.ts:54 * kind: interface * core: edge-functions * spec: (none) * summary: The classifier's verdict for one proposed tool call. * score: 2 ### interface AgentActionInput * file: supabase/functions/\_shared/ai/agent-action-classifier.ts:47 * kind: interface * core: edge-functions * spec: (none) * summary: The input the classifier scores (no PHI — identifiers and dimension hints only). * score: 2 ### type AgentActionTier * file: supabase/functions/\_shared/ai/agent-action-classifier.ts:21 * kind: type * core: edge-functions * spec: (none) * summary: The runtime risk tier of a proposed agent tool call (FR-1). * score: 2 ### interface AgentBudgetInput * file: supabase/functions/\_shared/ai/agent-usage.ts:25 * kind: interface * core: edge-functions * spec: (none) * summary: The three independent caps evaluated before dispatch (any may fail closed). * score: 2 ### interface AgentBudgetVerdict * file: supabase/functions/\_shared/ai/agent-usage.ts:32 * kind: interface * core: edge-functions * spec: (none) * summary: The pre-dispatch budget verdict. ⇒ a hard cap is reached → fail closed. * score: 2 ### interface AgentConfig * file: supabase/functions/\_shared/skill-agent.ts:63 * kind: interface * core: edge-functions * spec: (none) * summary: Agent configuration produced by buildSkillAgent * score: 2 ### interface AgenticLoopDeps * file: supabase/functions/\_shared/ai/agentic-loop.ts:74 * kind: interface * core: edge-functions * spec: (none) * summary: Injectable dependencies for . All optional; defaults are thereal implementations. Tests override //(to avoid network/db) and // (to drive thebudget/iteration-cap branches deterministically without real waits). * score: 2 ### interface AgenticResult * file: supabase/functions/\_shared/ai/agentic-loop.ts:57 * kind: interface * core: edge-functions * spec: (none) * summary: Result of a execution: the model's final text plus thetoken usage accumulated across every iteration. When the skill requestedstructured output, holds the parsed JSON, or is set when the model's content could not be parsed. * score: 2 ### interface AgentMessageActor * file: supabase/functions/\_shared/cowork/agent-message.ts:23 * kind: interface * core: edge-functions * spec: (none) * summary: The agent's dual identity for attribution. == MachinePrincipal.serviceAccountId. * score: 2 ### interface AgentMessageInput * file: supabase/functions/\_shared/cowork/agent-message.ts:31 * kind: interface * core: edge-functions * spec: (none) * summary: Inputs for an attributed agent message. * score: 2 ### interface AgentMessageRow * file: supabase/functions/\_shared/cowork/agent-message.ts:41 * kind: interface * core: edge-functions * spec: (none) * summary: A fully-attributed pf\_messages insert row (Phase 1B always uses content\_type='ai\_response'). * score: 2 ### interface AgentRun * file: supabase/functions/\_shared/ai/agent-run-state-machine.ts:110 * kind: interface * core: edge-functions * spec: (none) * summary: The columns of the durable wrapper reads (subset of the table). * score: 2 ### type AgentRunState * file: supabase/functions/\_shared/ai/agent-run-states.ts:33 * kind: type * core: edge-functions * spec: (none) * summary: A run lifecycle state. * score: 1 ### interface ApplyRulesAuthDeps * file: supabase/functions/plaid-apply-rules/index.ts:191 * kind: interface * core: edge-functions * spec: (none) * summary: Auth/infra seams injected into , with production defaults. Thecross-org-caller denial guard (#1493) is a security boundary, so it isexercised by a Deno unit test that injects a stub authenticating a real userand a that denies — without a live stack. Production calls and the defaults wire the real helpers, sothe service-role/cron sentinel (the internal plaid-sync caller) + theplatform-admin parity baked into the real are preservedverbatim. * score: 2 ### interface ArtifactParams * file: supabase/functions/cl-agent-draft-note/handler.ts:60 * kind: interface * core: edge-functions * spec: (none) * summary: The artifact creation input. * score: 1 ### interface AuditLogRow * file: supabase/functions/security-detect-audit-anomalies/scoring.ts:26 * kind: interface * core: edge-functions * spec: (none) * summary: A single audit-log row as aggregated for scoring (metadata columns only). * score: 2 ### interface AuditWindow * file: supabase/functions/security-detect-audit-anomalies/scoring.ts:41 * kind: interface * core: edge-functions * spec: (none) * summary: Pre-aggregated per-(org, user) window fed into the scorer. * score: 2 ### interface AuthError * file: supabase/functions/\_shared/auth.ts:33 * kind: interface * core: edge-functions * spec: (none) * summary: Failure value returned by when the JWT is missing, invalid,or the service-role token is disallowed. maps to an HTTP code(typically 401) and is safe to surface in an error response. * see: * validateAuth * score: 5 ### interface AuthResult * file: supabase/functions/\_shared/auth.ts:21 * kind: interface * core: edge-functions * spec: (none) * summary: Successful return value from .Carries the authenticated user's id/email and a Supabase client scoped tothat session so downstream queries run under the user's RLS policies. * see: * validateAuth * score: 5 ### interface BaseLayoutOptions * file: supabase/functions/\_shared/email-templates/base-layout.ts:6 * kind: interface * core: edge-functions * spec: (none) * summary: Base Email LayoutShared HTML wrapper for all Encore OS email templates * score: 2 ### interface BillingProvider837I * file: supabase/functions/\_shared/x12/generate-837i.ts:13 * kind: interface * core: edge-functions * spec: (none) * summary: PM-08-EN-14: Pure X12 837I Institutional Claim GeneratorGenerates ANSI X12 837I (005010X223A2) claim segments. Does NOT build theISA/GS/ST envelope — pair with the envelope builder inenvelope.ts (this directory) when serializing.Pure: no React, no Supabase, no Deno globals. Safe for Vitest + browser.A Deno mirror lives at for edge-function consumption (kept in lockstep — update both). * score: 2 ### interface BudgetDimension * file: supabase/functions/\_shared/ai/agent-usage.ts:15 * kind: interface * core: edge-functions * spec: (none) * summary: A single budget dimension: a hard limit (null = uncapped) and the run/period-to-date spend. * score: 2 ### interface BudgetVerdict * file: supabase/functions/\_shared/ai/agent-run-state-machine.ts:135 * kind: interface * core: edge-functions * spec: (none) * summary: Result of a budget check (FR-12). * score: 2 ### interface BuildCheckRequestInput * file: supabase/functions/proliant-manual-check/build-check-request.ts:56 * kind: interface * core: edge-functions * spec: (none) * summary: Validated input for . * score: 1 ### type BuildCheckRequestResult * file: supabase/functions/proliant-manual-check/build-check-request.ts:116 * kind: type * core: edge-functions * spec: (none) * summary: Discriminated result of validating a manual-check request: either withthe vendor-ready body, or with thecollected field-level validation errors. * score: 2 ### interface BuiltEarningLine * file: supabase/functions/proliant-sync/earnings-batch-builder.ts:57 * kind: interface * core: edge-functions * spec: (none) * summary: A validated earning line ready to push, paired with its source index andEncore employee id for downstream sync-log and push-log attribution. * score: 2 ### interface CancelRxRequest * file: supabase/functions/\_shared/weno/transport.ts:25 * kind: interface * core: edge-functions * spec: (none) * summary: Arguments for a CancelRx send: the fully-built WENO request URL. * score: 2 ### type CapabilityKey * file: supabase/functions/\_shared/google-workspace-client.ts:48 * kind: type * core: edge-functions * spec: (none) * summary: A PF-101 connector capability — each maps to a least-privilege Google OAuth scope set in . * score: 2 ### interface CaptureCard * file: supabase/functions/\_shared/ce-card-capture.ts:37 * kind: interface * core: edge-functions * spec: (none) * summary: Minimal shape of a row needed to resolve a capture.(The public read whitelist is a separate, narrower projection.) * score: 2 ### interface CaptureInput * file: supabase/functions/\_shared/ce-card-capture.ts:53 * kind: interface * core: edge-functions * spec: (none) * summary: The captured visitor's self-reported details (all optional). * score: 2 ### type CaptureMethod * file: supabase/functions/\_shared/ce-card-capture.ts:28 * kind: type * core: edge-functions * spec: (none) * summary: Methods that can produce a card capture. * score: 2 ### type CaptureOutcome * file: supabase/functions/\_shared/ce-card-capture.ts:31 * kind: type * core: edge-functions * spec: (none) * summary: Outcome of resolving + persisting a capture. * score: 2 ### interface CaptureSettings * file: supabase/functions/\_shared/ce-card-capture.ts:48 * kind: interface * core: edge-functions * spec: (none) * summary: Relevant columns. All optional/nullable — the helperfalls back to safe defaults so a missing settings row never breaks a capture. * score: 2 ### type CaptureSourceMeta * file: supabase/functions/\_shared/ce-card-capture.ts:65 * kind: type * core: edge-functions * spec: (none) * summary: Extra metadata persisted on the capture (recaptcha score, ip, utm, …). * score: 2 ### interface CareGapDomainEventRow * file: supabase/functions/\_shared/cl-care-gap-event.ts:37 * kind: interface * core: edge-functions * spec: (none) * summary: An insert row (matches the publishEvent insert shape). * score: 2 ### interface CareGapEventSource * file: supabase/functions/\_shared/cl-care-gap-event.ts:27 * kind: interface * core: edge-functions * spec: (none) * summary: A persisted care-gap row, narrowed to the fields the event needs. * score: 2 ### type CareGapPriority * file: supabase/functions/\_shared/cl-followup-gap.ts:33 * kind: type * core: edge-functions * spec: (none) * summary: Allowed values (the column CHECK constraint). * score: 2 ### interface CheckLineItem * file: supabase/functions/proliant-manual-check/build-check-request.ts:104 * kind: interface * core: edge-functions * spec: (none) * summary: Vendor line (camelCase per swagger). * score: 2 ### interface CheckRequestModel * file: supabase/functions/proliant-manual-check/build-check-request.ts:82 * kind: interface * core: edge-functions * spec: (none) * summary: Vendor body for . * score: 1 ### interface Claim837PInput * file: supabase/functions/\_shared/x12/generate-837p.ts:11 * kind: interface * core: edge-functions * spec: (none) * summary: PM-15-P2: X12 837P Professional Claim GeneratorGenerates ANSI X12 837P (005010X222A1) claim segments from structuredclaim data. Does NOT build the ISA/GS/ST envelope — use envelope.ts for that.Supports: Single/multi-line claims, modifiers, diagnosis pointers,place of service codes, and AHCCCS-specific behavioral health modifiers. * score: 2 ### interface CodeDefinitionInput * file: supabase/functions/proliant-code-push/push-code-definitions.ts:26 * kind: interface * core: edge-functions * spec: (none) * summary: One Encore-defined code to write back to Proliant (HR-44-EN-01 AC-7). selects the Proliant resource controller (see ); is the lookup code, its label, its state. * score: 2 ### interface CodeMapRow * file: supabase/functions/proliant-sync/code-resolver.ts:13 * kind: interface * core: edge-functions * spec: (none) * summary: HR-44-EN-01 AC-11 — resolve Encore values to Proliant lookup CODES.The push mapper otherwise sends display words (, )where the vendor's lookup codes are short tokens (, ). The pull mapscode→Encore; the push must map Encore→code via (the write side of the HR-44 V5 shape lesson). This resolver indexes the coderows by, in precedence order: the admin-configured , the, and the itself (passthrough when avalue is already a code). Lookups are case-insensitive. * score: 2 ### interface CodePushOutcome * file: supabase/functions/proliant-code-push/push-code-definitions.ts:38 * kind: interface * core: edge-functions * spec: (none) * summary: The tally returned by : were created at thevendor, already existed (idempotent), and collects everydefinition that could not be written (unknown family / missing code / vendor failure). * score: 2 ### interface CodeRowCtx * file: supabase/functions/proliant-code-lookup/lookup-mapper.ts:38 * kind: interface * core: edge-functions * spec: (none) * summary: Tenant/integration context stamped onto every generated mapping row. * score: 2 ### type CodeType * file: supabase/functions/proliant-code-lookup/lookup-mapper.ts:18 * kind: type * core: edge-functions * spec: (none) * summary: The category of Proliant code being mapped. Mirrors the CHECKconstraint on ; was added in HR-44 tomap JournalEntry GL segment codes to FA accounts. The ten types added inHR-44 Follow-up C (position, pay\_grade, union, employee\_status, employee\_type,benefit\_class, workers\_comp\_code, workers\_comp\_rate, eeo\_class, accrual)correspond to confirmed endpoints in.The 18 read-only families on the final line (HR-44 — full read coverage)complete the remaining no-parameter Lookup endpoints: company-scoped (termination\_reason … onboarding\_flow) and thesystem-scoped enums (gender … auto\_pay). Verified liveagainst the SBX0028 sandbox 2026-06-05; families whose backing resource thecredentials are not granted simply return 0 (recorded in the per-family list, never fatal). * score: 2 ### interface CodingPromptInput * file: supabase/functions/pm-ai-coding-suggest/prompt.ts:48 * kind: interface * core: edge-functions * spec: (none) * summary: Full input to the prompt builder. * score: 2 ### interface CodingSuggestionOutput * file: supabase/functions/pm-ai-coding-suggest/validation.ts:33 * kind: interface * core: edge-functions * spec: PM-64 * summary: The expected JSON response shape from the AI model. * score: 3 ### interface ComplianceAuditEntryParams * file: supabase/functions/\_shared/fw-compliance-audit.ts:80 * kind: interface * core: edge-functions * spec: (none) * summary: Parameters for inserting a compliance audit entry. * score: 2 ### interface ComposeRxPayload * file: supabase/functions/\_shared/weno/request-builder.ts:46 * kind: interface * core: edge-functions * spec: (none) * summary: Canonical CL-06 payload for a ComposeRx (NewRx) launch (camelCase, Encorenaming). Loose -friendly subset of the src ; theedge function receives this as untyped JSON, so optionals are widened. * score: 2 ### type ConflictResolution * file: supabase/functions/\_shared/fw-schedule-conflicts.ts:10 * kind: type * core: edge-functions * spec: (none) * summary: FW-26 (Workflow Scheduling) — Deno port of the T3 conflict detector.Mirrors (time-overlap +circular-dependency detection). Kept as a copy because edge functionsrun under Deno and can't import the Vite app's tree. **Keep the two insync** — the algorithm is intentionally identical; only the module system differs. * score: 2 ### type ConflictResolutionAction * file: supabase/functions/\_shared/fw-schedule-conflicts.ts:91 * kind: type * core: edge-functions * spec: (none) * summary: The action the worker should take for a conflicting run, per the schedule's strategy. * score: 2 ### type ConflictStrategy * file: supabase/functions/proliant-sync/sor-direction.ts:18 * kind: type * core: edge-functions * spec: (none) * summary: The integration's (the column). * score: 2 ### interface CreatedArtifact * file: supabase/functions/cl-agent-draft-note/handler.test.fixtures.ts:34 * kind: interface * core: edge-functions * spec: (none) * summary: Spy record for artifact creation calls * score: 2 ### interface CronHandlerContext * file: supabase/functions/\_shared/cron-handler.ts:57 * kind: interface * core: edge-functions * spec: (none) * summary: Context provided to the cron handler function. * score: 2 ### type CronHandlerFn * file: supabase/functions/\_shared/cron-handler.ts:74 * kind: type * core: edge-functions * spec: (none) * summary: The handler function that contains the cron job's business logic. * params: * supabase — Service role Supabase client * logger — Structured logger for the function * ctx — Context with correlation ID, timestamp, and request * returns: A record of result metrics/data to include in the response * score: 2 ### interface CurrentModuleSettings * file: supabase/functions/provision-tenant/module-overrides.ts:95 * kind: interface * core: edge-functions * spec: (none) * summary: Existing pf\_module\_settings values that feed the merge base. * score: 2 ### interface DecisionNode * file: supabase/functions/\_shared/skill-agent.ts:27 * kind: interface * core: edge-functions * spec: (none) * summary: Conditional decision node (mirrors client-side DecisionNode; from JSONB) * score: 2 ### interface DeclaredField * file: supabase/functions/\_shared/ai/agent-action-digest.ts:37 * kind: interface * core: edge-functions * spec: (none) * summary: A declared write field as the caller knows it (name + the value the agent intends to write). * score: 2 ### interface DemographicInput * file: supabase/functions/\_shared/pm-fairness-buckets.ts:126 * kind: interface * core: edge-functions * spec: (none) * summary: Raw demographic inputs — accepted, never stored or returned. * score: 2 ### interface DigestInput * file: supabase/functions/\_shared/ai/agent-action-digest.ts:43 * kind: interface * core: edge-functions * spec: (none) * summary: Inputs to the digest (identifiers + declared write shape; values are redacted, never stored raw). * score: 2 ### interface DirectoryRequest * file: supabase/functions/\_shared/weno/transport.ts:17 * kind: interface * core: edge-functions * spec: (none) * summary: Arguments for a pharmacy-directory download: the fully-built WENO request URL. * score: 2 ### interface DisclosureResult * file: supabase/functions/cl-agent-draft-note/handler.ts:46 * kind: interface * core: edge-functions * spec: (none) * summary: Result of a published-disclosure lookup. * score: 2 ### interface DispatchSummary * file: supabase/functions/\_shared/fw-schedule-dispatch.ts:112 * kind: interface * core: edge-functions * spec: (none) * summary: Outcome tallies for one dispatch tick. * score: 2 ### interface DraftAi * file: supabase/functions/cl-agent-draft-note/handler.ts:96 * kind: interface * core: edge-functions * spec: (none) * summary: AI port — injected by the caller. * score: 2 ### interface DraftDb * file: supabase/functions/cl-agent-draft-note/handler.ts:86 * kind: interface * core: edge-functions * spec: (none) * summary: DB port — injected by the caller (edge function or test). * score: 2 ### interface DraftDeps * file: supabase/functions/cl-agent-draft-note/handler.ts:103 * kind: interface * core: edge-functions * spec: (none) * summary: Full injectable deps bundle. * score: 1 ### interface DraftInput * file: supabase/functions/cl-agent-draft-note/handler.ts:30 * kind: interface * core: edge-functions * spec: (none) * summary: Input required to generate a clinical draft. * score: 2 ### type DraftResult * file: supabase/functions/cl-agent-draft-note/handler.ts:111 * kind: type * core: edge-functions * spec: (none) * summary: Handler result. * score: 1 ### interface DurableLoopArgs * file: supabase/functions/\_shared/ai/agent-run-state-machine.ts:210 * kind: interface * core: edge-functions * spec: (none) * summary: Positional args for , bundled so the durable wrapper can gate . * score: 2 ### interface DurableRunResult * file: supabase/functions/\_shared/ai/agent-run-state-machine.ts:339 * kind: interface * core: edge-functions * spec: (none) * summary: Result of a durable run: the loop result plus the terminal state it reached. * score: 2 ### interface EarningBatchLineInput * file: supabase/functions/proliant-sync/earnings-batch-builder.ts:23 * kind: interface * core: edge-functions * spec: (none) * summary: One explicit earnings line from the request body. * score: 2 ### interface EarningLineError * file: supabase/functions/proliant-sync/earnings-batch-builder.ts:45 * kind: interface * core: edge-functions * spec: (none) * summary: One earning line rejected during build, carrying its array position and theresolved employee so the caller can attribute the failure in the sync logwithout aborting the rest of the batch. * score: 2 ### type EarningLineErrorReason * file: supabase/functions/proliant-sync/earnings-batch-builder.ts:32 * kind: type * core: edge-functions * spec: (none) * summary: Typed per-line validation failure reasons (logged, never thrown). * score: 2 ### interface EarningPeriod * file: supabase/functions/proliant-sync/earnings-batch-builder.ts:74 * kind: interface * core: edge-functions * spec: (none) * summary: Vendor-format (MM/DD/YYYY) period stamp, taken from the target calendar. * score: 2 ### interface EarningsImportBuildResult * file: supabase/functions/proliant-sync/earnings-batch-builder.ts:68 * kind: interface * core: edge-functions * spec: (none) * summary: Outcome of building an earnings batch: the lines that passed validation andthe per-line errors for the rest, so a partial batch can still be pushed. * score: 2 ### interface Eligibility270Input * file: supabase/functions/\_shared/x12/generate-270.ts:8 * kind: interface * core: edge-functions * spec: (none) * summary: PM-15-P2: X12 270 Eligibility Inquiry GeneratorGenerates ANSI X12 270 (005010X279A1) eligibility inquiry segments.Use with envelope.ts to wrap in ISA/GS/ST. * score: 2 ### type EmailModuleCode * file: supabase/functions/\_shared/email-provider.ts:30 * kind: type * core: edge-functions * spec: (none) * summary: Supported module codes for per-module sender lookup * score: 2 ### type EmailProvider * file: supabase/functions/\_shared/email-provider.ts:27 * kind: type * core: edge-functions * spec: (none) * summary: Email transport backend an org sends through: Microsoft Entra (Graph) or Google Workspace Gmail. * score: 2 ### interface EmailProviderConfig * file: supabase/functions/\_shared/email-provider.ts:39 * kind: interface * core: edge-functions * spec: (none) * summary: Resolved per-org email configuration used by : which providerto use, sender identity (with optional per-module override), the Entra andGmail provider settings, and — when present — the PF-101 Google Workspaceconnection metadata (BAA attestation, capability flag, vault-sourcedcredential, sender allowlist) that takes priority over the legacy Gmail path. * score: 2 ### interface EmailSendRequest * file: supabase/functions/\_shared/email-provider.ts:71 * kind: interface * core: edge-functions * spec: (none) * summary: A single outbound message: recipients, subject, HTML body, and optional reply-to/cc/bcc. * score: 2 ### interface EmailSendResult * file: supabase/functions/\_shared/email-provider.ts:85 * kind: interface * core: edge-functions * spec: (none) * summary: Outcome of an email send: success flag, the provider message id on success,a sanitized on failure, the provider used, and whether afallback provider was used after the primary failed. * score: 2 ### interface EmployeeFieldMappingConfig * file: supabase/functions/proliant-sync/field-mapper.ts:36 * kind: interface * core: edge-functions * spec: (none) * summary: Resolved employee field-mapping: each Encore field → the ordered Proliant source keys to try. * score: 2 ### interface EmployeePushSourceModel * file: supabase/functions/proliant-sync/field-mapper.ts:41 * kind: interface * core: edge-functions * spec: (none) * summary: Encore-side employee shape used as the source when pushing an employee to Proliant. * score: 2 ### interface EncounterContext * file: supabase/functions/pm-ai-coding-suggest/prompt.ts:25 * kind: interface * core: edge-functions * spec: (none) * summary: Encounter metadata injected as structured facts (never model-generated). * score: 2 ### interface EncounterFacts * file: supabase/functions/cl-agent-draft-note/handler.ts:52 * kind: interface * core: edge-functions * spec: (none) * summary: Encounter context loaded from DB (used to build the generation prompt). * score: 2 ### interface EnforceResult * file: supabase/functions/\_shared/ai/phi-two-path-enforcer.ts:54 * kind: interface * core: edge-functions * spec: (none) * summary: The enforcer's verdict — the text that may be dispatched, and whether it was redacted. * score: 2 ### interface EnvelopeConfig * file: supabase/functions/\_shared/x12/envelope.ts:10 * kind: interface * core: edge-functions * spec: (none) * summary: PM-15-P2: X12 ISA/GS/ST/SE/GE/IEA Envelope BuilderBuilds ANSI X12 interchange envelopes per the 005010X222A1 (837P),005010X221A1 (835), 005010X279A1 (270/271), 005010X231A1 (999) standards.Element separator: \* | Segment terminator: \~ | Sub-element separator: : * score: 2 ### type ErrorClass * file: supabase/functions/\_shared/fw-error-recovery-policy.ts:29 * kind: type * core: edge-functions * spec: (none) * summary: Error classification result. * score: 1 ### interface EstimatorBenefitInputs * file: supabase/functions/\_shared/pm/benefit-estimator.ts:15 * kind: interface * core: edge-functions * spec: (none) * summary: PM-02-EN-02: Benefit Estimator (pure logic)Calculates patient out-of-pocket responsibility for a single encountergiven a normalized benefit detail row and the contracted/fee-scheduleamount for the CPT.Pure and synchronous — mirror-maintained atsupabase/functions/\_shared/pm/benefit-estimator.ts.See PM-02-EN-02-CONTEXT.md § D3. shared/lib/pm/benefit-estimator * score: 2 ### interface ExemptionAttestation * file: supabase/functions/\_shared/ceem-minimum-necessary.ts:11 * kind: interface * core: edge-functions * spec: (none) * summary: CL-71 — Minimum-necessary builder + validator (DENO MIRROR).Byte-for-byte logic mirror of (the unit-tested source of truth). Edge functions run in Deno and cannotimport paths, so this copy exists for the runtime. KEEP IN LOCKSTEP — the allow-list and FR-4a coarsening rules areload-bearing for 42 CFR Part 2 compliance. * score: 2 ### interface ExpectedBaseline * file: supabase/functions/proliant-payroll-run/expected-baseline.ts:52 * kind: interface * core: edge-functions * spec: (none) * summary: The expected totals a payroll run is reconciled against — derived headcount,gross and deductions plus the audit fields recording which prior period theamount baseline came from and how much batch-pushed earnings it includes. * score: 2 ### interface ExportTimesheetRow * file: supabase/functions/\_shared/timesheet-export-csv.ts:11 * kind: interface * core: edge-functions * spec: (none) * summary: Shape of a single timesheet row as selected by the export edge function. * score: 2 ### interface ExternalModelStep * file: supabase/functions/\_shared/ai/phi-two-path-enforcer.ts:41 * kind: interface * core: edge-functions * spec: (none) * summary: A single external-model-reaching step to evaluate. * score: 2 ### type ExternalStepType * file: supabase/functions/\_shared/ai/phi-two-path-enforcer.ts:26 * kind: type * core: edge-functions * spec: (none) * summary: Every external-model-reaching step type subject to the two-path rule (FR-9/FR-10). * score: 2 ### interface FairnessBuckets * file: supabase/functions/\_shared/pm-fairness-buckets.ts:79 * kind: interface * core: edge-functions * spec: (none) * summary: De-identified protected-class buckets stored in. Contains NO raw demographic value. * score: 2 ### interface FieldMapping * file: supabase/functions/\_shared/import-transforms.ts:25 * kind: interface * core: edge-functions * spec: (none) * summary: A single source→target field mapping, optionally with a transform. * score: 2 ### interface FieldMappingOverrideRecord * file: supabase/functions/proliant-sync/field-mapper.ts:27 * kind: interface * core: edge-functions * spec: (none) * summary: A per-org override row mapping one Proliant field to one Encore field for an entity type/direction. * score: 2 ### interface FilterRecommendationSection * file: supabase/functions/suggest-workspaces/filter.ts:10 * kind: interface * core: edge-functions * spec: (none) * summary: Pure helpers for the suggest-workspaces edge function.Extracted to a separate module so Vitest (Node) can import them withoutpulling in , specifiers, or the Lovable Gateway client.The runtime () re-uses these via a relative import — same code,same coverage, no drift. * score: 2 ### interface FollowUpGapResult * file: supabase/functions/\_shared/cl-followup-gap.ts:71 * kind: interface * core: edge-functions * spec: (none) * summary: What the predicate hands the edge fn to build a gap candidate. * score: 2 ### interface FollowUpTaskInsert * file: supabase/functions/\_shared/follow-up-task.ts:17 * kind: interface * core: edge-functions * spec: (none) * summary: Insert payload for a follow-up row (subset of the table Insert). is a column (and typed non-nullable in), so it must always be a real actor uuid — a null hereBOTH fails the generated type check AND violates the NOT NULLconstraint at runtime. / are nullable uuid columns. * score: 2 ### interface GateResult * file: supabase/functions/\_shared/ai/agent-action-governance.ts:67 * kind: interface * core: edge-functions * spec: (none) * summary: The result the seam needs. * score: 1 ### interface GatewayError * file: supabase/functions/\_shared/ai/errors.ts:11 * kind: interface * core: edge-functions * spec: (none) * summary: PF-111: Unified AI Gateway — error classification + PHI-safe sanitization.Merges the two near-identical legacy implementations ( + /) into one. \_shared/ai/errors * score: 2 ### interface GoogleWorkspaceConnection * file: supabase/functions/\_shared/google-workspace-client.ts:74 * kind: interface * core: edge-functions * spec: (none) * summary: Connection metadata loaded from (ids, primary domain, status, BAA attestation, capability flags, vault credential ref) — never the raw credential. * score: 2 ### interface GovernanceContext * file: supabase/functions/\_shared/ai/agent-action-governance.ts:55 * kind: interface * core: edge-functions * spec: (none) * summary: The context a governance decision needs (no PHI — identifiers + the redacted digest). * score: 2 ### interface GovernanceDecision * file: supabase/functions/\_shared/ai/agent-action-governance.ts:41 * kind: interface * core: edge-functions * spec: (none) * summary: The runtime decision for one proposed tool call. * score: 2 ### interface GovernanceDeps * file: supabase/functions/\_shared/ai/agent-action-governance.ts:73 * kind: interface * core: edge-functions * spec: (none) * summary: Injected effectful collaborators (all overridable for hermetic tests). * score: 2 ### interface GraphCalendarEventBody * file: supabase/functions/\_shared/calendar-provider.ts:34 * kind: interface * core: edge-functions * spec: (none) * summary: A flexible Microsoft Graph event body. Unlike entra-client's (which omits location/attendees), this allows the full Graph shape so theshared callers are not lossy for any caller. The follow-up builder populatesonly the PHI-safe subset. * score: 2 ### interface GraphPushContext * file: supabase/functions/calendar-task-push/index.ts:52 * kind: interface * core: edge-functions * spec: (none) * summary: The single injectable Graph seam. Given the resolved push context, create thecalendar event and return the external id + the (delegated-path) connection id.Throws on any Graph/credential failure — the caller treats a throw as fail-open.The production implementation branches on auth mode (application vs delegated);tests inject a stub so the handler's gating/recipient/fail-open logic isexercised without a live Microsoft Graph. * score: 2 ### interface GwsAdminClient * file: supabase/functions/\_shared/google-workspace-client.ts:322 * kind: interface * core: edge-functions * spec: (none) * summary: Admin SDK Directory client (get/insert/suspend users) bound to one org's PF-101 connection. * score: 2 ### interface GwsCalendarClient * file: supabase/functions/\_shared/google-workspace-client.ts:338 * kind: interface * core: edge-functions * spec: (none) * summary: Calendar client (insert events, free/busy) bound to one org's PF-101 connection. * score: 2 ### interface GwsChatClient * file: supabase/functions/\_shared/google-workspace-client.ts:381 * kind: interface * core: edge-functions * spec: (none) * summary: Chat client (post a message to a space) bound to one org's PF-101 connection. * score: 2 ### interface GwsClientErrorShape * file: supabase/functions/\_shared/google-workspace-client.ts:96 * kind: interface * core: edge-functions * spec: (none) * summary: Shape of a : a sanitized /, optional upstream HTTP , and whether the failure is retryable. * score: 2 ### interface GwsDriveClient * file: supabase/functions/\_shared/google-workspace-client.ts:370 * kind: interface * core: edge-functions * spec: (none) * summary: Drive client (list shared drives + folders, METADATA only) bound to one org's PF-101 connection. * score: 2 ### interface GwsLicensingClient * file: supabase/functions/\_shared/google-workspace-client.ts:361 * kind: interface * core: edge-functions * spec: (none) * summary: Licensing client (idempotent assign/revoke of SKU licenses) bound to one org's PF-101 connection. * score: 2 ### interface GwsReportsClient * file: supabase/functions/\_shared/google-workspace-client.ts:392 * kind: interface * core: edge-functions * spec: (none) * summary: Reports API client (pull audit/usage activities) bound to one org's PF-101 connection. * score: 2 ### interface HispSendInput * file: supabase/functions/\_shared/hisp-adapter.ts:11 * kind: interface * core: edge-functions * spec: (none) * summary: CL-48: Direct/HISP transmission adapter.- Default mock mode: synthesizes a delivery confirmation after a short delay.- Live mode (CDA\_HISP\_MODE=live + CDA\_HISP\_BASE\_URL + CDA\_HISP\_API\_KEY): POSTs the XML to the configured HISP gateway and returns the response.Never logs PHI. Document IDs and endpoint IDs only. * score: 2 ### interface HubspotFieldMapping * file: supabase/functions/\_shared/ce-hubspot-sync.ts:34 * kind: interface * core: edge-functions * spec: (none) * summary: Row shape of the worker consumes. * score: 2 ### type HubspotInboundSource * file: supabase/functions/\_shared/ce-hubspot-webhook.ts:129 * kind: type * core: edge-functions * spec: (none) * summary: Feeder that enqueued the item: webhook (T2), poll (T8), backfill (T12). * score: 2 ### interface HubspotInboundWorkItem * file: supabase/functions/\_shared/ce-hubspot-webhook.ts:132 * kind: interface * core: edge-functions * spec: (none) * summary: Queue work item enqueued to (consumed by T7). * score: 2 ### interface IdentityResolution * file: supabase/functions/\_shared/ce-hubspot-sync.ts:147 * kind: interface * core: edge-functions * spec: (none) * summary: Outcome of the CE-74 batch resolution for one incoming payload. * score: 2 ### type ImportStrictness * file: supabase/functions/\_shared/import-transforms.ts:35 * kind: type * core: edge-functions * spec: (none) * summary: Per-binding enforcement policy persisted on a value\_map transform (PF-15 PR9). * score: 2 ### type InferenceResult * file: supabase/functions/\_shared/denial-model/inference.ts:49 * kind: type * core: edge-functions * spec: (none) * summary: The fields returned by .Matches the full shape; aliased so callers can annotatevariables without importing directly. * score: 2 ### interface IntakeProposal * file: supabase/functions/intake-agent-run/run-intake.ts:176 * kind: interface * core: edge-functions * spec: (none) * summary: The structured intake recommendation the UI renders + drives with. Deriveddeterministically from the read substrate (screening program → PM-38 top candidate → the lead'slinked patient), independent of the model's free-text summary. provider/datetimes mean nobookable candidate was found and the UI must require a manual selection (out of Stage-2 scope). * score: 2 ### interface IntakeReadSources * file: supabase/functions/intake-agent-run/read-tools.ts:21 * kind: interface * core: edge-functions * spec: (none) * summary: The CE/PM read functions the dispatcher calls (production: authenticated reads). * score: 2 ### type JsonObject * file: supabase/functions/provision-tenant/module-overrides.ts:16 * kind: type * core: edge-functions * spec: (none) * summary: PF-50 AC-006 — per-request module/settings override merge logic.Pure, dependency-free so it is unit-testable from the Vitest lane (which cannotimport Deno runtime modules) while the provision-tenant edge function imports itdirectly. See tests/unit/platform/provisioning/module-overrides.test.ts.Overrides supersede the template baseline: - / are jsonb object maps — the override map is DEEP (two-level) merged onto the current/default map, so a partial only flips and preserves every other module the template enabled. - Other whitelisted typed columns are replaced wholesale (scalar override). - Unrecognised keys fall through to (merged, not replaced). * score: 2 ### interface JurisdictionCodingContext * file: supabase/functions/pm-ai-coding-suggest/prompt.ts:40 * kind: interface * core: edge-functions * spec: (none) * summary: Jurisdiction coding context from pf\_resolve\_jurisdiction\_profile (FR-008). * score: 2 ### interface JurisdictionProfile * file: supabase/functions/\_shared/jurisdiction.ts:21 * kind: interface * core: edge-functions * spec: (none) * summary: Resolved jurisdiction profile shape (mirrors src/platform/jurisdiction/types.ts). * score: 2 ### interface KbCitation * file: supabase/functions/\_shared/gr-state-rag.ts:44 * kind: interface * core: edge-functions * spec: (none) * summary: Citation surfaced to the AI prompt and (optionally) returned to the UI. * score: 2 ### type Lane * file: supabase/functions/\_shared/ai/models.ts:16 * kind: type * core: edge-functions * spec: (none) * summary: PF-111: Unified AI Gateway — model routing (single source of truth).Maps a module + lane to an ordered list of identifiers.The ordered list is handed to the gateway, which tries each in order(gateway-native fallback) — replacing the legacy hand-rolled fallback chains.Lanes: - 'standard' — non-PHI workloads; any model allowed (cost/quality tuned). - 'phi' — PHI/SUD workloads (CL-36/PM-64). Fails closed: resolves only when a BAA-confirmed model config is present, else throws. \_shared/ai/models * score: 2 ### interface LookupCode * file: supabase/functions/proliant-code-lookup/lookup-mapper.ts:36 * kind: interface * core: edge-functions * spec: (none) * summary: A single code returned by the Proliant lookup API. The live vendor returnsthe code under (confirmed against the real ReadyPay sandbox for everynon-empty Lookup family, 2026-06-04); in-repo fixtures historically used. Both are accepted, taking precedence. (HR-44 V5) * score: 2 ### type ManualCheckErrorCode * file: supabase/functions/proliant-manual-check/build-check-request.ts:69 * kind: type * core: edge-functions * spec: (none) * summary: Machine-readable validation failure codes for the manual-check gate. * score: 2 ### interface ManualCheckLineItemInput * file: supabase/functions/proliant-manual-check/build-check-request.ts:22 * kind: interface * core: edge-functions * spec: (none) * summary: One earning line on the manual check (Encore-side input shape). * score: 2 ### interface ManualCheckOptionsInput * file: supabase/functions/proliant-manual-check/build-check-request.ts:34 * kind: interface * core: edge-functions * spec: (none) * summary: Optional check-issuance options (vendor + flags). * score: 2 ### interface ManualCheckValidationError * file: supabase/functions/proliant-manual-check/build-check-request.ts:76 * kind: interface * core: edge-functions * spec: (none) * summary: A single typed validation failure (message is PHI-free + user-safe). * score: 2 ### interface MappedIdentityFields * file: supabase/functions/proliant-sync/unmatched-enrichment.ts:19 * kind: interface * core: edge-functions * spec: (none) * summary: The mapped, non-PHI identity fields surfaced from mapProliantEmployee. * score: 2 ### interface MappingCandidateTarget * file: supabase/functions/ai-mapping-suggest/suggest.ts:29 * kind: interface * core: edge-functions * spec: (none) * summary: An Encore-side value the model may pick. Constrains the output to real targets. * score: 2 ### interface MappingExample * file: supabase/functions/ai-mapping-suggest/suggest.ts:41 * kind: interface * core: edge-functions * spec: (none) * summary: An already-accepted mapping, supplied as a few-shot example. * score: 2 ### interface MappingRow * file: supabase/functions/\_shared/transforms/rippling-to-hr.ts:6 * kind: interface * core: edge-functions * spec: (none) * summary: Rippling HRIS → Encore HR TransformerMaps source\_rippling schema tables to hr\_\* tables * score: 2 ### interface MappingSourceItem * file: supabase/functions/ai-mapping-suggest/suggest.ts:17 * kind: interface * core: edge-functions * spec: (none) * summary: A single item to map (e.g. a Proliant earning code + its description). * score: 2 ### interface MappingSuggestion * file: supabase/functions/ai-mapping-suggest/suggest.ts:62 * kind: interface * core: edge-functions * spec: (none) * summary: One suggestion row returned to the consumer. * score: 2 ### interface MappingSuggestRequestBody * file: supabase/functions/ai-mapping-suggest/suggest.ts:48 * kind: interface * core: edge-functions * spec: (none) * summary: Request body for the edge function. * score: 2 ### interface McpConnection * file: supabase/functions/\_shared/mcp-client.ts:47 * kind: interface * core: edge-functions * spec: (none) * summary: Represents an active MCP connection * score: 2 ### interface McpRejectionContext * file: supabase/functions/\_shared/mcp-rejection-audit.ts:19 * kind: interface * core: edge-functions * spec: PF-127 * summary: Non-PHI identity context for a rejection audit row. * see: * auditMcpRejections * score: 5 ### interface McpServerConfig * file: supabase/functions/\_shared/mcp-client.ts:28 * kind: interface * core: edge-functions * spec: (none) * summary: Configuration for an MCP server * score: 2 ### interface McpToolInvocationResult * file: supabase/functions/\_shared/mcp-client.ts:40 * kind: interface * core: edge-functions * spec: (none) * summary: Result of an MCP tool invocation * score: 2 ### interface MergedRetryPolicy * file: supabase/functions/\_shared/fw-error-recovery-policy.ts:16 * kind: interface * core: edge-functions * spec: (none) * summary: Merged retry policy combining rule defaults + node-level overrides. * score: 2 ### type ModelLane * file: supabase/functions/\_shared/ai/phi-two-path-enforcer.ts:23 * kind: type * core: edge-functions * spec: (none) * summary: The resolved model lane for a step. = a BAA/ZDR-covered model (cl/pm); = any other. * score: 2 ### type ModelWeights * file: supabase/functions/\_shared/denial-model/inference.ts:42 * kind: type * core: edge-functions * spec: (none) * summary: Alias for the weights object loaded from model storage. * score: 2 ### interface ModuleSettings * file: supabase/functions/cl-agent-draft-note/handler.ts:40 * kind: interface * core: edge-functions * spec: (none) * summary: Module settings read from DB. * score: 1 ### interface NarrativeBody * file: supabase/functions/cl-agent-draft-note/handler.ts:68 * kind: interface * core: edge-functions * spec: (none) * summary: The whitelist of narrative-only keys the model may populate. * score: 2 ### interface NewRxSyncRequest * file: supabase/functions/\_shared/weno/transport.ts:21 * kind: interface * core: edge-functions * spec: (none) * summary: Arguments for a NewRx sync fetch: the fully-built WENO request URL. * score: 2 ### type OnboardingPayloadResult * file: supabase/functions/proliant-sync/onboarding-builder.ts:47 * kind: type * core: edge-functions * spec: (none) * summary: Either the vendor-ready payload, or the sorted list of missing REQUIRED vendor fields. * score: 2 ### interface OnboardingPushSourceModel * file: supabase/functions/proliant-sync/onboarding-builder.ts:32 * kind: interface * core: edge-functions * spec: (none) * summary: Encore-side source for an onboarding push (mirrors EmployeePushSourceModel fields used). * score: 2 ### interface OrgProcessingErrors * file: supabase/functions/workflow-executor-worker/queue-failure.ts:10 * kind: interface * core: edge-functions * spec: (none) * summary: Minimal shape needed from a per-org ProcessingResult. * score: 2 ### interface OrphanClaimBlock * file: supabase/functions/process-era/orphan-helpers.ts:8 * kind: interface * core: edge-functions * spec: (none) * summary: PM-09-EN-16: Pure helpers for ERA orphan-line capture.Kept free of imports (which pull in Sentry / npm specifiers)so they can be unit-tested with the Deno test runner directly. * score: 2 ### interface OwnedTaxFormEntry * file: supabase/functions/proliant-tax-documents/tax-document-mapper.ts:44 * kind: interface * core: edge-functions * spec: (none) * summary: Raw owned TaxForm entry (content INCLUDED) for the single-document fetch. * score: 2 ### interface Parsed271 * file: supabase/functions/\_shared/x12/parse-271.ts:7 * kind: interface * core: edge-functions * spec: (none) * summary: PM-15-P2: X12 271 Eligibility Response ParserParses ANSI X12 271 (005010X279A1) eligibility/benefit responses. * score: 2 ### interface Parsed277CA * file: supabase/functions/\_shared/x12/parse-277ca.ts:8 * kind: interface * core: edge-functions * spec: (none) * summary: PM-15-P2: X12 277CA Claim Acknowledgment ParserParses ANSI X12 277CA (005010X214) claim-level acknowledgments.Provides per-claim accept/reject status after clearinghouse processing. * score: 2 ### interface Parsed999 * file: supabase/functions/\_shared/x12/parse-999.ts:8 * kind: interface * core: edge-functions * spec: (none) * summary: PM-15-P2: X12 999 Functional Acknowledgment ParserParses ANSI X12 999 (005010X231A1) implementation acknowledgments.Used to confirm receipt and syntactic correctness of submitted X12 files. * score: 2 ### interface ParsedBenefitEnrollment * file: supabase/functions/\_shared/transforms/rippling-benefits-to-hr.ts:33 * kind: interface * core: edge-functions * spec: (none) * summary: Parsed enrollment row per employee per benefit line * score: 2 ### interface ParsedCobraEvent * file: supabase/functions/\_shared/transforms/rippling-benefits-to-hr.ts:45 * kind: interface * core: edge-functions * spec: (none) * summary: Parsed COBRA event from Rippling COBRA report * score: 2 ### interface ParsedEbSegment * file: supabase/functions/\_shared/pm/benefit-parser.ts:18 * kind: interface * core: edge-functions * spec: (none) * summary: Subset of EB-loop fields produced by the clearinghouse adapter. * score: 2 ### interface ParsedERA * file: supabase/functions/\_shared/x12/parse-835.ts:8 * kind: interface * core: edge-functions * spec: (none) * summary: PM-15-P2: X12 835 ERA (Electronic Remittance Advice) ParserParses ANSI X12 835 (005010X221A1) remittance data into structuredobjects for PM-09 payment posting. * score: 2 ### interface PayloadDigest * file: supabase/functions/\_shared/ai/agent-action-digest.ts:53 * kind: interface * core: edge-functions * spec: (none) * summary: The PHI-free envelope persisted as . * score: 2 ### interface PharmacyRecord * file: supabase/functions/\_shared/weno/pharmacy-mapping.ts:43 * kind: interface * core: edge-functions * spec: (none) * summary: A pharmacy mapped from the WENO directory into the column shape. * score: 2 ### interface PhiAccessInput * file: supabase/functions/\_shared/ai/agent-usage.ts:75 * kind: interface * core: edge-functions * spec: (none) * summary: A PHI touch to audit (identifiers + a sanitized category only — never a PHI value). * score: 2 ### interface PhiAccessRecord * file: supabase/functions/\_shared/ai/agent-run-state-machine.ts:159 * kind: interface * core: edge-functions * spec: (none) * summary: A per-operation PHI-access record (FR-14). Identities only — never PHI content. * score: 2 ### interface PlaidDisconnectDeps * file: supabase/functions/plaid-disconnect/index.ts:41 * kind: interface * core: edge-functions * spec: (none) * summary: Auth/infra seams injected into , with production defaults. The user isauthenticated via the injected service client's (same pattern asplaid-exchange-token) so the handler is testable without a live Supabase session. * score: 2 ### interface PlaidSyncResponseFull * file: supabase/functions/\_shared/plaid-client.ts:90 * kind: interface * core: edge-functions * spec: (none) * summary: Result of a full sync (all pages consumed). Use this when you need complete data. * score: 2 ### interface PlaidWebhookJwtPayload * file: supabase/functions/\_shared/plaid-webhook-verify.ts:25 * kind: interface * core: edge-functions * spec: (none) * summary: Decoded Plaid webhook JWT body. Plaid signs (hex sha256 of theraw request body) and (issued-at, epoch seconds) into the JWT; additional claimsare passed through unchanged. * score: 2 ### interface PlaidWebhookSyncMessage * file: supabase/functions/plaid-webhook/index.ts:59 * kind: interface * core: edge-functions * spec: (none) * summary: The plaid\_webhook\_sync message shape the worker (Task 13) drains. * score: 2 ### interface PriorRunRow * file: supabase/functions/proliant-payroll-run/expected-baseline.ts:41 * kind: interface * core: edge-functions * spec: (none) * summary: A prior completed pay period's actuals (period end, gross, deductions) readfrom the sync-run history and used to derive the amount baseline a new run isreconciled against. * score: 2 ### interface ProcedureGapEventPayload * file: supabase/functions/gr-procedure-gap-consumer/buildQIDraftFromGap.ts:8 * kind: interface * core: edge-functions * spec: (none) * summary: GR-13-EN-01: Build a draft QI project from a event payload.Pure function — no Supabase, no Deno, no I/O. Mirror of (kept in sync because edge functions cannot import from ). * score: 2 ### interface ProliantCapabilities * file: supabase/functions/\_shared/proliant-capabilities.ts:21 * kind: interface * core: edge-functions * spec: (none) * summary: Vendor-granted capability flags for a Proliant (ReadyPay) API client, derivedfrom .The endpoint returns a flat list of grant entries theclient's OAuth credentials are provisioned for — e.g. ,, . It is**resource-controller granular** (no , no subpaths):the Lookup families are backed by their resource controllers' GET grant( ⇐ ), so Lookuppull works without a literal entry.The sandbox provisions clients per resource: SBX0028 is granted Employee /Rate / Accrual / TimeImport / Earnings / code-controller writes, but NOT the run family, , or . Calling a non-grantedresource returns (HR-44 V4). Surfacingthese flags turns that opaque 401 into an actionable diagnostic — e.g. thesetup wizard can tell the admin exactly which directions are live and whichneed a ReadyPay grant. * score: 2 ### interface ProliantCredentials * file: supabase/functions/\_shared/proliant-client.ts:13 * kind: interface * core: edge-functions * spec: (none) * summary: Resolved Proliant API credentials for one integration (secrets pulled from the vault). * score: 2 ### type ProliantFixtureMap * file: supabase/functions/\_shared/proliant-transport.ts:14 * kind: type * core: edge-functions * spec: (none) * summary: Canned responses keyed by (path only, no query string). * score: 2 ### interface ProliantReportListItem * file: supabase/functions/proliant-reports/report-list-mapper.ts:20 * kind: interface * core: edge-functions * spec: (none) * summary: One sanitized vendor report, ready for the read-only admin list. * score: 2 ### interface ProliantRequestOptions * file: supabase/functions/\_shared/proliant-client.ts:37 * kind: interface * core: edge-functions * spec: (none) * summary: Per-request options for (method, query, body, correlation id). * score: 2 ### interface ProliantTaxDocumentMeta * file: supabase/functions/proliant-tax-documents/tax-document-mapper.ts:28 * kind: interface * core: edge-functions * spec: (none) * summary: One metadata-only tax document entry for the self-service list. * score: 2 ### interface ProliantTransport * file: supabase/functions/\_shared/proliant-transport.ts:9 * kind: interface * core: edge-functions * spec: (none) * summary: The single vendor-call boundary. already satisfies this shape. * score: 2 ### interface ProvisioningWelcomeInput * file: supabase/functions/\_shared/provisioning-welcome.ts:13 * kind: interface * core: edge-functions * spec: (none) * summary: Pure decision helper for the tenant-provisioning welcome step.Given whether the admin already had an account, returns: - : the Supabase Auth password-recovery email target for a brand-new admin (null when the admin already has a login), and - : an in-app (never email) welcome notification payload.No I/O — the caller () performs the side effects so thisstays unit-testable without a Supabase stack. * score: 2 ### type PullMergeDecision * file: supabase/functions/proliant-sync/sor-direction.ts:25 * kind: type * core: edge-functions * spec: (none) * summary: How a pulled value for a resource should merge (HR-44-EN-01 AC-3): it(overwrite Encore), it (Encore is authoritative — no clobber), or it for manual review. Returned by . * score: 2 ### interface PushEmployeeSubResourcesArgs * file: supabase/functions/proliant-sync/push-subresources.ts:89 * kind: interface * core: edge-functions * spec: (none) * summary: Inputs for : the vendor transport andidempotency log, the company/employee/integration identifiers, the resolvedEncore data to write back (pay rate, dependents, custom fields), and thecapability gates and log sink that keep each sub-resource push non-fatal. * score: 2 ### interface PushLogClient * file: supabase/functions/proliant-sync/push-idempotency.ts:17 * kind: interface * core: edge-functions * spec: (none) * summary: Minimal Supabase client surface this module needs (service-role in practice). * score: 2 ### interface PushSafety * file: supabase/functions/proliant-sync/push-scope.ts:43 * kind: interface * core: edge-functions * spec: (none) * summary: The safety posture of an employee push (HR-44-EN-01 AC-12) — whether it isscoped to an explicit set, whether it is a dry-run preview, and whether itwill actually write to the vendor. Produced by . * score: 2 ### interface RawHubspotWebhookEvent * file: supabase/functions/\_shared/ce-hubspot-webhook.ts:109 * kind: interface * core: edge-functions * spec: (none) * summary: Raw v3 webhook event fields the receiver consumes (research R3). * score: 2 ### interface RawNarrativeOutput * file: supabase/functions/cl-agent-draft-note/handler.ts:76 * kind: interface * core: edge-functions * spec: (none) * summary: Raw model output (may contain extra keys; stripped by mapNarrative). * score: 2 ### interface ReconciliationMatchInput * file: supabase/functions/plaid-apply-rules/reconciliation-match.ts:16 * kind: interface * core: edge-functions * spec: (none) * summary: FA-21 AC-2 (#943): pure builder for fa\_reconciliation\_matches insert rowswritten by plaid-apply-rules when a rule or category mapping auto-creates ajournal entry. Kept free of Deno imports so it can be unit-tested directlyfrom Vitest (Node) — mirrors the \_shared pure-module pattern.The insert shape mirrors ai-match-transactions (organization\_id,reconciliation\_id, bank\_line\_id, gl\_line\_id, match\_type, match\_confidence,notes) plus the NOT NULL the table requires (FK - pf\_profiles). is the deterministic-match value permitted by the table'sCHECK constraint ('auto' | 'manual' | 'ai\_auto' | 'ai\_suggested'); it matchesthe baseline fa\_auto\_match\_transactions function. No migration is required. * score: 2 ### interface RecorderCaptureEvent * file: supabase/functions/\_shared/recorder-transport.ts:23 * kind: interface * core: edge-functions * spec: (none) * summary: A captured event (no — the edge never transmits field contents). * score: 2 ### type RecorderErrorCode * file: supabase/functions/\_shared/recorder-transport.ts:20 * kind: type * core: edge-functions * spec: (none) * summary: PF-119: Recorder capture transport (Deno/edge side).Mirrors (fixture | worker | unavailable). The control plane(auth, org access) stays stable while the *how* of capturing a guided browsersession evolves: - (default in the edge runtime): no browser here, so a live capture cannot run; returns PORTAL\_AUTOMATION\_UNAVAILABLE. The recorder UI degrades to the guided step-builder. - : POST to the external self-hosted Playwright worker's record endpoint, which instruments a real session and returns a trace. Wired but gated on standing up the worker (PORTAL\_WORKER\_URL) — the deferred pilot. - (PORTAL\_BOT\_FIXTURE\_TRANSPORT=1 or PORTAL\_RECORDER\_FIXTURE=1): a deterministic Optum-style trace so the compile → review → save path is hermetically testable with NO live browser. NEVER carries captured values (no secret/PHI ever transits the edge). * score: 2 ### type RedactFn * file: supabase/functions/\_shared/ai/phi-two-path-enforcer.ts:38 * kind: type * core: edge-functions * spec: (none) * summary: The injected redactor (the canonical ). MAY throw fail-closed. * score: 2 ### interface RedactionContext * file: supabase/functions/\_shared/ai/phi-redaction-core.ts:34 * kind: interface * core: edge-functions * spec: (none) * summary: Caller-supplied literal identifiers to remove (names/MRNs/ids known from context). * score: 2 ### interface RedactionResult * file: supabase/functions/\_shared/ai/phi-redaction-core.ts:43 * kind: interface * core: edge-functions * spec: (none) * summary: Result of a redaction: PHI-safe text + per-category match counts (never values). * score: 2 ### interface Redactor * file: supabase/functions/\_shared/ai/agent-action-digest.ts:19 * kind: interface * core: edge-functions * spec: (none) * summary: A redactor decides whether a declared field's value is PHI-bearing (and thus redacted). * score: 2 ### interface RegistryToolDef * file: supabase/functions/\_shared/registry-tool-resolution.ts:18 * kind: interface * core: edge-functions * spec: PF-127 * summary: A model tool definition (matches the shape consumed by the agentic loop). * see: * resolveRegistryToolDefs * score: 5 ### type RejectionAuditRpc * file: supabase/functions/\_shared/mcp-rejection-audit.ts:34 * kind: type * core: edge-functions * spec: PF-127 * summary: Minimal Supabase RPC surface (production: ). * see: * auditMcpRejections * score: 5 ### interface ReminderConfig * file: supabase/functions/\_shared/reminder-engine.ts:111 * kind: interface * core: edge-functions * spec: (none) * summary: Configuration for the reminder engine.Each reminder function defines one of these configs. * score: 2 ### interface ReminderResult * file: supabase/functions/\_shared/reminder-engine.ts:184 * kind: interface * core: edge-functions * spec: (none) * summary: Result of processing reminders. * score: 2 ### interface ReminderThreshold * file: supabase/functions/\_shared/reminder-engine.ts:79 * kind: interface * core: edge-functions * spec: (none) * summary: Configuration for a reminder threshold.Thresholds define how notifications change based on days until due.They are evaluated in order - the FIRST matching threshold wins. * example: | // Overdue: days 0 maxDays: 0, type: 'overdue', title: 'Overdue', bodyTemplate: '...', priority: 'high' // Due within 7 days: 0 = days = 7 maxDays: 7, type: 'due\_soon', title: 'Due Soon', bodyTemplate: '...', priority: 'normal' * score: 5 ### interface RequirementCascadeInput * file: supabase/functions/gr-compliance-on-regulatory-report/resolveRequirementId.ts:10 * kind: interface * core: edge-functions * spec: (none) * summary: GR-14-EN-01: requirement-id resolution cascade for the GR-03 complianceconsumer. Pure (no Deno-specific imports → unit-testable from Vitest).SECURITY-REVIEW FIX M1: the cascade is PER-ORG only. has NO platform-default (organization\_id IS NULL) rows — isorg-scoped and cannot be a global default — so there is no platform-defaultrequirement-map tier. Cascade: org map row → gr\_module\_settings default → null. * score: 2 ### type ResolveToolsRpc * file: supabase/functions/\_shared/registry-tool-resolution.ts:29 * kind: type * core: edge-functions * spec: PF-127 * summary: Minimal Supabase RPC surface (production: ). * see: * resolveRegistryToolDefs * score: 5 ### interface ResumeState * file: supabase/functions/\_shared/ai/agent-run-state-machine.ts:254 * kind: interface * core: edge-functions * spec: (none) * summary: Rehydrated state returned by (FR-5). * score: 2 ### interface RetryConfig * file: supabase/functions/\_shared/transport/retry.ts:8 * kind: interface * core: edge-functions * spec: (none) * summary: PM-15-P2: Exponential Backoff Retry + Dead-LetterProvides retry logic for clearinghouse transport operations.Failed operations beyond max retries are flagged for dead-letter review. * score: 2 ### interface RetryOptions * file: supabase/functions/\_shared/retry.ts:25 * kind: interface * core: edge-functions * spec: (none) * summary: Options for retry behavior. * score: 1 ### type RetryStrategy * file: supabase/functions/\_shared/fw-error-recovery-policy.ts:13 * kind: type * core: edge-functions * spec: (none) * summary: Retry strategy types. * score: 1 ### interface RiskRule * file: supabase/functions/\_shared/ai/agent-action-classifier.ts:33 * kind: interface * core: edge-functions * spec: (none) * summary: A risk-rule row as the classifier consumes it (subset of ). is a platform-seeded global default; a non-null value is anadditive per-org override. * score: 2 ### interface RunRpcClient * file: supabase/functions/\_shared/ai/agent-run-state-machine.ts:205 * kind: interface * core: edge-functions * spec: (none) * summary: Minimal Supabase-RPC surface the governed-RPC callers need (user- or service-scoped).The return is (not ) because supabase-js yields athenable , which resolves but which is not a . * score: 2 ### interface RunStateMachineDeps * file: supabase/functions/\_shared/ai/agent-run-state-machine.ts:232 * kind: interface * core: edge-functions * spec: (none) * summary: Injectable dependencies for / .All optional; defaults call the real governed RPCs and . Testsoverride these to drive lifecycle/spine/budget branches without a DB or network. * score: 2 ### interface ScheduleAuthDeps * file: supabase/functions/calendar-schedule/index.ts:113 * kind: interface * core: edge-functions * spec: (none) * summary: Auth/infra seams injected into , with production defaults. Thecross-org-caller denial guard (#1351) is a security boundary, so it is exercisedby a Deno unit test that injects a stub authenticating a real user and a that denies — without a live stack. Production calls and the defaults wire the real helpers, sothe service-role/cron sentinel + platform-admin parity baked into the real are preserved verbatim. * score: 2 ### interface ScheduleNode * file: supabase/functions/\_shared/fw-schedule-conflicts.ts:13 * kind: interface * core: edge-functions * spec: (none) * summary: Minimal schedule shape needed for conflict analysis. * score: 2 ### interface SchedulingReadClient * file: supabase/functions/intake-agent-run/provider-availability.ts:13 * kind: interface * core: edge-functions * spec: (none) * summary: A structural subset of the Supabase client this read needs (so it is unit-testable). * score: 2 ### interface SelectJoin * file: supabase/functions/\_shared/reminder-engine.ts:102 * kind: interface * core: edge-functions * spec: (none) * summary: A select clause addition for joining related data. * example: | // Joins the course title via foreign key field: 'course:gr\_training\_courses(title)', alias: 'course' * score: 5 ### interface ServiceAccountKey * file: supabase/functions/\_shared/google-workspace-client.ts:88 * kind: interface * core: edge-functions * spec: (none) * summary: Decoded Google service-account JSON key; only and are used, other fields are tolerated. * score: 2 ### interface ServiceTypeMapping * file: supabase/functions/\_shared/pm/service-type-mapper.ts:16 * kind: interface * core: edge-functions * spec: (none) * summary: PM-02-EN-02: Service Type MapperMaps X12 271 EB service type codes to user-friendly behavioral-healthcategories and labels. v1 ships a hardcoded default mapping; per-payeroverrides are deferred (see CONTEXT.md "Open Questions").NOTE: This file is mirror-maintained at supabase/functions/\_shared/pm/service-type-mapper.tsEdge Functions cannot import / aliases; if logic changes here, updatethe mirror copy as well. See PM-02-EN-02-CONTEXT.md § D3. shared/lib/pm/service-type-mapper * score: 2 ### type Severity * file: supabase/functions/gr-cap-from-audit-finding/resolveCapAction.ts:11 * kind: type * core: edge-functions * spec: (none) * summary: GR-04-EN-01 — pure gate logic for the gr-cap-from-audit-finding consumer.Decides whether an audit\_finding\_created event should proceed to CAP creation: - severity gate: only / findings auto-create CAPs. - requirement gate: a finding with no requirement\_id cannot be resolved to an accreditation standard, so it is skipped.Pure (no I/O) so it is unit-testable without a stack. * score: 2 ### interface SkillExample * file: supabase/functions/\_shared/skill-agent.ts:34 * kind: interface * core: edge-functions * spec: (none) * summary: Input/output example for guiding responses (mirrors client-side SkillExample; from JSONB) * score: 2 ### interface SkillGovernanceFields * file: supabase/functions/\_shared/skill-agent.ts:112 * kind: interface * core: edge-functions * spec: (none) * summary: Minimal shape of the loaded skill row needed for the PF-120 runtime gate.Kept structural (not the full generated Row) so the gate is unit-testablewithout the DB and tolerant of the additive PF-120 columns being absent onolder rows (treated as not-yet-governed → blocked unless system). * score: 2 ### interface SkillGuidanceFields * file: supabase/functions/\_shared/skill-agent.ts:45 * kind: interface * core: edge-functions * spec: (none) * summary: The skill-intrinsic guidance fields that PF-62 Phase-0 composes into theassembled system prompt. Kept structural so the composer is unit-testablewithout a DB row, and tolerant of any of the columns being absent/empty. * score: 2 ### interface SkillRAGConfig * file: supabase/functions/\_shared/skill-agent.ts:55 * kind: interface * core: edge-functions * spec: (none) * summary: RAG configuration derived from skill settings * score: 2 ### interface SpineProviders * file: supabase/functions/\_shared/ai/agent-spine.ts:24 * kind: interface * core: edge-functions * spec: (none) * summary: Availability of the external guardrail seams PF-125 consumes but does not own. InPhase 1 the real providers are absent, so the defaults report them inactive — thespine is intentionally unsatisfiable until PF-27-EN-01 / PF-126 wire in. * score: 2 ### interface SpineVerdict * file: supabase/functions/\_shared/ai/agent-spine.ts:46 * kind: interface * core: edge-functions * spec: (none) * summary: Verdict from : whether the spine holds, and which elements are absent. * score: 2 ### interface SsrfCheck * file: supabase/functions/\_shared/ssrf-guard.ts:26 * kind: interface * core: edge-functions * spec: (none) * summary: SSRF egress guard for edge functions that make outbound connections totenant/admin-configured destinations (outbound webhooks, REST API actions,SFTP actions).The destination of these requests is attacker-influenceable (an org admin —or anyone who can write the webhook/connection row — supplies the URL/host),so without a guard the function can be coerced into requesting internalservices or the cloud metadata endpoint (Server-Side Request Forgery).This module blocks loopback, RFC1918 private, carrier-grade NAT, link-local(incl. the 169.254.169.254 cloud metadata address), and other reservedranges — for both IP-literal hosts AND (best-effort) DNS-resolved hostnames,which defeats the common "public hostname that resolves to a private IP"DNS-rebinding variant.Design notes:- Fail-closed on a *confirmed* private destination (IP literal or a hostname that resolves to a private IP).- Fail-open only when DNS resolution is unavailable/errors — we then fall back to the literal check (so we never break a legitimate webhook just because the runtime cannot resolve DNS). This matches the prior inline behaviour in workflow-api-action while strictly strengthening it. * score: 2 ### type SubResourceAction * file: supabase/functions/proliant-sync/push-subresources.ts:45 * kind: type * core: edge-functions * spec: (none) * summary: Per-sub-resource push outcome recorded in the sync log: /on a successful vendor write, on a non-fatal vendor error, and when idempotency or a capability gate suppressed the call. * score: 2 ### type SubResourceEntityType * file: supabase/functions/proliant-sync/push-subresources.ts:51 * kind: type * core: edge-functions * spec: (none) * summary: Sync-log entity types this module emits — a subset of the DB CHECK on (and of index.ts's ). * score: 2 ### type SubResourceLogSink * file: supabase/functions/proliant-sync/push-subresources.ts:61 * kind: type * core: edge-functions * spec: (none) * summary: Best-effort sync-log sink. Implementations MUST never throw. * score: 2 ### type SuppressionChannel * file: supabase/functions/\_shared/ce-suppression.ts:9 * kind: type * core: edge-functions * spec: (none) * summary: CE-16: Shared suppression-check helpers for edge functions.Server-side enforcement for SMS/Email/Phone sends. Mirrors theclient-side semantics: blocksevery channel, otherwise the per-channel column is consulted. * score: 2 ### interface SyncWorkerEnv * file: supabase/functions/\_shared/ce-hubspot-sync-worker-core.ts:118 * kind: interface * core: edge-functions * spec: (none) * summary: HubSpot endpoints + app credentials, resolved by the runtime wrapper. * score: 2 ### interface SystemActorClient * file: supabase/functions/fa-payroll-je-consumer/system-actor.ts:21 * kind: interface * core: edge-functions * spec: (none) * summary: The minimal surface this needs. * score: 2 ### type TaskPushResult * file: supabase/functions/calendar-task-push/index.ts:39 * kind: type * core: edge-functions * spec: (none) * summary: Discriminated result of the push pipeline (HTTP status is derived by the caller). * score: 2 ### interface TimeConflict * file: supabase/functions/\_shared/fw-schedule-conflicts.ts:22 * kind: interface * core: edge-functions * spec: (none) * summary: Two schedules whose next runs fall within the tolerance of each other. * score: 2 ### interface ToolDefinition * file: supabase/functions/\_shared/tool-handlers.ts:19 * kind: interface * core: edge-functions * spec: (none) * summary: Anthropic tool definition format * score: 2 ### interface ToolResult * file: supabase/functions/\_shared/tool-handlers.ts:30 * kind: interface * core: edge-functions * spec: (none) * summary: Result of a tool execution * score: 1 ### interface ToolsGateDecision * file: supabase/functions/\_shared/ai/agent-spine.ts:67 * kind: interface * core: edge-functions * spec: (none) * summary: The tools-gate decision for a run (AC-2 / FR-8 / FR-9). * score: 2 ### interface TraceContext * file: supabase/functions/\_shared/ai/provider.ts:41 * kind: interface * core: edge-functions * spec: (none) * summary: Optional observability correlation, consumed only by the tracing decorator() and ignored by the gateway request body. Carries NO content —just identifiers used to group/filter traces in Langfuse. * score: 2 ### interface TransferUser * file: supabase/functions/\_shared/plaid-client.ts:867 * kind: interface * core: edge-functions * spec: (none) * summary: Plaid transfer recipient user information. Contains PII (legal\_name, phone\_number, email\_address, address).These fields MUST NOT be:- Logged to console or external telemetry- Persisted in plaintext storage- Included in error messagesUse the plaidRequest function pattern for safe handling of requestscontaining this data - it avoids logging request/response bodies. * score: 2 ### type TransportErrorCode * file: supabase/functions/ce-submit-optum-pa/transport.ts:28 * kind: type * core: edge-functions * spec: (none) * summary: CE-69: Optum PA submission transport.The submission to the Optum AZ portal (pct.my.site.com/AZPriorAuth/s/) is apluggable transport so the orchestration (auth, DB writes, audit, fallback)stays stable while the *how* evolves: - (default in the Supabase Deno edge runtime): headless-browser automation (Playwright/Chromium) cannot run inside the edge runtime, so the live transport returns PORTAL\_AUTOMATION\_UNAVAILABLE and the caller degrades to guided manual fallback (AC-6). A real submission path requires either the Optum REST API (beta, not yet GA) or an external browser worker. - (PRIOR\_AUTH\_FIXTURE\_TRANSPORT=1): deterministic success/error for hermetic integration tests — NO live portal calls in CI (spec Q2).When the Optum API GAs (or a browser worker is wired), add a /transport here; the index.ts contract and DB shape do not change. - (PF-119 pilot hook, opt-in, default OFF): routes the submission through the shared portal-bot worker via the seam ( → ) instead of running a browser in the edge runtime. The live cutover is the PF-119 Phase-3 pilot (it needs the external browser worker + a ToS-approved Optum portal flow), so until then this returns the honest "unavailable" and CE-69 keeps its manual fallback (AC-6). This is the documented CE-69 → PF-119 integration point. * score: 2 ### interface TransportInput * file: supabase/functions/ce-submit-optum-pa/transport.ts:49 * kind: interface * core: edge-functions * spec: (none) * summary: Credentials + PHI-bearing payload are passed in-memory only; never logged. * score: 2 ### interface UnmatchedProfileRaw * file: supabase/functions/proliant-sync/unmatched-enrichment.ts:36 * kind: interface * core: edge-functions * spec: (none) * summary: The shape persisted into hr\_proliant\_sync\_log.proliant\_raw for an unmatched row. The index signature keeps it assignable to the jsonb column type (Recordstring, unknown) without a cast at the call site. * score: 2 ### interface UsageRpcClient * file: supabase/functions/\_shared/ai/agent-usage.ts:70 * kind: interface * core: edge-functions * spec: (none) * summary: Minimal supabase-rpc surface (thenable PostgrestFilterBuilder), mirroring PF-125 RunRpcClient. * score: 2 ### interface ValidateAuthOptions * file: supabase/functions/\_shared/auth.ts:45 * kind: interface * core: edge-functions * spec: (none) * summary: Options accepted by to control authentication behaviour.Set to to reject internal service-role callson endpoints that must always operate under a real user session. * see: * validateAuth * score: 5 ### interface ValidationError * file: supabase/functions/pm-ai-coding-suggest/validation.ts:126 * kind: interface * core: edge-functions * spec: (none) * summary: Validation error detail for a single field. * score: 2 ### interface ValidationFailure * file: supabase/functions/\_shared/weno/validators.ts:20 * kind: interface * core: edge-functions * spec: (none) * summary: CL-06-EN-23: WENO payload validators (Deno port of the canonicalsrc/cores/cl/integrations/weno/validators.ts).Pure validation — no I/O, no PHI in error messages. Errors return fieldnames + sanitized reasons only. Required/conditional rules follow WENO's §5ComposeRx schema (1..1 required, ⚠️ C1..1 conditional).This is the canonical EDGE-SIDE home: edge functions cannot import from (separate Deno build, rootDir barrier), so the src copy is mirroredhere. The two are pinned together bytests/unit/cl/weno/validators-parity.test.ts so they can never silentlyre-drift. The edge function consumes , which is athin flat-string adapter over the canonical . * see: * src/cores/cl/integrations/weno/validators.ts (canonical, unit-tested) * docs/weno/WENO\_EZ\_Integration\_Context.md §5 * score: 5 ### interface ValidationResult * file: supabase/functions/pm-ai-coding-suggest/validation.ts:132 * kind: interface * core: edge-functions * spec: (none) * summary: Result of structured output validation. * score: 2 ### interface ValueMapPolicy * file: supabase/functions/\_shared/import-transforms.ts:38 * kind: interface * core: edge-functions * spec: (none) * summary: The decoded payload of a JSON-encoded value\_map transform. * score: 2 ### interface VerifyResult * file: supabase/functions/plaid-webhook/index.ts:46 * kind: interface * core: edge-functions * spec: (none) * summary: Verification result the handler consumes (sig + iat freshness validated → payload trusted). * score: 2 ### interface VersionedHandlers * file: supabase/functions/\_shared/versioning.ts:19 * kind: interface * core: edge-functions * spec: (none) * summary: A map of version keys (e.g. , ) to request handlers. * score: 2 ### interface VersioningOptions * file: supabase/functions/\_shared/versioning.ts:24 * kind: interface * core: edge-functions * spec: (none) * summary: Options for . * score: 1 ### type WenoEndpointType * file: supabase/functions/\_shared/weno/request-builder.ts:25 * kind: type * core: edge-functions * spec: (none) * summary: Endpoint kinds WENO exposes for an EZ launch. * score: 2 ### interface WenoLaunchCreds * file: supabase/functions/\_shared/weno/request-builder.ts:32 * kind: interface * core: edge-functions * spec: (none) * summary: Per-user WENO credentials, sourced server-side from the vault. These areinjected into the wire payload by the builder; they MUST NOT originate fromclient-supplied data or appear in any client-visible payload. * score: 2 ### interface WenoTransport * file: supabase/functions/\_shared/weno/transport.ts:34 * kind: interface * core: edge-functions * spec: (none) * summary: The WENO vendor network boundary. Implementations either hit the real WENOendpoints (production/live) or return injected fixtures (deterministic tests);all other logic — auth, crypto, parsing, persistence — is identical regardless. * score: 2 ### interface WidgetQueryDeps * file: supabase/functions/pf\_widget\_query/index.ts:24 * kind: interface * core: edge-functions * spec: (none) * summary: Injectable auth collaborators for handleRequest, so tests can substitute the auth/org-access checks without a live Supabase. Production uses defaultDeps (the real \_shared/auth helpers). * score: 2 ### interface WorkflowStep * file: supabase/functions/\_shared/skill-agent.ts:18 * kind: interface * core: edge-functions * spec: (none) * summary: Workflow step for multi-phase execution (mirrors client-side WorkflowStep) * score: 2 ## Functions & utilities ### function \_awsTranscribeMedicalCostUsd * file: supabase/functions/\_shared/transcription/vendor-adapters/aws-transcribe-medical-adapter.ts:62 * kind: function * core: edge-functions * spec: (none) * summary: Cost calc helper exposed for the router/cost-ledger when AWS path is wired. * score: 4 ### function \_parseAssemblyaiFixture * file: supabase/functions/\_shared/transcription/vendor-adapters/assemblyai-adapter.ts:144 * kind: function * core: edge-functions * spec: (none) * summary: Test seam — parses an AssemblyAI completed response without making an HTTP call. * score: 4 ### function \_parseAwsTranscribeMedicalFixture * file: supabase/functions/\_shared/transcription/vendor-adapters/aws-transcribe-medical-adapter.ts:57 * kind: function * core: edge-functions * spec: (none) * summary: Test seam — parses an AWS Transcribe Medical fixture without making an HTTP call. * score: 4 ### function \_parseDeepgramFixture * file: supabase/functions/\_shared/transcription/vendor-adapters/deepgram-adapter.ts:130 * kind: function * core: edge-functions * spec: (none) * summary: Test seam — parses a fixture Deepgram response without making an HTTP call. * score: 4 ### function \_resetAllowlistCache * file: supabase/functions/\_shared/mcp-config.ts:83 * kind: function * core: edge-functions * spec: (none) * summary: Reset the cached allowlist (for testing only). * score: 4 ### function acquireAuthHeader * file: supabase/functions/\_shared/transport/rest-transport.ts:98 * kind: function * core: edge-functions * spec: (none) * summary: Build the header value for a clearinghouse request, honoringthe provider's auth scheme: - 'api\_key' → (Stedi) - 'oauth2' → (acquires/caches a client\_credentials token)Exported so the retrieve edge function can share one auth code path. * score: 4 ### function addBusinessDays * file: supabase/functions/\_shared/business-calendar.ts:142 * kind: function * core: edge-functions * spec: (none) * summary: Adds N business days to a date. * score: 4 ### function addChannelMember * file: supabase/functions/\_shared/entra-client.ts:806 * kind: function * core: edge-functions * spec: (none) * summary: Add a user to a channel (for private/shared channels). * score: 4 ### function addChannelTab * file: supabase/functions/\_shared/entra-client.ts:1539 * kind: function * core: edge-functions * spec: (none) * summary: Add a custom tab to a Teams channel.Requires TeamsTab.ReadWrite.All. * score: 4 ### function addSharePointGroupMember * file: supabase/functions/\_shared/entra-client.ts:908 * kind: function * core: edge-functions * spec: (none) * summary: Add a user to a SharePoint group (Microsoft 365 group). * score: 4 ### function addTeamMember * file: supabase/functions/\_shared/entra-client.ts:731 * kind: function * core: edge-functions * spec: (none) * summary: Add a user to a team.Returns the membership ID for later removal. * score: 4 ### function advancePollCursor * file: supabase/functions/\_shared/ce-hubspot-poll.ts:202 * kind: function * core: edge-functions * spec: (none) * summary: Next after a poll: the newest modification among the resultsthat were actually enqueued, never earlier than the current cursor. Anempty/failed enqueue holds the cursor so the next tick re-polls the window. * score: 4 ### function agentActionGovernanceAvailable * file: supabase/functions/\_shared/ai/agent-action-governance.ts:182 * kind: function * core: edge-functions * spec: (none) * summary: Whether PF-126's runtime action governance is available to the PF-125 spine — true only whenthe PF-45 flag is on. An integration site composes this into ;the spine still requires PF-27-EN-01 to be *satisfied*, so PF-126 alone doesnot open the tools gate in Phase 1. * score: 4 ### function applyFieldMappings * file: supabase/functions/\_shared/ce-hubspot-sync.ts:66 * kind: function * core: edge-functions * spec: (none) * summary: Apply in-direction mappings to a HubSpot properties object. Unmappedproperties are returned in (logged at debug level only — AC-9);null/undefined values pass through so a cleared HubSpot field clears themapped Encore field. * score: 4 ### function applyFieldMappings * file: supabase/functions/\_shared/import-transforms.ts:131 * kind: function * core: edge-functions * spec: (none) * summary: Apply field mappings to a raw row, producing the mapped output. Fields whosesource value is null/undefined are omitted. * score: 4 ### function applyRetryJitter * file: supabase/functions/\_shared/fw-error-recovery-policy.ts:130 * kind: function * core: edge-functions * spec: (none) * summary: Applies full jitter: returns a random value in \[0, computedDelay].Per CONTEXT.md: "spread retries in \[0, computedDelay]". * score: 4 ### function applyTransform * file: supabase/functions/\_shared/import-transforms.ts:99 * kind: function * core: edge-functions * spec: (none) * summary: Apply a single transform to a value. Preserves the edge function's existingsemantics for the plain-name transforms and adds value\_map. * score: 4 ### function assertCapabilityAllowed * file: supabase/functions/\_shared/google-workspace-client.ts:168 * kind: function * core: edge-functions * spec: (none) * summary: Fail-closed PHI gate. Throws when capability is PHI-capable and BAA is not attested,or when the capability flag is disabled. * score: 4 ### function assertPublicHost * file: supabase/functions/\_shared/ssrf-guard.ts:107 * kind: function * core: edge-functions * spec: (none) * summary: Validate a destination host (e.g. an SFTP host) for an outbound connection.Performs the literal check, then best-effort DNS resolution to catch apublic hostname that resolves to a private address. * score: 4 ### function assertPublicHttpUrl * file: supabase/functions/\_shared/ssrf-guard.ts:144 * kind: function * core: edge-functions * spec: (none) * summary: Validate an outbound URL for fetch(): scheme must be http(s) and the hostmust be public (literal + best-effort DNS). * score: 4 ### function assertSystemActorExists * file: supabase/functions/fa-payroll-je-consumer/system-actor.ts:35 * kind: function * core: edge-functions * spec: (none) * summary: Throw if the seeded System Automation profile does not exist (or cannot bechecked). Resolves silently when present. * score: 4 ### function assertToolCallIsAllowed * file: supabase/functions/\_shared/ai/tool-guard.ts:40 * kind: function * core: edge-functions * spec: (none) * summary: Assert that is present in the declared tools array.The argument matches the OpenAI-compatible array that received (entries have a field).Throws on violation — callers MUST catch andconvert to an error tool-result instead of letting the exception propagate(to preserve the existing loop control-flow). * score: 4 ### function assignLicense * file: supabase/functions/\_shared/entra-client.ts:513 * kind: function * core: edge-functions * spec: (none) * summary: Assign a license to a user. * params: * credentials — Azure AD app credentials * userId — Entra user ID * skuId — License SKU ID * correlationId — Request correlation ID * score: 1 ### function auditMcpRejections * file: supabase/functions/\_shared/mcp-rejection-audit.ts:64 * kind: function * core: edge-functions * spec: PF-127 * summary: Write a denied/not\_allowlisted row for each rejected MCP server.Returns the count successfully written. FAIL-SOFT: an individual audit error (returned orthrown) is swallowed so a logging failure never breaks the agent run. * score: 5 ### function base64UrlDecode * file: supabase/functions/\_shared/google-workspace-oauth.ts:9 * kind: function * core: edge-functions * spec: (none) * summary: Decodes unpadded base64url into bytes. * score: 4 ### function batchCreateNotifications * file: supabase/functions/\_shared/notification-utils.ts:304 * kind: function * core: edge-functions * spec: (none) * summary: Process a batch of notifications with dedup checking.Useful for processing multiple reminders in a loop. * score: 4 ### function bootstrapSharedEntraSecret * file: supabase/functions/\_shared/entra-credentials.ts:115 * kind: function * core: edge-functions * spec: (none) * summary: Pin the platform shared-app client secret into the org vault after a successfulconnection test. Survives Supabase project restores where edge secrets may be absent.Only runs for orgs using the shared Encore app id (not BYO). * score: 4 ### function bucketPunchLocalDate * file: supabase/functions/\_shared/punch-bucketing.ts:2 * kind: function * core: edge-functions * spec: (none) * summary: Local calendar date (YYYY-MM-DD) for a punch, using its resolved IANA timezone. * score: 4 ### function build837i * file: supabase/functions/\_shared/x12/generate-837i.ts:100 * kind: function * core: edge-functions * spec: (none) * summary: Generate 837I claim segments (between ST/SE envelope) per 005010X223A2.Returns segment array — caller joins with and wraps in envelope. * score: 4 ### function buildAdminClient * file: supabase/functions/\_shared/google-workspace-client.ts:405 * kind: function * core: edge-functions * spec: (none) * summary: Build an Admin SDK client for the org's connection. Caller MUST gate by capability. is the Workspace super-admin to impersonate (DWD subject). * score: 4 ### function buildAgentMessageRow * file: supabase/functions/\_shared/cowork/agent-message.ts:58 * kind: function * core: edge-functions * spec: (none) * summary: Build the attributed pf\_messages row WITHOUT touching the database. Pure + synchronous sothe stamping contract (both attribution columns set, content\_type pinned) is unit-testablewithout a stack. Throws on empty content (Postgres requires non-null; 10000 chars isrejected by pf\_messages\_content\_check at the DB). * score: 4 ### function buildAppealPrompt * file: supabase/functions/pm-ai-appeal-letter/index.ts:82 * kind: function * core: edge-functions * spec: (none) * summary: Build PHI-minimized prompt messages for appeal letter generation.Only coded, non-PHI context flows to the model. PM-29-EN-01 FR-3 * score: 4 ### function buildCalendarClient * file: supabase/functions/\_shared/google-workspace-client.ts:528 * kind: function * core: edge-functions * spec: (none) * summary: PF-101 (T6.1, T6.2): Calendar/Meet client. Caller must pre-validate matches the connection's (sender allowlist). * score: 4 ### function buildCareGapEventRow * file: supabase/functions/\_shared/cl-care-gap-event.ts:48 * kind: function * core: edge-functions * spec: (none) * summary: Build the PHI-minimized row for one identified care gap.Only ids/categoricals/timestamp flow into the payload. * score: 4 ### function buildChatClient * file: supabase/functions/\_shared/google-workspace-client.ts:738 * kind: function * core: edge-functions * spec: (none) * summary: PF-101 (T6.4): Chat client. Sends template-rendered text messages into amapped Chat space. PHI is ALWAYS blocked in Chat (PF-101 Open Decision #4):callers must render only approved PF-10 templates and never log the text.Goes through the 'chat' capability gate (capability flag + BAA, fail-closed). * score: 4 ### function buildCheckRequest * file: supabase/functions/proliant-manual-check/build-check-request.ts:138 * kind: function * core: edge-functions * spec: (none) * summary: Validate + map an Encore manual-check request to the vendor. Returns (all failures, not justthe first) when the practically-required fields are missing/invalid. * score: 4 ### function buildCodeDefinition * file: supabase/functions/proliant-sync/writeback-builders.ts:259 * kind: function * core: edge-functions * spec: (none) * summary: Code-definition body for POST Company/co/EarningCode|DeductionCode|JobCode|ShiftCode|CostCenterNcode. Cost centers also require + use (others use ). Verified live → "Created!". * score: 4 ### function buildCodeResolver * file: supabase/functions/proliant-sync/code-resolver.ts:30 * kind: function * core: edge-functions * spec: (none) * summary: Build a from rows. * score: 1 ### function buildCodingPrompt * file: supabase/functions/pm-ai-coding-suggest/prompt.ts:104 * kind: function * core: edge-functions * spec: PM-64 * summary: Build the AI message array for the coding suggestion request. * params: * input — Coding prompt inputs; note text MUST already be de-identified. * returns: AIMessage array for use with createAIProvider().chat() * score: 5 ### function buildComposeRxObject * file: supabase/functions/\_shared/weno/request-builder.ts:111 * kind: function * core: edge-functions * spec: (none) * summary: Build the WENO ComposeRx wire object in the vendor's documented field order.Credentials (, , ) are injected from theserver-resolved ; never from the client payload.Empty optionals are omitted (WENO errors on empty-valued optional fields). * score: 4 ### function buildContactsPageUrl * file: supabase/functions/\_shared/ce-hubspot-backfill-core.ts:82 * kind: function * core: edge-functions * spec: (none) * summary: GET URL for one contacts list page. * score: 4 ### function buildDeductionAssignments * file: supabase/functions/proliant-sync/writeback-builders.ts:126 * kind: function * core: edge-functions * spec: (none) * summary: Employee deduction-code assignments for (one body per assignment). Required: (a deduction code) + .Verified: → "Created!". * score: 4 ### function buildDependentPayloads * file: supabase/functions/proliant-sync/writeback-builders.ts:194 * kind: function * core: edge-functions * spec: (none) * summary: HR-44-EN-03 AC-3 — employee dependents for POST Company/co/Employee/id/DependentEmployeeDependentViewModel).Source rows are (Encore is the system of record);only rows are pushed. Required per swagger: ,, , , — the vendor requiresthe KEYS, so the booleans default explicitly (isDependent=true — this IS thedependent push; beneficiary=false and smoker=false — Encore does not trackeither yet; isHandicapped=is\_disabled). is the Encore row id:caller-supplied, stable, and what makes the create idempotent + linkable.SSN (PHI) is DELIBERATELY OMITTED in v1: stays encrypted atrest (never decrypted here, never logged) and is never sent.The vendor's Dependent grant is absent today (canPushDependents=false live),so this lane is fixture-proven; a vault-broker SSN lane gets designed whenthe ReadyPay grant lands. See HR-44-EN-03 AC-4.relationship/sex resolve through the dependent\_relationshipgender families WHEN mapped; no dependent-relationship codefamily is pulled from Proliant today, so unresolved values fall back to alight normalization (swagger enums: relationship "Child, Spouse, Other, orNULL"; sex "M, F, or NULL") and otherwise pass through raw for the cutoveradmin to map. * score: 4 ### function buildDeprecationHeaders * file: supabase/functions/\_shared/deprecation.ts:27 * kind: function * core: edge-functions * spec: (none) * summary: Build the full set of deprecation response headers per FR-3.1. * params: * — opts.sunsetHttpDate - RFC 7231 IMF-fixdate string (e.g. "Wed, 11 Nov 2026 23:59:59 GMT"). * — opts.successorMigrationUrl - URL to the migration guide for the successor version. * returns: Record of header name → value for Deprecation, Sunset, and Link. * score: 4 ### function buildDirectDepositsPush * file: supabase/functions/proliant-sync/writeback-builders.ts:76 * kind: function * core: edge-functions * spec: (none) * summary: Direct deposits for (array). Required perentry: , , and must be a valid type — verified ('R'/'Remainder'/'Amount'/'Net' rejected as "Invalid depositAmount Type"). Verified live → "direct deposits have been updated!". * score: 4 ### function buildDriveClient * file: supabase/functions/\_shared/google-workspace-client.ts:675 * kind: function * core: edge-functions * spec: (none) * summary: PF-101 (T6.3): Drive metadata client. Lists shared drives and folders —ids and names ONLY. File contents are never read; PF-11 documentexport/import stays explicit-action-only and out of this client's scope.Goes through the 'drive' capability gate (capability flag + BAA, fail-closed). * score: 4 ### function buildEarningAssignments * file: supabase/functions/proliant-sync/writeback-builders.ts:150 * kind: function * core: edge-functions * spec: (none) * summary: Employee earning-code assignments for (onebody per assignment). Required: (an earning code) + .Verified: → "Created!". * score: 4 ### function buildEarningsImport * file: supabase/functions/proliant-sync/earnings-batch-builder.ts:97 * kind: function * core: edge-functions * spec: (none) * summary: Build vendor earning lines from explicit batch input. Per-line validation:an invalid line yields a typed ; valid lines stillbuild. Pure — unit-tested without the Deno runtime. * score: 4 ### function buildEmbedClaims * file: supabase/functions/\_shared/analytics/embed-token.ts:68 * kind: function * core: edge-functions * spec: (none) * summary: Build the signed-token claim set for a mint request (no raw data; single-org; ≤15m). * score: 4 ### function buildEmergencyContactsPush * file: supabase/functions/proliant-sync/writeback-builders.ts:107 * kind: function * core: edge-functions * spec: (none) * summary: Emergency contacts for (array, whole-setreplace). Fields map to the swagger . Required perentry: . * score: 4 ### function buildEnvelope * file: supabase/functions/\_shared/x12/envelope.ts:73 * kind: function * core: edge-functions * spec: (none) * summary: Build a complete X12 interchange envelope with ISA/GS/ST...SE/GE/IEA. * score: 4 ### function buildFairnessBuckets * file: supabase/functions/\_shared/pm-fairness-buckets.ts:356 * kind: function * core: edge-functions * spec: (none) * summary: Build the complete de-identified object for storage in. Returns ONLY coarse buckets — no rawdemographic value is ever included. PM-50-EN-01 FR-1, FR-5 * score: 4 ### function buildFHIROperationOutcome * file: supabase/functions/cl-lab-result-ingestion/ack-response.ts:36 * kind: function * core: edge-functions * spec: (none) * summary: Build a FHIR OperationOutcome JSON response body. * score: 4 ### function buildFollowUpCalendarEvent * file: supabase/functions/\_shared/calendar-provider.ts:60 * kind: function * core: edge-functions * spec: (none) * summary: Build a single PHI-safe, all-day calendar event for a follow-up due date.The builder takes ONLY the due date + deep-link, so a raw task title cannever reach the Graph payload by construction. * score: 4 ### function buildFollowUpTaskInsert * file: supabase/functions/\_shared/follow-up-task.ts:56 * kind: function * core: edge-functions * spec: (none) * summary: Build the insert for a meeting-sourced follow-up. * score: 4 ### function buildHL7v2Ack * file: supabase/functions/cl-lab-result-ingestion/ack-response.ts:12 * kind: function * core: edge-functions * spec: (none) * summary: Build an HL7v2 ACK message. * score: 1 ### function buildHubspotAuthorizeUrl * file: supabase/functions/\_shared/ce-hubspot-oauth.ts:130 * kind: function * core: edge-functions * spec: (none) * summary: Builds the HubSpot authorization URL for the connect redirect. * score: 4 ### function buildIdentityPayload * file: supabase/functions/\_shared/ce-hubspot-sync.ts:131 * kind: function * core: edge-functions * spec: (none) * summary: Build the payload from raw HubSpot properties. * score: 4 ### function buildImpactClassifierPrompt * file: supabase/functions/\_shared/gr-impact-classifier.ts:110 * kind: function * core: edge-functions * spec: (none) * summary: Build the user prompt for the impact classifier.SECURITY: diffExcerpt MUST have been passed through neutralizeToolResult() before calling.The prompt never contains org IDs, user data, or PHI. * params: * diffExcerpt — neutralized content excerpt (max 3000 chars applied here) * requirements — org requirements with 1-based numbering in prompt * jurisdictionLabel — human-readable jurisdiction label (no org name/ID) * score: 4 ### function buildLicensingClient * file: supabase/functions/\_shared/google-workspace-client.ts:581 * kind: function * core: edge-functions * spec: (none) * summary: PF-101 (T6.5): License Manager client. Idempotent assign/revoke. * score: 4 ### function buildMcpRejectionLog * file: supabase/functions/\_shared/mcp-rejection-audit.ts:43 * kind: function * core: edge-functions * spec: PF-127 * summary: Build the params for one rejected MCP server (keys + decision only — PHI-free). * score: 5 ### function buildOnboardingPayload * file: supabase/functions/proliant-sync/onboarding-builder.ts:118 * kind: function * core: edge-functions * spec: (none) * summary: Build the onboarding payload, or report the missing REQUIRED vendor fields.Returns when every required field is present, (sorted vendor field names) otherwise — the caller skips with that reason. * score: 4 ### function buildOrgContextBlock * file: supabase/functions/\_shared/ai-org-context.ts:257 * kind: function * core: edge-functions * spec: (none) * summary: Assemble the single org-context block for an organization, once per request. * params: * supabase — Service-role (or org-scoped) Supabase client. * organizationId — The resolved org UUID (never trusted from the request body). * returns: The labeled block, or when there is nothing to inject (no published article and no structured facts) — a graceful no-op the caller drops via . PHI-safe by construction: reads only business facts + the article (via ); never queries PHI-bearing tables. * score: 4 ### function buildOrphanInsertRow * file: supabase/functions/process-era/orphan-helpers.ts:28 * kind: function * core: edge-functions * spec: (none) * summary: Build the row payload for an unmatched 835 claim block.Pure function — no I/O. * score: 4 ### function buildPayloadDigest * file: supabase/functions/\_shared/ai/agent-action-digest.ts:88 * kind: function * core: edge-functions * spec: (none) * summary: Build the PHI-free envelope for an action (FR-4). Field values are nevercopied in — each declared field becomes where is theinjected redactor's verdict. is opacified. Reads as non-PHI-by-construction. * params: * input — The action shape (identifiers + declared write fields + attachment summary). * redactor — The redaction policy; defaults to the PF-27-EN-01 . * score: 4 ### function buildPayrollJournalEntry * file: supabase/functions/fa-payroll-je-consumer/je-builder.ts:43 * kind: function * core: edge-functions * spec: (none) * summary: Builds a balanced, draft PAYROLL-sourced journal entry from mapped GL lines.Throws if total debits !== total credits (tolerance 0.005). * score: 4 ### function buildPollSearchBody * file: supabase/functions/\_shared/ce-hubspot-poll.ts:83 * kind: function * core: edge-functions * spec: (none) * summary: Search body for contacts modified at/after the cursor, oldest first. * score: 4 ### function buildPushKey * file: supabase/functions/proliant-sync/push-idempotency.ts:50 * kind: function * core: edge-functions * spec: (none) * summary: Build a stable idempotency key: . identifies the logical target (e.g. an employee id, or a pair); is from . * score: 4 ### function buildRatePush * file: supabase/functions/proliant-sync/writeback-builders.ts:32 * kind: function * core: edge-functions * spec: (none) * summary: Employee pay-rate body for . Required: (a Rate lookup code) + . is the hourly/numeric rate.Verified: → "Rate created!". * score: 4 ### function buildReconciliationMatchRow * file: supabase/functions/plaid-apply-rules/reconciliation-match.ts:40 * kind: function * core: edge-functions * spec: (none) * summary: Build the fa\_reconciliation\_matches insert row for an auto-matched bank line. * score: 4 ### function buildReportsClient * file: supabase/functions/\_shared/google-workspace-client.ts:630 * kind: function * core: edge-functions * spec: (none) * summary: PF-101 (T6.6): Reports API client (audit activities only). PHI policy: ingestIDs and event metadata only; never persist message bodies, file contents,subjects, attendee free-text, etc. * score: 4 ### function buildRxLogObject * file: supabase/functions/\_shared/weno/request-builder.ts:179 * kind: function * core: edge-functions * spec: (none) * summary: WENO's RxLog launch payload is exactly two fields — the user's credentials.Which prescriber's log is shown is determined by these credentials. * score: 4 ### function buildSkillAgent * file: supabase/functions/\_shared/skill-agent.ts:346 * kind: function * core: edge-functions * spec: (none) * summary: Load a skill from the database, apply org override, and build AgentConfig.PF-120: before the agent is constructed, a governance gate is applied to theloaded skill — it must be / (or a system skill), and ifit carries a the caller must hold it. On any failurethis returns so the caller falls back to the module default /; an unapproved or unauthorized skill never executes. * params: * skillCode — skill\_code value from pf\_ai\_skills * organizationId — requesting organization * supabaseAdmin — service-role client (bypasses RLS) * userId — authenticated caller (from the JWT) for the PF-120 re-check; pass for trusted callers. Omitting it disables only the permission re-check (lifecycle gate still applies). * returns: AgentConfig or null if skill not found / disabled / refused by the gate * score: 4 ### function buildSkillGuidanceBlock * file: supabase/functions/\_shared/skill-agent.ts:250 * kind: function * core: edge-functions * spec: (none) * summary: PF-62 Phase-0: compose a skill's intrinsic guidance — (harddirectives), , and — into a clearly-delimitedMarkdown block for the assembled system prompt. These columns were seeded butNEVER injected at runtime; in particular carries load-bearingno-PHI directives (PF-62-EN-01 AC-7) that must be enforced in-prompt.Rendering rules: - — framed as hard requirements the model MUST follow; every constraint is rendered in full (load-bearing, never elided). - — each node rendered as an "If , then " rule (with an optional next-step pointer). - — bounded by SKILL\_GUIDANCE\_CAPS (count + token budget + per -field char cap); overflow is elided with a note, but at least one example is always kept.Pure (no I/O) so it is directly unit-testable. Returns '' when the skill has noguidance fields, so the caller can append conditionally. * params: * skill — the loaded skill's guidance fields * returns: the composed block, or '' when there is nothing to inject * score: 4 ### function buildSuccessorVersionLink * file: supabase/functions/\_shared/deprecation.ts:16 * kind: function * core: edge-functions * spec: (none) * summary: Build a header value pointing to the successor version migration guide. * params: * migrationUrl — Absolute URL to the migration documentation. * returns: Formatted Link header value with . * score: 4 ### function buildSuggestTool * file: supabase/functions/ai-mapping-suggest/suggest.ts:109 * kind: function * core: edge-functions * spec: (none) * summary: Build the forced-tool definition. Constraining to thecandidate enum (+ NO\_MATCH) makes hallucinated Encore values impossible — themodel can only choose a real target or explicitly decline. * score: 4 ### function buildSystemPrompt * file: supabase/functions/ai-mapping-suggest/suggest.ts:142 * kind: function * core: edge-functions * spec: (none) * summary: System prompt — generic, domain-agnostic, no PHI guidance needed (config data). * score: 4 ### function buildTaxesPush * file: supabase/functions/proliant-sync/writeback-builders.ts:50 * kind: function * core: edge-functions * spec: (none) * summary: Employee tax elections for (array). Required perentry: + . Verified: \[taxCode:'FITW',filingStatus:'S',exemptions:0,startDate:'2024-06-01'] → "Employee taxes have been updated!". * score: 4 ### function buildTimeImportPayload * file: supabase/functions/proliant-payroll-run/time-import.ts:28 * kind: function * core: edge-functions * spec: (none) * summary: Map approved timesheet rows to TimeImport lines; unmapped employees are skipped. * score: 4 ### function buildTimesheetExportCsv * file: supabase/functions/\_shared/timesheet-export-csv.ts:34 * kind: function * core: edge-functions * spec: (none) * summary: Builds the payroll-export CSV for the legacy date-range path.Filters to (AC-37 — the sole approved-only gate nowthat the SQL filter is removed), then emits thestandard 6-column CSV (AC-36/AC-38) with the exact header and per-entry rowformat the inline edge-function code produced. * returns: the CSV text and the number of approved timesheets included. * score: 4 ### function buildUnmatchedProfileRaw * file: supabase/functions/proliant-sync/unmatched-enrichment.ts:87 * kind: function * core: edge-functions * spec: (none) * summary: Build the enriched, PHI-minimized proliant\_raw for an unmatched skip row\.Only the whitelisted identity fields are copied; everything else from themapped payload is intentionally dropped so no SSN/DOB/address can leak intothe audit log. * score: 4 ### function buildUsageRecord * file: supabase/functions/\_shared/ai/usage.ts:21 * kind: function * core: edge-functions * spec: (none) * summary: Build a PHI-safe usage record from a completion result. * score: 4 ### function buildUserPrompt * file: supabase/functions/ai-mapping-suggest/suggest.ts:190 * kind: function * core: edge-functions * spec: (none) * summary: User prompt embedding the source items, allowed candidates, and few-shot examples.Candidate scoping: when a source item carries a and at least onecandidate shares that type, only those candidates are shown for that item.This prevents a code from being distracted by or candidates. Items with no type (or whose type has nomatching candidates) fall back to the full candidate pool — preservingtoday's behaviour for untyped consumers. * score: 4 ### function calculateBenefitEstimate * file: supabase/functions/\_shared/pm/benefit-estimator.ts:48 * kind: function * core: edge-functions * spec: (none) * summary: Estimate patient responsibility. Deductible applied first, then coinsuranceon remaining amount, then copay (if present). Total is capped by remainingout-of-pocket maximum when known. * score: 4 ### function calculateDaysUntil * file: supabase/functions/\_shared/notification-utils.ts:366 * kind: function * core: edge-functions * spec: (none) * summary: Calculate days between now and a target date.Returns negative values for past dates (overdue). * score: 4 ### function calculateDeadline * file: supabase/functions/\_shared/deadline-calculator.ts:25 * kind: function * core: edge-functions * spec: (none) * summary: Calculate the statutory deadline for a regulatory reporting obligation. * params: * incidentDate — Date/time the incident occurred * deadlineHours — Number of hours allowed for reporting * deadlineType — Whether hours are calendar or business hours * supabaseClient — Service-role Supabase client for holiday lookup * organizationId — Optional org ID for org-specific holidays * returns: The computed deadline as a Date * score: 4 ### function calculateNextExecution * file: supabase/functions/\_shared/fw-schedule-evaluator.ts:32 * kind: function * core: edge-functions * spec: (none) * summary: Compute the next execution time for a schedule relative to .Returns null when not time-driven (dependency/manual) or a one-time datetimehas already elapsed. Throws on an invalid/missing cron expression. * score: 4 ### function calculateNextRetryAt * file: supabase/functions/\_shared/transport/retry.ts:89 * kind: function * core: edge-functions * spec: (none) * summary: Calculate next retry timestamp for database storage. * score: 4 ### function calculateSmsSegments * file: supabase/functions/\_shared/ringcentral-sms-adapter.ts:174 * kind: function * core: edge-functions * spec: (none) * summary: Calculate the number of SMS segments for a messageSMS segment limits:- GSM-7 encoding: 160 chars (single), 153 chars per segment (concatenated)- UCS-2 encoding (unicode): 70 chars (single), 67 chars per segment * score: 4 ### function callerHoldsRequiredPermission * file: supabase/functions/\_shared/skill-agent.ts:153 * kind: function * core: edge-functions * spec: (none) * summary: PF-120 FR-12 — runtime re-check (defense-in-depth).When a non-system skill carries a non-NULL , the callerMUST hold that permission to execute it — a stale client-side catalog mustnot let a member run a skill they cannot access. System skills and skillswith a NULL are not permission-gated here.Fails closed: any RPC error (or a missing caller id) denies execution. * params: * skill — the loaded skill governance fields * organizationId — requesting organization * userId — the authenticated caller (NOT trusted from the request body) * supabaseAdmin — service-role client used to evaluate * returns: true if the caller may run the skill * score: 4 ### function cancelTransfer * file: supabase/functions/\_shared/plaid-client.ts:1110 * kind: function * core: edge-functions * spec: (none) * summary: Cancel a pending transferOnly transfers with status 'pending' can be cancelled. * score: 4 ### function candidateValueEnum * file: supabase/functions/ai-mapping-suggest/suggest.ts:96 * kind: function * core: edge-functions * spec: (none) * summary: The set of valid output values: every candidate value plus the NO\_MATCH sentinel. * score: 4 ### function canSendSms * file: supabase/functions/\_shared/sms-provider.ts:391 * kind: function * core: edge-functions * spec: (none) * summary: Check if sending is allowed based on consent status * score: 4 ### function captureEdgeError * file: supabase/functions/\_shared/sentry-edge.ts:68 * kind: function * core: edge-functions * spec: (none) * summary: Capture an exception from an edge function context.No-op if Sentry was not initialized (SENTRY\_DSN not set). * score: 4 ### function checkAgentBudget * file: supabase/functions/\_shared/ai/agent-usage.ts:54 * kind: function * core: edge-functions * spec: (none) * summary: Decide whether a gateway completion may dispatch under the per-org / per-agent / per-taskbudgets (FR-9). The three caps are evaluated **independently** — any hard breach throttles(fail-closed, most-specific dimension reported first). An org soft-limit breach (under thehard limit) warns but proceeds. Pure: identical inputs → identical verdict. * params: * input — The three budget dimensions (omit a dimension to leave it uncapped). * projectedCost — The estimated incremental cost/tokens of the pending call. * score: 4 ### function checkAutoNoOp * file: supabase/functions/\_shared/gr-impact-classifier.ts:180 * kind: function * core: edge-functions * spec: (none) * summary: Determine if an impact qualifies for automatic no\_op resolution.All conditions must hold: - proposed\_action === 'no\_op' - confidence = threshold - auto\_no\_op\_disabled === falseThis is the ONLY auto-resolution path. All other proposed actions require human review. * score: 4 ### function checkHealth * file: supabase/functions/\_shared/transport/rest-transport.ts:174 * kind: function * core: edge-functions * spec: (none) * summary: Check clearinghouse health via a lightweight API ping. * score: 4 ### function checkIdempotency * file: supabase/functions/fa-gr-compliance-cost-consumer/index.ts:238 * kind: function * core: edge-functions * spec: (none) * summary: Returns true if an event with this reference\_id already processed. * score: 4 ### function checkRateLimit * file: supabase/functions/\_shared/rate-limiter.ts:27 * kind: function * core: edge-functions * spec: (none) * summary: Utility for check rate limit. * score: 1 ### function checkRunBudget * file: supabase/functions/\_shared/ai/agent-run-state-machine.ts:148 * kind: function * core: edge-functions * spec: (none) * summary: Fail-closed budget check against the run-row ceiling (FR-12). Over-budget if the runcarries a and projected usage would meet/exceed it. With no ceilingset, returns not-exceeded (the full PF-111-EN-01 per-dimension ledger is deferred —see ). * score: 4 ### function checkSmsConsent * file: supabase/functions/\_shared/sms-provider.ts:366 * kind: function * core: edge-functions * spec: (none) * summary: Check if a phone number has SMS consent * params: * supabase — Supabase client * organizationId — Organization UUID * phoneNumber — Phone number to check (E.164) * returns: Consent status or null if not found * score: 4 ### function checkSudConsent * file: supabase/functions/fhir-r4/consent-check.ts:27 * kind: function * core: edge-functions * spec: (none) * summary: Check if the patient has active Part 2 (SUD) consent for data disclosure.If no Part 2 consent exists, SUD-related resources should be excluded. * params: * supabase — Service role client * organizationId — Tenant ID * chartId — Patient chart ID * correlationId — For logging * score: 4 ### function checkTcpaConsent * file: supabase/functions/\_shared/tcpa-consent.ts:30 * kind: function * core: edge-functions * spec: (none) * summary: Determine whether an SMS may be sent to the given patient right now\.1. Checks that a TCPA/SMS consent record exists for the patient-org pair.2. Checks quiet hours using the organization's configured timezone. * returns: or . * score: 4 ### function clampTtlSeconds * file: supabase/functions/\_shared/analytics/embed-token.ts:51 * kind: function * core: edge-functions * spec: (none) * summary: Clamp a requested TTL to (0, MAX\_EMBED\_TTL\_SECONDS]. A missing / non-positive / non-finiterequest defaults to the maximum (still ≤ 15 min). The result can never exceed the cap. * score: 4 ### function classifyAgentAction * file: supabase/functions/\_shared/ai/agent-action-classifier.ts:123 * kind: function * core: edge-functions * spec: (none) * summary: Classify a proposed agent tool call into a risk tier (FR-1, FR-2, FR-17).Order of decision: 1. **Prohibited** (FR-17) — a hard deny, ahead of any rule, with no approval path. 2. **Rule precedence** (FR-2) — per-org+tool per-org global+tool global; ties → the most restrictive tier (deny-by-default). 3. **Deny-by-default** — no matching rule → (a write/outbound action is never ). The runtime gate's server-authoritative applies the identical contract; this in-memory copy keeps the hot path DB-free. * params: * input — The action identifiers (no PHI). * rules — The cached per-org + global rule set (TTL ≤ 30 s, NFR-perf-1). * score: 4 ### function classifyError * file: supabase/functions/\_shared/ai/errors.ts:37 * kind: function * core: edge-functions * spec: (none) * summary: Classify a gateway HTTP status into a structured, user-safe error.429 → retryable; 402 (credits) and 401 (auth) → not retryable; 5xx → retryable. * score: 4 ### function classifyError * file: supabase/functions/\_shared/checkpointHelpers.ts:36 * kind: function * core: edge-functions * spec: (none) * summary: Classifies an error for retry/DLQ routing decisions. * score: 4 ### function classifyError * file: supabase/functions/\_shared/fw-error-recovery-policy.ts:158 * kind: function * core: edge-functions * spec: (none) * summary: Classifies an error as transient, permanent, or unknown. * score: 4 ### function classifyRefreshFailure * file: supabase/functions/\_shared/ce-hubspot-sync.ts:286 * kind: function * core: edge-functions * spec: (none) * summary: Classify a failed token refresh. (HubSpot's uninstall /revocation surface, R6) and other 4xx auth rejections → needs\_reauth: flipthe connection and pause feeders. 429/5xx/network → transient: retry later. * score: 4 ### function clusterBatch * file: supabase/functions/\_shared/ce-hubspot-backfill-core.ts:187 * kind: function * core: edge-functions * spec: (none) * summary: Cluster one page for in-set duplicates: union by shared normalized email orphone key, then a conservative trigram pass that only mergesstill-singleton contacts whose names clear the threshold AND share a zip(never merges on name alone). Member order inside a cluster follows pageorder, so the representative is the earliest record. * score: 4 ### function coerceTotals * file: supabase/functions/\_shared/ce-hubspot-backfill-core.ts:271 * kind: function * core: edge-functions * spec: (none) * summary: Coerce a run row's jsonb totals back to the typed shape. * score: 4 ### function coerceToType * file: supabase/functions/\_shared/expressionEvaluator.ts:614 * kind: function * core: edge-functions * spec: (none) * summary: Coerce a value to a specific type * score: 4 ### function collectScanText * file: supabase/functions/ai-mapping-suggest/suggest.ts:81 * kind: function * core: edge-functions * spec: (none) * summary: Concatenate every free-text field a request carries, for the defense-in-depthPHI tripwire. Reference/config data should never contain PHI; if the detectorfires, the caller fails closed (drops the AI call). * score: 4 ### function composeBedBoard * file: supabase/functions/\_shared/clinical-bed-board/composer.ts:107 * kind: function * core: edge-functions * spec: (none) * summary: Compose the platform bed board for a given org. Returns rows + summary plusa flag the route handler uses to choose 503. * score: 4 ### function computeDisparityRatio * file: supabase/functions/pm-ai-fairness-monitor/scoring.ts:100 * kind: function * core: edge-functions * spec: (none) * summary: Compute the disparity ratio for each group relative to the reference group.The reference group is the group with the highest approval rate (1 minus denial rate).Every other group's approval rate is divided by the reference rate to yield itsdisparity ratio. A ratio below DISPARITY\_THRESHOLD (0.8) indicates adverse impactunder the four-fifths rule. * params: * denialRates — Map of class\_value to predicted\_denial\_rate (0-1) * returns: Map of class\_value to disparity ratio (reference group = 1.0) * score: 4 ### function computeEmployeeFieldDiff * file: supabase/functions/proliant-sync/field-diff.ts:28 * kind: function * core: edge-functions * spec: (none) * summary: Diff an incoming hr\_employees update payload against the existing row\.Only keys present in are compared (an omitted column is "notwritten", not "cleared"). is flattened one level so eachsub-key gets its own audit row. Keys present in but absent from the incoming payload are not tracked as deletions. * score: 4 ### function computeFailureRate * file: supabase/functions/pf-check-ai-usage-anomalies/index.ts:92 * kind: function * core: edge-functions * spec: (none) * summary: Compute failure rate (0-100) per org from raw log rows.Returns 0 for orgs with no rows. * params: * logs — Array of org\_id, success rows * returns: MaporgId, failureRatePct where rate is 0.0–100.0 * score: 4 ### function computeFollowUpDueDate * file: supabase/functions/\_shared/follow-up-task.ts:49 * kind: function * core: edge-functions * spec: (none) * summary: Compute the follow-up task due date as the meeting end date (UTC) plus whole days, returned as a string (a column value). * score: 4 ### function computeHubspotV3Signature * file: supabase/functions/\_shared/ce-hubspot-webhook.ts:48 * kind: function * core: edge-functions * spec: (none) * summary: base64(HMAC-SHA256(clientSecret, method + uri + body + timestamp)). * score: 4 ### function computeNextRetryAt * file: supabase/functions/\_shared/gr-impact-classifier.ts:203 * kind: function * core: edge-functions * spec: (none) * summary: Compute the next retry-due timestamp based on attempt count and backoff schedule.Returns null if max attempts exceeded. * score: 4 ### function computeRetryDelayMs * file: supabase/functions/\_shared/fw-error-recovery-policy.ts:90 * kind: function * core: edge-functions * spec: (none) * summary: Computes the raw retry delay (before jitter) for a given attempt index. * params: * policy — Merged retry policy * attemptIndex — Zero-based attempt index (0 = first retry) * returns: Delay in milliseconds, capped at * score: 4 ### function computeSeverityFloor * file: supabase/functions/\_shared/gr-regulatory-content.ts:195 * kind: function * core: edge-functions * spec: (none) * summary: Compute a severity floor based on the diff between two normalized content strings.Rules: - =30% of lines changed - minimum 'major' - high-risk section name in the combined text - minimum 'major' - Otherwise - 'minor' (meaningful change but not high-risk)This is a FLOOR: the AI classifier may propose a higher severity; the floorprevents under-classification when the heuristic fires. * score: 4 ### function computeTokenExpiresAt * file: supabase/functions/\_shared/ce-hubspot-oauth.ts:183 * kind: function * core: edge-functions * spec: (none) * summary: Computes the ISO expiry timestamp for an access token from now + expires\_in. * score: 4 ### function computeTokenExpiry * file: supabase/functions/\_shared/google-client.ts:268 * kind: function * core: edge-functions * spec: (none) * summary: Compute a token-expiry ISO string from a Google (seconds). * score: 4 ### function computeZScore * file: supabase/functions/pm-ai-fairness-monitor/scoring.ts:74 * kind: function * core: edge-functions * spec: (none) * summary: Compute the z-score of relative to the rolling distribution.Returns 0 when stddev is 0 (flat series or insufficient data) to avoiddivision-by-zero and spurious alerts. * params: * value — Today's observation (e.g. predicted\_denial\_rate) * mean — Rolling mean from rollingStats * stddev — Rolling standard deviation from rollingStats * score: 4 ### function containsUnredactedPhi * file: supabase/functions/\_shared/ai/phi-redaction-core.ts:196 * kind: function * core: edge-functions * spec: (none) * summary: True when redacted text still contains a recognizable identifier (a residual-PHI tripwire). * score: 4 ### function contrastRatio * file: supabase/functions/\_shared/compliance-contrast.ts:27 * kind: function * core: edge-functions * spec: (none) * summary: Contrast ratio between two hex colors (1–21). * score: 4 ### function countSegments * file: supabase/functions/\_shared/x12/envelope.ts:136 * kind: function * core: edge-functions * spec: (none) * summary: Count segments between ST and SE (inclusive). * score: 4 ### function createAIProvider * file: supabase/functions/\_shared/ai/vercel-gateway.ts:178 * kind: function * core: edge-functions * spec: (none) * summary: Create the configured AIProvider singleton. Reads the single canonical Edge Function Secret (throws if absent).The provider is wrapped with Langfuse tracing (). Tracingis inert (zero overhead beyond a passthrough call) unless and are configured, and never affects the AI call. * score: 4 ### function createAuthorizationError * file: supabase/functions/\_shared/errors.ts:162 * kind: function * core: edge-functions * spec: (none) * summary: Create a standardized 403 Forbidden error response for authorization failures.Security: includes an X-Correlation-ID header for tracing. Do not include PHI/PII in . * params: * message — User-facing error message. Example: "Insufficient permissions". * correlationId — Optional correlation/tracing identifier to include in the response headers. Example: "req-1234". * corsHeaders — Optional additional CORS headers to merge into the response. Example: "Access-Control-Allow-Origin": "\*" . * returns: Response An HTTP Response with a standardized error JSON body, 403, an header (or "unknown"), and any provided CORS headers. * example: | // Return a 403 response with a correlation id and permissive CORS headerreturn createAuthorizationError("Access denied to resource", "req-1234", "Access-Control-Allow-Origin": "\*" ); * score: 4 ### function createCalendarEvent * file: supabase/functions/\_shared/entra-client.ts:968 * kind: function * core: edge-functions * spec: (none) * summary: Create a calendar event for a user. * score: 4 ### function createConnectorMediator * file: supabase/functions/intake-agent-run/connector-mediator.ts:31 * kind: function * core: edge-functions * spec: PF-127 * summary: Build a connector mediator bound to one acting principal. * score: 5 ### function createCronHandler * file: supabase/functions/\_shared/cron-handler.ts:112 * kind: function * core: edge-functions * spec: (none) * summary: Create a standardized cron-triggered edge function handler.This wrapper handles:- CORS preflight responses- Service client creation- Structured logging with correlation IDs- Standardized success/error response format- Execution timing * params: * name — Function name for logging (e.g., 'send-training-reminders') * handler — The business logic handler function This creates a service-role client (bypasses RLS).Your handler MUST filter by organization\_id for tenant isolation. * example: | // send-training-reminders/index.tsimport createCronHandler from 'shared/cron-handler.ts';export default createCronHandler('send-training-reminders', async (supabase, logger, ctx) = const data: enrollments = await supabase .from('gr\_training\_enrollments') .select('\*') .in('status', \['not\_started', 'in\_progress', 'overdue']); let notificationsCreated = 0; // ... process enrollments ... return notificationsCreated, enrollmentsProcessed: enrollments?.length || 0 ;); * score: 4 ### function createErrorResponse * file: supabase/functions/\_shared/errors.ts:72 * kind: function * core: edge-functions * spec: (none) * summary: Build a standardized HTTP error Response with a consistent JSON body, correlation ID header, and optional CORS headers. Avoid including any PHI/PII in ; details are sanitized to a safe allowlist before inclusion. * params: * message — Human-facing error message to return in the response body. Example: "Invalid request payload". * category — Error classification (e.g., VALIDATION, AUTHORIZATION) used by consumers to interpret the error. * correlationId — Optional request correlation ID for tracing. If omitted, the response header will be set to . Example: "req-12345". * statusCode — HTTP status code for the response. Must be a valid HTTP status code (e.g., 400, 403, 404, 504). * details — Optional additional error details. Keys and values are sanitized to a safe allowlist (field, expected, actual, count, limit, duration, retries). Do not pass PHI/PII. * corsHeaders — Optional headers to merge into the response (commonly CORS headers like ). Caller is responsible for providing safe header values. * returns: Response A Response whose JSON body conforms to ErrorResponse: success: false, error: string, category: ErrorCategory, correlationId?: string, details?: object * example: | // Basic validation error with CORS headercreateErrorResponse( "Missing required field 'email'", ErrorCategory.VALIDATION, "req-abc123", 400, field: "email", expected: "non-empty string" , "Access-Control-Allow-Origin": "\*" ); Note: This function sanitizes but does not perform content redaction. Do not pass PHI/PII in or . Ensure callers have permission to emit correlation IDs. * score: 4 ### function createFolder * file: supabase/functions/\_shared/entra-client.ts:1396 * kind: function * core: edge-functions * spec: (none) * summary: Create a folder in a SharePoint document library.Requires Files.ReadWrite.All or Sites.ReadWrite.All. * score: 4 ### function createFreshServiceClient * file: supabase/functions/\_shared/supabase.ts:90 * kind: function * core: edge-functions * spec: (none) * summary: Create a fresh service client (non-cached).Use this when you need a separate client instance, for examplewhen running operations with different connection settings. * returns: A new SupabaseClient with service role privileges * score: 4 ### function createGraphEventApplication * file: supabase/functions/\_shared/calendar-provider.ts:110 * kind: function * core: edge-functions * spec: (none) * summary: Application path: create an event on an arbitrary mailbox(POST /users/email/events) using an Entra app token.Wraps entra-client.createCalendarEvent. The follow-up payload is a strictsubset of CalendarEvent (no location/attendees), so the cast is safe. * score: 4 ### function createGraphEventDelegated * file: supabase/functions/\_shared/calendar-provider.ts:85 * kind: function * core: edge-functions * spec: (none) * summary: Delegated path: create an event on the connected user's own calendar(POST /me/events) using their OAuth access token. Used by calendar-task-push. * score: 4 ### function createIntakeModelAdapter * file: supabase/functions/intake-agent-run/model-adapter.ts:32 * kind: function * core: edge-functions * spec: (none) * summary: Build the single-turn model adapter (injectable gateway for tests). * score: 4 ### function createIntakeReadExecutor * file: supabase/functions/intake-agent-run/read-tools.ts:88 * kind: function * core: edge-functions * spec: (none) * summary: Build the read dispatcher (the injected ). * score: 4 ### function createIntakeToolResolver * file: supabase/functions/intake-agent-run/tool-resolver.ts:16 * kind: function * core: edge-functions * spec: (none) * summary: Build a read-only tool resolver bound to one org + principal. * score: 4 ### function createLinkToken * file: supabase/functions/\_shared/plaid-client.ts:389 * kind: function * core: edge-functions * spec: (none) * summary: Create a Link token for Plaid Link initialization.For Transfer UI: pass transferIntentId (and optionally linkCustomizationName, accessToken for bank-on-file). * score: 4 ### function createLogCollector * file: supabase/functions/\_shared/executionHelpers.ts:262 * kind: function * core: edge-functions * spec: (none) * summary: Create a log collector that batches logs and inserts them at the end * score: 4 ### function createLogger * file: supabase/functions/\_shared/logger.ts:167 * kind: function * core: edge-functions * spec: (none) * summary: Create a logger for an edge function. * params: * functionName — Name of the edge function (e.g., 'automation-executor') * returns: Logger instance * score: 4 ### function createMcpConnection * file: supabase/functions/\_shared/mcp-client.ts:62 * kind: function * core: edge-functions * spec: (none) * summary: Create an MCP connection for a given server config.This is a lightweight wrapper; actual HTTP calls happen in invokeMcpTool. * params: * config — MCP server configuration * returns: MCP connection object * score: 4 ### function createNotFoundError * file: supabase/functions/\_shared/errors.ts:185 * kind: function * core: edge-functions * spec: (none) * summary: Create a standardized 404 Not Found error HTTP response. Builds an HTTP Response whose JSON body follows the shared error response shape: success: false, error: message, category: ErrorCategory.NOT\_FOUND, correlationId, details? . Adds an X-Correlation-ID header (or "unknown" if none provided) and merges any provided CORS headers into the response. * params: * message — The user-facing error message describing what was not found (e.g., "Order not found") * correlationId — Optional tracing identifier to include in the response headers and body (e.g., "req-1234") * corsHeaders — Optional additional HTTP headers to include for CORS (e.g., "Access-Control-Allow-Origin": "\*" ) * returns: Response - An HTTP Response with status code 404 and a standardized JSON error body * example: | const resp = createNotFoundError("User not found", "req-abc-123", "Access-Control-Allow-Origin": "[https://app.example.com](https://app.example.com)" ); * score: 4 ### function createNotification * file: supabase/functions/\_shared/notification-utils.ts:190 * kind: function * core: edge-functions * spec: (none) * summary: Create a notification in the pf\_notifications table with a consistent schema.Column mapping (pf\_notifications schema): - — notification type enum (maps from notificationType) - — JSONB payload for priority, referenceType, referenceId, metadata - NO columns: notification\_type, priority, reference\_type, reference\_id, metadata * params: * supabase — Supabase client (service role recommended) * notification — Notification data to insert * returns: Result with success status and optional notification ID * score: 4 ### function createNotificationIfNew * file: supabase/functions/\_shared/notification-utils.ts:263 * kind: function * core: edge-functions * spec: (none) * summary: Create a notification only if it's not a duplicate.Combines dedup check and creation in one call. * score: 4 ### function createOutlookClient * file: supabase/functions/\_shared/outlook-client.ts:366 * kind: function * core: edge-functions * spec: (none) * summary: Create an Outlook client with the provided access token * score: 4 ### function createPerformanceProfiler * file: supabase/functions/\_shared/executionHelpers.ts:312 * kind: function * core: edge-functions * spec: (none) * summary: Create a performance profiler for tracking node execution times * score: 4 ### function createProliantClientFromIntegration * file: supabase/functions/\_shared/proliant-client.ts:353 * kind: function * core: edge-functions * spec: (none) * summary: Build a for an integration by resolving its credentialpointers through the Supabase vault. Throws a CONFIG when the API key/secret credential ids are not yet configured. * score: 4 ### function createRingCentralClient * file: supabase/functions/\_shared/ringcentral-client.ts:674 * kind: function * core: edge-functions * spec: (none) * summary: Create a RingCentral client using environment variables * score: 4 ### function createRingCentralSmsClient * file: supabase/functions/\_shared/ringcentral-sms-adapter.ts:420 * kind: function * core: edge-functions * spec: (none) * summary: Create a RingCentral SMS client wrapper * score: 4 ### function createServiceClient * file: supabase/functions/\_shared/supabase.ts:44 * kind: function * core: edge-functions * spec: (none) * summary: Create or return a cached Supabase client with the service role key.Use this for cron jobs, background processing, and operations thatdon't require user-specific RLS context. * returns: SupabaseClient with service role privileges * example: | const supabase = createServiceClient();const data = await supabase .from('pf\_notifications') .select('\*') .eq('organization\_id', orgId); * score: 4 ### function createSignedHubspotState * file: supabase/functions/\_shared/ce-hubspot-oauth.ts:88 * kind: function * core: edge-functions * spec: (none) * summary: Creates the signed OAuth state token binding tenant + actor + return origin.Format: . * score: 4 ### function createSignedOAuthState * file: supabase/functions/\_shared/google-workspace-oauth.ts:90 * kind: function * core: edge-functions * spec: (none) * summary: Creates a signed OAuth state token with tenant and actor binding.Format: v1.payloadBase64Url.signatureBase64Url * score: 4 ### function createTimeoutError * file: supabase/functions/\_shared/errors.ts:210 * kind: function * core: edge-functions * spec: (none) * summary: Create a standardized 504 Gateway Timeout error response. Builds an HTTP Response containing a standardized error payload classified as a timeout error. Includes an X-Correlation-ID header (or 'unknown') and any provided CORS headers. Intended for use in edge/HTTP handlers to signal an operation timeout to callers. * params: * message — - Human-facing error message. Example: "Database query timed out" * correlationId — - Optional tracing identifier to include in the response headers and payload. Example: "org-1234-request-5678" * corsHeaders — - Optional additional headers to include for CORS (e.g., "Access-Control-Allow-Origin": "\*" ) * returns: Response An HTTP Response with status 504 and a JSON body containing the standardized error object * example: | // Edge function handlerexport default async function handler(req: Request) if (await operationTimedOut()) return createTimeoutError('Upstream service timed out', 'org-1234-req-5678', 'Access-Control-Allow-Origin': '[https://app.example.com](https://app.example.com)' ); // ... * score: 4 ### function createTransfer * file: supabase/functions/\_shared/plaid-client.ts:1071 * kind: function * core: edge-functions * spec: (none) * summary: Create a transfer after authorization is approvedThis initiates the actual ACH transfer. * score: 4 ### function createTransferAuthorization * file: supabase/functions/\_shared/plaid-client.ts:1052 * kind: function * core: edge-functions * spec: (none) * summary: Create a transfer authorization (required before creating a transfer)This step validates the transfer and returns a decision. * score: 4 ### function createTransferIntent * file: supabase/functions/\_shared/plaid-client.ts:1280 * kind: function * core: edge-functions * spec: (none) * summary: Create a transfer intent for Transfer UI (one-time payment or disbursement).Returns transfer\_intent.id to pass to /link/token/create with products: \["transfer"]. * score: 4 ### function createUser * file: supabase/functions/\_shared/entra-client.ts:477 * kind: function * core: edge-functions * spec: (none) * summary: Create a new user in Entra ID. * params: * credentials — Azure AD app credentials * userData — User creation data * correlationId — Request correlation ID * returns: Created user data * score: 4 ### function createUserClient * file: supabase/functions/\_shared/supabase.ts:69 * kind: function * core: edge-functions * spec: (none) * summary: Create a Supabase client authenticated with the user's JWT from the request.Use this for user-facing operations where RLS should be enforced.The client inherits the user's session and RLS policies apply. * params: * req — The incoming request containing the Authorization header * returns: SupabaseClient with the user's session * example: | const supabase = createUserClient(req);// RLS policies will be enforcedconst data = await supabase.from('hr\_employees').select('\*'); * score: 4 ### function createValidationError * file: supabase/functions/\_shared/errors.ts:138 * kind: function * core: edge-functions * spec: (none) * summary: Create a standardized 400 Bad Request error response for validation failures. Includes an error category of , optional correlation ID, sanitized details, and optional CORS headers. * params: * message — User-facing error message describing the validation failure. Example: * correlationId — Optional tracing identifier to include in the response header. Example: . * details — Optional additional error details; only allowed keys are preserved (field, expected, actual, count, limit, duration, retries). Example: * corsHeaders — Optional CORS headers to merge into the response headers. Example: * returns: Response An HTTP with status 400 and a JSON body conforming to the standardized error shape:- : - : the provided - : - : the provided or - : sanitized object when provided * score: 4 ### function createVariableValue * file: supabase/functions/\_shared/expressionEvaluator.ts:598 * kind: function * core: edge-functions * spec: (none) * summary: Create a VariableValue object * score: 1 ### function decideRoute * file: supabase/functions/\_shared/ce-hubspot-sync.ts:175 * kind: function * core: edge-functions * spec: (none) * summary: Decide the worker's action for one work item given the link-map lookup and(when unlinked) the CE-74 resolution outcome. - linked creation/property\_change → mapped update on the linked contact (AC-2; creation on an already-linked id is a redelivery-shaped apply); - unlinked → resolution tier: auto → link to the match (AC-3), review → park, touch nothing (AC-4), none → create + link (AC-5); - deletion → unlink only; the Encore contact survives (R4); - privacy\_deletion → purge link + parked HubSpot payloads (R4); - merge → handled by planMergeRepoint. * score: 4 ### function decodePlaidWebhookPayload * file: supabase/functions/\_shared/plaid-webhook-verify.ts:37 * kind: function * core: edge-functions * spec: (none) * summary: Pure base64url-JSON decode of a Plaid webhook JWT's payload segment.No signature/freshness validation — callers that need authenticity must useverifyPlaidWebhook first; this is the same decode the iat gate performs internally,exposed so the handler can read the payload without re-implementing it. * score: 4 ### function decryptPassword * file: supabase/functions/\_shared/migration-crypto.ts:20 * kind: function * core: edge-functions * spec: (none) * summary: Utility for decrypt password. * score: 1 ### function dedupKeyFor * file: supabase/functions/\_shared/plaid-webhook-verify.ts:48 * kind: function * core: edge-functions * spec: (none) * summary: Idempotency key for an inbound Plaid webhook delivery. * returns: sha256 hex of — used by the handler cluster as fa\_plaid\_webhook\_deliveries.dedup\_key and the plaid\_webhook\_sync dedupe. * score: 4 ### function defaultContactMappingRows * file: supabase/functions/\_shared/ce-hubspot-mappings.ts:70 * kind: function * core: edge-functions * spec: (none) * summary: Insert rows for the default set, ready for the idempotent upsert. * score: 4 ### function defaultVersionFromHandlers * file: supabase/functions/\_shared/versioning-core.ts:41 * kind: function * core: edge-functions * spec: (none) * summary: Determine the default version from a set of handler keys by picking thehighest registered major (FR-1.3). * params: * keys — Handler map keys (e.g. ). * returns: The version string with the highest major (e.g. ). * score: 4 ### function deleteCalendarEvent * file: supabase/functions/\_shared/entra-client.ts:1015 * kind: function * core: edge-functions * spec: (none) * summary: Delete a calendar event. * score: 1 ### function deleteUser * file: supabase/functions/\_shared/entra-client.ts:605 * kind: function * core: edge-functions * spec: (none) * summary: Delete a user account. * params: * credentials — Azure AD app credentials * userId — Entra user ID * correlationId — Request correlation ID * score: 1 ### function deleteVaultCredential * file: supabase/functions/\_shared/vault-credentials.ts:106 * kind: function * core: edge-functions * spec: (none) * summary: Delete a credential from vault by credential ID. * score: 4 ### function deleteVaultCredentialBySource * file: supabase/functions/\_shared/vault-credentials.ts:139 * kind: function * core: edge-functions * spec: (none) * summary: Delete a vault credential by source reference (table/column/row).Looks up the credential ID first, then deletes it. * score: 4 ### function denoReadSources * file: supabase/functions/intake-agent-run/handler.ts:31 * kind: function * core: edge-functions * spec: (none) * summary: Build the production read sources bound to the RLS-bounded staff client (mirror of intake-sources.ts). * score: 4 ### function deriveAgeBand * file: supabase/functions/\_shared/pm-fairness-buckets.ts:175 * kind: function * core: edge-functions * spec: (none) * summary: Coarse, de-identifying age band. "90+" follows HIPAA Safe Harbor(45 CFR §164.514(b)(2)(i)(C)): all ages over 89 aggregate to one bucket. PM-50-EN-01 FR-1, FR-5 * score: 4 ### function deriveLanguageBucket * file: supabase/functions/\_shared/pm-fairness-buckets.ts:209 * kind: function * core: edge-functions * spec: (none) * summary: Coarse preferred-language bucket. Recorded for a planned LEP fairness view;NOT yet aggregated by the monitor. PM-50-EN-01 FR-1 * score: 4 ### function derivePayerCategory * file: supabase/functions/\_shared/pm-fairness-buckets.ts:227 * kind: function * core: edge-functions * spec: (none) * summary: Normalize pm\_payers.payer\_type to a fairness-slice category. PM-50-EN-01 FR-1 * score: 4 ### function deriveProliantCapabilities * file: supabase/functions/\_shared/proliant-capabilities.ts:96 * kind: function * core: edge-functions * spec: (none) * summary: Derive from the raw list returnedby . An empty/missing list yields all-false (theconservative default: assume nothing is permitted until the vendor says so). * score: 4 ### function deriveRaceBucket * file: supabase/functions/\_shared/pm-fairness-buckets.ts:326 * kind: function * core: edge-functions * spec: (none) * summary: Roll race (jsonb array/string/object) + ethnicity into ONE coarse bucket.SIGN-OFF: Hispanic/Latino ETHNICITY takes precedence over race (see moduleheader §1). Multiple distinct OMB races → 'two\_or\_more'; only 'other' present →'other'; nothing usable → 'unknown'. PM-50-EN-01 FR-1, FR-5 * score: 4 ### function deriveSexBucket * file: supabase/functions/\_shared/pm-fairness-buckets.ts:194 * kind: function * core: edge-functions * spec: (none) * summary: Map administrative sex\_at\_birth to a coarse bucket.Anything other than a recognized male/female value → 'unknown'. PM-50-EN-01 FR-1, FR-5 * score: 4 ### function deriveTargetClosureDate * file: supabase/functions/gr-cap-from-audit-finding/buildCapRow\.ts:14 * kind: function * core: edge-functions * spec: (none) * summary: GR-04-EN-01 — pure CAP-row builder + target-closure-date derivation for thegr-cap-from-audit-finding consumer.deriveTargetClosureDate: COALESCE(finding.due\_date, today + N days) whereN = 30 for critical, 60 for high.buildCapRow: shapes the gr\_accreditation\_caps insert row. organization\_id isalways the EVENT row's org (set by the caller from event.organization\_id), nevera JWT — the consumer runs as service\_role and must scope every write.Pure (no I/O) so both are unit-testable without a stack. * score: 4 ### function describePushSafety * file: supabase/functions/proliant-sync/push-scope.ts:57 * kind: function * core: edge-functions * spec: (none) * summary: Describe the safety posture of an employee push. A dry run never writes to thevendor; an unscoped real run is the one the dry-run/scoping affordances existto make deliberate. * score: 4 ### function detectCircularDependencies * file: supabase/functions/\_shared/fw-schedule-conflicts.ts:55 * kind: function * core: edge-functions * spec: (none) * summary: Detect circular dependencies in the graph. * score: 4 ### function detectCrossTenantProbing * file: supabase/functions/security-detect-audit-anomalies/scoring.ts:236 * kind: function * core: edge-functions * spec: (none) * summary: Detects a single user appearing across multiple distinct org\_ids.The window for cross-tenant checking spans all orgs for the same user\_id.The caller aggregates across orgs per user; this fn receives ALL windowsfor a single user\_id (potentially multiple orgIds in the rows).Alternatively: the caller passes allOrgIdsForUser so this rule can workon a per-user basis.Implementation: receives the per-(org,user) window + the set of all orgIdsthe same user appeared in during the evaluation window. * score: 4 ### function detectDiscrepancies * file: supabase/functions/\_shared/pm-discrepancy-detection.ts:51 * kind: function * core: edge-functions * spec: (none) * summary: Detect discrepancies between current policies and last eligibility state.Compares benefit details stored in the last check against current policy values.Returns an array of discrepancy rows ready for insertion. * score: 4 ### function detectPhi * file: supabase/functions/\_shared/ai/phi-redaction-core.ts:185 * kind: function * core: edge-functions * spec: (none) * summary: Detect (do not redact) PHI: returns the category tokens present, or an empty array. * score: 4 ### function detectPhi * file: supabase/functions/\_shared/sms-provider.ts:173 * kind: function * core: edge-functions * spec: (none) * summary: Detect potential PHI in message text * params: * text — Message body to scan * returns: Object with detection result and matched patterns * score: 4 ### function detectPHI * file: supabase/functions/\_shared/phi-detection.ts:58 * kind: function * core: edge-functions * spec: (none) * summary: Scan text for possible PHI patterns. * params: * content — Text to scan * returns: Detection result with matched PHI categories * score: 4 ### function detectPHIInContent * file: supabase/functions/\_shared/gr-regulatory-content.ts:151 * kind: function * core: edge-functions * spec: (none) * summary: Scan normalized content for PHI patterns from FR-2.6.Returns triggered=true if any pattern matches.IMPORTANT: resetLastIndex is required for global RegExp re-use. * score: 4 ### function detectTimeOverlaps * file: supabase/functions/\_shared/fw-schedule-conflicts.ts:33 * kind: function * core: edge-functions * spec: (none) * summary: Detect pairs of schedules whose fall within . * score: 4 ### function disableUser * file: supabase/functions/\_shared/entra-client.ts:585 * kind: function * core: edge-functions * spec: (none) * summary: Disable a user account. * params: * credentials — Azure AD app credentials * userId — Entra user ID * correlationId — Request correlation ID * score: 1 ### function dispatchDueSchedules * file: supabase/functions/\_shared/fw-schedule-dispatch.ts:139 * kind: function * core: edge-functions * spec: (none) * summary: Run one dispatch tick against the database: load due schedules, plan, then foreach plan optimistically claim the row (CAS on next\_execution\_at), re-arm it,and for dispatched runs insert a durable row + enqueueit to the worker's pgmq queue. Extracted from the edge handler so it can beexercised directly (Deno) against a live database. Caller passes a service-role client; this is a cross-org system job. * score: 4 ### function dispatchPortalRun * file: supabase/functions/\_shared/portal-runner.ts:327 * kind: function * core: edge-functions * spec: (none) * summary: The consumer seam (server side). Enforces the ToS gate, creates a queued run,enqueues it to FW-46, and — in fixture/inline mode — runs it synchronously soa consumer core (e.g. CE-69) receives the confirmation immediately (AC-5). * score: 4 ### function driftColumnsFor * file: supabase/functions/\_shared/weno/pharmacy-mapping.ts:84 * kind: function * core: edge-functions * spec: (none) * summary: Unknown columns (not in KNOWN\_PHARMACY\_FIELDS) → schema drift. * score: 4 ### function dropOptionalEmpty * file: supabase/functions/\_shared/weno/validators.ts:184 * kind: function * core: edge-functions * spec: (none) * summary: Strip optional nulls/empty strings/empty arrays so we don't emit them to the vendor. * score: 4 ### function encryptPassword * file: supabase/functions/\_shared/migration-crypto.ts:6 * kind: function * core: edge-functions * spec: (none) * summary: Shared encryption/decryption for migration connection passwords.Uses XOR + base64 encoding (matching the save-connection edge function). * score: 4 ### function encryptWenoData * file: supabase/functions/\_shared/weno/crypto.ts:22 * kind: function * core: edge-functions * spec: (none) * summary: Encrypt a payload JSON string with SHA-256(EZ key) + zero IV → base64. * score: 4 ### function enforceExternalModelStep * file: supabase/functions/\_shared/ai/phi-two-path-enforcer.ts:74 * kind: function * core: edge-functions * spec: (none) * summary: Apply the two-path rule to one external-model-reaching step (FR-8). Exactly one path is legal: - **local embedding** (no egress) → exempt: dispatch raw. - **Path (i) — PHI lane** (BAA/ZDR, cl/pm): PHI is permitted; is NOT applied. - **Path (ii) — non-PHI lane**: is MANDATORY and fail-closed; a step that declares it needs unredacted PHI on a non-PHI lane throws (rejected, not degraded).Fail-closed: if throws (the PM-64 contract on bad input or an internal error), the throwpropagates and the caller MUST skip the model call, forwarding zero original text. * params: * step — The step to evaluate (lane already resolved by the caller via resolveModels). * redact — The canonical redactor (injected). MAY throw fail-closed. * score: 4 ### function ensureContrast * file: supabase/functions/\_shared/compliance-contrast.ts:73 * kind: function * core: edge-functions * spec: (none) * summary: Ensure a foreground color meets contrast against a background.Returns the original color if it passes, or the platform default if it fails. * score: 4 ### function errorResponse * file: supabase/functions/\_shared/auth.ts:339 * kind: function * core: edge-functions * spec: (none) * summary: Create an error response with proper CORS headers * score: 4 ### function escapeHtml * file: supabase/functions/\_shared/email-templates/utils.ts:10 * kind: function * core: edge-functions * spec: (none) * summary: Escapes HTML special characters to prevent XSS attacksin email templates * score: 4 ### function escapeHtmlDraft * file: supabase/functions/\_shared/pm-appeal-gate.ts:86 * kind: function * core: edge-functions * spec: (none) * summary: Escape HTML special characters in a string.Used to sanitize the raw LLM draft before it is returned to the client orstored, preventing XSS if the draft content ever reaches an HTML surface.The escaping is intentionally minimal (the five standard HTML entities) —the draft is plain-text prose, not structured markup. * score: 4 ### function escapeUrlForHtml * file: supabase/functions/\_shared/url-validation.ts:48 * kind: function * core: edge-functions * spec: (none) * summary: Escapes a URL for safe interpolation into HTML href attributes.Prevents javascript: and data: URI injection. * score: 4 ### function estimateTokens * file: supabase/functions/\_shared/ai-org-context.ts:75 * kind: function * core: edge-functions * spec: (none) * summary: Approximate token count for budgeting. We use the standard \~4-chars-per-tokenheuristic — deliberately cheap and deterministic (no tokenizer dependency inthe Deno runtime). Over-estimating slightly is safe: it trims sooner, neverlater, so the block stays within budget. * score: 4 ### function evaluateAppealGate * file: supabase/functions/\_shared/pm-appeal-gate.ts:50 * kind: function * core: edge-functions * spec: (none) * summary: Fail-closed gate: feature flag + PHI lane availability + DSI disclosure.All three conditions must be true for generation to proceed. The checks areordered so the most operator-actionable label takes precedence when severalare false: feature flag → PHI lane → published DSI disclosure. enforces the ONC §170.315(b)(11) interlock: an appealletter is a decision-support intervention, so a published row (ai\_feature\_key='pm.appeal\_letter') is required before any draft isgenerated. This was a TODO stub pending CL-65 PR #1618 (the/ columns); now that #1618 has landed the gate isenforced — mirroring the CL-08 CDS-rationale interlock. PM-29-EN-01 FR-2 * score: 4 ### function evaluateCascadeGuard * file: supabase/functions/\_shared/fw-rate-limit.ts:239 * kind: function * core: edge-functions * spec: (none) * summary: Cascade fan-out guard (US-3 MVP). If this execution belongs to a correlationchain, count non-terminal peers sharing org + correlation\_id; at or above the start is blocked (routed to DLQ by the caller). * score: 4 ### function evaluateCodingGate * file: supabase/functions/\_shared/pm-coding-gate.ts:38 * kind: function * core: edge-functions * spec: (none) * summary: Fail-closed gate: feature flag + PHI lane availability + DSI disclosure.All three conditions must be true to proceed. Ordered so the mostoperator-actionable label wins when several are false: feature flag → PHIlane → published DSI disclosure. PM-64 FR-003 * score: 4 ### function evaluateDenialGate * file: supabase/functions/\_shared/pm-denial-gate.ts:55 * kind: function * core: edge-functions * spec: (none) * summary: Fail-closed gate: feature flag + published DSI disclosure.Both must be true to serve a prediction. Ordered so the most operator-actionablelabel wins: feature flag → published DSI disclosure. (Unlike coding/appeal thereis NO PHI-lane check — denial prediction runs a local logistic-regression kernelwith no LLM/vendor call, so no PHI ever leaves the database.) PM-50-EN-01 FR-5 * score: 4 ### function evaluateExpression * file: supabase/functions/\_shared/expressionEvaluator.ts:553 * kind: function * core: edge-functions * spec: (none) * summary: Evaluate an expression string with variable context * score: 4 ### function evaluateFollowUpGap * file: supabase/functions/\_shared/cl-followup-gap.ts:96 * kind: function * core: edge-functions * spec: (none) * summary: Decide whether the chart's aftercare plans warrant a care gap. Pure and deterministic (no — the lookback filtering isthe edge fn's query concern). Returns when no plan is a 30-day miss.When multiple plans qualify, the MOST RECENT qualifying plan (max )is the triggering plan for / / the per-measurebooleans, while is unioned across all qualifying plans. follows FUA-before-FUI precedence on that union. * score: 4 ### function evaluateRateLimit * file: supabase/functions/\_shared/fw-rate-limit.ts:274 * kind: function * core: edge-functions * spec: (none) * summary: Full pre-start evaluation. Order (cheapest, hardest-fail first): 1. cascade fan-out guard → block 2. concurrency caps (effective workflow + org) → defer 3. per-minute window (effective workflow + org) → defer 4. per-hour window (effective workflow + org) → deferOtherwise → admit. * score: 4 ### function evaluateSpine * file: supabase/functions/\_shared/ai/agent-run-state-machine.ts:128 * kind: function * core: edge-functions * spec: (none) * summary: Evaluate the Phase-1 guardrail spine for a run (FR-9). Thin adapter over the pure () that reads the principal from the run row. * score: 4 ### function evaluateSpine * file: supabase/functions/\_shared/ai/agent-spine.ts:57 * kind: function * core: edge-functions * spec: (none) * summary: Evaluate the Phase-1 guardrail spine (FR-9). Satisfied only when ALL of: a scopedprincipal is present (FR-3), redaction is active, a budget check is available, andinjection screening is enabled. Any absent element is a fail-closed block. * score: 4 ### function exchangeAuthorizationCode * file: supabase/functions/\_shared/google-client.ts:150 * kind: function * core: edge-functions * spec: (none) * summary: Exchange an authorization code for an access + refresh token pair.Uses the resolved (tenant or platform) OAuth client for the org. * score: 4 ### function exchangePublicToken * file: supabase/functions/\_shared/plaid-client.ts:447 * kind: function * core: edge-functions * spec: (none) * summary: Exchange public token for access token * score: 4 ### function executeDurableRun * file: supabase/functions/\_shared/ai/agent-run-state-machine.ts:364 * kind: function * core: edge-functions * spec: (none) * summary: Execute a queued run durably: gate tools on the spine + PF-45 flag (FR-9), advance (FR-2), run the agentic loop, checkpoint the committed step (FR-4),reconcile the budget (FR-12), and advance to a terminal state exactly once (FR-7).Fail-closed behaviors:- A run whose spine is unsatisfied is **refused**: the run is moved and a is thrown (no tools dispatch).- When the spine is unsatisfied (read-only path), tools are **withheld** (the loop runs with ); the run still completes durably.- An over-budget run is moved to and an is thrown (FR-12). * params: * run — The queued run row (must be in ). * loopArgs — The agentic-loop args; is the *desired* tool set. * rpcClient — User-scoped client for the governed RPCs (RLS + SECURITY DEFINER). * deps — Injected dependencies / overrides (testing seam). * score: 4 ### function executeIntakeWrites * file: supabase/functions/intake-agent-run/run-intake.ts:442 * kind: function * core: edge-functions * spec: (none) * summary: action=execute\_writes: mint tokens → gate → governed RPCs → transition artifact. Post-approval. * score: 4 ### function executePortalRun * file: supabase/functions/\_shared/portal-runner.ts:205 * kind: function * core: edge-functions * spec: (none) * summary: Run a single portal run to completion. Loads the run + flow, re-checks the ToSgate, brokers credentials, executes via the transport, and persists the result.Never throws. * score: 4 ### function executeTool * file: supabase/functions/\_shared/tool-handlers.ts:134 * kind: function * core: edge-functions * spec: (none) * summary: Execute a tool call and return the result.All queries are scoped to the requesting organization. * score: 4 ### function extractControlNumber * file: supabase/functions/\_shared/x12/envelope.ts:144 * kind: function * core: edge-functions * spec: (none) * summary: Extract the ISA13 control number from an X12 interchange. * score: 4 ### function extractCsvText * file: supabase/functions/cl-weno-directory-ingest/parse-archive.ts:60 * kind: function * core: edge-functions * spec: (none) * summary: Extract the directory CSV text from the ZIP (null if the archive has none). * score: 4 ### function fakeDeps * file: supabase/functions/cl-agent-draft-note/handler.test.fixtures.ts:50 * kind: function * core: edge-functions * spec: (none) * summary: Build a fake deps object for unit tests.All gate booleans default to PASS; override to test gate rejections. * score: 4 ### function fetchGoogleUserInfo * file: supabase/functions/\_shared/google-client.ts:235 * kind: function * core: edge-functions * spec: (none) * summary: Fetch the Google account email/id for a user-scoped access token. * score: 4 ### function fetchWithRetry * file: supabase/functions/\_shared/ai/retry.ts:43 * kind: function * core: edge-functions * spec: (none) * summary: Retry a fetch-like operation with exponential backoff on 429 / network errors. * params: * fn — returns a Promise * maxRetries — retry attempts after the initial try (default 3) * initialDelayMs — initial backoff (default 1000) * maxDelayMs — backoff ceiling (default 30000) * returns: the successful (or final) Response * score: 4 ### function fhirResponse * file: supabase/functions/cl-lab-result-ingestion/ack-response.ts:78 * kind: function * core: edge-functions * spec: (none) * summary: Create a FHIR OperationOutcome Response object with correct Content-Type. * score: 4 ### function filterByAllowlist * file: supabase/functions/\_shared/mcp-config.ts:61 * kind: function * core: edge-functions * spec: (none) * summary: Filter requested MCP server IDs against the allowlist. * params: * requestedIds — Server IDs the skill wants to use * returns: Object with allowed IDs and rejected IDs * score: 4 ### function filterRecommendations * file: supabase/functions/suggest-workspaces/filter.ts:38 * kind: function * core: edge-functions * spec: (none) * summary: Drop sections referencing unknown cores or unknown group ids; drop wholerecommendations with zero surviving sections OR duplicate workspace\_keys(against AND against earlier survivors in this batch).Pure: no I/O. * score: 4 ### function findHardQueueReadFailures * file: supabase/functions/workflow-executor-worker/queue-failure.ts:19 * kind: function * core: edge-functions * spec: (none) * summary: Returns the org IDs whose result contains a hard queue-read failure.Non-hard errors (e.g. 'skipped: worker already running', 'semaphoreacquisition failed') are intentionally ignored. * score: 4 ### function findOwnedTaxForm * file: supabase/functions/proliant-tax-documents/tax-document-mapper.ts:163 * kind: function * core: edge-functions * spec: (none) * summary: Locate ONE raw TaxForm entry by vendor id, returning it (content included)only when it belongs to the requesting employee — the cross-employee denialkeystone for the single-document fetch (NFR-phi-1). * score: 4 ### function findSuppressedEmailRecipient * file: supabase/functions/\_shared/ce-suppression.ts:57 * kind: function * core: edge-functions * spec: (none) * summary: Find any suppressed email recipient by looking up contacts whose primaryemail matches one of the provided addresses. Returns the first suppressedrecipient (lowercased) or null. * score: 4 ### function flushEdgeSentry * file: supabase/functions/\_shared/sentry-edge.ts:90 * kind: function * core: edge-functions * spec: (none) * summary: Flush pending Sentry events. Call before the function exits in long-running handlers. * score: 4 ### function flushEdgeTracing * file: supabase/functions/\_shared/ai/tracing.ts:94 * kind: function * core: edge-functions * spec: (none) * summary: Flush pending observations. Edge functions are short-lived, so spans must beforced out before the runtime freezes. Prefer the non-blocking when available; otherwise await directly. No-op when disabled. Never throws. * score: 4 ### function formatBytes * file: supabase/functions/\_shared/email-templates/base-layout.ts:27 * kind: function * core: edge-functions * spec: (none) * summary: Format bytes to human-readable stringHandles negative values defensively * score: 4 ### function formatDate * file: supabase/functions/\_shared/email-templates/base-layout.ts:45 * kind: function * core: edge-functions * spec: (none) * summary: Format date to localized string * params: * locale — Optional locale string (defaults to 'en-US') * score: 4 ### function fourFifthsRuleViolation * file: supabase/functions/pm-ai-fairness-monitor/scoring.ts:129 * kind: function * core: edge-functions * spec: (none) * summary: Returns true if the given disparity ratio indicates a four-fifths ruleviolation (ratio strictly less than DISPARITY\_THRESHOLD = 0.8). * params: * ratio — Disparity ratio from computeDisparityRatio * score: 4 ### function generate270Segments * file: supabase/functions/\_shared/x12/generate-270.ts:32 * kind: function * core: edge-functions * spec: (none) * summary: Generate 270 eligibility inquiry segments (between ST/SE envelope). * score: 4 ### function generate837PSegments * file: supabase/functions/\_shared/x12/generate-837p.ts:69 * kind: function * core: edge-functions * spec: (none) * summary: Generate 837P claim segments (between ST/SE envelope). * score: 4 ### function generateAdminConsentUrl * file: supabase/functions/\_shared/entra-client.ts:424 * kind: function * core: edge-functions * spec: (none) * summary: Build an admin consent URL that redirects an administrator to grant tenant-wide permissions. Constructs a Microsoft identity platform admin consent URL for the given tenant and application.If and are provided, a cryptographically random UUID is generated as the parameter and stored server-side in for secure callback validation. * params: * tenantId — Microsoft tenant (directory) ID; example: or a GUID. * clientId — Azure AD application (client) ID; example: . * redirectUri — Absolute callback URL that will receive the authorization code; must match an app-registered redirect URI. * organizationId — Optional organization identifier for callback correlation; stored server-side, not exposed in URL. * supabaseClient — Optional Supabase client (service role) for storing state; required if organizationId is provided. * returns: Promisestring An admin consent URL that an administrator can visit to grant the app permissions for the specified tenant. * example: | // Example including organization context with secure stateconst url = await generateAdminConsentUrl( 'contoso.onmicrosoft.com', '01234567-89ab-cdef-0123-456789abcdef', '[https://app.example.com/auth/callback](https://app.example.com/auth/callback)', 'org\_98765', supabaseAdminClient); * score: 4 ### function generateHubspotOAuthNonce * file: supabase/functions/\_shared/ce-hubspot-oauth.ts:43 * kind: function * core: edge-functions * spec: (none) * summary: Generates a cryptographically random hex nonce. * score: 4 ### function generateOAuthState * file: supabase/functions/\_shared/google-workspace-oauth.ts:19 * kind: function * core: edge-functions * spec: (none) * summary: Generates a cryptographically random hex OAuth state token. * score: 4 ### function generatePkcePair * file: supabase/functions/\_shared/google-workspace-oauth.ts:26 * kind: function * core: edge-functions * spec: (none) * summary: Generates a PKCE verifier/challenge pair using SHA-256. * score: 4 ### function generateSecurePassword * file: supabase/functions/\_shared/entra-client.ts:178 * kind: function * core: edge-functions * spec: (none) * summary: Generate a secure password meeting Azure AD requirements.Requirements:- Minimum 16 characters (we use 20)- At least one uppercase letter- At least one lowercase letter- At least one number- At least one symbol * returns: Secure random password * score: 4 ### function generateTemporaryPassword * file: supabase/functions/\_shared/google-workspace-client.ts:804 * kind: function * core: edge-functions * spec: (none) * summary: Generate a temporary password meeting Workspace minimum complexity. Caller forcespassword change at first login when calling . * score: 4 ### function getAccessTokenForBankAccount * file: supabase/functions/\_shared/vault-credentials.ts:264 * kind: function * core: edge-functions * spec: (none) * summary: Resolve a bank account's Plaid access token, vault-first: look it up inpf\_credential\_vault by the item's source coordinates, and fall back to the legacyplaintext plaid\_access\_token column during the vault migration. Returns null whenneither is present. * score: 4 ### function getAccounts * file: supabase/functions/\_shared/plaid-client.ts:458 * kind: function * core: edge-functions * spec: (none) * summary: Get accounts for an item * score: 1 ### function getACHReturnDescription * file: supabase/functions/\_shared/plaid-client.ts:1193 * kind: function * core: edge-functions * spec: (none) * summary: Get human-readable description for ACH return code * score: 4 ### function getAllowlistedMcpServers * file: supabase/functions/\_shared/mcp-config.ts:25 * kind: function * core: edge-functions * spec: (none) * summary: Parse and return the list of allowlisted MCP server identifiers.Reads from env var (comma-separated server IDs).Returns empty array if unset or empty. * returns: Array of allowlisted MCP server identifiers * score: 4 ### function getApplicationToken * file: supabase/functions/\_shared/entra-client.ts:228 * kind: function * core: edge-functions * spec: (none) * summary: Get an access token using client credentials flow\.Implements token caching to reduce API calls. * params: * credentials — Azure AD app credentials * correlationId — Request correlation ID for logging * returns: Access token string * score: 4 ### function getBalanceForAccount * file: supabase/functions/\_shared/plaid-client.ts:650 * kind: function * core: edge-functions * spec: (none) * summary: Extract balance for a specific Plaid account from a balance/get response.Use this instead of accounts\[0] when an Item has multiple accounts so thecorrect account's balance is applied. Prefers current, fallback to available. * score: 4 ### function getBalances * file: supabase/functions/\_shared/plaid-client.ts:632 * kind: function * core: edge-functions * spec: (none) * summary: Get account balances (dedicated endpoint, faster than /accounts/get)Uses /accounts/balance/get which fetches real-time balance from the bank. * see: * [https://plaid.com/docs/api/products/balance/#accountsbalanceget](https://plaid.com/docs/api/products/balance/#accountsbalanceget) * score: 4 ### function getBusinessHoursBetween * file: supabase/functions/\_shared/business-calendar.ts:210 * kind: function * core: edge-functions * spec: (none) * summary: Calculates business hours between two timestamps. * score: 4 ### function getClientIp * file: supabase/functions/\_shared/ip-security.ts:21 * kind: function * core: edge-functions * spec: (none) * summary: Extract client IP from request headers. * score: 4 ### function getCorsHeaders * file: supabase/functions/\_shared/cors.ts:104 * kind: function * core: edge-functions * spec: (none) * summary: Compute CORS response headers scoped to a request Origin, allowing only validated or default origins. Resolves a safe Access-Control-Allow-Origin value based on the incoming header, an optional environment allowlist, and a set of default origins. Includes required CORS headers (Allow-Headers, Allow-Methods, Vary) and conditionally adds when the origin is not the wildcard. Designed to avoid reflecting arbitrary origins in production while permitting validated Lovable platform domains and local development origins when appropriate. * params: * requestOrigin — The raw header from the incoming request. The value is normalized for comparison (lowercased, trailing slash removed) and may be returned verbatim only if it matches known Lovable domain patterns or is explicitly allowed. Example: "[https://app.lovable.app](https://app.lovable.app)" * returns: Recordstring, string - A headers object containing: - : the resolved origin or fallback - : allowed request headers - : allowed HTTP methods - : "Origin" - : "true" when the resolved origin is not * example: | const headers = getCorsHeaders('[https://preview--myapp.lovable.app');//](https://preview--myapp.lovable.app'\);//) headers\['Access-Control-Allow-Origin'] = '[https://preview--myapp.lovable.app](https://preview--myapp.lovable.app)' (if validated) This function will only reflect origins that are validated against the configured allowlist, the built-in defaults, or approved Lovable domain patterns. In production unknown origins are not reflected to prevent open CORS; localhosts may be reflected in non-production environments for debugging. * score: 4 ### function getDefaultMappings * file: supabase/functions/\_shared/transforms/business-central-to-fa.ts:11 * kind: function * core: edge-functions * spec: (none) * summary: Provides get default mappings functionality. * score: 4 ### function getDefaultMappings * file: supabase/functions/\_shared/transforms/ringcentral-to-ce.ts:11 * kind: function * core: edge-functions * spec: (none) * summary: Provides get default mappings functionality. * score: 4 ### function getDefaultMappings * file: supabase/functions/\_shared/transforms/rippling-to-hr.ts:18 * kind: function * core: edge-functions * spec: (none) * summary: Provides get default mappings functionality. * score: 4 ### function getDefaultMappings * file: supabase/functions/\_shared/transforms/sage-intacct-to-fa.ts:11 * kind: function * core: edge-functions * spec: (none) * summary: Provides get default mappings functionality. * score: 4 ### function getDirectoryAuditLogs * file: supabase/functions/\_shared/entra-client.ts:1673 * kind: function * core: edge-functions * spec: (none) * summary: Get directory audit logs for the tenant.Requires AuditLog.Read.All.Use for tracking permission changes, role assignments, and compliance auditing. * score: 4 ### function getEmailProviderConfig * file: supabase/functions/\_shared/email-provider.ts:108 * kind: function * core: edge-functions * spec: (none) * summary: Get email provider configuration for an organization.Fetches HR module settings and Entra/Gmail configuration if applicable.Sender resolution order:1. Module-specific sender (e.g. fa\_module\_settings.email\_sender\_address)2. Org default sender (pf\_organizations.settings.entra\_sender\_email / gmail\_sender\_email)3. HR module from address (legacy fallback) * params: * moduleCode — Optional module code to check for per-module sender override * score: 4 ### function getEntraAccessTokenForUser * file: supabase/functions/email-sync-outlook/index.ts:694 * kind: function * core: edge-functions * spec: (none) * summary: PF-63: Get access token for Entra-provisioned account syncThis can be used when syncing emails for users who have Entra-provisionedaccounts but haven't individually connected their OAuth tokens. * score: 4 ### function getEntraCredentials * file: supabase/functions/\_shared/entra-credentials.ts:82 * kind: function * core: edge-functions * spec: (none) * summary: Resolve full Entra credentials (tenant + app + secret) for an org.Resolves the secret and provenance via the shared internal resolver so thecaller can log/audit provenance ('vault' vs 'env'). Falls back toENTRA\_CLIENT\_SECRET env var during the migration window while orgs rotateto per-org vault secrets. * params: * supabase — Service-role Supabase client. * orgId — The organization UUID to look up credentials for. * \_correlationId — Reserved for structured logging; not yet used. * score: 4 ### function getEnvOrDefault * file: supabase/functions/\_shared/env.ts:80 * kind: function * core: edge-functions * spec: (none) * summary: Get an environment variable with a default fallback. * params: * name — Environment variable name * defaultValue — Value to return if the variable is not set * returns: The environment variable value or the default * example: | const timeout = getEnvOrDefault('REQUEST\_TIMEOUT\_MS', '5000'); * score: 4 ### function getFileDownloadUrl * file: supabase/functions/\_shared/entra-client.ts:1429 * kind: function * core: edge-functions * spec: (none) * summary: Get a download URL for a file in SharePoint.The URL is temporary and pre-authenticated.Requires Files.ReadWrite.All or Sites.Read.All. * score: 4 ### function getFreshCalendarAccessToken * file: supabase/functions/\_shared/calendar-token.ts:111 * kind: function * core: edge-functions * spec: (none) * summary: Resolve a fresh access token for a calendar connection.Microsoft connections are passed through unchanged (refresh is a separateMicrosoft-Graph flow not yet handled here — WS5). Google connections arevault-resolved and refreshed via the unified Google client. * score: 4 ### function getJurisdictionProfile * file: supabase/functions/\_shared/jurisdiction.ts:42 * kind: function * core: edge-functions * spec: (none) * summary: Resolves the effective jurisdiction profile for an org + optional site.Calls the RPC which merges:Federal Baseline → State Profile → Org Overrides → Site Overrides. * params: * client — Authenticated Supabase client (service\_role or user-scoped). * orgId — Organization UUID. * siteId — Optional site UUID for site-level overrides. * returns: Merged jurisdiction profile, or null if no profile is configured. * score: 4 ### function getMailboxSettings * file: supabase/functions/\_shared/entra-client.ts:1701 * kind: function * core: edge-functions * spec: (none) * summary: Get a user's mailbox settings including Out-of-Office status.Requires MailboxSettings.Read (covered by User.Read.All for basic info,or MailboxSettings.Read for full automatic-replies detail). * score: 4 ### function getPeriodForDate * file: supabase/functions/fa-gr-compliance-cost-consumer/index.ts:196 * kind: function * core: edge-functions * spec: (none) * summary: FA-34 AC-1: resolve the fiscal period whose date range covers . fa\_journal\_entries.period\_id is NOT NULL, so a compliance-cost JE cannot be created without one. Mirrors thecanonical getPeriodForDate in fa-consume-pm-payment-events. Returns null when no period coversthe date (caller fails loudly rather than guessing). * score: 4 ### function getPublishedCodingDisclosure * file: supabase/functions/\_shared/pm-coding-gate.ts:65 * kind: function * core: edge-functions * spec: (none) * summary: CL-65 DSI interlock: check for a published disclosure row scoped to THISfeature.Narrows the lookup to (organization\_id, model\_id, model\_version,status=published, ai\_feature\_key='pm.ai\_coding') so the PM coding disclosure —not another feature's published row on the same model — gates this function.Mirrors the feature-key narrowing in cl-ai-chart-summary and pm-ai-appeal-letternow that the CL-65 column has landed (#1618). Any query error(including a pre-#1618 stack missing the column) resolves to NOT published →fail closed (ONC HTI-1 §170.315(b)(11)). PM-64 FR-003, FR-010 * score: 4 ### function getPublishedDenialDisclosure * file: supabase/functions/\_shared/pm-denial-gate.ts:77 * kind: function * core: edge-functions * spec: (none) * summary: CL-65 DSI interlock: is there a PUBLISHED disclosure row scoped to THIS feature?Matches an org-scoped OR platform-scoped published row forai\_feature\_key='pm.denial\_prediction'. Any query error (including a pre-#1618stack missing the / columns) OR a thrown exceptionresolves to NOT published → fail closed (ONC HTI-1 §170.315(b)(11)). Mirrorsthe org-or-platform narrowing used by pm-ai-appeal-letter. PM-50-EN-01 FR-5 * score: 4 ### function getReportDeliverySubject * file: supabase/functions/\_shared/email-templates/report-delivery.ts:147 * kind: function * core: edge-functions * spec: (none) * summary: Get the email subject for report delivery * score: 4 ### function getReportFailedSubject * file: supabase/functions/\_shared/email-templates/report-failed.ts:133 * kind: function * core: edge-functions * spec: (none) * summary: Get the email subject for report failure * score: 4 ### function getScopesForCapabilities * file: supabase/functions/\_shared/google-workspace-client.ts:58 * kind: function * core: edge-functions * spec: (none) * summary: Return the de-duplicated Google OAuth scope list required by selected PF-101 capabilities. * score: 4 ### function getSignInLogs * file: supabase/functions/\_shared/entra-client.ts:1627 * kind: function * core: edge-functions * spec: (none) * summary: Get sign-in audit logs for the tenant.Requires AuditLog.Read.All.Use for compliance monitoring and security reporting in the GR module. * score: 4 ### function getSmsProviderConfig * file: supabase/functions/\_shared/sms-provider.ts:78 * kind: function * core: edge-functions * spec: (none) * summary: Get SMS provider configuration for an organization * params: * supabase — Supabase client * organizationId — Organization UUID * returns: Provider configuration or null if not configured * score: 4 ### function getTeamMembershipId * file: supabase/functions/\_shared/entra-client.ts:781 * kind: function * core: edge-functions * spec: (none) * summary: Get a user's team membership ID. * score: 4 ### function getToolsForCategory * file: supabase/functions/\_shared/tool-handlers.ts:123 * kind: function * core: edge-functions * spec: (none) * summary: Get tool definitions available for a skill category. * score: 4 ### function getTransactions * file: supabase/functions/\_shared/plaid-client.ts:678 * kind: function * core: edge-functions * spec: (none) * summary: Get transactions for a specific date range using /transactions/getUnlike /transactions/sync (incremental), this endpoint supports date-range queries.Caller must handle pagination via offset. * see: * [https://plaid.com/docs/api/products/transactions/#transactionsget](https://plaid.com/docs/api/products/transactions/#transactionsget) * score: 4 ### function getTransfer * file: supabase/functions/\_shared/plaid-client.ts:1089 * kind: function * core: edge-functions * spec: (none) * summary: Get details of a specific transfer * score: 4 ### function getTransferIntent * file: supabase/functions/\_shared/plaid-client.ts:1302 * kind: function * core: edge-functions * spec: (none) * summary: Get transfer intent status and transfer\_id after Transfer UI completion. * score: 4 ### function getUrgencyLevel * file: supabase/functions/\_shared/notification-utils.ts:375 * kind: function * core: edge-functions * spec: (none) * summary: Determine urgency level based on days until due. * score: 4 ### function getUser * file: supabase/functions/\_shared/entra-client.ts:638 * kind: function * core: edge-functions * spec: (none) * summary: Get user by ID or userPrincipalName. * params: * credentials — Azure AD app credentials * userId — Entra user ID or UPN * correlationId — Request correlation ID * returns: User data or null if not found * score: 4 ### function getUserDirectReports * file: supabase/functions/\_shared/entra-client.ts:1134 * kind: function * core: edge-functions * spec: (none) * summary: Get a user's direct reports from the Entra directory.Requires User.Read.All (already included). * score: 4 ### function getUserManager * file: supabase/functions/\_shared/entra-client.ts:1110 * kind: function * core: edge-functions * spec: (none) * summary: Get a user's manager from the Entra directory.Requires User.Read.All (already included). * score: 4 ### function getUserPhoto * file: supabase/functions/\_shared/entra-client.ts:1162 * kind: function * core: edge-functions * spec: (none) * summary: Get a user's profile photo as a base64 data URL.Requires User.Read.All (already included).Returns null if user has no photo set. * score: 4 ### function getUserPresence * file: supabase/functions/\_shared/entra-client.ts:1047 * kind: function * core: edge-functions * spec: (none) * summary: Get a user's Teams presence/availability status.Requires Presence.Read.All application permission. * score: 4 ### function getUserPresenceBatch * file: supabase/functions/\_shared/entra-client.ts:1072 * kind: function * core: edge-functions * spec: (none) * summary: Get batch presence for multiple users (up to 650 per call).Requires Presence.Read.All application permission. * score: 4 ### function getWebhookVerificationKey * file: supabase/functions/\_shared/plaid-client.ts:700 * kind: function * core: edge-functions * spec: (none) * summary: Get webhook verification key for JWT validation * score: 4 ### function governAgentAction * file: supabase/functions/\_shared/ai/agent-action-governance.ts:93 * kind: function * core: edge-functions * spec: (none) * summary: Decide whether a proposed agent tool call may proceed, must be held for approval, or must beblocked (FR-3/FR-10/FR-13/FR-17). See the module doc for the flag-OFF / fail-closed contract. * params: * ctx — The action context (no PHI; carries the redacted ). * deps — Injected collaborators (flag read, rule set, approval RPC, PHI-access emitter). * score: 4 ### function graphApiCall * file: supabase/functions/\_shared/entra-client.ts:289 * kind: function * core: edge-functions * spec: (none) * summary: Make a Graph API call with automatic retry for transient errors. * params: * options — Request options * returns: API response data * score: 4 ### function groupCodeToAppType * file: supabase/functions/process-era/orphan-helpers.ts:76 * kind: function * core: edge-functions * spec: (none) * summary: Map CAS group code to application\_type (aligned to DB CHECK). * score: 4 ### function handleRequest * file: supabase/functions/calendar-schedule/index.ts:126 * kind: function * core: edge-functions * spec: (none) * summary: HTTP entrypoint: CORS, auth, tenant authorization, then the schedule pipeline.The port-binding registration is guarded by soimporting this module in a test does not bind a socket. * score: 4 ### function handleRequest * file: supabase/functions/calendar-task-push/index.ts:253 * kind: function * core: edge-functions * spec: (none) * summary: HTTP entrypoint: CORS, auth, tenant authorization, then the fail-open pipeline.Exported so it can be exercised by an integration harness; the port-binding registration is guarded by so importing thismodule in a unit test does not bind a socket. * score: 4 ### function handleRequest * file: supabase/functions/cl-dosespot-webhook/index.ts:105 * kind: function * core: edge-functions * spec: (none) * summary: The webhook request handler. Exported so unit tests can exercise it withoutbinding a network port (the live bind is gated on below). * score: 4 ### function handleRequest * file: supabase/functions/intake-agent-run/handler.ts:86 * kind: function * core: edge-functions * spec: (none) * summary: Injectable handler core (unit-testable without a live stack). * score: 4 ### function handleRequest * file: supabase/functions/pf\_widget\_query/index.ts:48 * kind: function * core: edge-functions * spec: (none) * summary: Data-capability broker: returns a count of an allowlisted, org-scoped table so dashboardplugins/custom widgets can read aggregates without direct table access. Enforces, in order:caller-JWT auth (no service-role), server-side table/op allowlist, org membership, then thecount UNDER the caller's JWT so RLS applies. Errors are sanitized (no SQL/PHI leak). * params: * req — The incoming HTTP request; JSON body . * deps — Injectable auth collaborators; defaults to the real \_shared/auth helpers. * returns: A JSON Response: on success, or with a 4xx/5xx status. * score: 4 ### function handleRequest * file: supabase/functions/plaid-apply-rules/index.ts:204 * kind: function * core: edge-functions * spec: (none) * summary: HTTP entrypoint: CORS, caller auth, tenant authorization, then the rulepipeline. The port-binding registration is guarded by so importing this module in a test does not bind a socket. * score: 4 ### function hashContent * file: supabase/functions/\_shared/gr-regulatory-content.ts:116 * kind: function * core: edge-functions * spec: (none) * summary: SHA-256 hash of normalized content using the Web Crypto API.Compatible with Deno and Node 18+ (globalThis.crypto.subtle). * score: 4 ### function hashPayload * file: supabase/functions/proliant-sync/push-idempotency.ts:36 * kind: function * core: edge-functions * spec: (none) * summary: SHA-256 hex of a stable JSON serialization of . * score: 4 ### function hashToken * file: supabase/functions/\_shared/analytics/embed-token.ts:107 * kind: function * core: edge-functions * spec: (none) * summary: Lowercase-hex SHA-256 of a string (the value persisted as ). * score: 4 ### function hasScope * file: supabase/functions/\_shared/machine-auth.ts:137 * kind: function * core: edge-functions * spec: (none) * summary: Check whether a required scope is satisfied by the granted scopes.Supports wildcard matching: matches . * params: * required — The scope to check (e.g. 'pf.users.read') * granted — Array of granted scopes (may include wildcards like 'pf.\*') * returns: true if any granted scope satisfies the requirement * score: 4 ### function hexToRgb * file: supabase/functions/\_shared/compliance-contrast.ts:9 * kind: function * core: edge-functions * spec: (none) * summary: Parse hex color to \[r, g, b] (0–255). * score: 4 ### function hl7AckResponse * file: supabase/functions/cl-lab-result-ingestion/ack-response.ts:59 * kind: function * core: edge-functions * spec: (none) * summary: Create an HL7v2 ACK Response object with correct Content-Type. * score: 4 ### function initEdgeSentry * file: supabase/functions/\_shared/sentry-edge.ts:28 * kind: function * core: edge-functions * spec: (none) * summary: Initialize Sentry for an edge function. Safe to call multiple times (idempotent).No-op if SENTRY\_DSN env var is not set. * score: 4 ### function initialCheckpoint * file: supabase/functions/proliant-sync/pull-checkpoint.ts:97 * kind: function * core: edge-functions * spec: (none) * summary: Build a fresh checkpoint for an invocation that starts a brand-new pull. * score: 4 ### function insertComplianceAuditEntry * file: supabase/functions/\_shared/fw-compliance-audit.ts:105 * kind: function * core: edge-functions * spec: (none) * summary: Insert a compliance audit entry using the service-role client.The payload is sanitized to strip potential PHI beforepersisting to the immutable table. * params: * supabase — A service-role Supabase client. * entry — The audit entry parameters. * score: 4 ### function insertExecutionLog * file: supabase/functions/\_shared/executionHelpers.ts:175 * kind: function * core: edge-functions * spec: (none) * summary: Insert a single execution log * score: 1 ### function insertExecutionLogs * file: supabase/functions/\_shared/executionHelpers.ts:206 * kind: function * core: edge-functions * spec: (none) * summary: Batch insert execution logs for efficiency * score: 4 ### function insertOrphanLine * file: supabase/functions/process-era/orphan-helpers.ts:56 * kind: function * core: edge-functions * spec: (none) * summary: Insert an orphan line. Returns so the caller can appendto its collection without throwing. * score: 4 ### function interactiveToolsEnabled * file: supabase/functions/\_shared/ai/agent-run-state-machine.ts:322 * kind: function * core: edge-functions * spec: (none) * summary: Fail-safe read of the PF-45 interactive-tools flag via .Any error → returns (tools stay off). The sentinel is neverpassed as a uuid (edge-function caller pitfall). * score: 4 ### function interpolate * file: supabase/functions/\_shared/email-templates/base-layout.ts:16 * kind: function * core: edge-functions * spec: (none) * summary: Interpolate template variables using variable syntax * score: 4 ### function invokeMcpTool * file: supabase/functions/\_shared/mcp-client.ts:80 * kind: function * core: edge-functions * spec: (none) * summary: Invoke an MCP tool via HTTP POST (JSON-RPC 2.0 format).Applies PHI detection on outbound arguments and inbound response.Retries up to MAX\_RETRIES times with exponential backoff on transient failures. * params: * connection — Active MCP connection * toolName — Name of the tool to invoke * args — Tool arguments * returns: Invocation result * score: 4 ### function isAgentRunState * file: supabase/functions/\_shared/ai/agent-run-states.ts:70 * kind: function * core: edge-functions * spec: (none) * summary: True when is a known run-state value (narrows /). * score: 4 ### function isAllowedReturnOrigin * file: supabase/functions/\_shared/google-workspace-oauth.ts:139 * kind: function * core: edge-functions * spec: (none) * summary: Returns true when a callback return origin is whitelisted. * score: 4 ### function isBehavioralHealthServiceType * file: supabase/functions/\_shared/pm/service-type-mapper.ts:55 * kind: function * core: edge-functions * spec: (none) * summary: Determine whether a service type is behavioral-health relevant. * score: 4 ### function isBreach * file: supabase/functions/pm-ai-fairness-monitor/scoring.ts:148 * kind: function * core: edge-functions * spec: (none) * summary: Determines whether a metric row should trigger a compliance alert.Two independent breach paths (either can trigger):1. Four-fifths rule: disparity ratio below 0.8 (adverse impact threshold)2. Drift: |z-score| ≥ DRIFT\_Z\_THRESHOLD (2.0σ from rolling mean) * params: * disparityRatio — From computeDisparityRatio for this class\_value * driftZScore — From computeZScore; 0 if suppressed * thresholds — Optional overrides (for testing / future config) * score: 4 ### function isBusinessDay * file: supabase/functions/\_shared/business-calendar.ts:112 * kind: function * core: edge-functions * spec: (none) * summary: Checks if a date is a business day. * score: 4 ### function isBusinessHour * file: supabase/functions/\_shared/business-calendar.ts:124 * kind: function * core: edge-functions * spec: (none) * summary: Checks if a timestamp falls within business hours. * score: 4 ### function isContactSuppressed * file: supabase/functions/\_shared/ce-suppression.ts:23 * kind: function * core: edge-functions * spec: (none) * summary: Check whether a contact has an active suppression for the given channel.Returns when contactId is missing — callersshould resolve a contact first when possible. * score: 4 ### function isDeadlineReached * file: supabase/functions/proliant-scheduled-sync/dispatch-bounds.ts:81 * kind: function * core: edge-functions * spec: (none) * summary: True once the wall-clock deadline for this tick has been reached. The callerchecks this BEFORE starting each per-org fetch so any remaining orgs arecounted as rather than risking a mid-fetch hard kill by the edgeruntime (which would orphan the summary). * score: 4 ### function isDuplicateNotification * file: supabase/functions/\_shared/notification-utils.ts:119 * kind: function * core: edge-functions * spec: (none) * summary: Check if a notification of the same type/reference was already sentwithin the specified time window\.This prevents duplicate notifications when cron jobs run multiple timesor when items are processed repeatedly. * params: * supabase — Supabase client (service role recommended) * params — Dedup check parameters * returns: true if a matching notification already exists * example: | const isDuplicate = await isDuplicateNotification(supabase, userId: officer.user\_id, notificationType: 'compliance\_check\_overdue', referenceId: requirement.id, windowHours: 24,); * score: 4 ### function isEncoreAuthoritative * file: supabase/functions/proliant-sync/sor-direction.ts:42 * kind: function * core: edge-functions * spec: (none) * summary: True when Encore is the system of record for (a write-back field). * score: 4 ### function isEnvSet * file: supabase/functions/\_shared/env.ts:97 * kind: function * core: edge-functions * spec: (none) * summary: Check if an environment variable is set (non-empty). * params: * name — Environment variable name * returns: true if the variable is set and non-empty * example: | if (isEnvSet('FEATURE\_FLAG\_NEW\_UI')) // use new UI * score: 4 ### function isGatedTier * file: supabase/functions/\_shared/ai/agent-action-classifier.ts:181 * kind: function * core: edge-functions * spec: (none) * summary: True when a tier requires a human approval hold before the action may execute. * score: 4 ### function isHoliday * file: supabase/functions/\_shared/business-calendar.ts:104 * kind: function * core: edge-functions * spec: (none) * summary: Checks if a date is a full-day holiday. * score: 4 ### function isIpAllowlisted * file: supabase/functions/\_shared/ip-security.ts:141 * kind: function * core: edge-functions * spec: (none) * summary: Check if an IP is in the allowlist. * score: 4 ### function isIpBlocked * file: supabase/functions/\_shared/ip-security.ts:103 * kind: function * core: edge-functions * spec: (none) * summary: Check if an IP is in the blocklist.Fails closed: returns true (blocked) on invalid input or DB errors. * score: 4 ### function isLegalTransition * file: supabase/functions/\_shared/ai/agent-run-states.ts:85 * kind: function * core: edge-functions * spec: (none) * summary: True when is an allowed transition in the run-state graph.Self-transitions () are **not** legal. Unknown states return .This is a client-side pre-check only; the governed RPC is the authority (FR-2). * score: 4 ### function isMcpEnabled * file: supabase/functions/\_shared/mcp-config.ts:50 * kind: function * core: edge-functions * spec: (none) * summary: Check whether the MCP feature flag is enabled.Reads env var; defaults to when unset. * returns: true if MCP is enabled * score: 4 ### function isNonProdRuntime * file: supabase/functions/\_shared/weno/transport.ts:109 * kind: function * core: edge-functions * spec: (none) * summary: Server-trusted prod detection. Production is the projectref (see scripts/utils/test-environment-isolation.ts). Anything else — local,staging/dev2 — is non-prod and may use the fixture transport. * score: 4 ### function isPhiKey * file: supabase/functions/\_shared/ai/phi-redaction-core.ts:201 * kind: function * core: edge-functions * spec: (none) * summary: True when a key name is PHI-bearing (its normalized form contains a stem). * score: 4 ### function isPollDue * file: supabase/functions/\_shared/ce-hubspot-poll.ts:42 * kind: function * core: edge-functions * spec: (none) * summary: Due when never polled, the timestamp is unusable, or the interval elapsed. * score: 4 ### function isPrivateIp * file: supabase/functions/\_shared/ssrf-guard.ts:81 * kind: function * core: edge-functions * spec: (none) * summary: True if is an IP literal (v4 or v6) in a private/reserved range. * score: 4 ### function isPushApplied * file: supabase/functions/proliant-sync/push-idempotency.ts:67 * kind: function * core: edge-functions * spec: (none) * summary: True when this exact push was already applied (caller should skip/replay). * score: 4 ### function isQuietHour * file: supabase/functions/\_shared/tcpa-consent.ts:81 * kind: function * core: edge-functions * spec: (none) * summary: Returns true when the current time falls within quiet hours(before 8 AM or at/after 9 PM) in the given timezone. * score: 4 ### function isReauthRequired * file: supabase/functions/\_shared/plaid-client.ts:778 * kind: function * core: edge-functions * spec: (none) * summary: Check if Plaid error indicates need for re-authentication * score: 4 ### function isRefreshDue * file: supabase/functions/\_shared/gr-impact-classifier.ts:216 * kind: function * core: edge-functions * spec: (none) * summary: Check if an impact row is due for a PF-61 refresh attempt.Due = pf\_kb\_refresh\_status IN ('queued', 'retrying') and next attempt time = now. * score: 4 ### function isRipplingBenefitsReport * file: supabase/functions/\_shared/transforms/rippling-benefits-to-hr.ts:67 * kind: function * core: edge-functions * spec: (none) * summary: Detects whether CSV headers match the Rippling Insurance Enrollment Report format. * score: 4 ### function isRipplingCobraReport * file: supabase/functions/\_shared/transforms/rippling-benefits-to-hr.ts:79 * kind: function * core: edge-functions * spec: (none) * summary: Detects whether CSV headers match the Rippling COBRA Enrollment Report format. * score: 4 ### function isSafeRegulatoryUrl * file: supabase/functions/\_shared/gr-regulatory-content.ts:57 * kind: function * core: edge-functions * spec: (none) * summary: Return true when the URL is safe to fetch.Rejects private/loopback IPs, non-http(s) schemes, and non-allow-listed hostnames. * score: 4 ### function isServiceRoleRequest * file: supabase/functions/\_shared/auth.ts:76 * kind: function * core: edge-functions * spec: (none) * summary: True when the request carries a service-role credential — either the injectedSUPABASE\_SERVICE\_ROLE\_KEY verbatim (cron / pg\_net internal calls) or agateway-verified JWT with . Use in cron/server-to-serverhandlers that must reject all user and anonymous callers (defense in depthwhen the function is reachable without gateway verify\_jwt). * score: 4 ### function isSkillRunnable * file: supabase/functions/\_shared/skill-agent.ts:130 * kind: function * core: edge-functions * spec: (none) * summary: PF-120 FR-2 — lifecycle load gate (pure, no I/O).A skill may be loaded by the runtime only when it is a system skill(, pre-blessed) OR its is one of / . Anything else (draft, in\_review, archived, or aNULL/unknown status on a non-system row) is refused → the caller falls backto the module default / . * params: * skill — the loaded skill governance fields * returns: true if the skill is allowed to drive AI * score: 4 ### function isSuccessOutcome * file: supabase/functions/\_shared/ce-hubspot-sync.ts:345 * kind: function * core: edge-functions * spec: (none) * summary: Outcomes that make a redelivery of the same (external\_id, occurred\_at,event\_type) a no-op (AC-6). is NOT a success — a freshdelivery after a dead-letter may legitimately retry. * score: 4 ### function isSudCarc * file: supabase/functions/\_shared/pm-appeal-gate.ts:71 * kind: function * core: edge-functions * spec: (none) * summary: Returns true if the CARC code is associated with SUD-coded services.Used to gate the 42 CFR Part 2 consent check in the edge function.Comparison is case-normalised (upper-case) so 'co-96' and 'CO-96' both match. PM-29-EN-01 FR-4 * score: 4 ### function isSudSensitiveResourceType * file: supabase/functions/fhir-r4/consent-check.ts:68 * kind: function * core: edge-functions * spec: (none) * summary: Determine if a resource type contains SUD/Part 2 data.SUD conditions, SUD medications, and related resources need Part 2 consent. * score: 4 ### function isTerminalRunState * file: supabase/functions/\_shared/ai/agent-run-states.ts:75 * kind: function * core: edge-functions * spec: (none) * summary: True when is a terminal state (no outgoing transitions, FR-7). * score: 4 ### function isTerminalSmsStatus * file: supabase/functions/\_shared/ringcentral-sms-adapter.ts:159 * kind: function * core: edge-functions * spec: (none) * summary: Check if status indicates a terminal state (no further updates expected) * score: 4 ### function isTokenExpiringSoon * file: supabase/functions/\_shared/outlook-client.ts:380 * kind: function * core: edge-functions * spec: (none) * summary: Check if a token needs refresh (expires within 5 minutes) * score: 4 ### function isTracingEnabled * file: supabase/functions/\_shared/ai/tracing.ts:84 * kind: function * core: edge-functions * spec: (none) * summary: Whether tracing is active (keys present + init succeeded). * score: 4 ### function isTransferReturn * file: supabase/functions/\_shared/plaid-client.ts:1184 * kind: function * core: edge-functions * spec: (none) * summary: Check if a transfer failure is a return (vs other failure) * score: 4 ### function isUnmatchedProfileRow * file: supabase/functions/hr-proliant-create-profile-from-pending/identity.ts:55 * kind: function * core: edge-functions * spec: (none) * summary: True if the row is a remediable unmatched-profile row (vs a data conflict). * score: 4 ### function isUpnAvailable * file: supabase/functions/\_shared/entra-client.ts:671 * kind: function * core: edge-functions * spec: (none) * summary: Check if a userPrincipalName (email) is available. * params: * credentials — Azure AD app credentials * upn — User principal name to check * correlationId — Request correlation ID * returns: True if available, false if taken * score: 4 ### function isValidE164 * file: supabase/functions/\_shared/ringcentral-sms-adapter.ts:211 * kind: function * core: edge-functions * spec: (none) * summary: Validate E.164 phone number format * score: 4 ### function isValidEncoreField * file: supabase/functions/\_shared/ce-hubspot-mappings.ts:44 * kind: function * core: edge-functions * spec: (none) * summary: True when the field is selectable for the given object type. * score: 4 ### function isWellFormedApiVersion * file: supabase/functions/\_shared/versioning-core.ts:19 * kind: function * core: edge-functions * spec: (none) * summary: Check whether a version string matches the well-formed format (e.g. , ). * params: * v — The raw header value (may be null). * returns: if matches . * score: 4 ### function isWithinBusinessHours * file: supabase/functions/\_shared/sms-provider.ts:203 * kind: function * core: edge-functions * spec: (none) * summary: Check if current time is within business hours * params: * startTime — HH:MM format (e.g., "09:00") * endTime — HH:MM format (e.g., "18:00") * timezone — IANA timezone (defaults to America/New\_York) * returns: true if within business hours * score: 4 ### function iterateBannerCsv * file: supabase/functions/\_shared/weno/csv.ts:34 * kind: function * core: edge-functions * spec: (none) * summary: Iterate a banner+header CSV: skip lines until isHeaderRow(cells) is true,then yield header-keyed rows. Lines that match isHeaderRow are treated as(re-)headers and never yielded as data — calling onHeaders each time theyappear. This allows drift detection when a vendor appends new columns. * score: 4 ### function iterateDirectoryCsv * file: supabase/functions/cl-weno-directory-ingest/parse-archive.ts:36 * kind: function * core: edge-functions * spec: (none) * summary: Stream CSV data rows as header-keyed objects WITHOUT materializing them all —the real full directory is \~89k rows / \~6 MB and must stay within the edgeruntime's memory limit. receives the header row once (for drift). * score: 4 ### function jsonHeaders * file: supabase/functions/\_shared/auth.ts:332 * kind: function * core: edge-functions * spec: (none) * summary: Helper to create CORS headers with JSON content type * score: 4 ### function listChannelTabs * file: supabase/functions/\_shared/entra-client.ts:1563 * kind: function * core: edge-functions * spec: (none) * summary: List tabs in a Teams channel.Requires TeamsTab.Read.All or TeamsTab.ReadWrite.All. * score: 4 ### function listDriveItems * file: supabase/functions/\_shared/entra-client.ts:1310 * kind: function * core: edge-functions * spec: (none) * summary: List items in a SharePoint site's document library root or a specific folder.Requires Sites.Read.All or Files.ReadWrite.All. * score: 4 ### function listIntakeProviderAvailabilityDeno * file: supabase/functions/intake-agent-run/provider-availability.ts:54 * kind: function * core: edge-functions * spec: (none) * summary: Read caseloads + appointment schedule blocks, rank lowest-utilization-first. * score: 4 ### function listSharePointSites * file: supabase/functions/\_shared/entra-client.ts:837 * kind: function * core: edge-functions * spec: (none) * summary: List SharePoint sites. * score: 1 ### function listSiteGroups * file: supabase/functions/\_shared/entra-client.ts:858 * kind: function * core: edge-functions * spec: (none) * summary: List groups associated with a SharePoint site. * score: 4 ### function listTeamChannels * file: supabase/functions/\_shared/entra-client.ts:708 * kind: function * core: edge-functions * spec: (none) * summary: List channels in a team. * score: 1 ### function listTeams * file: supabase/functions/\_shared/entra-client.ts:687 * kind: function * core: edge-functions * spec: (none) * summary: List all Teams in the tenant. * score: 1 ### function listTransferEvents * file: supabase/functions/\_shared/plaid-client.ts:1121 * kind: function * core: edge-functions * spec: (none) * summary: List transfer events (for reconciliation and webhook verification) * score: 4 ### function listTransfers * file: supabase/functions/\_shared/plaid-client.ts:1100 * kind: function * core: edge-functions * spec: (none) * summary: List transfers with optional filters * score: 4 ### function loadConnection * file: supabase/functions/\_shared/google-workspace-client.ts:126 * kind: function * core: edge-functions * spec: (none) * summary: Load the tenant's PF-101 Workspace connection metadata and capability flags. * score: 4 ### function loadEffectiveLimits * file: supabase/functions/\_shared/fw-rate-limit.ts:121 * kind: function * core: edge-functions * spec: (none) * summary: Load org-level (workflow\_definition\_id IS NULL) and per-workflow active limit rowsfor this org in a single indexed read, then resolve the *effective* ceiling perlimit type. Precedence (FR-1.1 / US-2): a workflow row overrides the org row forthe same limit\_type, BUT the effective workflow value is clamped to the org value— "effective workflow limits cannot exceed org-level limits". * score: 4 ### function loadEmployeeFieldMappings * file: supabase/functions/proliant-sync/field-mapper.ts:141 * kind: function * core: edge-functions * spec: (none) * summary: Merge org field-mapping overrides onto the default key map for a direction.Pull starts from the built-in defaults; push starts empty (overrides only). * score: 4 ### function loadHeldScopes * file: supabase/functions/intake-agent-run/run-intake.ts:134 * kind: function * core: edge-functions * spec: (none) * summary: Look up which of the candidate scopes the staff member holds. — the scope stringIS the permission key (PF-30 identity mapping). p\_user\_id has no auth.uid() fallback, so theauthorizing staff id MUST be passed explicitly. * score: 4 ### function makeFixtureTransport * file: supabase/functions/\_shared/weno/transport.ts:70 * kind: function * core: edge-functions * spec: (none) * summary: Fixture transport built from base64 payloads supplied in the request body. * score: 4 ### function mapAbnormalFlag * file: supabase/functions/cl-lab-result-ingestion/result-mapper.ts:15 * kind: function * core: edge-functions * spec: (none) * summary: Map HL7 Table 0078 or FHIR interpretation codes to CL-09 abnormal\_flag values. * score: 4 ### function mapCobraReason * file: supabase/functions/\_shared/transforms/rippling-benefits-to-hr.ts:254 * kind: function * core: edge-functions * spec: (none) * summary: Maps a Rippling COBRA reason string to an hr\_cobra\_events.qualifying\_event enum value. * score: 4 ### function mapCondition * file: supabase/functions/fhir-r4/condition-mapper.ts:11 * kind: function * core: edge-functions * spec: (none) * summary: Provides map condition functionality. * score: 4 ### function mapEncoreEmployeeToProliant * file: supabase/functions/proliant-sync/field-mapper.ts:349 * kind: function * core: edge-functions * spec: (none) * summary: Build the Proliant employee push payload () from anEncore , applying any push-direction field overrides. * score: 4 ### function mapErrorToConnectionStatus * file: supabase/functions/\_shared/plaid-client.ts:795 * kind: function * core: edge-functions * spec: (none) * summary: Map Plaid error to connection status * score: 4 ### function mapFHIRToResult * file: supabase/functions/cl-lab-result-ingestion/result-mapper.ts:75 * kind: function * core: edge-functions * spec: (none) * summary: Map a parsed FHIR Observation to the common MappedResult shape. * score: 4 ### function mapLookupToCodeRows * file: supabase/functions/proliant-code-lookup/lookup-mapper.ts:46 * kind: function * core: edge-functions * spec: (none) * summary: Transform raw Proliant lookup results into rows.Reads the code from (live API) or (legacy fixtures), dropsentries with a missing/blank code, trims it, and marks each row so an admin can later assign the Encore target value. * score: 4 ### function mapMedicationRequest * file: supabase/functions/fhir-r4/medication-mapper.ts:11 * kind: function * core: edge-functions * spec: (none) * summary: Provides map medication request functionality. * score: 4 ### function mapOBXToResult * file: supabase/functions/cl-lab-result-ingestion/result-mapper.ts:51 * kind: function * core: edge-functions * spec: (none) * summary: Map a parsed HL7v2 OBX segment to the common MappedResult shape. * score: 4 ### function mapPatient * file: supabase/functions/fhir-r4/patient-mapper.ts:11 * kind: function * core: edge-functions * spec: (none) * summary: Provides map patient functionality. * score: 4 ### function mapPharmacyRow * file: supabase/functions/\_shared/weno/pharmacy-mapping.ts:89 * kind: function * core: edge-functions * spec: (none) * summary: Map a single header-keyed directory row to a PharmacyRecord (null if no name). * score: 4 ### function mapPlaidTransaction * file: supabase/functions/\_shared/plaid-client.ts:727 * kind: function * core: edge-functions * spec: (none) * summary: Map Plaid transaction to database formatPlaid amounts are negative for debits (outflows) and positive for credits (inflows) * score: 4 ### function mapProcedureCategoryToQI * file: supabase/functions/gr-procedure-gap-consumer/buildQIDraftFromGap.ts:62 * kind: function * core: edge-functions * spec: (none) * summary: Map (clinical|operational|safety|hr|financial|it|emergency|other)to a value accepted by (clinical|operational|safety|compliance|outcomes). * score: 4 ### function mapProliantEmployee * file: supabase/functions/proliant-sync/field-mapper.ts:252 * kind: function * core: edge-functions * spec: (none) * summary: Map a raw Proliant employee record to the Encore ,resolving each field via the (optionally overridden) key map. Names live onthe linked profile; use before writing hr\_employees. * score: 4 ### function mapProviderStatus * file: supabase/functions/\_shared/sms-provider.ts:347 * kind: function * core: edge-functions * spec: (none) * summary: Map provider-specific status to normalized status. * params: * \_provider — SMS provider (RingCentral) * providerStatus — Status string from provider * returns: Normalized status * score: 4 ### function mapReportList * file: supabase/functions/proliant-reports/report-list-mapper.ts:41 * kind: function * core: edge-functions * spec: (none) * summary: Map the vendor report-list envelope to the sanitized display list.Tolerates the / envelope variants (via ) andskips entries that are not objects or carry neither an id nor a title. * score: 4 ### function mapRingCentralSmsStatus * file: supabase/functions/\_shared/ringcentral-sms-adapter.ts:152 * kind: function * core: edge-functions * spec: (none) * summary: Map RingCentral SMS status to normalized status * score: 4 ### function mapServiceTypeCode * file: supabase/functions/\_shared/pm/service-type-mapper.ts:42 * kind: function * core: edge-functions * spec: (none) * summary: Resolve a service type code to a mapping. Unknown codes return apass-through mapping with category 'other'. * score: 4 ### function mapTaxDocEntries * file: supabase/functions/proliant-tax-documents/tax-document-mapper.ts:119 * kind: function * core: edge-functions * spec: (none) * summary: Map the (already employee-scoped) year-end TaxDoc envelope to metadata-onlyentries. The endpoint has no swagger response schema, so this tolerates asingle object or a list and falls back to the REQUESTED year + adeterministic synthetic id when the payload is content-only. * score: 4 ### function mapTaxFormList * file: supabase/functions/proliant-tax-documents/tax-document-mapper.ts:94 * kind: function * core: edge-functions * spec: (none) * summary: Map the company-wide TaxForm search envelope to the requesting employee'smetadata-only entries. Entries belonging to other employees are dropped; never survives (the output shape has no content field). * score: 4 ### function mapTransactionType * file: supabase/functions/\_shared/plaid-client.ts:755 * kind: function * core: edge-functions * spec: (none) * summary: Map Plaid transaction to a more specific transaction type.fa\_bank\_statement\_lines.transaction\_type now supports: 'debit', 'credit', 'check', 'ach', 'wire', 'pos', 'fee', 'interest', 'transfer'Plaid convention: positive amount = outflow (debit), negative = inflow (credit) * score: 4 ### function mapTransferEventToPaymentStatus * file: supabase/functions/\_shared/plaid-client.ts:1162 * kind: function * core: edge-functions * spec: (none) * summary: Map a Plaid transfer *event* (from /transfer/event/list or theTRANSFER\_EVENTS\_UPDATE webhook) to our payment-item status.Returns for non-status / sweep-lifecycle events (, ,, ) and any unmapped event (e.g. ),so callers skip them rather than persisting an illegal status.A event is disambiguated by its ACH return code: a return (R-code)maps to ; any other failure maps to . * score: 4 ### function mapTransferStatusToPaymentStatus * file: supabase/functions/\_shared/plaid-client.ts:1130 * kind: function * core: edge-functions * spec: (none) * summary: Map Plaid transfer status to our payment item status * score: 4 ### function mask * file: supabase/functions/\_shared/ai/tracing-mask.ts:23 * kind: function * core: edge-functions * spec: (none) * summary: Backstop masking applied by Langfuse to every observation input/output/metadatabefore transmission. The tracing decorator already never attaches prompt orcompletion content, so this is defense-in-depth against an accidental leak.Redacts direct identifiers only; leaves structured metadata (model names,token counts) intact. is the stringified JSON of an attribute value (per Langfuse's contract). Returns the redacted string. * score: 4 ### function meetsContrastAA * file: supabase/functions/\_shared/compliance-contrast.ts:42 * kind: function * core: edge-functions * spec: (none) * summary: Check WCAG AA normal text contrast. * score: 4 ### function meetsContrastAALarge * file: supabase/functions/\_shared/compliance-contrast.ts:47 * kind: function * core: edge-functions * spec: (none) * summary: Check WCAG AA large text contrast. * score: 4 ### function mergeModuleOverrides * file: supabase/functions/provision-tenant/module-overrides.ts:122 * kind: function * core: edge-functions * spec: (none) * summary: Merge request-level overrides onto the current pf\_module\_settings values.Returns the column set to UPDATE (plus key metadata for logging / step summaries).Never mutates its inputs. * score: 4 ### function mergeRetryPolicy * file: supabase/functions/\_shared/fw-error-recovery-policy.ts:55 * kind: function * core: edge-functions * spec: (none) * summary: Merges rule-level defaults with node-level overrides.Node values take precedence; missing fields fall back to rule, then DB defaults. * score: 4 ### function mergeTaxDocuments * file: supabase/functions/proliant-tax-documents/tax-document-mapper.ts:142 * kind: function * core: edge-functions * spec: (none) * summary: Merge per-source metadata lists into the display order: de-duplicated by id(first occurrence wins — pass the richer list first), sorted bytax year desc, then release date desc. * score: 4 ### function mergeTransactionCustomFields * file: supabase/functions/plaid-sync-worker/index.ts:60 * kind: function * core: edge-functions * spec: (none) * summary: Merge refreshed Plaid-derived custom\_fields INTO the stored JSONB instead of overwriting it.Existing keys not present in (e.g. written at insert, or any othermetadata) are preserved; values win on conflict; next-values are dropped soa missing Plaid field never clobbers a stored value with /null. * score: 4 ### function narrowScopesToHuman * file: supabase/functions/intake-agent-run/run-intake.ts:39 * kind: function * core: edge-functions * spec: (none) * summary: Bounded-to-human: keep only requested scopes the authorizing staff actually holds. * score: 4 ### function needsTokenRefresh * file: supabase/functions/\_shared/ce-hubspot-sync.ts:268 * kind: function * core: edge-functions * spec: (none) * summary: Refresh when the access token expires within the skew window (default 2 min). * score: 4 ### function neutralizeFetchedContent * file: supabase/functions/\_shared/gr-regulatory-content.ts:300 * kind: function * core: edge-functions * spec: (none) * summary: Neutralize external (UNTRUSTED) fetched regulatory content before it entersan AI prompt or is stored as system-interpreted text.Steps:1. Strip C0 control characters (except t, n, r).2. Remove lines that start with known prompt-injection prefixes.3. Truncate to maxChars (default 4 000) with a visible truncation marker.The function is pure (no I/O) and safe to call on any string, including empty. * params: * content — raw fetched content (may contain injection attempts) * opts — optional overrides for maxChars, alwaysAddSuffix * returns: neutralized string, safe for AI prompt inclusion * score: 4 ### function neutralizePortalResult * file: supabase/functions/\_shared/portal-guard.ts:164 * kind: function * core: edge-functions * spec: (none) * summary: Neutralize a portal result object before DB write.For each key whose value is a string: - If the string exceeds → truncate. - If the string contains a known injection marker → replace with a sentinel so the DB row is not polluted.Non-string values (numbers, booleans, nested objects) are passed through.The function returns a shallow clone; the input is not mutated. * params: * result — The raw object from the worker response (unknown shape — may contain confirmation numbers, extraction values, etc.). * score: 4 ### function neutralizeToolResult * file: supabase/functions/\_shared/ai/tool-guard.ts:88 * kind: function * core: edge-functions * spec: (none) * summary: Neutralize a tool-result string before it re-enters the model context.Operations (in order): 1. Strip C0 control chars (0x00–0x08, 0x0B–0x0C, 0x0E–0x1F) — preserves n and t. 2. If the string starts with a known injection-marker prefix, prepend a bracketed notice and remove the marker so it is no longer directive. 3. Truncate to (default 4000) characters.This function MUST NOT alter valid JSON structure — stripping n/t wouldcorrupt pretty-printed JSON returned by / . * score: 4 ### function nextBusinessDay * file: supabase/functions/\_shared/business-calendar.ts:192 * kind: function * core: edge-functions * spec: (none) * summary: Returns the next business day on or after the given date. * score: 4 ### function normalizeContent * file: supabase/functions/\_shared/gr-regulatory-content.ts:97 * kind: function * core: edge-functions * spec: (none) * summary: Strip scripts, styles, HTML tags, common entities, and collapse whitespace.Deliberately coarse to minimize false-positive hash changes from markup churn.Mirrors check-source-regulatory-changes.ts normalizeContent. * score: 4 ### function normalizeDeaSchedule * file: supabase/functions/\_shared/weno/dea-schedule.ts:47 * kind: function * core: edge-functions * spec: (none) * returns: canonical roman schedule () or when not a recognized controlled-substance schedule. * score: 1 ### function normalizeEmailKey * file: supabase/functions/\_shared/ce-hubspot-backfill-core.ts:129 * kind: function * core: edge-functions * spec: (none) * summary: Lowercased/trimmed email, or null when unusable. * score: 4 ### function normalizePhoneKey * file: supabase/functions/\_shared/ce-hubspot-backfill-core.ts:136 * kind: function * core: edge-functions * spec: (none) * summary: Last 10 digits of the phone, or null when fewer than 7 digits. * score: 4 ### function normalizeScopedEmployeeIds * file: supabase/functions/proliant-sync/push-scope.ts:16 * kind: function * core: edge-functions * spec: (none) * summary: Clean a raw input into a scope set: keep only non-empty strings. in → out (no scope). An explicitly empty array ispreserved and treated downstream as "unscoped" (mirrors the gate). * score: 4 ### function normalizeToE164 * file: supabase/functions/\_shared/ringcentral-sms-adapter.ts:219 * kind: function * core: edge-functions * spec: (none) * summary: Normalize phone number to E.164 format (US numbers) * score: 4 ### function normalizeWebhookBatch * file: supabase/functions/\_shared/ce-hubspot-webhook.ts:243 * kind: function * core: edge-functions * spec: (none) * summary: Normalize a batch. R4: also fires a companion (no ordering guarantee) — when both appear for the sameobjectId in one batch, only the privacy\_deletion work item is emitted. * score: 4 ### function normalizeWebhookEvent * file: supabase/functions/\_shared/ce-hubspot-webhook.ts:196 * kind: function * core: edge-functions * spec: (none) * summary: Normalize one raw event into a queue work item. Returns null forunsubscribed/unknown event types or malformed events (skipped, not fatal —HubSpot batches can mix subscription types). * score: 4 ### function opaqueTargetRef * file: supabase/functions/\_shared/ai/agent-action-digest.ts:70 * kind: function * core: edge-functions * spec: (none) * summary: Opacity transform for a target reference. NOT a security hash — it exists only to keep ahuman-readable identifier (a name, an email, an MRN) out of the digest while preservingreferential equality for correlation. FNV-1a (32-bit) over the UTF-16 code units, hex-encoded. * score: 4 ### function orderDueOrgsForFairness * file: supabase/functions/proliant-scheduled-sync/dispatch-bounds.ts:46 * kind: function * core: edge-functions * spec: (none) * summary: Order due orgs FAIRLY so the dispatcher never starves the tail of the list.Least-recently-attempted first (never-run orgs sort first via -Infinity), witha stable integrationId tiebreak so ordering is deterministic across ticks.Without this, the serial dispatcher always drains from the head of the query order; if the head reliably exhausts the deadline, the sametail orgs are deferred on every tick and never sync. * score: 4 ### function parse271 * file: supabase/functions/\_shared/x12/parse-271.ts:55 * kind: function * core: edge-functions * spec: (none) * summary: Parse an X12 271 eligibility response. * score: 4 ### function parse271Benefits * file: supabase/functions/\_shared/pm/benefit-parser.ts:98 * kind: function * core: edge-functions * spec: (none) * summary: Group raw EB segments by (service\_type\_code, network\_tier) and produce onenormalized benefit detail per group. * score: 4 ### function parse277CA * file: supabase/functions/\_shared/x12/parse-277ca.ts:54 * kind: function * core: edge-functions * spec: (none) * summary: Parse an X12 277CA claim acknowledgment. * score: 4 ### function parse835 * file: supabase/functions/\_shared/x12/parse-835.ts:75 * kind: function * core: edge-functions * spec: (none) * summary: Parse an X12 835 ERA string into structured remittance data. * score: 4 ### function parse999 * file: supabase/functions/\_shared/x12/parse-999.ts:67 * kind: function * core: edge-functions * spec: (none) * summary: Parse an X12 999 functional acknowledgment. * score: 4 ### function parseClassificationResponse * file: supabase/functions/\_shared/gr-impact-classifier.ts:141 * kind: function * core: edge-functions * spec: (none) * summary: Parse the AI response JSON. Returns a safe default on parse failure. * score: 4 ### function parseCodingResponse * file: supabase/functions/pm-ai-coding-suggest/validation.ts:320 * kind: function * core: edge-functions * spec: PM-64 * summary: Parse the raw model response string to a validated CodingSuggestionOutput.Returns null if parsing fails (caller should treat as a soft error, not throw). * score: 5 ### function parseContactsPage * file: supabase/functions/\_shared/ce-hubspot-backfill-core.ts:103 * kind: function * core: edge-functions * spec: (none) * summary: Tolerant parse of a CRM v3 list response page. * score: 4 ### function parseDirectoryArchive * file: supabase/functions/cl-weno-directory-ingest/parse-archive.ts:75 * kind: function * core: edge-functions * spec: (none) * summary: Unzip a WENO directory archive and return its data rows as header-keyedobjects, handling the real CSV LITE layout (banner + header rows) and anExcel entry defensively. Returns empty when the archive holds neither. Usedfor the small/delta and fixture paths; the full feed streams via to stay within the edge runtime memory limit. * score: 4 ### function parseEmailAddress * file: supabase/functions/\_shared/outlook-client.ts:389 * kind: function * core: edge-functions * spec: (none) * summary: Parse email address from Graph API format * score: 4 ### function parseFHIRDiagnosticReport * file: supabase/functions/cl-lab-result-ingestion/fhir-mapper.ts:19 * kind: function * core: edge-functions * spec: (none) * summary: Parse a FHIR DiagnosticReport JSON body into a ParsedFHIR structure. * score: 4 ### function parseGatewayResponse * file: supabase/functions/\_shared/ai/response.ts:15 * kind: function * core: edge-functions * spec: (none) * summary: Normalize an OpenAI-compatible response into a ChatResult. * score: 4 ### function parseHL7v2ORU * file: supabase/functions/cl-lab-result-ingestion/hl7v2-parser.ts:17 * kind: function * core: edge-functions * spec: (none) * summary: Parse a raw HL7v2 ORU^R01 message string into a structured object. * score: 4 ### function parseHubspotTokenMetadata * file: supabase/functions/\_shared/ce-hubspot-oauth.ts:196 * kind: function * core: edge-functions * spec: (none) * summary: Parses the access-token metadata response() — the source of and thegranted scope list shown on the connection page (AC-1). * score: 4 ### function parseHubspotTokenResponse * file: supabase/functions/\_shared/ce-hubspot-oauth.ts:162 * kind: function * core: edge-functions * spec: (none) * summary: Parses a HubSpot token-endpoint response body (code exchange or refresh).Always surfaces the returned refresh token — rotation is version-dependent(research R6), so the caller must persist whatever comes back. * score: 4 ### function parseIpv4 * file: supabase/functions/\_shared/ssrf-guard.ts:35 * kind: function * core: edge-functions * spec: (none) * summary: Parse a dotted-quad IPv4 string into octets, or null if not a valid IPv4 literal. * score: 4 ### function parseMajor * file: supabase/functions/\_shared/versioning-core.ts:29 * kind: function * core: edge-functions * spec: (none) * summary: Extract the integer major number from a well-formed version string. * params: * v — A well-formed version string (e.g. ). Caller must validate first. * returns: The major version number (e.g. ). * score: 4 ### function parsePharmacyRecords * file: supabase/functions/\_shared/weno/pharmacy-mapping.ts:118 * kind: function * core: edge-functions * spec: (none) * summary: Map an array of header-keyed directory rows to s,skipping rows without a business name and collecting any unknown columns asschema drift. Returns empty for non-array input. * score: 4 ### function parsePollSearchResponse * file: supabase/functions/\_shared/ce-hubspot-poll.ts:117 * kind: function * core: edge-functions * spec: (none) * summary: Tolerant parse of a CRM v3 search response page. * score: 4 ### function parseProliantGrants * file: supabase/functions/\_shared/proliant-capabilities.ts:63 * kind: function * core: edge-functions * spec: (none) * summary: Parse the raw entries into a map.Entries are (e.g. ); resourcekeys are lower-cased for case-insensitive lookup. Malformed/blank entries areskipped. Also tolerates a bare-path form ( with no method)by recording it under the method so callers still see the grant. * score: 4 ### function parseRecipients * file: supabase/functions/\_shared/outlook-client.ts:402 * kind: function * core: edge-functions * spec: (none) * summary: Parse multiple recipients into a JSON-compatible array * score: 4 ### function parseRingCentralSmsEvent * file: supabase/functions/\_shared/ringcentral-sms-adapter.ts:448 * kind: function * core: edge-functions * spec: (none) * summary: Parse an inbound SMS message event from RingCentral webhook * score: 4 ### function parseRipplingBenefitsRows * file: supabase/functions/\_shared/transforms/rippling-benefits-to-hr.ts:145 * kind: function * core: edge-functions * spec: (none) * summary: Parses a Rippling Insurance Enrollment Report CSV into structured enrollment data. * params: * rows — CSV data rows (without header) * headers — CSV header row * returns: Array of parsed benefit enrollments per employee per active benefit line * score: 4 ### function parseRipplingCobraRows * file: supabase/functions/\_shared/transforms/rippling-benefits-to-hr.ts:210 * kind: function * core: edge-functions * spec: (none) * summary: Parses a Rippling COBRA Enrollment Report CSV into structured COBRA event data.SSN and DOB columns are intentionally NOT read. * score: 4 ### function parseSpecIdFromTitle * file: supabase/functions/github-webhook/index.ts:92 * kind: function * core: edge-functions * spec: (none) * summary: Parse \[CORE-##] from issue title (e.g. \[HR-05], \[PF-35]). Exported for unit tests. * score: 4 ### function parseStreamUsage * file: supabase/functions/\_shared/ai/tracing-mask.ts:54 * kind: function * core: edge-functions * spec: (none) * summary: Drain a cloned SSE stream and extract metadata-only signals from the OpenAI-compatible chunks: , the final block, and .Reads ONLY token counts / model / finish — never delta content — so themetadata-only invariant holds even though the stream body is consumed. Pureapart from reading the passed stream; never throws (returns whatever itgathered if the read errors), so a background caller stays best-effort. * score: 4 ### function parseSuggestions * file: supabase/functions/ai-mapping-suggest/suggest.ts:271 * kind: function * core: edge-functions * spec: (none) * summary: Parse and harden the model's tool-call arguments into typed suggestions.Drops rows whose is unknown or whose is not anallowed candidate; maps the NO\_MATCH sentinel to . * score: 4 ### function parseValueMapTransform * file: supabase/functions/\_shared/import-transforms.ts:52 * kind: function * core: edge-functions * spec: (none) * summary: Decode a JSON-encoded transform into its value map + policy.Returns for plain-name transforms, non-value\_map configs, or malformedJSON. Strictness defaults to for any value other than (including absent), so templates persisted before PR9 keep fail-open behaviour. * score: 4 ### function parseWebhookBatch * file: supabase/functions/\_shared/ce-hubspot-webhook.ts:167 * kind: function * core: edge-functions * spec: (none) * summary: Parse a raw webhook request body into an event batch. * score: 4 ### function payloadDigest * file: supabase/functions/\_shared/ai/agent-run-state-machine.ts:190 * kind: function * core: edge-functions * spec: (none) * summary: SHA-256 hex digest of a payload — contains no PHI, safe to log/audit. Used for auditcorrelation and step idempotency keys (FR-6). PF-27-EN-01 redaction is applied topayloads *before* they reach a model; this digest is over the already-handled payload. * score: 4 ### function plaidItemSourceRowId * file: supabase/functions/\_shared/vault-credentials.ts:237 * kind: function * core: edge-functions * spec: (none) * summary: Deterministic UUID v5 of (PLAID\_ITEM\_NAMESPACE, itemId). Equals Postgresextensions.uuid\_generate\_v5(PLAID\_ITEM\_NAMESPACE::uuid, itemId) byte-for-byte —this is the vault source\_row\_id for a Plaid item's access token. * score: 4 ### function plaidRequest * file: supabase/functions/\_shared/plaid-client.ts:241 * kind: function * core: edge-functions * spec: (none) * summary: Make authenticated request to Plaid API * score: 4 ### function planDispatch * file: supabase/functions/\_shared/fw-schedule-dispatch.ts:53 * kind: function * core: edge-functions * spec: (none) * summary: Plan how to handle a batch of due schedules (see src planner for the full contract). * score: 4 ### function planDispatch * file: supabase/functions/proliant-scheduled-sync/dispatch-bounds.ts:66 * kind: function * core: edge-functions * spec: (none) * summary: Split the due orgs into the set we will attempt this tick vs the set deferredby the per-tick cap. Ordering is fair (see ). * score: 4 ### function planMergeRepoint * file: supabase/functions/\_shared/ce-hubspot-sync.ts:229 * kind: function * core: edge-functions * spec: (none) * summary: Plan the link re-point for a HubSpot merge event. is the currentexternal\_id → internal\_id map for every involved HubSpot id. * score: 4 ### function planPropertyChange * file: supabase/functions/\_shared/ce-hubspot-sync.ts:95 * kind: function * core: edge-functions * spec: (none) * summary: Plan a single propertyChange event. REDACTED sensitive values never carrythe value on the work item — the worker must re-fetch the object from theCRM API to learn it (T5 README / R3 note). * score: 4 ### function pollResultToWorkItem * file: supabase/functions/\_shared/ce-hubspot-poll.ts:172 * kind: function * core: edge-functions * spec: (none) * summary: Convert one search hit into the queue's normalized work item. is the poll feeder's event type: the worker treats it asrefetch-then-apply when linked and identity-resolve when not — exactlythe recovery a missed webhook needs. Returns null when the modificationtimestamp is unusable (no stable idempotency key → skip, next pollre-reads it). * score: 4 ### function postAgentMessage * file: supabase/functions/\_shared/cowork/agent-message.ts:82 * kind: function * core: edge-functions * spec: (none) * summary: Persist an attributed agent message. MUST be request-scoped to the agent's boundedprincipal — never the service-role client (FR-14/AC-4). The DB attribution trigger is thereal gate; a write for an agent without an active thread binding is rejected there. * score: 4 ### function processReminders * file: supabase/functions/\_shared/reminder-engine.ts:218 * kind: function * core: edge-functions * spec: (none) * summary: Process reminders based on the provided configuration.This is the core engine that:1. Queries the configured table for items with upcoming due dates2. For each item, determines the appropriate notification threshold3. Resolves the recipient and display name4. Creates a notification (with dedup checking)5. Returns a summary of results * params: * supabase — Service role Supabase client * config — Reminder configuration * logger — Structured logger * correlationId — Correlation ID for tracing * returns: Summary of reminders processed * score: 4 ### function publishDomainEvent * file: supabase/functions/\_shared/google-workspace-client.ts:774 * kind: function * core: edge-functions * spec: (none) * summary: Publish a PF-101 domain event via pg\_notify('domain\_events', ...).Payloads MUST NOT contain PHI; emails/IDs only as documented in the integration doc. * score: 4 ### function pushCodeDefinitions * file: supabase/functions/proliant-code-push/push-code-definitions.ts:57 * kind: function * core: edge-functions * spec: (none) * summary: Write a set of Encore code definitions back to Proliant (HR-44-EN-01 AC-7).POSTs each definition to its resource controller, treating a vendor"already exists" rejection as an idempotent skip rather than a failure, andreturns a tally. Never throws for a per-definitionproblem — those are collected in . * params: * client — the resolved Proliant transport. * companyId — the Proliant company id the codes belong to. * defs — the code definitions to write back. * opts — carries the request for vendor-call tracing. * returns: the pushed/skipped/errored tally. * score: 4 ### function pushEmployeeSubResources * file: supabase/functions/proliant-sync/push-subresources.ts:125 * kind: function * core: edge-functions * spec: (none) * summary: Push an employee's writeback sub-resources (pay rate, tax, direct deposit,deductions, earnings, emergency contacts, dependents) to Proliant. Eachsub-resource is applied idempotently via the push log and is non-fatal: avendor failure or unmet capability gate is logged and skipped, never thrown,so one bad resource cannot block the rest of the employee sync. * score: 4 ### function rateLimitsEnabled * file: supabase/functions/\_shared/fw-rate-limit.ts:98 * kind: function * core: edge-functions * spec: (none) * summary: Feature flag — emergency bypass per spec Rollback Strategy. * score: 4 ### function readProliantFixtures * file: supabase/functions/\_shared/proliant-transport.ts:55 * kind: function * core: edge-functions * spec: (none) * summary: Extract test fixtures from a request, default-deny.Fixtures are honored ONLY when the non-prod env flag is enabled AND therequest carries the test-only header. In production is never enabled, so this always returns null and the real transport is used. * returns: the parsed fixture map, or null when fixtures are not accepted * score: 4 ### function readPullCheckpoint * file: supabase/functions/proliant-sync/pull-checkpoint.ts:67 * kind: function * core: edge-functions * spec: (none) * summary: Read a resumable employee-pull checkpoint from an arbitrary stored checkpointvalue, or null if it is absent / a different shape / a stale version. A nullresult means "start from the beginning" — the safe default. * score: 4 ### function reconcile * file: supabase/functions/proliant-payroll-run/reconciliation.ts:18 * kind: function * core: edge-functions * spec: (none) * summary: Reconcile the vendor preprocess preview () against the Encore baseline within .HR-44-EN-01 AC-2: controls whether gross/deductions are gated.Headcount is ALWAYS gated (Encore authoritatively knows the pushedpopulation). When no trustworthy amount baseline exists yet (first run for acalendar — see ) the caller passes so a tolerance-0 first run does not spuriously failagainst a zero expected. Amounts are still recorded for audit/calibration; thegate activates once a completed period's actuals are synced back. * score: 4 ### function recordAgentPhiAccess * file: supabase/functions/\_shared/ai/agent-usage.ts:111 * kind: function * core: edge-functions * spec: (none) * summary: Write exactly one PHI-access audit row via , **fail-closed**(FR-11): on any error this throws and the caller MUST refuse thePHI operation — the audit is a precondition of the touch, not a fire-and-forget side effect(the deliberate exception to the cost-ledger's best-effort logging). A write with no is rejected by the RPC (FR-12). * params: * rpc — A supabase client (the agent's scoped principal / the gateway service path). * input — The PHI touch to record (no PHI values). * score: 4 ### function recordBudgetExhausted * file: supabase/functions/proliant-sync/pull-checkpoint.ts:114 * kind: function * core: edge-functions * spec: (none) * summary: True once this invocation has hit its per-run record budget and should persistthe checkpoint and yield (the next tick resumes). Checked AFTER finishing apage so we never split a page across invocations. * score: 4 ### function recordDeprecatedVersionBreadcrumb * file: supabase/functions/\_shared/versioning-sentry.ts:22 * kind: function * core: edge-functions * spec: (none) * summary: Record a Sentry breadcrumb for deprecated version usage.This is intentionally a no-op stub in the Edge Function runtime — Sentryis client-side only. The function signature is provided so pilot functionscan call it uniformly. When server-side Sentry is enabled in Edge Functions,the implementation will be swapped to the real Sentry SDK call. * params: * functionName — The Edge Function name (e.g. 'portal-form-submit') * apiVersion — The version string used (e.g. 'v1') * orgId — The organization UUID (identifier only, no PHI) * score: 4 ### function recordExecutionAdmission * file: supabase/functions/\_shared/fw-rate-limit.ts:347 * kind: function * core: edge-functions * spec: (none) * summary: On admit, atomically bump the per-minute and per-hour window counters via theSECURITY DEFINER RPC. Best-effort: a counter write failure must NOT fail theexecution (the limit decision already passed); it only degrades dashboardfidelity. Concurrency is read authoritatively from execution rows, so noconcurrent\_count maintenance is required here. * score: 4 ### function recordMetrics * file: supabase/functions/\_shared/metrics.ts:22 * kind: function * core: edge-functions * spec: (none) * summary: Utility for record metrics. * score: 1 ### function recordPhiAccess * file: supabase/functions/\_shared/ai/agent-run-state-machine.ts:173 * kind: function * core: edge-functions * spec: (none) * summary: \*\*SHIM — PF-111-EN-01 owns (FR-14); it is absent here.\*\*Fail-closed contract: returns , and callers MUST refuse aPHI-touching write-capable step when it does. Never reached in Phase 1 (tools off). * score: 4 ### function recordPushApplied * file: supabase/functions/proliant-sync/push-idempotency.ts:91 * kind: function * core: edge-functions * spec: (none) * summary: Record a successful push as (idempotent upsert on the unique(organization\_id, idempotency\_key)). A no-op-safe write under retry. * score: 4 ### function recordRateLimitHit * file: supabase/functions/\_shared/rate-limiter.ts:73 * kind: function * core: edge-functions * spec: (none) * summary: Record one request for the key (call after checkRateLimit if allowed). * score: 4 ### function recordSmsOptOutSuppression * file: supabase/functions/\_shared/ce-suppression.ts:104 * kind: function * core: edge-functions * spec: (none) * summary: Record an SMS opt-out: upsert ce\_suppressions (sms channel) and appendan immutable ce\_consent\_evidence row. Safe to call when contactId isunknown — it will only write the consent\_evidence if a contact exists. * score: 4 ### function redactionContract * file: supabase/functions/\_shared/ai/agent-run-state-machine.ts:181 * kind: function * core: edge-functions * spec: (none) * summary: **SHIM — PF-27-EN-01 owns unified mandatory redaction (FR-9).** Reports inactive inPhase 1 (a spine gap); see . * score: 4 ### function redactLaunchUrl * file: supabase/functions/\_shared/weno/request-builder.ts:192 * kind: function * core: edge-functions * spec: (none) * summary: Strip the encrypted param from a URL for safe logging. * score: 4 ### function redactNoteText * file: supabase/functions/pm-ai-coding-suggest/index.ts:127 * kind: function * core: edge-functions * spec: PM-64 * summary: Redact HIPAA Safe Harbor identifiers from clinical note text.Fail-closed: throws if input is empty or not a string.Caller MUST skip the LLM call if this throws. * see: * HIPAA §164.514(b)(2) Safe Harbor de-identification * score: 5 ### function redactObject * file: supabase/functions/\_shared/ai/phi-redaction-core.ts:212 * kind: function * core: edge-functions * spec: (none) * summary: Key-based object scrub (folds + widens CE-69's ): recursively replaces thevalue of any key that matches (by stem, so variants like / / are caught) with . Non-PHI keys are traversed butunchanged. Used for structured snapshots (audit logs) where regex scrubbing of free text does not apply. * score: 4 ### function redactPhi * file: supabase/functions/\_shared/ai/phi-redaction-core.ts:143 * kind: function * core: edge-functions * spec: (none) * summary: Redact PHI from free text using the canonical Safe-Harbor catalog + caller literals.**Fail-closed**: throws on non-string / empty input. Returns PHI-safetext and per-category match counts (never the matched values). * params: * input — The free text to scrub. * ctx — Caller-known literal identifiers to remove in addition to the patterns. * score: 4 ### function redactPHI * file: supabase/functions/\_shared/redact-phi.ts:33 * kind: function * core: edge-functions * spec: (none) * summary: Redacts potential PHI/PII patterns from the given text. * params: * text — The input string to redact. * returns: The redacted string with identifiers replaced by placeholder tokens. * score: 4 ### function refreshAccessToken * file: supabase/functions/\_shared/google-client.ts:195 * kind: function * core: edge-functions * spec: (none) * summary: Exchange a refresh token for a new access token. Refresh tokens for offlineaccess are long-lived; Google may return a new refresh token, but typically does not. * score: 4 ### function relativeLuminance * file: supabase/functions/\_shared/compliance-contrast.ts:18 * kind: function * core: edge-functions * spec: (none) * summary: Relative luminance per WCAG 2.1 §1.4.3. * score: 4 ### function removeChannelTab * file: supabase/functions/\_shared/entra-client.ts:1585 * kind: function * core: edge-functions * spec: (none) * summary: Remove a tab from a Teams channel.Requires TeamsTab.ReadWrite.All. * score: 4 ### function removeItem * file: supabase/functions/\_shared/plaid-client.ts:711 * kind: function * core: edge-functions * spec: (none) * summary: Remove an item (disconnect bank account) * score: 4 ### function removeSharePointGroupMember * file: supabase/functions/\_shared/entra-client.ts:932 * kind: function * core: edge-functions * spec: (none) * summary: Remove a user from a SharePoint group. * score: 4 ### function removeTeamMember * file: supabase/functions/\_shared/entra-client.ts:760 * kind: function * core: edge-functions * spec: (none) * summary: Remove a user from a team. * score: 1 ### function renderBaseLayout * file: supabase/functions/\_shared/email-templates/base-layout.ts:279 * kind: function * core: edge-functions * spec: (none) * summary: Render the base email layout with header, content, and footer * score: 4 ### function renderCitationsForPrompt * file: supabase/functions/\_shared/gr-state-rag.ts:234 * kind: function * core: edge-functions * spec: (none) * summary: Render the retrieved citations into a system-prompt fragment the AI can ground in.Includes the spec's verbatim fallback disclaimer when the state KB is missing. * score: 4 ### function renderLetterheadFooter * file: supabase/functions/\_shared/letterhead-renderer.ts:264 * kind: function * core: edge-functions * spec: (none) * summary: Render the configured footer (confidentiality notice and page numbering) onto a PDF page. Draws an optional confidentiality text at the left margin and optional page numbering at the right margin using the provided fonts and layout options. Rendering respects footer visibility flags in the provided configuration. * params: * page — PDFPage to draw the footer onto. Must belong to the same PDFDocument instance used for embedding fonts and images. Example: * letterhead — LetterheadData containing with optional , , and flags. Example: * fonts — FontPair with (used for footer text) and font references. Fonts must be embedded into the PDFDocument prior to calling this function. * options — FooterRenderOptions including , , , and . and must be positive integers. * returns: void * example: | // Render footer for page 2 of 5 with a 36pt marginrenderLetterheadFooter(page, letterhead, fonts, pageWidth: 612, margin: 36, pageNumber: 2, totalPages: 5,); Note: This function only draws provided text into a PDF and does not perform any network or storage operations. Ensure confidentiality text passed in is appropriate for the document and that callers have permission to include any PHI/PII. * score: 4 ### function renderLetterheadHeader * file: supabase/functions/\_shared/letterhead-renderer.ts:87 * kind: function * core: edge-functions * spec: (none) * summary: Render a configurable letterhead header onto a PDF page, returning the vertical cursor position after rendering.Renders an optional top color bar, logo (fetched and embedded with a 10s timeout), organization name, address lines, contact line, and a separator line according to the provided LetterheadData header\_config. * params: * page — PDFPage to draw on. Must be a valid pdf-lib Page instance already attached to a PDFDocument. * letterhead — LetterheadData configuration controlling content and visibility (logo\_url, logo\_position, logo\_max\_height, org\_name\_display, address fields, phone/email/website, header\_config flags, bar\_color). Fields may be omitted; absent or falsy values are skipped. * fonts — FontPair containing and PDFFont instances used for text rendering. * options — RenderOptions with , , and . and are used to position elements. * pdfDoc — PDFDocument instance used to embed fetched images. Required when a logo URL is provided. * returns: Promisenumber The Y coordinate (distance from the bottom of the page) remaining after the header has been rendered. This function may render PII/PHI contained in the letterhead (phone, email, address). Callers must ensure the input LetterheadData is handled according to your data protection policies and only provided to authorized code paths. * example: | // Example usage:// const yAfterHeader = await renderLetterheadHeader(page, letterheadConfig, regular: regFont, bold: boldFont , pageWidth: 612, pageHeight: 792, margin: 36 , pdfDoc); * score: 4 ### function renderReportDeliveryEmail * file: supabase/functions/\_shared/email-templates/report-delivery.ts:44 * kind: function * core: edge-functions * spec: (none) * summary: Render a branded HTML email for report delivery * score: 4 ### function renderReportFailedEmail * file: supabase/functions/\_shared/email-templates/report-failed.ts:43 * kind: function * core: edge-functions * spec: (none) * summary: Render a branded HTML email for report failure notification * score: 4 ### function replyToChannelMessage * file: supabase/functions/\_shared/entra-client.ts:1265 * kind: function * core: edge-functions * spec: (none) * summary: Reply to a message in a Teams channel. * score: 4 ### function requireEnv * file: supabase/functions/\_shared/env.ts:27 * kind: function * core: edge-functions * spec: (none) * summary: Get a required environment variable or throw a descriptive error. * params: * name — Environment variable name (e.g., 'SUPABASE\_URL') * returns: The environment variable value * example: | const url = requireEnv('SUPABASE\_URL'); * score: 4 ### function requireEnvs * file: supabase/functions/\_shared/env.ts:48 * kind: function * core: edge-functions * spec: (none) * summary: Get multiple required environment variables or throw a descriptive error. * params: * names — Environment variable names to retrieve * returns: Record mapping variable names to their values * example: | const SUPABASE\_URL, SUPABASE\_SERVICE\_ROLE\_KEY = requireEnvs( 'SUPABASE\_URL', 'SUPABASE\_SERVICE\_ROLE\_KEY'); * score: 4 ### function resolveAndPersistCapture * file: supabase/functions/\_shared/ce-card-capture.ts:117 * kind: function * core: edge-functions * spec: (none) * summary: Resolve a card capture against existing contacts and persist all derivedrows. Returns the outcome plus the ids of anything created/linked/parked.Flow (CE-79 AC-5/6/7): - tier 'auto' - link existing contact (matches\[0].internal\_id) + lead - tier 'review' - parked (candidate\_ids\[0]); no contact, no lead - tier 'none' - new contact + leadA row is ALWAYS written. A lead always triggers abest-effort owner notification (failure never fails the capture). * score: 4 ### function resolveApAccount * file: supabase/functions/fa-gr-compliance-cost-consumer/index.ts:177 * kind: function * core: edge-functions * spec: (none) * summary: Resolve AP account from module settings (no fallback today). * score: 4 ### function resolveBaseUrl * file: supabase/functions/\_shared/proliant-client.ts:61 * kind: function * core: edge-functions * spec: (none) * summary: Resolve the API base URL for the given environment. Production is fixed;sandbox uses the configured (trailing slashes trimmed) andthrows a CONFIG when it is missing. * score: 4 ### function resolveConflict * file: supabase/functions/\_shared/fw-schedule-conflicts.ts:97 * kind: function * core: edge-functions * spec: (none) * summary: Resolve a detected conflict according to the schedule's strategy (mirror of T3). * score: 4 ### function resolveConnectionUrlFromDb * file: supabase/functions/\_shared/migration-crypto.ts:39 * kind: function * core: edge-functions * spec: (none) * summary: Resolves a connection URL from a stored connection record.Fetches the connection from DB using service client and decrypts the password in the edge function. * score: 4 ### function resolveCredentials * file: supabase/functions/\_shared/transport/resolve-clearinghouse-credentials.ts:44 * kind: function * core: edge-functions * spec: (none) * summary: Resolve credentials for a clearinghouse provider from environment. * params: * provider — e.g., 'waystar', 'stedi' * connectionType — 'api' or 'sftp' (sftp deferred) * score: 4 ### function resolveEntraSecret * file: supabase/functions/\_shared/entra-credentials.ts:62 * kind: function * core: edge-functions * spec: (none) * summary: Resolve only the client secret: vault first, then ENTRA\_CLIENT\_SECRET env fallback.Returns the secret string or null. * score: 4 ### function resolveExpenseAccount * file: supabase/functions/fa-gr-compliance-cost-consumer/index.ts:154 * kind: function * core: edge-functions * spec: (none) * summary: Resolve expense account: mapping → module-settings default → null. * score: 4 ### function resolveIntakePrincipal * file: supabase/functions/intake-agent-run/run-intake.ts:81 * kind: function * core: edge-functions * spec: (none) * summary: Resolve-or-create the per-org intake service account + a per-run delegation (granted ⊆ human). * score: 4 ### function resolveLinkedInClientCreds * file: supabase/functions/\_shared/job-board-providers/linkedin.ts:75 * kind: function * core: edge-functions * spec: (none) * summary: Resolve the OAuth client id/secret for an integration.Per-integration vault entries take precedence; falls back to workspace / env vars. * score: 4 ### function resolveModels * file: supabase/functions/\_shared/ai/models.ts:68 * kind: function * core: edge-functions * spec: (none) * summary: Resolve the ordered model list for a module + lane. * params: * module — module code (case-insensitive); falls back to 'pf' when unknown/absent * lane — 'standard' (default) or 'phi' * returns: ordered list (primary first) * score: 4 ### function resolveOAuthClient * file: supabase/functions/\_shared/google-client.ts:84 * kind: function * core: edge-functions * spec: (none) * summary: Resolve the OAuth client credentials for a given organization.Order of precedence: 1. Org-level row with AND set → pull client\_secret from PF-76 vault (source row = the connection). 2. Platform-wide env vars (GOOGLE\_CALENDAR\_CLIENT\_ID / \_SECRET) — legacy.Throws GoogleClientError('config\_missing') if neither source resolves. * score: 4 ### function resolvePendingIdentity * file: supabase/functions/hr-proliant-create-profile-from-pending/identity.ts:37 * kind: function * core: edge-functions * spec: (none) * summary: Resolve the identity to create from the unmatched row's proliant\_raw payload.Returns null when there is no VALID work\_email — without a strict, wildcard-freeemail we cannot safely find-or-create a global profile (pf\_profiles is keyed byemail; an invalid value must never reach a lookup or createUser), so the row isnot remediable and the caller must surface a clear error. * score: 4 ### function resolveProliantTransport * file: supabase/functions/\_shared/proliant-transport.ts:75 * kind: function * core: edge-functions * spec: (none) * summary: Resolve the transport for a request: the fixture transport when fixtures wereaccepted by , otherwise the real vault-backedclient. Mirrors the signature with anadded argument. * score: 4 ### function resolvePullMerge * file: supabase/functions/proliant-sync/sor-direction.ts:51 * kind: function * core: edge-functions * spec: (none) * summary: Decide how a pulled value for should merge. Write-back (Encore-SoR)resources default to encore\_wins: a pull does NOT overwrite them unless theadmin explicitly chose . * score: 4 ### function resolveRecipientEmail * file: supabase/functions/\_shared/calendar-provider.ts:141 * kind: function * core: edge-functions * spec: (none) * summary: Resolve the target mailbox per CE-73 precedence: per\_task\_override (explicit) - assigned coordinator - org default.Returns null when nothing resolves (caller treats as a no-op/skip). * score: 4 ### function resolveRegistryToolDefs * file: supabase/functions/\_shared/registry-tool-resolution.ts:89 * kind: function * core: edge-functions * spec: PF-127 * summary: Resolve the registry-driven tool set for an org. Throws (does not silently return ) on anRPC error so the caller can fall back to the legacy static resolution. * score: 5 ### function resolveSkillModels * file: supabase/functions/\_shared/ai/models.ts:88 * kind: function * core: edge-functions * spec: (none) * summary: Resolve the ordered model list for a skill execution: preferred model first,then the module's standard-lane fallbacks (deduplicated). Uses the skill'splatform module code (e.g. , ), not the skill category label. * score: 4 ### function resolveStateCollectionName * file: supabase/functions/\_shared/gr-state-rag.ts:80 * kind: function * core: edge-functions * spec: (none) * summary: Resolve the canonical collection name for the given jurisdiction profile.Mirrors the seeding convention in spec task T2.3 (). * score: 4 ### function resolveSttVendor * file: supabase/functions/\_shared/transcription/vendor-router.ts:106 * kind: function * core: edge-functions * spec: (none) * summary: Resolve an STT vendor + BAA + credential for the given org/jurisdiction/channel.Throws VendorBaaInactiveError or VendorCredentialMissingError if anythingis missing. NEVER returns a vendor without a verified BAA + credential. * score: 4 ### function resolveTemplate * file: supabase/functions/\_shared/expressionEvaluator.ts:585 * kind: function * core: edge-functions * spec: (none) * summary: Resolve a template string, replacing all variables with values * score: 4 ### function resumeDurableRun * file: supabase/functions/\_shared/ai/agent-run-state-machine.ts:466 * kind: function * core: edge-functions * spec: (none) * summary: Resume a paused run from its latest checkpoint (FR-5) and continue the loop at thenext uncommitted step; committed steps are not re-executed (the checkpoint cursor isthe resume point). Rehydration + the transition are performed bythe governed RPC; this consumer drives andruns the loop with the rehydrated cursor. * params: * run — The paused run row. * loopArgs — The agentic-loop args (tools gated identically to ). * rpcClient — User-scoped client for the governed RPCs. * deps — Injected dependencies / overrides (testing seam). * score: 4 ### function retrieveStateAwareCitations * file: supabase/functions/\_shared/gr-state-rag.ts:196 * kind: function * core: edge-functions * spec: (none) * summary: Retrieve jurisdiction-aware RAG citations for the user's query.- When no jurisdiction is resolved → federal-baseline-only retrieval, .- When the state collection has zero hits (or is ) → federal-only, .- Otherwise → state + federal in parallel; state chunks get +20% boost; merged + capped. * score: 4 ### function retrieveVaultCredential * file: supabase/functions/\_shared/vault-credentials.ts:21 * kind: function * core: edge-functions * spec: (none) * summary: Retrieve a credential from vault by source table/column/row\.Returns null if no vault credential found (caller should fall back to plaintext column during migration). * score: 4 ### function retryDecision * file: supabase/functions/\_shared/ce-hubspot-sync.ts:311 * kind: function * core: edge-functions * spec: (none) * summary: Backoff from the pgmq (1 on first read). Exponential from 60s,capped at 1 hour; the attempt that reaches SYNC\_MAX\_ATTEMPTS dead-letters. * score: 4 ### function revokeGoogleToken * file: supabase/functions/\_shared/google-client.ts:252 * kind: function * core: edge-functions * spec: (none) * summary: Revoke a refresh or access token. Best-effort; does not throw on failure. * score: 4 ### function rollbackSnapshots * file: supabase/functions/cl-marketplace-import/handlers.ts:275 * kind: function * core: edge-functions * spec: (none) * summary: Best-effort rollback: delete created rows for each snapshot, scoped to org. * score: 4 ### function rollingStats * file: supabase/functions/pm-ai-fairness-monitor/scoring.ts:52 * kind: function * core: edge-functions * spec: (none) * summary: Compute mean and population standard deviation of a numeric series. * params: * values — Array of numeric observations (e.g. daily denial rates) * returns: An object with mean and stddev; stddev is 0 when values has fewer than 2 elements * score: 4 ### function rollupCostByOrg * file: supabase/functions/pf-check-ai-usage-anomalies/index.ts:74 * kind: function * core: edge-functions * spec: (none) * summary: Rollup total cost per org from raw log rows.NULL cost rows coalesce to 0 (model not yet priced). * params: * logs — Array of org\_id, cost rows (cost may be null) * returns: MaporgId, totalCostUsd * score: 4 ### function runAgenticLoop * file: supabase/functions/\_shared/ai/agentic-loop.ts:128 * kind: function * core: edge-functions * spec: (none) * summary: Run the skill agentic tool-loop against the unified AI gateway.Repeatedly calls (up to ), executing any platformor MCP tools the model requests and feeding their results back, until the modelreturns plain text, the tool time budget is exhausted, or the iteration cap isreached. Token usage is accumulated across every iteration. * params: * models — Ordered model list (skill preference first, then category lane). * systemPrompt — System prompt prepended to the conversation. * initialMessages — The caller's user/assistant turns. * temperature — Sampling temperature passed to the gateway. * maxTokens — Maximum completion tokens per gateway call. * tools — OpenAI-format tool definitions exposed to the model. * organizationId — Tenant id injected into MCP tool args for isolation. * category — Skill category used to resolve platform tool handlers. * supabase — Service-role client passed to platform tool execution. * outputSchema — When set, the final text is parsed into structured JSON. * mcpConnections — Active MCP connections addressable as . * trace — Optional Langfuse trace correlation (metadata only, no content). * deps — Optional injected dependencies/limit overrides (testing seam). * returns: The final content, accumulated usage, and any structured output. * score: 4 ### function runBackfillInvocation * file: supabase/functions/\_shared/ce-hubspot-backfill-core.ts:331 * kind: function * core: edge-functions * spec: (none) * summary: Process up to of the backfill run. Returns the run state afterthis invocation; callers re-invoke until . * score: 4 ### function runClinicalDraft * file: supabase/functions/cl-agent-draft-note/handler.ts:185 * kind: function * core: edge-functions * spec: (none) * summary: Run the fail-closed clinical draft generation pipeline.Fail-closed: returns and creates NOartifact on any gate failure. Returns only when every gate passes and the artifact is committed. CL-36-EN-03 AC-1 (flag OFF → disabled) CL-36-EN-03 AC-2 (gate passes → clinical artifact, narrative-only) * score: 4 ### function runCrisisDetection * file: supabase/functions/\_shared/ce-crisis-detection.ts:154 * kind: function * core: edge-functions * spec: (none) * summary: Run keyword detection and, if matched, insert a row pluspublish a PHI-safe domain event.Best-effort: returns silently on errors after logging — callers must NOTblock inbound message handling on this. * score: 4 ### function runDueSweep * file: supabase/functions/pf-tasks-due-sweep/index.ts:59 * kind: function * core: edge-functions * spec: (none) * summary: Core sweep logic — scan due tasks, write in\_app + email notifications, and recordthe per-task idempotency marker. Extracted fromthe cron wrapper so it is unit-testable with an injected Supabase-like client +logger; the wrapper supplies the real service-role client.Idempotency & concurrency: a task already carrying is skippedcheaply by the due-scan, and for the rest the marker is claimed atomicallyBEFORE any notification is written (single UPDATE … WHERE due\_notified\_at ISNULL RETURNING id). Only the claim winner notifies, so neither a second passnor an overlapping cron tick re-notifies the same task. * params: * supabase — service-role client (RLS-bypassing; queries are org-scoped) * logger — structured logger * now — the tick timestamp (also stored as the marker value) * score: 4 ### function runInference * file: supabase/functions/\_shared/denial-model/inference.ts:123 * kind: function * core: edge-functions * spec: (none) * summary: Run logistic-regression denial-risk inference.Weight key encoding (must match the trained model artifacts): CPT code weight Payer-specific weight ICD-10 diagnosis weight Auth-status weight Modifier weight (summed) Scalar intercept (defaults to 0.5) Coefficient for doc-completeness penalty * params: * features — Claim feature vector. * modelWeights — Weight map loaded from model storage. * highRiskThreshold — Score (0-100) at or above which is 'high'. * returns: Prediction result including risk score, level, reasons, and actions. * score: 4 ### function runIntakeAgent * file: supabase/functions/intake-agent-run/agentic-loop.ts:34 * kind: function * core: edge-functions * spec: (none) * summary: Run the read-only intake screening agent for one PF-125 run. * params: * input — run id, referral id, scoped principal. * deps — injected model gateway, tool resolver, PF-125 RPCs, flag check, budget, prompts. * returns: the terminal (PHI-free control-plane labels + the screening text). * score: 4 ### function runSyncWorkerTick * file: supabase/functions/\_shared/ce-hubspot-sync-worker-core.ts:149 * kind: function * core: edge-functions * spec: (none) * summary: One full worker tick: drain the inbound queue, then run the poll leg. * score: 4 ### function runTaskPush * file: supabase/functions/calendar-task-push/index.ts:107 * kind: function * core: edge-functions * spec: (none) * summary: Core push pipeline — config gate, task load, recipient resolution, Graph push,traceability write. Pure of auth/CORS/HTTP so it is unit-testable with aninjected Supabase client + Graph pusher. NEVER mutates the originating task andNEVER throws (fail-open): every failure resolves to a status:'failed' value. * params: * supabase — service-role client (org access already verified by caller) * body — the validated request body * correlationId — log correlation id * pushGraph — injectable Graph seam (defaults to the production pusher) * score: 4 ### function salvageRecommendations * file: supabase/functions/suggest-workspaces/salvage.ts:79 * kind: function * core: edge-functions * spec: (none) * summary: Validate/normalize each recommendation in the raw structured outputindependently, keeping the survivors. * params: * rawOutput — JSON-parsed tool-call arguments (untrusted model output). * opts — Icon allow-list and item cap. * returns: Surviving recommendations (normalized) plus the dropped count. * score: 4 ### function sanitizeDetails * file: supabase/functions/\_shared/fw-compliance-audit.ts:60 * kind: function * core: edge-functions * spec: (none) * summary: Strip any key not in the allowlist from a details object.This prevents accidental PHI leakage (names, MRNs, SSNs, etc.)into the immutable compliance audit table. * params: * raw — Arbitrary record from caller. * returns: Sanitized record containing only allowed keys. * score: 4 ### function sanitizeErrorMessage * file: supabase/functions/\_shared/ai/errors.ts:70 * kind: function * core: edge-functions * spec: (none) * summary: Produce a client-safe message: returns the original only when it matches anallowlisted phrase; otherwise a generic message. Prevents PHI/PII, secrets,stack traces, or raw provider text from reaching the client. * score: 4 ### function sanitizeHeaders * file: supabase/functions/\_shared/transforms/rippling-benefits-to-hr.ts:103 * kind: function * core: edge-functions * spec: (none) * summary: Strips PHI/PII columns from headers and corresponding row data.Finding #20: Accept both headers+rows, project columns together, expand PHI blocklist. * params: * headers — CSV header row * rows — Optional data rows to filter in sync with headers * returns: Sanitized headers and optionally sanitized rows * score: 4 ### function sanitizeMcpError * file: supabase/functions/\_shared/ai/agentic-loop.ts:44 * kind: function * core: edge-functions * spec: (none) * summary: Sanitize MCP error messages: strip newlines, redact credentials, truncate. * score: 4 ### function sanitizePlaidError * file: supabase/functions/\_shared/plaid-client.ts:809 * kind: function * core: edge-functions * spec: (none) * summary: Sanitize Plaid error for client responseNever expose internal error details * score: 4 ### function scoreAuditAnomaly * file: supabase/functions/security-detect-audit-anomalies/scoring.ts:313 * kind: function * core: edge-functions * spec: (none) * summary: Score a collection of per-(org,user) audit windows for anomaly patterns. * params: * windows — Aggregated audit windows (one per org+user pair) * priorHits — Set of strings from the dedup check (existing suspicious\_activity in dedup window). Hits matching a prior key are suppressed. * settings — Detection thresholds (falls back to DEFAULT\_ANOMALY\_SETTINGS) * returns: All new (non-deduped) anomaly hits * score: 4 ### function scoreRequirementMatch * file: supabase/functions/\_shared/gr-impact-classifier.ts:83 * kind: function * core: edge-functions * spec: (none) * summary: Keyword overlap score between diff tokens and a requirement's title + description.Returns a score in \[0, 1] — higher = stronger match.FLAG: v1 keyword-only; replace with Phase-3 vector search after PF-60 ships.Re-validation required after vector upgrade (per spec clarification). * score: 4 ### function searchDriveItems * file: supabase/functions/\_shared/entra-client.ts:1456 * kind: function * core: edge-functions * spec: (none) * summary: Search for files across SharePoint sites.Requires Sites.Read.All. * score: 4 ### function seedDefaultContactMappings * file: supabase/functions/\_shared/ce-hubspot-mappings.ts:94 * kind: function * core: edge-functions * spec: (none) * summary: Seed the default contact mappings for an org. Idempotent: rows whose(organization\_id, object\_type, hubspot\_property, direction) key alreadyexists are left untouched, so re-connecting preserves org edits(deactivated rows stay deactivated, re-targeted fields stay re-targeted).Returns false on a database error (callers treat seeding as best-effort —a connection without defaults is usable, just empty until edited). * score: 4 ### function selectCurrentRate * file: supabase/functions/proliant-sync/rate-mapper.ts:15 * kind: function * core: edge-functions * spec: (none) * summary: Selects the current rate from a list of EmployeeRateViewModels. * params: * rates — Unwrapped list from * returns: The current rate, or null when the list is empty. * score: 4 ### function selectEmployeesToPush * file: supabase/functions/proliant-sync/push-scope.ts:29 * kind: function * core: edge-functions * spec: (none) * summary: Restrict an eligible-employee window to the requested scope. With a non-emptyscope the result is the subset whose is in the set (never the wholewindow); with no scope (undefined/empty) the full window is returned. This isthe in-memory belt-and-suspenders to the query-level filter. * score: 4 ### function selectExpectedBaseline * file: supabase/functions/proliant-payroll-run/expected-baseline.ts:75 * kind: function * core: edge-functions * spec: (none) * summary: Build the reconciliation expected baseline from prior synced run rows + thepushed headcount, plus any batch-pushed earnings for the target calendar(HR-44-EN-03 AC-10 — added to the expected gross; see module header). Amountsare scoped to the single most-recent (never summed acrossperiods). Pure — unit-tested in isolation. * score: 4 ### function selectInboundMappings * file: supabase/functions/\_shared/ce-hubspot-sync.ts:47 * kind: function * core: edge-functions * spec: (none) * summary: Mappings that may produce inbound writes: AND active.The DB CHECK already prevents active out/both rows in CE-75; filtering hereagain keeps the worker safe even against a pre-CHECK row (defense in depth). * score: 4 ### function selectOpenCalendar * file: supabase/functions/proliant-sync/calendar-selector.ts:10 * kind: function * core: edge-functions * spec: (none) * summary: Pick the calendar to import hours against. The live sandbox reports animportable upcoming calendar as (verified 2026-06-10 againstSBX0028 — only appears once processing has begun), so both statusesare accepted; an calendar wins over a one, then thehighest sequence. * score: 4 ### function selectPortalTransport * file: supabase/functions/\_shared/portal-transport.ts:184 * kind: function * core: edge-functions * spec: (none) * summary: Choose the transport. fixture worker(URL) unavailable. The orchestration(portal-runner) and the DB shape do not change across transports. * score: 4 ### function selectRecorderTransport * file: supabase/functions/\_shared/recorder-transport.ts:100 * kind: function * core: edge-functions * spec: (none) * summary: Choose the recorder transport. fixture worker(URL) unavailable. * score: 4 ### function selectTransport * file: supabase/functions/\_shared/weno/transport.ts:124 * kind: function * core: edge-functions * spec: (none) * summary: Choose the transport for a request. Returns the fixture transport only whenthe runtime is non-prod AND the caller sent the header;production always gets , so the fixture path isunreachable in prod regardless of client input. * score: 4 ### function sendChannelMessage * file: supabase/functions/\_shared/entra-client.ts:1240 * kind: function * core: edge-functions * spec: (none) * summary: Send a message to a Teams channel.Requires ChannelMessage.Send (delegated) or Teamwork.Migrate.All (app).Note: For application-only (client credentials), Microsoft only supportsTeamwork.Migrate.All which is migration-only. For production channelnotifications, use Incoming Webhooks or Bot Framework instead.This function is designed for delegated flows or webhook-based posting. * score: 4 ### function sendEmail * file: supabase/functions/\_shared/email-provider.ts:644 * kind: function * core: edge-functions * spec: (none) * summary: Send an email using the organization's configured provider.Flow:1. If provider is 'entra' and Entra is configured → use Entra; on failure optionally try Gmail if configured.2. If provider is 'gmail' and Gmail is configured → use Gmail.3. Otherwise return an email-provider configuration error. * params: * config — Email provider configuration * request — Email send request * correlationId — Request correlation ID for logging * returns: Email send result * score: 4 ### function sendEmailWithAutoConfig * file: supabase/functions/\_shared/email-provider.ts:687 * kind: function * core: edge-functions * spec: (none) * summary: Convenience function to send email with auto-fetched config.Creates its own Supabase client with service role. * params: * organizationId — Organization ID * request — Email send request * correlationId — Correlation ID for logging * moduleCode — Optional module code for per-module sender override * score: 4 ### function sendInvitationEmail * file: supabase/functions/\_shared/invitation-mailer.ts:95 * kind: function * core: edge-functions * spec: (none) * summary: Sends (or re-sends) the invitation email for a pending invitation.Throws on hard failures; the caller maps to an HTTP error response. * score: 4 ### function sendRingCentralSms * file: supabase/functions/\_shared/ringcentral-sms-adapter.ts:430 * kind: function * core: edge-functions * spec: (none) * summary: Convenience function to send SMS using existing RingCentral client * score: 4 ### function sendSms * file: supabase/functions/\_shared/sms-provider.ts:257 * kind: function * core: edge-functions * spec: (none) * summary: Send an SMS message via RingCentral.Handles PHI detection and opt-out footer appending. * params: * config — Provider configuration from getSmsProviderConfig * toNumber — Recipient phone number (E.164 format) * body — Message text * correlationId — Optional correlation ID for logging * returns: Send result with message ID and status * score: 4 ### function sendTeamsActivityNotification * file: supabase/functions/\_shared/entra-client.ts:1498 * kind: function * core: edge-functions * spec: (none) * summary: Send a notification to a user's Teams activity feed.Requires TeamsActivity.Send application permission.Note: This requires an Azure Bot to be registered with the app.Without a bot, consider using Incoming Webhooks for channel notifications. * score: 4 ### function serializeWenoJson * file: supabase/functions/\_shared/weno/request-builder.ts:187 * kind: function * core: edge-functions * spec: (none) * summary: Serialize a WENO wire object preserving insertion (= vendor) order. WENO'sfield order is significant; never substitute a key-sorting serializer. * score: 4 ### function serveRequest * file: supabase/functions/plaid-sync-worker/index.ts:292 * kind: function * core: edge-functions * spec: (none) * summary: HTTP entrypoint. SECURITY: this is a cron-only worker registered with (config.toml), so the gateway does NOT authenticate the caller — the function MUST gateitself. We require a service-role credential IN-FUNCTION (mirrors , the documented primitive for cron/server-to-server handlers): thedrain cron () calls it with .Any user / anon / secret-less caller is rejected 401 BEFORE we build the service client ortouch the Plaid money path — fail CLOSED. is injectable for tests only. * score: 4 ### function sha256Base64Url * file: supabase/functions/\_shared/google-workspace-oauth.ts:57 * kind: function * core: edge-functions * spec: (none) * summary: Returns a stable SHA-256 hash string used for nonce persistence checks. * score: 4 ### function shouldCreateEmployee * file: supabase/functions/proliant-sync/employee-create-policy.ts:13 * kind: function * core: edge-functions * spec: (none) * summary: Decide whether an unmatched Proliant employee should be auto-created.Pure decision helper extracted from the proliant-sync employee loop so thecreate/skip gate can be unit-tested independently of the Deno edge runtime.An employee is auto-created only when it has NO existing Encore match and theintegration's flag is enabled. * params: * autoCreate — whether the integration's flag is on * matched — whether the Proliant employee already matches an Encore record * returns: true only when there is no match and auto-create is enabled * score: 4 ### function shouldPollConnection * file: supabase/functions/\_shared/ce-hubspot-poll.ts:58 * kind: function * core: edge-functions * spec: (none) * summary: Feeder gating: only connected, inbound-enabled connections poll —needs\_reauth stays paused until an admin reconnects (AC-11) anddisconnected connections never sync. * score: 4 ### function splitCsvLine * file: supabase/functions/\_shared/weno/csv.ts:12 * kind: function * core: edge-functions * spec: (none) * summary: Quote-aware CSV line splitter ("" escapes, quoted commas). Trims each cell. * score: 4 ### function startIntakeRun * file: supabase/functions/intake-agent-run/run-intake.ts:288 * kind: function * core: edge-functions * spec: (none) * summary: action=start: open run+thread, run the read vertical, write the draft artifact. * score: 4 ### function storeAccessTokenForItem * file: supabase/functions/\_shared/vault-credentials.ts:290 * kind: function * core: edge-functions * spec: (none) * summary: Store a Plaid access token in the vault, keyed per Plaid item. Returns thepf\_credential\_vault.id; throws if the broker fails (callers persist this id onfa\_bank\_accounts.plaid\_access\_token\_vault\_id). * score: 4 ### function storeVaultCredential * file: supabase/functions/\_shared/vault-credentials.ts:60 * kind: function * core: edge-functions * spec: (none) * summary: Store a credential in vault. Returns the pf\_credential\_vault.id on success, null on failure.If a credential already exists for this source, it will be updated (upsert behavior in the RPC). * score: 4 ### function stripHtml * file: supabase/functions/\_shared/outlook-client.ts:424 * kind: function * core: edge-functions * spec: (none) * summary: Extract plain text from HTML content (basic strip) * score: 4 ### function submitX12File * file: supabase/functions/\_shared/transport/rest-transport.ts:110 * kind: function * core: edge-functions * spec: (none) * summary: Submit an X12 file to the clearinghouse via REST API. * score: 4 ### function subtractBusinessDays * file: supabase/functions/\_shared/business-calendar.ts:167 * kind: function * core: edge-functions * spec: (none) * summary: Subtracts N business days from a date. * score: 4 ### function summarizeLineItems * file: supabase/functions/proliant-manual-check/build-check-request.ts:245 * kind: function * core: edge-functions * spec: (none) * summary: Aggregate, PHI-free amount metadata for the PF-04 audit row (AC-6 requiresactor + employee + amount metadata on every issued check — counts andaggregates only, never per-line detail or identifiers beyond ids). * score: 4 ### function sumPushedCalendarEarnings * file: supabase/functions/proliant-payroll-run/expected-baseline.ts:114 * kind: function * core: edge-functions * spec: (none) * summary: Total the batch-pushed earnings recorded in rows for ONE calendar (HR-44-EN-03 AC-10 / FR-5). Only / checkpoints count, matched on ; holds what the run actually pushed (created lines only — an idempotentre-run records 0, so retries never double-feed the baseline). Tolerant ofmalformed checkpoints (ignored). Pure — unit-tested in isolation. * score: 4 ### function syncLogEventType * file: supabase/functions/\_shared/ce-hubspot-sync.ts:322 * kind: function * core: edge-functions * spec: (none) * summary: Work-item event type → CHECK value. * score: 4 ### function syncTransactions * file: supabase/functions/\_shared/plaid-client.ts:470 * kind: function * core: edge-functions * spec: (none) * summary: Sync transactions using the Sync API (single page).For full history use syncTransactionsFull which loops until has\_more is false. * score: 4 ### function syncTransactionsFull * file: supabase/functions/\_shared/plaid-client.ts:492 * kind: function * core: edge-functions * spec: (none) * summary: Sync all transaction pages for an Item (Plaid-recommended pattern).Calls /transactions/sync in a loop until has\_more is false; onTRANSACTIONS\_SYNC\_MUTATION\_DURING\_PAGINATION restarts from the cursor usedbefore the failing request. * see: * [https://plaid.com/docs/transactions/#integration-overview](https://plaid.com/docs/transactions/#integration-overview) * score: 4 ### function syncTransactionsStreaming * file: supabase/functions/\_shared/plaid-client.ts:571 * kind: function * core: edge-functions * spec: (none) * summary: Stream Plaid page-by-page so callers can persist eachpage (and the page's ) before fetching the next page. Thiskeeps memory and worker CPU bounded for large initial syncs that previouslycrashed 's in-memory accumulation on Supabase EdgeFunctions.- is awaited before the next call so the caller can flush the page to storage and update the persisted cursor.- Returns the final cursor (after the last page) once .- On , restarts from the cursor that was current at the start of the failing iteration (matches ). * see: * [https://plaid.com/docs/transactions/#integration-overview](https://plaid.com/docs/transactions/#integration-overview) * score: 4 ### function timeImportPushLogKey * file: supabase/functions/proliant-payroll-run/time-import.ts:54 * kind: function * core: edge-functions * spec: (none) * summary: Idempotency key for the per-calendar+period TimeImport push (hr\_proliant\_push\_log). * score: 4 ### function toEarningImport * file: supabase/functions/proliant-sync/earnings-batch-builder.ts:166 * kind: function * core: edge-functions * spec: (none) * summary: Wrap built lines into the both vendor POSTs take. * score: 4 ### function toEmployeeColumns * file: supabase/functions/proliant-sync/field-mapper.ts:336 * kind: function * core: edge-functions * spec: (none) * summary: Project a mapped employee payload down to writable columns. * score: 4 ### function tokenizeText * file: supabase/functions/\_shared/gr-impact-classifier.ts:58 * kind: function * core: edge-functions * spec: (none) * summary: Tokenize text into lower-case alpha tokens =3 chars, drop trivial stopwords.Mirrors the GR-06-EN-01 gr-state-rag.ts approach for consistency. * score: 4 ### function toolRegistryEnabled * file: supabase/functions/\_shared/registry-tool-resolution.ts:50 * kind: function * core: edge-functions * spec: PF-127 * summary: Fail-safe read of the PF-127 registry flag via . Any error → (registry path stays off → legacy static resolution). The sentinel is neverpassed as a uuid (edge-function caller pitfall). * score: 5 ### function toolsGateDecision * file: supabase/functions/\_shared/ai/agent-spine.ts:85 * kind: function * core: edge-functions * spec: (none) * summary: Decide whether tools may fire (FR-8 / FR-9 / AC-2). Tools are allowed only when thespine is satisfied AND the PF-45 flag is on. A write-capable run whose tools are notallowed must be refused at admission (no off-spine write path, AC-5).This is the single decision both the edge boundary () and thedurable wrapper consult, so "tools withheld off the spine" is enforced identicallyon every path (FR-10). * score: 4 ### function toUsageDetails * file: supabase/functions/\_shared/ai/tracing-mask.ts:36 * kind: function * core: edge-functions * spec: (none) * summary: Map our to the Langfuse v5 shape, omitting undefinedfields. Returns when no token counts are present. * score: 4 ### function trigramSimilarity * file: supabase/functions/\_shared/ce-hubspot-backfill-core.ts:149 * kind: function * core: edge-functions * spec: (none) * summary: Trigram Dice similarity of two strings, whitespace-normalized. Dice(2·shared / (|a|+|b|)) is the conventional trigram name metric — aone-letter variant like Jonathan/Jonathon scores \~0.8, while Jaccardwould put it under 0.7 and defeat the threshold. * score: 4 ### function truncateBody * file: supabase/functions/\_shared/outlook-client.ts:414 * kind: function * core: edge-functions * spec: (none) * summary: Truncate body content to specified size in KB * score: 4 ### function updateCalendarEvent * file: supabase/functions/\_shared/entra-client.ts:992 * kind: function * core: edge-functions * spec: (none) * summary: Update a calendar event. * score: 1 ### function updateDebugState * file: supabase/functions/\_shared/executionHelpers.ts:116 * kind: function * core: edge-functions * spec: (none) * summary: Update debug state for an execution * score: 4 ### function updateExecutionStatus * file: supabase/functions/\_shared/executionHelpers.ts:54 * kind: function * core: edge-functions * spec: (none) * summary: Update workflow execution status with optional timestamps * score: 4 ### function updatePerformanceProfile * file: supabase/functions/\_shared/executionHelpers.ts:144 * kind: function * core: edge-functions * spec: (none) * summary: Update performance profile for an execution * score: 4 ### function updateUser * file: supabase/functions/\_shared/entra-client.ts:551 * kind: function * core: edge-functions * spec: (none) * summary: Update a user's properties. * params: * credentials — Azure AD app credentials * userId — Entra user ID * updates — Properties to update * correlationId — Request correlation ID * score: 1 ### function uploadFile * file: supabase/functions/\_shared/entra-client.ts:1339 * kind: function * core: edge-functions * spec: (none) * summary: Upload a small file ( 4MB) to a SharePoint document library.For larger files, use createUploadSession.Requires Files.ReadWrite.All or Sites.ReadWrite.All. * score: 4 ### function validateAuth * file: supabase/functions/\_shared/auth.ts:93 * kind: function * core: edge-functions * spec: (none) * summary: Validate JWT token from Authorization header and return user info.Returns the authenticated user and an anon-key client with the user's session. * params: * req — The incoming request * correlationId — Correlation ID for logging * returns: AuthResult with user and supabase client, or AuthError * score: 4 ### function validateCallbackUrl * file: supabase/functions/\_shared/url-validation.ts:19 * kind: function * core: edge-functions * spec: (none) * summary: Validates a callback URL against the allowlist.Returns the validated URL or null if invalid. * score: 4 ### function validateCodingOutput * file: supabase/functions/pm-ai-coding-suggest/validation.ts:177 * kind: function * core: edge-functions * spec: PM-64 * summary: Validate and normalize the model's structured output.- Filters out code entries that fail shape validation.- Filters out codes that fail format regex validation (and records them in filteredCodes).- Clamps confidence scores to \[0, 1].- Returns if the output is structurally unusable (but still returns a best-effort output object so partial suggestions can still be persisted). * params: * raw — Raw parsed JSON from the model. * returns: ValidationResult with normalized output and error details. * score: 5 ### function validateComposeRx * file: supabase/functions/\_shared/weno/validators.ts:175 * kind: function * core: edge-functions * spec: (none) * summary: Edge-side adapter: flat field-name list (no PHI) for the launch function's audit metadata and the message. Maps thecanonical structured reasons onto the launch function's established wiresuffixes so the recorded shape is unchanged: - → - → - → * score: 4 ### function validateComposeRxPayload * file: supabase/functions/\_shared/weno/validators.ts:55 * kind: function * core: edge-functions * spec: (none) * summary: Canonical structured validator. Mirrors the src implementation 1:1 — samerules, same field names, same de-dup. Returns . * score: 4 ### function validateCptCode * file: supabase/functions/pm-ai-coding-suggest/validation.ts:91 * kind: function * core: edge-functions * spec: PM-64 * summary: Validate a CPT code format. * params: * code — The code string to validate. * returns: true if the format is valid. * example: | validateCptCode("90834") // true validateCptCode("9083") // false * score: 4 ### function validateEmbedClaims * file: supabase/functions/\_shared/analytics/embed-token.ts:93 * kind: function * core: edge-functions * spec: (none) * summary: Structurally validate decoded token claims (after djwt has checked the signature).This is a belt-and-suspenders check on top of the cryptographic verify and theauthoritative DB-row revocation/expiry check — it rejects a well-signed token whose claimsare the wrong type, lack an org, or are expired relative to . * score: 4 ### function validateHcpcsCode * file: supabase/functions/pm-ai-coding-suggest/validation.ts:105 * kind: function * core: edge-functions * spec: PM-64 * summary: Validate a HCPCS Level II code format. * params: * code — The code string to validate. * returns: true if the format is valid. * example: | validateHcpcsCode("H0004") // true validateHcpcsCode("1234") // false * score: 5 ### function validateHubspotSignature * file: supabase/functions/\_shared/ce-hubspot-webhook.ts:73 * kind: function * core: edge-functions * spec: (none) * summary: Validate a HubSpot v3 webhook signature. accepts the candidaterequest URIs to try (the gateway-reported URL can differ in scheme/host fromthe public target URL HubSpot signed, so callers pass every plausible form);the signature is valid if it matches for ANY candidate. * score: 4 ### function validateIcd10Code * file: supabase/functions/pm-ai-coding-suggest/validation.ts:77 * kind: function * core: edge-functions * spec: PM-64 * summary: Validate an ICD-10-CM code format. * params: * code — The code string to validate. * returns: true if the format is valid. * example: | validateIcd10Code("F32.1") // true validateIcd10Code("INVALID") // false * score: 5 ### function validateMachineJwt * file: supabase/functions/\_shared/machine-auth.ts:51 * kind: function * core: edge-functions * spec: (none) * summary: Validate a machine JWT from the Authorization header and verifythe underlying API key is still active and not revoked. * params: * req — Incoming request with Authorization: Bearer header * supabase — Service-role Supabase client for revocation check * correlationId — Tracing correlation ID * returns: MachineAuthResult with principal or error details * score: 4 ### function validateModifierCode * file: supabase/functions/pm-ai-coding-suggest/validation.ts:119 * kind: function * core: edge-functions * spec: PM-64 * summary: Validate a CPT/HCPCS modifier format. * params: * code — The modifier string to validate. * returns: true if the format is valid. * example: | validateModifierCode("GT") // true validateModifierCode("X") // false * score: 5 ### function validateVendorEmail * file: supabase/functions/hr-proliant-create-profile-from-pending/identity.ts:24 * kind: function * core: edge-functions * spec: (none) * summary: Return the email only if it matches the strict shape (lowercased/trimmed). * score: 4 ### function validateVendorEmail * file: supabase/functions/proliant-sync/unmatched-enrichment.ts:75 * kind: function * core: edge-functions * spec: (none) * summary: Return the email ONLY if it matches the strict, wildcard-free shape (lowercased,trimmed); otherwise null. Used to (a) keep junk/wildcard values out of thepersisted , and (b) refuse such values as anidentity lookup or Auth Admin createUser argument. * score: 4 ### function validateVerificationToken * file: supabase/functions/\_shared/ringcentral-client.ts:717 * kind: function * core: edge-functions * spec: (none) * summary: Validate RingCentral webhook verification tokenUses timing-safe comparison to prevent timing attacks. * score: 4 ### function vendorRecordAlreadyExists * file: supabase/functions/proliant-sync/push-subresources.ts:73 * kind: function * core: edge-functions * spec: (none) * summary: True when a vendor error indicates the dated record already exists (so a POSTshould upsert via PUT, or be treated as idempotently applied). Signals areexact strings the SBX0028 sandbox returned for re-pushed Rate/DeductionCode/EarningCode (verified live 2026-06-06). * score: 4 ### function verifyOrgAccess * file: supabase/functions/\_shared/auth.ts:181 * kind: function * core: edge-functions * spec: (none) * summary: Verify that a user has access to an organization.Checks pf\_user\_role\_assignments for a valid role assignment. * params: * supabase — Service role Supabase client * userId — The authenticated user's ID * organizationId — The organization to check access for * correlationId — Correlation ID for logging * returns: true if user has access, false otherwise * score: 4 ### function verifyOrgRole * file: supabase/functions/\_shared/auth.ts:247 * kind: function * core: edge-functions * spec: (none) * summary: Verify that a user has a specific role within an organization.Returns the user's role(s) and whether they have access, optionallyfiltered to required roles (e.g., ).Unlike (boolean check), this returns role informationso callers can make role-based decisions without inline queries. * params: * supabase — Service role Supabase client * userId — The authenticated user's ID * organizationId — The organization to check access for * correlationId — Correlation ID for logging * options — Optional: requiredRoles to filter by specific roles * returns: Object with hasAccess boolean and roles array * score: 4 ### function verifyPlaidWebhook * file: supabase/functions/\_shared/plaid-webhook-verify.ts:59 * kind: function * core: edge-functions * spec: (none) * summary: Verify a Plaid webhook JWT: ECDSA P-256 signature, iat freshness (reject missing or PLAID\_WEBHOOK\_MAX\_AGE\_SEC old), and request\_body\_sha256 == sha256(rawBody). * params: * nowSec — injectable current epoch seconds (defaults to Date.now()/1000) for tests. * score: 4 ### function verifyPlatformAdmin * file: supabase/functions/\_shared/auth.ts:302 * kind: function * core: edge-functions * spec: (none) * summary: Verify that a user has the platform\_admin role.Returns immediately for the sentinel (internal callers alwayshave platform-level trust), otherwise delegates to the RPC.Use this helper in edge functions that previously contained inline queries for the platform\_admin check — those inlinequeries (a) are prohibited by edge-functions.md and (b) 403 service-role callers. * params: * supabase — Any Supabase client (service-role or user-scoped) * userId — The authenticated user's ID (may be the sentinel) * correlationId — Correlation ID for logging * returns: if the caller is a platform admin or a service-role caller * score: 4 ### function verifySignature * file: supabase/functions/cl-dosespot-webhook/index.ts:52 * kind: function * core: edge-functions * spec: (none) * summary: Verify an HMAC-SHA256 signature over the raw body using the Web Crypto API.Uses constant-time comparison to prevent timing attacks. The expected andreceived values are compared as lowercase hex digests; a leading prefix on the received signature (if DoseSpot sends one) is stripped. * params: * rawBody — The exact bytes of the request body (read before parsing). * signatureHeader — The value of the DoseSpot signature header. * secret — The shared webhook secret (DOSESPOT\_WEBHOOK\_SECRET). * returns: true when the computed digest matches the provided signature. * score: 4 ### function verifySignature * file: supabase/functions/github-webhook/index.ts:24 * kind: function * core: edge-functions * spec: (none) * summary: Timing-safe HMAC-SHA256 signature verification.Uses crypto.subtle.timingSafeEqual to prevent timing attacks. * score: 4 ### function verifySignedHubspotState * file: supabase/functions/\_shared/ce-hubspot-oauth.ts:98 * kind: function * core: edge-functions * spec: (none) * summary: Verifies signature, payload shape, and expiry of a signed state token. * score: 4 ### function verifySignedOAuthState * file: supabase/functions/\_shared/google-workspace-oauth.ts:99 * kind: function * core: edge-functions * spec: (none) * summary: Verifies OAuth state token signature, shape, and expiration. * score: 4 ### function windowStart * file: supabase/functions/\_shared/fw-rate-limit.ts:183 * kind: function * core: edge-functions * spec: (none) * summary: Truncate to the start of its minute / hour window (UTC), matching counter rows. * score: 4 ### function withExtraHeaders * file: supabase/functions/\_shared/deprecation.ts:48 * kind: function * core: edge-functions * spec: (none) * summary: Clone a Response with extra headers merged in.Handles locked/immutable responses by creating a new Response with theoriginal body stream, status, statusText, and merged headers (NFR-3). * params: * res — The original Response to clone. * extra — Additional headers to set on the cloned Response. * returns: A new Response with merged headers. * score: 4 ### function withIdempotency * file: supabase/functions/\_shared/idempotency.ts:18 * kind: function * core: edge-functions * spec: (none) * summary: Utility for with idempotency. * score: 1 ### function withRetry * file: supabase/functions/\_shared/retry.ts:68 * kind: function * core: edge-functions * spec: (none) * summary: Execute an async function with retry logic and configurable backoff. * params: * fn — The async function to execute * options — Retry configuration * returns: The result of the function * example: | // Retry with exponential backoffconst data, error = await withRetry( () = supabase.from('pf\_notifications').insert(record), maxRetries: 3, delayMs: 500, backoff: 'exponential', label: 'Insert notification' ); // Retry only on specific errorsconst result = await withRetry( () = fetch('[https://api.example.com/data](https://api.example.com/data)'), maxRetries: 3, isRetryable: (error) = if (error instanceof Response) return error.status = 500; return true; , ); * score: 4 ### function withTimeout * file: supabase/functions/\_shared/timeout.ts:54 * kind: function * core: edge-functions * spec: (none) * summary: Wrap a promise with a timeout. Throws an error if the promisedoesn't resolve within the specified milliseconds. * params: * promise — The promise to wrap * timeoutMs — Timeout in milliseconds * label — Human-readable label for error messages (e.g., 'Database query') * returns: The resolved value of the promise * example: | const data = await withTimeout( supabase.from('pf\_notifications').select('\*').limit(100), 5000, 'Notification query'); * score: 4 ### function withTimeoutAndFallback * file: supabase/functions/\_shared/timeout.ts:95 * kind: function * core: edge-functions * spec: (none) * summary: Wrap a promise with a timeout that returns a fallback valueinstead of throwing an error. * params: * promise — The promise to wrap * timeoutMs — Timeout in milliseconds * fallback — Value to return if the timeout is exceeded * label — Human-readable label for logging * returns: The resolved value or the fallback * example: | const data = await withTimeoutAndFallback( fetchExternalPricing(), 3000, cachedPricing, 'Pricing API'); * score: 4 ### function withTracing * file: supabase/functions/\_shared/ai/tracing.ts:384 * kind: function * core: edge-functions * spec: (none) * summary: Wrap a provider with Langfuse tracing. Inert until Langfuse keys are configured. * score: 4 ### function withTransportRetry * file: supabase/functions/\_shared/transport/retry.ts:44 * kind: function * core: edge-functions * spec: (none) * summary: Execute a function with exponential backoff retry. * score: 4 ### function withVersioning * file: supabase/functions/\_shared/versioning.ts:53 * kind: function * core: edge-functions * spec: (none) * summary: Wrap an Edge Function's handler map with version negotiation middleware. * params: * functionName — The Edge Function name (used for logging). * handlers — Map of keys to async request handlers. * options — Optional deprecation config, CORS headers, and legacy key override. * returns: A single async request handler that routes by . * score: 4 ### function writeAiUsageLogJurisdiction * file: supabase/functions/\_shared/ai-jurisdiction-audit.ts:70 * kind: function * core: edge-functions * spec: (none) * summary: Inserts a jurisdiction-aware audit log row. Errors are logged but do notthrow — audit failure must never break the AI request path. * score: 4 ### function writeExchangeLog * file: supabase/functions/fhir-r4/exchange-logger.ts:29 * kind: function * core: edge-functions * spec: (none) * summary: Write a single entry to cl\_data\_exchange\_log.Returns the exchange log ID for correlation. * score: 4 ### function writeFailureCheckpoint * file: supabase/functions/\_shared/checkpointHelpers.ts:181 * kind: function * core: edge-functions * spec: (none) * summary: Writes a failure checkpoint with error classification. * score: 4 ### function writePostStepCheckpoint * file: supabase/functions/\_shared/checkpointHelpers.ts:152 * kind: function * core: edge-functions * spec: (none) * summary: Writes a post-step checkpoint (status=completed). * score: 4 ### function writePreStepCheckpoint * file: supabase/functions/\_shared/checkpointHelpers.ts:111 * kind: function * core: edge-functions * spec: (none) * summary: Writes a pre-step checkpoint (status=running).Uses upsert on (execution\_id, node\_id, attempt\_number) for idempotency. * score: 4 ### function writeSkippedCheckpoint * file: supabase/functions/\_shared/checkpointHelpers.ts:254 * kind: function * core: edge-functions * spec: (none) * summary: Writes a skipped checkpoint for nodes bypassed during resume. * score: 4 ### function writeWaitingCheckpoint * file: supabase/functions/\_shared/checkpointHelpers.ts:230 * kind: function * core: edge-functions * spec: (none) * summary: Writes a waiting checkpoint (for approval/delay nodes). * score: 4 ## Classes ### class AiBudgetExceededError * file: supabase/functions/\_shared/ai/agent-run-state-machine.ts:91 * kind: class * core: edge-functions * spec: (none) * summary: \*\*SHIM — PF-111-EN-01 will own the canonical error + per-dimension ledger.\*\*Raised when a run exceeds its row-level token/step ceiling (FR-12). This minimalversion exists so Phase-1 runs still fail-closed at the ceiling we have; it does notrestate PF-111's ledger semantics. * score: 4 ### class AIGatewayError * file: supabase/functions/\_shared/ai/errors.ts:22 * kind: class * core: edge-functions * spec: (none) * summary: Thrown by the provider on a non-OK gateway response. Carries the HTTPstatus + retryable flag so callers can branch (e.g. surface 429/402)without losing the status behind a generic Error. * score: 4 ### class FixtureProliantTransport * file: supabase/functions/\_shared/proliant-transport.ts:25 * kind: class * core: edge-functions * spec: (none) * summary: In-memory that returns canned fixtures instead ofcalling the vendor — used by the deterministic Phase-4 integration suite.Throws a CONFIG when no fixture matches the request. * score: 4 ### class GraphNotFoundError * file: supabase/functions/\_shared/entra-client.ts:137 * kind: class * core: edge-functions * spec: (none) * summary: Thrown by graphApiCall when response is 404; use for "not found" handling (e.g. getUser returns null). * score: 4 ### class GwsClientError * file: supabase/functions/\_shared/google-workspace-client.ts:111 * kind: class * core: edge-functions * spec: (none) * summary: Typed fail-closed error emitted by the Google Workspace Admin SDK client wrapper. * score: 4 ### class LocalOpenAIGateway * file: supabase/functions/\_shared/ai/local-provider.ts:43 * kind: class * core: edge-functions * spec: (none) * summary: OpenAI-compatible client for a local engine. Ignores module/lane modelresolution — the local engine serves a single configured model. * score: 4 ### class LocalPhiRefusedError * file: supabase/functions/\_shared/ai/local-provider.ts:28 * kind: class * core: edge-functions * spec: (none) * summary: Thrown if PHI is ever directed at the local (non-BAA) engine. * score: 4 ### class OutlookClient * file: supabase/functions/\_shared/outlook-client.ts:118 * kind: class * core: edge-functions * spec: (none) * summary: Represents outlook client. * score: 1 ### class PhiAccessLogError * file: supabase/functions/\_shared/ai/agent-usage.ts:93 * kind: class * core: edge-functions * spec: (none) * summary: Raised when the PHI-access audit row cannot be written — the caller MUST block the operation. * score: 4 ### class PhiLaneNotConfiguredError * file: supabase/functions/\_shared/ai/models.ts:19 * kind: class * core: edge-functions * spec: (none) * summary: Thrown when a PHI-lane request is made without a BAA-confirmed model config. * score: 4 ### class PhiRedactionError * file: supabase/functions/\_shared/ai/phi-redaction-core.ts:26 * kind: class * core: edge-functions * spec: (none) * summary: Thrown by on invalid input. Fail-closed: callers MUST skip the LLM call. * score: 4 ### class PortalValidationError * file: supabase/functions/\_shared/portal-guard.ts:72 * kind: class * core: edge-functions * spec: (none) * summary: Validate that matches the discriminated union.On structural failure returns a failure result instead ofthrowing — callers in catch the existing error path; thismakes validation composable without changing those error-return signatures.Throws a (a subclass of Error) when the shape isfundamentally invalid (not an object) so callers can distinguish parse errorsfrom a returned failure. * score: 4 ### class ProliantApiError * file: supabase/functions/\_shared/proliant-client.ts:45 * kind: class * core: edge-functions * spec: (none) * summary: Error thrown for a failed Proliant API call, carrying the HTTP status and an . * score: 4 ### class ProliantClient * file: supabase/functions/\_shared/proliant-client.ts:77 * kind: class * core: edge-functions * spec: (none) * summary: Real vendor-backed . Handles OAuth token acquisitionand caching, base-URL resolution, retries with backoff, and typed errormapping for all calls to the Proliant (ReadyPay) Company API. * score: 4 ### class RingCentralClient * file: supabase/functions/\_shared/ringcentral-client.ts:242 * kind: class * core: edge-functions * spec: (none) * summary: Represents ring central client. * score: 4 ### class RingCentralSmsClient * file: supabase/functions/\_shared/ringcentral-sms-adapter.ts:249 * kind: class * core: edge-functions * spec: (none) * summary: Extended RingCentral client with SMS capabilitiesThis class extends the base client to add SMS-specific methodswhile reusing the authentication and retry logic. * score: 4 ### class RoutingProvider * file: supabase/functions/\_shared/ai/local-provider.ts:137 * kind: class * core: edge-functions * spec: (none) * summary: Lane-aware router. STANDARD chat/stream/tools → local; PHI → vercel (always);embeddings → vercel (stable vector dims). Implements AIProvider so it can bewrapped by exactly like the plain gateway. * score: 4 ### class RunTransitionError * file: supabase/functions/\_shared/ai/agent-run-state-machine.ts:100 * kind: class * core: edge-functions * spec: (none) * summary: Raised when a governed lifecycle RPC rejects a transition or errors. * score: 4 ### class SpineNotSatisfiedError * file: supabase/functions/\_shared/ai/agent-run-state-machine.ts:77 * kind: class * core: edge-functions * spec: (none) * summary: Raised when a run cannot proceed because the guardrail spine (FR-9) is not satisfied.Carries the missing spine elements (never any PHI). * score: 4 ### class TimeoutError * file: supabase/functions/\_shared/timeout.ts:30 * kind: class * core: edge-functions * spec: (none) * summary: Thrown when a promise does not resolve within the allowed time. * score: 4 ### class TokenExpiredError * file: supabase/functions/\_shared/outlook-client.ts:352 * kind: class * core: edge-functions * spec: (none) * summary: Represents token expired error. * score: 4 ### class ToolNotAllowedError * file: supabase/functions/\_shared/ai/tool-guard.ts:19 * kind: class * core: edge-functions * spec: (none) * summary: Thrown by when the model requests a tool thatwas not declared in the set for this skill invocation. * score: 4 ### class TwoPathViolationError * file: supabase/functions/\_shared/ai/phi-two-path-enforcer.ts:29 * kind: class * core: edge-functions * spec: (none) * summary: Raised when a step needs unredacted PHI on a non-PHI-lane model — rejected, never sent degraded. * score: 4 ### class VendorHttpError * file: supabase/functions/\_shared/weno/transport.ts:44 * kind: class * core: edge-functions * spec: (none) * summary: Thrown when WENO returns a non-2xx status, so callers can classify outage vs. error. * score: 4 # edge-functions — edge function catalog Source: https://docs.encoreos.io/api/edge-functions-catalog Flat per-function edge-function catalog for AI/RAG retrieval, generated from supabase/functions. Refresh with `npm run docs:edge-functions:generate`. # Edge Function Catalog edge-function admin-reset-password POST User JWT, org-scoped Admin Password Reset edge-function aggregate-form-analytics POST Service-role (cron) Form Analytics Aggregation edge-function ai-assistant POST JWT (gateway) AI Assistant edge-function ai-categorize-transactions POST User JWT, org-scoped AI Transaction Categorization edge-function ai-detect-anomalies POST JWT (gateway) AI Anomaly Detection edge-function ai-document-analyze POST JWT (gateway) AI Document Analyze edge-function ai-generate-template POST User JWT, org-scoped Parsed AI output plus the PHI-safe usage record for `pf_ai_usage_logs`. edge-function ai-mapping-suggest POST User JWT, org-scoped AI Mapping-Suggestion Service (reusable, cross-core). edge-function ai-match-benefits-employees POST User JWT, org-scoped AI-Match Benefits Employees edge-function ai-match-transactions POST JWT (gateway) AI Transaction Matching edge-function ai-skill-execute POST User JWT AI Skill Execute edge-function approval-escalation POST JWT (gateway) Approval Escalation edge-function audit-siem-export POST User JWT, org-scoped SIEM Export edge-function auto-signature-reminders POST Service-role (cron) E-Signature Platform - Auto Signature Reminders edge-function automation-executor POST JWT (gateway) Automation Engine - Executor edge-function batch-export-submissions-pdf POST JWT (gateway) Batch Export Submissions PDF - edge-function calculate-asset-depreciation POST JWT (gateway) Edge Function: calculate-asset-depreciation edge-function calculate-hedis-outcomes POST User JWT, org-scoped HEDIS Batch Calculation edge-function calculate-test-coverage POST JWT (gateway) Calculate Test Coverage edge-function calendar-freebusy POST User JWT Calendar Free/Busy Query edge-function calendar-oauth-callback POST User JWT Calendar OAuth Callback edge-function calendar-schedule POST User JWT, org-scoped Calendar Schedule Meeting edge-function calendar-sync POST User JWT Calendar Sync edge-function calendar-task-push POST User JWT, org-scoped Follow-up task -> M365 calendar push (one-way, fail-open). edge-function calendar-token-backfill POST User JWT, org-scoped Calendar Token Backfill edge-function ce-card-public GET, POST JWT (gateway) Encore Connect — public card endpoint. edge-function ce-contract-renewal-check POST Service-role (cron) Contract Renewal Check edge-function ce-export-compliance-report POST User JWT, org-scoped Compliance Report Export edge-function ce-extract-document-data POST User JWT, org-scoped AI extraction edge function (`ce-extract-document-data`). edge-function ce-hubspot-backfill POST User only onboarding backfill — run lifecycle endpoint (AC-12/13/14). edge-function ce-hubspot-dlq POST User only dead-letter queue admin — list / retry / discard (AC-10 surface). edge-function ce-hubspot-oauth GET, POST User only HubSpot OAuth connect / callback / disconnect. edge-function ce-hubspot-sync-worker POST Service-role (cron) HubSpot inbound sync worker (T7). edge-function ce-hubspot-webhook POST Public (in-function auth) HubSpot webhooks v3 receiver (T6). edge-function ce-import-dnc-registry POST User JWT, org-scoped National DNC Registry Import edge-function ce-scheduled-sms-executor POST Service-role (cron) Scheduled SMS Executor edge-function ce-submit-optum-pa POST User JWT, org-scoped ce-submit-optum-pa edge-function chatbot-lead-capture POST JWT (gateway) Chatbot Lead Capture edge-function chatbot-message POST JWT (gateway) Chatbot Message Handler edge-function chatbot-session POST JWT (gateway) Chatbot Session Management edge-function check-asset-warranties POST Service-role (cron) Check Asset Warranties edge-function check-budget-alerts POST Service-role (cron) edge-function check-overdue-pms POST Service-role (cron) Check Overdue PMs (FM-04) edge-function check-oversight-compliance POST JWT (gateway) Check Oversight Compliance edge-function check-payroll-deadlines POST Service-role (cron) HR-PAY-05: Check Payroll Deadlines edge-function check-rate-limit POST JWT (gateway) check-rate-limit edge-function check-schedule-conflicts POST User JWT, org-scoped schedule conflict check. edge-function check-vendor-certifications POST Service-role (cron) Check Vendor Certifications edge-function checkr-session-token POST Public (in-function auth) Checkr Session Token edge-function checkr-webhook POST JWT (gateway) Checkr Webhook Handler edge-function cl-agent-draft-note POST User only Thin Deno edge entry for AI-assisted clinical note drafting. edge-function cl-ai-chart-summary POST User JWT, org-scoped AI Chart Summary. edge-function cl-ai-generate-draft POST User JWT, org-scoped AI Draft Generation (Phase C wiring). edge-function cl-ai-treatment-plan-draft POST User JWT, org-scoped AI Treatment Plan Draft Generation. edge-function cl-assessment-expiration POST Service-role (cron) Assessment Expiration Notification Cron edge-function cl-care-gap-rules POST Service-role (cron) Care Gap Rules Engine edge-function cl-cds-rationale POST User JWT, org-scoped CDS Rationale Enrichment edge-function cl-ceem-disclosure-gate POST User JWT, org-scoped CL-71 — CEEM 42 CFR Part 2 / DS4P Disclosure Gate (edge function). edge-function cl-clinical-notify POST User JWT Centralized Clinical Notification Service edge-function cl-dosespot-webhook POST Public (in-function auth) DoseSpot ePrescribing Webhook edge-function cl-fdb-interaction-check POST User JWT FDB MedKnowledge Drug Interaction Check edge-function cl-hedis-calculator POST User JWT, org-scoped HEDIS / MA STARS calculator edge function. edge-function cl-lab-result-ingestion POST Public (in-function auth) Lab Result Ingestion edge-function cl-loc-assessment-get POST User JWT, org-scoped Server-side LoC assessment fetch for UM consumers. edge-function cl-marketplace-import POST User JWT, org-scoped Server-side atomic marketplace import. edge-function cl-note-charge-capture POST User JWT, org-scoped cl-note-charge-capture edge-function cl-notification-sla-evaluator POST Service-role (cron) SLA Evaluator (Cron) edge-function cl-pathway-overdue-check POST Service-role (cron) Pathway Milestone Overdue Check Cron edge-function cl-referral-directory-search POST User JWT, org-scoped Directory Search edge-function cl-risk-stratification POST Service-role (cron) Risk Stratification Cron edge-function cl-tefca-exchange POST User JWT, org-scoped TEFCA Exchange edge-function cl-telehealth-consent-expiry-scan POST JWT (gateway) Telehealth Consent Expiry Scanner edge-function cl-vbp-export GET, POST User JWT, org-scoped Value-Based Purchasing (VBP) export edge function. edge-function cl-weno-cancelrx POST User JWT, org-scoped cl-weno-cancelrx — CL-06-EN-23 WENO CancelRx send path. edge-function cl-weno-directory-ingest POST User JWT, org-scoped cl-weno-directory-ingest — CL-06-EN-23 US-2 pharmacy directory sync. edge-function cl-weno-launch POST User JWT, org-scoped cl-weno-launch — CL-06-EN-23 WENO EZ launch URL builder. edge-function cl-weno-newrx-sync POST User JWT, org-scoped cl-weno-newrx-sync (CL-06-EN-23, WS5 / US-3) edge-function clearinghouse-batch-submit POST User JWT, org-scoped Clearinghouse Batch Submit — edge-function clearinghouse-health-check POST Service-role (cron) Clearinghouse Health Check edge-function clearinghouse-retrieve POST User JWT, org-scoped Clearinghouse ERA Retrieval edge-function clearinghouse-submit POST User JWT, org-scoped Clearinghouse Batch Submission edge-function collect-backend-health-metrics POST Service-role (cron) Workstream D PR-2 (PF-48): Backend Health-Metric Feeder edge-function collect-health-metrics POST Public (in-function auth) Collect Health Metrics edge-function compliance-phi-scan POST Service-role (cron) Compliance PHI Scan edge-function compliance-run-checks POST Service-role (cron) Compliance Run Checks edge-function consent-expiration-reminders POST Service-role (cron) Consent Expiration Reminders edge-function contractor-compliance-reminders POST Service-role (cron) Contractor Compliance Reminders edge-function create-layout-from-template POST User JWT Create Layout from Template (transactional) edge-function create-safety-plan-share POST User JWT, org-scoped Safety Plan Share edge-function create-signature POST JWT (gateway) edge-function create-user-direct POST User JWT, org-scoped Create User Directly edge-function daily-partner-status-check POST Service-role (cron) Daily Partner Status Check edge-function data-migration-explore POST User JWT, org-scoped Data Migration Explorer edge-function data-migration-save-connection POST User JWT Data Migration Save Connection edge-function data-migration-test-connection POST User JWT Data Migration Test Connection edge-function data-migration-worker POST User JWT, org-scoped Data Migration Worker edge-function db-health-metrics POST JWT (gateway) Database Health Metrics edge-function denial-prediction-metrics POST User JWT, org-scoped Denial Prediction Metrics edge-function detect-time-exceptions POST JWT (gateway) edge-function detect-underpayment-patterns POST Service-role (cron) detect-underpayment-patterns edge-function document-expiration-reminders POST Service-role (cron) Document Expiration Reminders edge-function duplicate-layout POST JWT (gateway) Atomic Layout Duplication edge-function email-provider-health POST User JWT, org-scoped email-provider-health edge-function email-send POST JWT (gateway) Email Send edge-function email-sync-outlook POST JWT (gateway) Outlook Email Sync edge-function email-tracking GET JWT (gateway) Email Tracking Webhook Handler edge-function entra-calendar-sync POST User JWT, org-scoped Entra ID Calendar Sync edge-function entra-disable-user POST User JWT, org-scoped Entra ID Account Lifecycle edge-function entra-employee-presence POST User JWT, org-scoped Employee Presence Display edge-function entra-oauth POST Public (in-function auth) Entra ID OAuth Callback Handler edge-function entra-provision-user POST User JWT, org-scoped Entra ID User Provisioning edge-function entra-register-app POST JWT (gateway) Entra ID App Registration edge-function entra-sharepoint-documents POST User JWT, org-scoped SharePoint Document Browser edge-function entra-sharepoint-membership POST User JWT, org-scoped Entra ID SharePoint Membership edge-function entra-sync-directory POST User JWT, org-scoped Entra ID Directory Sync edge-function entra-sync-inbound POST User JWT, org-scoped Entra ID Inbound Directory Sync edge-function entra-teams-activity POST User JWT, org-scoped Teams Activity Feed edge-function entra-teams-membership POST User JWT, org-scoped Entra ID Teams Membership edge-function entra-teams-notify POST User JWT, org-scoped Teams Channel Notification edge-function entra-verify-sender POST User JWT, org-scoped Entra Verify Sender & Browse Mailboxes edge-function evaluate-cds POST User JWT, org-scoped Server-Side CDS Evaluation edge-function evaluate-conditions POST User JWT, org-scoped Server-Side Condition Evaluation edge-function evaluate-decision-table POST User JWT, org-scoped Server-Side Decision Table Evaluation edge-function evaluate-health-alerts POST Service-role (cron) Evaluate Health Alerts edge-function event-consumer POST User JWT Event Consumer edge-function execute-report POST JWT (gateway) DECOMMISSIONED — 2026-06-29 deep-review P0. edge-function execute-scheduled-reports POST JWT (gateway) Anonymize email address for logging (privacy protection) edge-function export-employee-list POST JWT (gateway) edge-function export-payroll-data POST JWT (gateway) edge-function export-report POST User JWT, org-scoped edge-function extend-execution-deadline POST User JWT, org-scoped Extend Execution Deadline edge-function extract-document-text POST Public (in-function auth) Extract Document Text edge-function fa-accrue-credit-line-interest POST Service-role (cron) edge-function fa-accrue-investment-interest POST Service-role (cron) Resolve the fiscal period covering a date for an org (null if none). edge-function fa-check-collection-thresholds POST Service-role (cron) edge-function fa-check-credit-limits POST Service-role (cron) edge-function fa-check-installment-due-dates POST Service-role (cron) Cron to monitor payment plan installment due dates. edge-function fa-check-investment-maturities POST Service-role (cron) edge-function fa-consume-pm-payment-events POST Public (in-function auth) FA Consumer for PM payment\_posted and write\_off\_approved domain events (EN-01). edge-function fa-consume-revenue-source-events POST JWT (gateway) FA Consumer for revenue source domain events (FA-18 WS-B). edge-function fa-episode-balance GET User JWT, org-scoped Episode balance query for RH (API\_CONTRACTS.md). edge-function fa-execute-report POST User JWT Execute a single FA report run (server-side). edge-function fa-generate-recurring-invoices POST JWT (gateway) edge-function fa-gl-migration-import POST User JWT, org-scoped GL Migration Import edge-function fa-gr-compliance-cost-consumer POST User JWT, org-scoped GR → FA Compliance Cost Consumer edge-function fa-handle-bank-balance-updated POST JWT (gateway) Bank Balance Updated Event Handler edge-function fa-handle-payment-processed POST JWT (gateway) Payment Processed Event Handler edge-function fa-je-import POST User JWT, org-scoped Journal Entry CSV Import edge-function fa-payroll-je-consumer POST Service-role (cron) Patch a fw\_domain\_events lifecycle row (processed\_at / processing\_error). edge-function fa-process-recurring-transactions POST Service-role (cron) Process Recurring Transaction Templates edge-function fa-process-revenue-recognition POST User JWT, org-scoped HTTP wrapper for the revenue recognition RPC. edge-function fa-receipt-upload POST Public (in-function auth) edge-function fa-report-data GET User JWT, org-scoped BI API edge-function fa-update-cash-positions POST Service-role (cron) edge-function fhir-r4 GET User JWT, org-scoped FHIR R4 Facade edge-function fw-audit-archive POST JWT (gateway) Audit Archive edge-function fw-audit-fhir-export POST User JWT, org-scoped FHIR AuditEvent Export edge-function fw-audit-report-generate POST User JWT, org-scoped Compliance Report Generation edge-function fw-audit-scheduled-reports POST JWT (gateway) Scheduled Reports edge-function fw-audit-workflow-export POST User JWT, org-scoped Workflow Audit Trail Export edge-function fw-enqueue-execution POST JWT (gateway) Platform Workflow Execution Seam — Enqueue edge-function fw-retention-purge POST Service-role (cron) Retention Purge Cron Function edge-function fw-rule-evaluation-cleanup POST Service-role (cron) Rule Evaluation Cleanup Cron Function edge-function fw-webhook-maintenance POST Service-role (cron) Webhook Maintenance Cron Function edge-function fw-webhook-receiver POST Public (in-function auth) External Webhook Receiver edge-function generate-1099-nec-pdf POST JWT (gateway) HR-PAY-04: 1099-NEC PDF Generation edge-function generate-837i-claim POST User JWT, org-scoped Generate 837I Institutional Claim edge-function generate-940-pdf POST JWT (gateway) HR-PAY-04: Form 940 PDF Generation edge-function generate-941-pdf POST JWT (gateway) HR-PAY-04: Form 941 PDF Generation edge-function generate-compensation-statement-pdf POST JWT (gateway) Generate Compensation Statement PDF edge-function generate-compliance-evidence POST User JWT, org-scoped Generate Compliance Evidence edge-function generate-compliance-report POST JWT (gateway) edge-function generate-embeddings POST Public (in-function auth) Generate Embeddings edge-function generate-fa-report-export POST JWT (gateway) edge-function generate-it-report POST JWT (gateway) Generate IT Report edge-function generate-oversight-session-pdf POST JWT (gateway) Generate PDF for signed oversight sessions edge-function generate-pay-stub-pdf POST Public (in-function auth) HR-PAY-03 Phase 4: Generate Pay Stub PDF (Refactored) edge-function generate-payer-performance-snapshot POST Service-role (cron) generate-payer-performance-snapshot edge-function generate-pm-work-orders POST Service-role (cron) Generate PM Work Orders (FM-04) edge-function generate-report-narrative POST JWT (gateway) Generate Report Narrative edge-function generate-schedule POST JWT (gateway) edge-function generate-signed-pdf POST JWT (gateway) Generate Signed PDF edge-function generate-templated-pdf POST User JWT, org-scoped Generate Templated PDF edge-function generate-timesheets POST Service-role (cron) edge-function generate-w2-pdf POST JWT (gateway) HR-PAY-04: W-2 PDF Generation edge-function get-integration-credential POST JWT (gateway) Get Integration Credential edge-function github-webhook POST Public (in-function auth) GitHub Webhook Handler edge-function google-workspace-calendar-event POST User JWT, org-scoped Calendar/Meet event creation wrapper. edge-function google-workspace-calendar-freebusy POST User JWT, org-scoped Calendar free/busy query wrapper. edge-function google-workspace-chat-notify POST User JWT, org-scoped Chat notification delivery. edge-function google-workspace-directory-reconcile POST Service-role (cron) Scheduled directory reconciliation. edge-function google-workspace-drive-sync POST User JWT, org-scoped Drive metadata sync. edge-function google-workspace-hr-event-subscriber POST User JWT, org-scoped HR-01 event subscriber for Google Workspace lifecycle. edge-function google-workspace-license-manage POST User JWT, org-scoped Google Workspace License Manager assign/revoke. edge-function google-workspace-oauth-authorize POST User JWT, org-scoped Start Google Workspace OAuth authorization-code flow (PKCE). edge-function google-workspace-oauth-callback POST JWT (gateway) Google Workspace OAuth callback. edge-function google-workspace-oauth-refresh POST User only Refresh Google OAuth access token from stored refresh token. edge-function google-workspace-offboard-user POST User JWT, org-scoped google-workspace-offboard-user edge-function google-workspace-provision-user POST User JWT, org-scoped google-workspace-provision-user edge-function google-workspace-reports-ingest POST Service-role (cron) Reports API ingestion (cron). edge-function google-workspace-test-connection POST User JWT, org-scoped PF-101 — google-workspace-test-connection edge-function gr-accreditation-on-regulatory-report POST JWT (gateway) gr-accreditation-on-regulatory-report (GR-08 consumer) edge-function gr-cap-deadline-alerts POST Service-role (cron) CAP Deadline Alerts — Daily Cron edge-function gr-cap-from-audit-finding POST JWT (gateway) gr-cap-from-audit-finding edge-function gr-check-corrective-action-deadlines POST Service-role (cron) Corrective Action Deadline Checker edge-function gr-classify-incident-reporting-obligations POST User JWT Classify Incident Reporting Obligations edge-function gr-classify-regulatory-change-impact POST Service-role (cron) Regulatory Change Impact Classifier (Cron fallback + event-triggered) edge-function gr-coi-attestation-reminders POST Service-role (cron) COI Attestation Reminders edge-function gr-compliance-on-regulatory-report POST JWT (gateway) gr-compliance-on-regulatory-report (GR-03 consumer) edge-function gr-evidence-from-incident POST JWT (gateway) Consumer for the `incident_resolved` compliance event. edge-function gr-evidence-from-policy-ack POST JWT (gateway) Consumer for the `policy_acknowledged` compliance event. edge-function gr-evidence-from-training POST JWT (gateway) Consumer for `gr_events` payload `{ event: 'training_completed', ... }`. edge-function gr-generate-regulatory-report POST User JWT Generate Regulatory Report Package edge-function gr-handle-incident-reported POST Public (in-function auth) GR-Side Event Consumer for `cl_incident_reported` edge-function gr-handle-restraint-event-documented POST User JWT GR-Side Event Consumer for `cl_restraint_event_documented` edge-function gr-handle-safety-plan-activated POST User JWT GR-Side Event Consumer for `cl_safety_plan_activated` edge-function gr-pf61-refresh-source POST Service-role (cron) PF-61 Knowledge Base Re-ingestion Hook (Post-Approval) edge-function gr-procedure-gap-consumer POST JWT (gateway) gr-procedure-gap-consumer edge-function gr-refresh-procedure-analytics POST Service-role (cron) Refresh Procedure Analytics Materialized View edge-function gr-regulatory-change-watcher POST Service-role (cron) Regulatory Source Watcher (Cron) edge-function gr-regulatory-deadline-alerts POST Service-role (cron) Regulatory Deadline Alerts (Cron) edge-function gr-snapshot-compliance-posture POST Service-role (cron) Daily compliance-posture snapshot (cron). edge-function gr-whistleblower-status POST Public (in-function auth) Anonymous whistleblower report status lookup edge-function gr-whistleblower-submit POST Public (in-function auth) Anonymous whistleblower report submission edge-function health POST JWT (gateway) Unified Health Endpoint (redeploy: 2026-03-06) edge-function hr-ai-import-assist POST User JWT HR AI Import Assist edge-function hr-analytics-refresh POST JWT (gateway) HR-18 Analytics Refresh edge-function hr-decrypt-bank-account POST JWT (gateway) HR-PAY-03: Bank Account Decryption edge-function hr-employee-terminated-handler POST JWT (gateway) Employee Terminated Handler edge-function hr-encrypt-bank-account POST JWT (gateway) HR-PAY-03: Bank Account Encryption edge-function hr-encrypt-ssn POST JWT (gateway) SSN Encryption edge-function hr-everify-orchestrator POST User JWT, org-scoped E-Verify Orchestrator edge-function hr-generate-nacha POST JWT (gateway) HR-PAY-03: NACHA File Generator edge-function hr-job-board-import POST JWT (gateway) Job Board Import — Application/Candidate Import edge-function hr-job-board-sync POST User JWT, org-scoped Job Board Sync — Production Hardened edge-function hr-job-board-webhook POST JWT (gateway) Job Board Webhook — Production Hardened edge-function hr-linkedin-oauth-callback POST JWT (gateway) OAuth Callback edge-function hr-linkedin-oauth-start POST User JWT, org-scoped OAuth Start edge-function hr-offer-accept POST User JWT, org-scoped Accept Offer → Hire (AC-4) edge-function hr-performance-review-merit-handler POST JWT (gateway) T25: Performance Review Event Handler edge-function hr-plaid-transfer-create POST User JWT, org-scoped HR-PAY-03: Plaid Transfer Create edge-function hr-plaid-transfer-webhook POST Public (in-function auth) HR-PAY-03: Plaid Transfer Webhook edge-function hr-portal-applications POST JWT (gateway) Candidate Portal - Applications edge-function hr-portal-auth POST JWT (gateway) Candidate Portal Authentication edge-function hr-portal-invite POST JWT (gateway) Candidate Portal Invitation edge-function hr-portal-offer-decline POST JWT (gateway) Candidate Portal — Decline Offer (#850) edge-function hr-portal-offers POST JWT (gateway) Candidate Portal — Offers (#850) edge-function hr-proliant-create-profile-from-pending POST User only Find an existing profile by email, or mint one via the Auth Admin API. edge-function hr-public-apply POST Public (in-function auth) Public Candidate Application Intake edge-function hr-reference-reminders POST Service-role (cron) Reference Reminder Cron edge-function hr-reference-request POST JWT (gateway) Reference Request edge-function hr-reference-submit POST JWT (gateway) HR Reference Submit (PUBLIC) edge-function hr-reference-validate GET JWT (gateway) HR Reference Validate (PUBLIC) edge-function hr-send-communication POST JWT (gateway) Send Communication edge-function hr-test-email POST User JWT, org-scoped HR Test Email Function edge-function hr-training-credential-refresh POST JWT (gateway) Consumer for `gr_events` payload `{ event: 'training_completed', ... }`. edge-function import-benefits-enrollment POST User JWT, org-scoped Import Benefits Enrollment edge-function import-credentials POST User JWT, org-scoped Import Employee Credentials edge-function import-employee-roster POST JWT (gateway) Import Employee Roster edge-function import-employee-ssn POST User JWT edge-function import-leave-balances POST JWT (gateway) Import Leave Balances edge-function import-pay-rate-history POST User JWT, org-scoped Import Pay Rate History edge-function import-time-punches POST JWT (gateway) Import Time Punches edge-function intake-agent-run POST User JWT PF-intake agentic vertical — production runtime entry (Stage 1, flag-OFF). edge-function interview-reminders POST JWT (gateway) Interview Reminders edge-function messaging-notify-mentions POST JWT (gateway) messaging-notify-mentions edge-function messaging-retention-cleanup POST Service-role (cron) messaging-retention-cleanup edge-function messaging-summarize-conversation POST User JWT, org-scoped messaging-summarize-conversation edge-function messaging-translate-message POST User JWT, org-scoped messaging-translate-message edge-function oauth-authorize POST JWT (gateway) OAuth Authorization edge-function oauth-callback POST JWT (gateway) OAuth Callback edge-function oauth-refresh POST JWT (gateway) OAuth Token Refresh edge-function org-data-sync-consumer POST JWT (gateway) Org Data Sync Consumer edge-function org-data-sync-retry POST User JWT Retry Failed Sync Event edge-function outlook-oauth POST Public (in-function auth) Outlook OAuth edge-function parse-bank-statement POST JWT (gateway) Parse CSV format: edge-function pdmp-query POST User JWT, org-scoped pdmp-query — vendor-agnostic PDMP gateway query. edge-function pf\_widget\_query POST User only pf\_widget\_query — Dashboard Widget Data Broker edge-function pf-analytics-connector-sync POST Service-role (cron) pf-analytics-connector-sync — cron-triggered materialization of enabled edge-function pf-analytics-dataset-ingest POST User only PF-123 Phase 4 — pf-analytics-dataset-ingest. edge-function pf-analytics-embed-render POST JWT (gateway) pf-analytics-embed-render — public, token-gated embed serving surface. edge-function pf-analytics-embed-token POST User only pf-analytics-embed-token — mint / revoke external signed-embed tokens. edge-function pf-analytics-query POST User only pf-analytics-query — Tier-2 mediation seam (HTTP surface). edge-function pf-analytics-refresh POST Service-role (cron) pf-analytics-refresh — per-org mart build / refresh orchestration (cron). edge-function pf-analytics-schedule-runner POST Service-role (cron) pf-analytics-schedule-runner — cron-triggered delivery of scheduled dashboards edge-function pf-check-ai-usage-anomalies POST Service-role (cron) PF Phase-0 #3: Proactive AI Usage Anomaly + Cost Alert Agent edge-function pf-collect-metrics POST JWT (gateway) edge-function pf-detect-sla-violations POST JWT (gateway) Dispatch SLA violation alerts to configured recipients via PF-10. edge-function pf-discover-processes POST User JWT, org-scoped Discover Business Processes edge-function pf-encrypt-field POST User JWT Generalized Field Encryption edge-function pf-get-edge-function-metrics POST User JWT Edge Function Metrics Retrieval edge-function pf-headshot-campaign-invite POST User JWT edge-function pf-headshot-cleanup POST JWT (gateway) Daily cron: deletes expired source photos per org retention config. edge-function pf-headshot-signed-url POST User JWT edge-function pf-headshot-status-poll POST User JWT edge-function pf-headshot-submit POST User JWT edge-function pf-headshot-webhook POST JWT (gateway) edge-function pf-import-execute POST User JWT, org-scoped Edge function for batch import execution. edge-function pf-link-preview POST User JWT Link Preview edge-function pf-purge-metric-values POST JWT (gateway) edge-function pf-refresh-health POST JWT (gateway) Refresh Process Health edge-function pf-tasks-due-sweep POST Service-role (cron) pf\_tasks due-notification sweeper. edge-function pf-token-exchange POST JWT (gateway) Token Exchange Endpoint edge-function pf-transcription-attest-draft POST User JWT, org-scoped pf-transcription-attest-draft edge-function pf-transcription-cost-rollup-cron POST Service-role (cron) pf-transcription-cost-rollup-cron edge-function pf-transcription-deletion-request POST User JWT, org-scoped pf-transcription-deletion-request edge-function pf-transcription-end-session POST User JWT, org-scoped pf-transcription-end-session edge-function pf-transcription-generate-note POST User JWT, org-scoped pf-transcription-generate-note edge-function pf-transcription-lifecycle-cron POST Service-role (cron) pf-transcription-lifecycle-cron edge-function pf-transcription-revoke-consent POST User JWT, org-scoped pf-transcription-revoke-consent edge-function pf-transcription-start-session POST User JWT, org-scoped pf-transcription-start-session (PF-100 H2 Phase 2) edge-function pf-transcription-stt-stream POST User JWT, org-scoped pf-transcription-stt-stream edge-function pf-transcription-vendor-baa-monitor POST Service-role (cron) pf-transcription-vendor-baa-monitor edge-function plaid-apply-rules POST User JWT, org-scoped Plaid Apply Rules Engine edge-function plaid-create-link-token POST Public (in-function auth) Plaid Link Token Creation Handler edge-function plaid-disconnect POST JWT (gateway) Plaid Disconnect Handler edge-function plaid-exchange-token POST Public (in-function auth) Plaid Token Exchange Handler edge-function plaid-get-balances POST JWT (gateway) Plaid Batch Balance Fetch edge-function plaid-historical-sync POST JWT (gateway) Plaid Historical Transaction Sync edge-function plaid-scheduled-sync POST JWT (gateway) edge-function plaid-sync POST JWT (gateway) Plaid Transaction Sync Handler edge-function plaid-sync-worker POST Public (in-function auth) FA-20 Plaid Sync Worker — durable consumer of the `plaid_webhook_sync` pgmq queue. edge-function plaid-transfer-intent-create POST User JWT, org-scoped Plaid Transfer Intent Create (Transfer UI) edge-function plaid-transfer-intent-get POST User JWT, org-scoped Plaid Transfer Intent Get (Transfer UI) edge-function plaid-webhook POST Public (in-function auth) Plaid Webhook Handler — Phase 0 hardening (FA-20) edge-function platform-clinical-bed-board POST User JWT, org-scoped Clinical Bed Board Read Model — edge-function pm-39-outreach-scheduler POST Service-role (cron) Outreach Scheduler Cron edge-function pm-39-recheck-availability POST Service-role (cron) Daily Availability Re-Check & Auto-Promotion edge-function pm-39-waitlist-entry POST User JWT Waitlist Entry edge-function pm-40-generate-packet POST JWT (gateway) Generate Preadmission Packet edge-function pm-40-packet-portal GET, POST JWT (gateway) Packet Portal edge-function pm-40-preappt-alert POST Service-role (cron) Pre-Appointment Alert (Cron) edge-function pm-41-compliance-report POST User JWT edge-function pm-ai-appeal-letter POST User JWT, org-scoped AI Denial Appeal Letter Generation. edge-function pm-ai-coding-suggest POST User JWT, org-scoped AI Coding Assistant — inference edge function (Note → ICD-10/CPT/HCPCS). edge-function pm-ai-fairness-monitor POST Service-role (cron) AI Fairness & Bias Monitoring — Daily Cron edge-function pm-auth-claim-validation POST User JWT, org-scoped Auth-to-Claim Validation edge-function pm-auth-expiration-alerts POST Service-role (cron) Auth Expiration Alert Cron Function edge-function pm-calculate-benefit-estimate POST User JWT, org-scoped Calculate patient-responsibility benefit estimate. edge-function pm-calculate-encounter-cost POST User JWT Auto-calculate encounter cost on encounter completion. edge-function pm-charge-reconciliation POST Service-role (cron) Automated Charge Reconciliation — Nightly edge-function pm-checkin-eligibility POST User JWT, org-scoped edge-function pm-collections-aging-cron POST Service-role (cron) Collections Aging Cron edge-function pm-contract-expiration-alerts POST Service-role (cron) Payer Contract Expiration Alert Cron edge-function pm-messaging-retention POST User JWT Messaging Retention edge-function pm-parse-271-benefits POST User JWT, org-scoped Parse 271 benefits. edge-function pm-portal-packet-reminders POST Service-role (cron) Portal Intake Packet Reminders edge-function pm-rcm-snapshot POST Service-role (cron) pm-rcm-snapshot — Nightly RCM metric snapshot edge function. edge-function portal-bot-dispatch POST User JWT, org-scoped portal-bot-dispatch edge-function portal-bot-status POST User JWT portal-bot-status edge-function portal-bot-worker-callback POST JWT (gateway) portal-bot-worker-callback edge-function portal-form-submit POST JWT (gateway) External Form Portal - Form Submission Handler edge-function portal-get-config POST JWT (gateway) Portal Get Config edge-function portal-recorder-start POST User JWT, org-scoped portal-recorder-start edge-function portal-recorder-status POST User JWT portal-recorder-status edge-function portal-verify-email GET, POST JWT (gateway) External Form Portal - Email Verification Handler edge-function predict-denial-risk POST User JWT, org-scoped Predict Denial Risk edge-function process-alert-escalations POST Service-role (cron) edge-function process-data-retention POST Service-role (cron) edge-function process-document-expiration POST Service-role (cron) Process Document Expiration edge-function process-entity-mapping POST JWT (gateway) Process Entity Mapping Action edge-function process-era POST User JWT, org-scoped process-era — Simplified X12 835 ERA processor. edge-function process-export POST User JWT, org-scoped Supported entity tables for data export edge-function process-inbound-webhook POST JWT (gateway) edge-function process-leave-accruals POST JWT (gateway) edge-function process-leave-carryover POST JWT (gateway) edge-function process-notification-batches POST Service-role (cron) Notification Batch Processor edge-function process-notification-retries POST Service-role (cron) Notification Retry Processor edge-function process-scheduled-workflows POST Service-role (cron) scheduled-workflow dispatcher. edge-function process-swap-request POST JWT (gateway) edge-function proliant-code-lookup POST User JWT, org-scoped edge-function proliant-code-push POST User JWT, org-scoped HR-44-EN-01 AC-7 — code-definition write-back. edge-function proliant-manual-check POST User only HR-44-EN-03 AC-5/AC-6 — admin-initiated off-cycle/correction manual checks. edge-function proliant-payroll-run POST User JWT, org-scoped edge-function proliant-reports POST User only HR-44-EN-03 AC-11/AC-12 — read-only ReadyPay report listing. edge-function proliant-run-poller POST Service-role (cron) edge-function proliant-scheduled-sync POST Service-role (cron) Optional overrides (used by manual HTTP triggers / tests); env-overridable. edge-function proliant-sync POST User JWT, org-scoped create explicit NEW HIRES in edge-function proliant-tax-documents POST User only HR-44-EN-03 AC-1/AC-2 — employee self-service tax-document pull. edge-function proliant-test-connection POST User JWT, org-scoped edge-function provision-tenant POST User JWT Tenant Provisioning edge-function query-payment-status POST JWT (gateway) Query Payment Status edge-function query-performance-retention-cleanup POST Service-role (cron) Query Performance Retention Cleanup edge-function ramp-connect POST User JWT, org-scoped Ramp Connect edge-function ramp-disconnect POST User JWT, org-scoped Ramp Disconnect edge-function ramp-sync POST User JWT, org-scoped Ramp Sync edge-function ramp-webhook POST Public (in-function auth) Ramp Webhook edge-function rcm-execute-rules POST Service-role (cron) Edge Function: rcm-execute-rules edge-function rcm-score-work-queue POST Service-role (cron) Edge Function: rcm-score-work-queue edge-function rcm-simulate-rule POST User JWT, org-scoped Edge Function: rcm-simulate-rule edge-function recalculate-staffing-from-census POST JWT (gateway) Recalculate Staffing from Census edge-function reconcile-era-payment POST User JWT, org-scoped reconcile-era-payment edge-function remove-push-subscription POST JWT (gateway) edge-function resend-invitation-email POST User JWT PF user-management Quick Win 6: rate-limited invitation resend. edge-function restore-layout-version POST User JWT Restore Layout Version (transactional) edge-function retrain-denial-model POST Service-role (cron) Retrain Denial Model (Cron) edge-function retry-failed-webhooks POST Service-role (cron) Retry Failed Webhooks edge-function revoke-session POST JWT (gateway) Revoke Session edge-function rh-charge-invoice POST JWT (gateway) RH-04 Integration - Auto-Invoice from Resident Charges edge-function ringcentral-list-extensions POST JWT (gateway) RingCentral List Extensions edge-function ringcentral-recording-proxy POST JWT (gateway) RingCentral Recording Proxy edge-function ringcentral-ringout POST Public (in-function auth) RingCentral RingOut edge-function ringcentral-setup POST Public (in-function auth) RingCentral Setup edge-function ringcentral-subscription-renewal POST Public (in-function auth) RingCentral Subscription Renewal edge-function ringcentral-webhook POST Public (in-function auth) RingCentral Webhook Handler edge-function rpa-execution-archiver POST Service-role (cron) RPA Execution Archiver edge-function rpa-failure-alerter POST Service-role (cron) RPA Failure Alerter edge-function rpa-schedule-runner POST Service-role (cron) RPA Schedule Runner edge-function rpa-screenshot-cleanup POST Service-role (cron) RPA Screenshot Cleanup edge-function run-statement-cycle POST User JWT, org-scoped Run Statement Cycle edge-function sandbox-execute POST JWT (gateway) Sandbox Execute edge-function save-push-subscription POST JWT (gateway) edge-function security-detect-audit-anomalies POST Service-role (cron) Security: Detect Audit-Log Anomalies (Cron Job — PF-48 extension) edge-function security-evaluate-threat-patterns POST Service-role (cron) Security: Evaluate Threat Patterns (Cron Job) edge-function security-event-alert-delivery POST JWT (gateway) Alert Delivery Handler edge-function security-log-failed-login POST Service-role (cron) Security: Log Failed Login Events edge-function security-log-permission-violation POST JWT (gateway) Security: Log Permission Violation Events edge-function send-approval-reminders POST Service-role (cron) Document Approval Reminder edge-function send-audit-reminders POST Service-role (cron) Send Audit Reminders edge-function send-compliance-reminders POST Service-role (cron) Send Compliance Reminders edge-function send-contract-alerts POST Service-role (cron) Contract Alert edge-function send-credential-alerts POST Service-role (cron) HR Credential Alert edge-function send-email-notification POST User JWT, org-scoped Send email notification via org-configured provider (Entra or Gmail). edge-function send-employee-setup-email POST User JWT, org-scoped Send Employee Setup Email edge-function send-invitation-email POST User JWT Send Invitation Email edge-function send-outbound-webhook POST JWT (gateway) Send Outbound Webhook edge-function send-pending-notifications POST Service-role (cron) Notification Delivery edge-function send-policy-reminders POST Service-role (cron) Send Policy Reminders edge-function send-push-notification POST JWT (gateway) Push Notification edge-function send-qi-reminders POST Service-role (cron) Send QI Reminders edge-function send-risk-reminders POST Service-role (cron) Send Risk Reminders edge-function send-scheduled-messages POST Service-role (cron) Send Scheduled Messages (Cron) edge-function send-signature-reminder POST JWT (gateway) E-Signature Platform - Send Signature Reminder edge-function send-signature-request POST JWT (gateway) edge-function send-skill-verification-reminders POST Service-role (cron) HR Skill Verification Reminder edge-function send-training-reminders POST Service-role (cron) Send Training Reminders edge-function sequence-auto-enroll POST User JWT, org-scoped edge-function sequence-executor POST JWT (gateway) edge-function sequence-exit-detector POST User JWT, org-scoped edge-function sms-send POST User JWT, org-scoped SMS Send edge-function sms-webhook POST JWT (gateway) SMS Webhook Handler edge-function sso-domain-verify POST User JWT, org-scoped PF-112 — sso-domain-verify edge-function sso-provider-delete POST User JWT, org-scoped PF-112 — sso-provider-delete edge-function sso-provider-register POST User JWT, org-scoped PF-112 — sso-provider-register edge-function sso-provider-update POST User JWT, org-scoped PF-112 — sso-provider-update edge-function sso-revoke-unmatched POST User JWT PF-112 — sso-revoke-unmatched edge-function store-efile-credentials POST User JWT, org-scoped HR-PAY-04: Store E-File Credentials edge-function submit-w2-efile POST User JWT, org-scoped HR-PAY-04: Submit W-2 E-File edge-function suggest-workspaces POST JWT (gateway) suggest-workspaces — Navigation Foundations P3.5 edge-function telehealth-create-session POST User JWT, org-scoped Telehealth Create Session edge-function tenant-domain-manage POST User JWT Tenant Domain Management edge-function test-cases-run POST JWT (gateway) Test Cases Run edge-function test-datasets-import POST JWT (gateway) Test Datasets Import edge-function test-integration-connection POST JWT (gateway) Test Integration Connection edge-function time-exception-notify POST User JWT, org-scoped Time Exception Notification edge-function trigger-credential-renewal POST Service-role (cron) Trigger Credential Renewal edge-function trigger-invoice-creation POST JWT (gateway) Trigger Invoice Creation edge-function trigger-onboarding POST JWT (gateway) Trigger Onboarding edge-function validate-form-submission POST JWT (gateway) Validate lookup field value against database edge-function validate-shift-assignment POST JWT (gateway) edge-function vercel-deployments POST User JWT, org-scoped Vercel Deployments Proxy for System Health Dashboard. edge-function verify-signature POST JWT (gateway) edge-function web-form-submit POST JWT (gateway) Web Form Submit (T4 + T5) edge-function workflow-api-action POST JWT (gateway) Workflow API Action edge-function workflow-debug-control POST JWT (gateway) Workflow Debug Control edge-function workflow-executor-worker POST Public (in-function auth) Durable Workflow Execution Worker edge-function workflow-metrics-aggregate POST JWT (gateway) edge-function workflow-notification-trigger POST JWT (gateway) edge-function workflow-path-aggregate POST JWT (gateway) Workflow Path Aggregation edge-function workflow-query-action POST JWT (gateway) Workflow Query Action edge-function workflow-sftp-action POST JWT (gateway) SFTP Action edge-function workflow-test-connection POST JWT (gateway) Test Connection edge-function workflow-timeout-checker POST Service-role (cron) Workflow Timeout Checker (Watchdog) edge-function workflow-version-compare POST JWT (gateway) Workflow Version Compare # events — domain event catalog Source: https://docs.encoreos.io/api/events Flat KnownEventName domain events reconciled against the fw_workflow_events DB registry and publishEvent call sites, for AI/RAG retrieval. Generated. # Domain Event Catalog ```text theme={null} event.appointment_cancelled other reg pub event.appointment_checked_in other reg - event.appointment_completed other reg - event.appointment_no_show other reg pub event.appointment_scheduled other reg pub event.audit_finding_created other reg - event.bank_balance_updated other reg pub event.capitation_payment_received other - pub event.cash_position_updated other reg pub event.cds_alert_triggered other reg pub event.cds_rule_overridden other reg pub event.ce_contact_created ce reg - event.ce_crisis_alert_created ce reg pub event.ce_hubspot_backfill_completed ce reg - event.ce_hubspot_connected ce reg - event.ce_hubspot_connection_needs_reauth ce reg - event.ce_hubspot_sync_dead_letter ce reg - event.ce_lead_assigned ce reg - event.ce_lead_converted ce reg pub event.ce_lead_converted_to_patient ce reg pub event.ce_lead_converted_to_resident ce reg pub event.ce_lead_reassigned ce reg - event.ce_lead_unassigned ce reg - event.ce_lead_waitlisted ce reg pub event.ce_screening_completed ce reg pub event.ce_web_form_submitted ce reg - event.charge_status_changed other reg pub event.cl_allergy_alert_overridden cl reg pub event.cl_allergy_recorded cl reg pub event.cl_allergy_status_changed cl reg pub event.cl_assessment_completed cl reg pub event.cl_care_gap_identified cl - - event.cl_ccda_document_received cl reg - event.cl_ccda_document_sent cl reg - event.cl_diagnosis_confirmed cl reg pub event.cl_fhir_bundle_exported cl reg - event.cl_group_encounters_approved cl reg - event.cl_group_session_documented cl reg - event.cl_incident_reported cl reg - event.cl_intake_finalized cl reg pub event.cl_lab_order_created cl reg pub event.cl_lab_result_received cl reg - event.cl_lab_result_reviewed cl reg pub event.cl_loc_assessment_completed cl reg pub event.cl_loc_override_recorded cl reg pub event.cl_loc_recommendation_changed cl reg pub event.cl_marketplace_bundle_imported cl reg - event.cl_medication_synced cl - - event.cl_moud_adherence_risk cl reg - event.cl_moud_monitoring_overdue cl reg - event.cl_nka_confirmed cl reg pub event.cl_outcome_assessment_recorded cl - - event.cl_outcome_measure_recorded cl reg - event.cl_pathway_milestone_completed cl reg - event.cl_pathway_milestone_overdue cl reg - event.cl_pathway_variance_created cl reg - event.cl_pdmp_query_completed cl reg - event.cl_problem_list_updated cl reg pub event.cl_quality_measure_period_calculated cl reg - event.cl_restraint_event_documented cl reg - event.cl_risk_screening_high_risk cl reg pub event.cl_safety_plan_activated cl reg - event.cl_safety_plan_signed cl reg - event.cl_sdoh_screening_completed cl reg - event.cl_tefca_exchange_blocked cl reg - event.cl_tefca_exchange_completed cl reg - event.cl_tefca_query_submitted cl reg - event.cl_telehealth_consent_captured cl reg - event.cl_telehealth_consent_expiring cl reg - event.cl_telehealth_consent_revoked cl reg - event.cl_telehealth_session_safety_completed cl reg - event.cl_virtual_group_concluded cl reg - event.cl_virtual_group_started cl reg - event.claim_status_changed other reg pub event.claim_submitted other reg pub event.clearinghouse_batch_error other reg - event.clearinghouse_batch_submitted other reg - event.clinical_note_finalized other reg pub event.compensation_cost_allocated other - pub event.credit_limit_approaching other reg pub event.encounter_completed other reg pub event.fa_budget_approved fa reg - event.fa_close_period_approved fa reg - event.fa_close_period_completed fa reg pub event.fa_close_period_started fa reg - event.fa_close_task_assigned fa reg pub event.fa_close_task_completed fa reg - event.fa_expense_report_approved fa reg pub event.fa_expense_report_rejected fa reg pub event.fa_expense_report_submitted fa reg pub event.fa_idc_allocated fa reg - event.fa_idc_rate_calculated fa reg - event.fa_invoice_created fa reg - event.fa_invoice_finalized fa reg - event.fa_invoice_paid fa reg - event.fa_reconciliation_completed fa reg pub event.fa_reimbursement_processed fa reg pub event.fa_revenue_contract_signed fa reg - event.fw_event_deprecated fw reg pub event.fw_event_schema_updated fw reg - event.fw_external_form_submitted fw reg - event.fw_form_submitted fw reg - event.gr_coi_cycle_launched gr reg - event.gr_incident_created gr reg - event.gr_whistleblower_report_submitted gr reg - event.hr_benefits_enrollment_approved hr reg - event.hr_benefits_enrollment_terminated hr reg - event.hr_contractor_contract_renewal_due hr reg - event.hr_contractor_created hr reg - event.hr_contractor_credential_expiring hr reg - event.hr_credential_expired hr reg - event.hr_credential_verified hr reg - event.hr_disciplinary_action_termination hr reg - event.hr_employee_hired hr reg pub event.hr_employee_terminated hr reg - event.hr_employee_transferred hr reg pub event.hr_everify_case_created hr reg - event.hr_everify_deadline_approaching hr reg - event.hr_everify_status_changed hr reg - event.hr_everify_tnc_opened hr reg - event.hr_final_paycheck_status_changed hr reg - event.hr_fingerprint_clearance_expiration_warning hr reg - event.hr_fingerprint_clearance_status_changed hr reg pub event.hr_incident_reported hr reg pub event.hr_internal_application_advanced hr reg pub event.hr_internal_application_submitted hr reg pub event.hr_interview_scorecard_assigned hr reg - event.hr_interview_scorecard_submitted hr reg - event.hr_leave_request_approved hr reg - event.hr_leave_request_submitted hr reg - event.hr_offboarding_started hr reg - event.hr_offboarding_task_created hr reg - event.hr_onboarding_started hr reg - event.hr_onboarding_task_created hr reg - event.hr_pip_terminated hr reg - event.hr_timesheet_exception_created hr reg - event.incident_created other reg - event.incident_resolved other reg - event.investment_maturity_approaching other reg pub event.it_account_deactivated it reg - event.it_account_provisioned it reg - event.it_asset_assigned it reg - event.it_asset_disposed it reg - event.it_asset_purchased it reg - event.it_contract_expiring it reg - event.it_license_expiring it reg - event.it_license_renewed it reg - event.it_provisioning_completed it reg - event.it_provisioning_started it reg - event.it_purchase_request_approved it reg - event.it_purchase_request_submitted it reg - event.it_ticket_created it reg - event.it_ticket_status_changed it reg - event.medication_reconciliation_completed other reg pub event.merit_increase_approved other - pub event.patient_registered other reg pub event.payment_posted other reg pub event.payment_processed other reg pub event.peer_encounter_finalized other reg pub event.pf_agent_run_budget_exceeded pf - - event.pf_agent_run_checkpointed pf - - event.pf_agent_run_completed pf - - event.pf_agent_run_failed pf - - event.pf_agent_run_started pf - - event.pf_analytics_dashboard_scheduled pf - - event.pf_analytics_dataset_registered pf - - event.pf_analytics_embed_token_minted pf - - event.pf_analytics_embed_token_revoked pf - - event.pf_analytics_mart_refreshed pf - - event.pf_analytics_report_delivered pf - - event.pf_compliance_drift_detected pf reg - event.pf_compliance_evidence_ready pf reg - event.pf_cowork_agent_joined pf - - event.pf_cowork_agent_left pf - - event.pf_cowork_thread_created pf - - event.pf_edge_api_deprecated_version_used pf reg - event.pf_sla_breached pf reg - event.pf_sla_completed pf reg - event.pf_sla_warning_triggered pf reg - event.pm_eligibility_verified pm reg pub event.pm_group_session_cancelled pm reg pub event.pm_group_session_scheduled pm reg pub event.pm_message_sent pm reg - event.pm_time_off_approved pm reg pub event.pm_time_off_denied pm reg pub event.pm_time_off_requested pm reg pub event.pm_urgent_message_sent pm reg - event.prescription_sent other reg - event.procedure_gap_identified other reg pub event.process_discovered other reg - event.process_health_changed other reg - event.referral_accepted other reg - event.regulatory_report_submitted other reg pub event.rh_bed_assigned rh reg - event.rh_bed_released rh reg - event.rh_invoice_creation_requested rh reg - event.rh_phase_advanced rh reg - event.rh_resident_admitted rh reg - event.rh_resident_discharged rh reg - event.skill_gap_identified other - pub event.telehealth_session_completed other reg - event.telehealth_session_started other reg - event.treatment_plan_event_triggered other reg - event.write_off_approved other reg pub ``` ## divergence ```text theme={null} typed_not_registered capitation_payment_received typed_not_registered cl_care_gap_identified typed_not_registered cl_medication_synced typed_not_registered cl_outcome_assessment_recorded typed_not_registered compensation_cost_allocated typed_not_registered merit_increase_approved typed_not_registered pf_agent_run_budget_exceeded typed_not_registered pf_agent_run_checkpointed typed_not_registered pf_agent_run_completed typed_not_registered pf_agent_run_failed typed_not_registered pf_agent_run_started typed_not_registered pf_analytics_dashboard_scheduled typed_not_registered pf_analytics_dataset_registered typed_not_registered pf_analytics_embed_token_minted typed_not_registered pf_analytics_embed_token_revoked typed_not_registered pf_analytics_mart_refreshed typed_not_registered pf_analytics_report_delivered typed_not_registered pf_cowork_agent_joined typed_not_registered pf_cowork_agent_left typed_not_registered pf_cowork_thread_created typed_not_registered skill_gap_identified published_not_registered capitation_payment_received published_not_registered compensation_cost_allocated published_not_registered merit_increase_approved published_not_registered skill_gap_identified ``` # fa — Public API surface Source: https://docs.encoreos.io/api/fa Per-symbol API documentation for the fa area, generated from TSDoc blocks. Refresh with `npm run docs:api:generate`. # fa — Public API surface ## Types & interfaces ### interface AgedBucket * file: src/cores/fa/hooks/useAgedUnresolvedItems.ts:15 * kind: interface * core: fa * spec: FA-06 * summary: An age bucket of unresolved reconciliation items defined by a day-range and holding the matching items and their total. * score: 5 ### interface AgedUnresolvedItem * file: src/cores/fa/hooks/useAgedUnresolvedItems.ts:33 * kind: interface * core: fa * spec: FA-06 * summary: An unmatched bank-statement item flagged as aged, carrying its amount, transaction type, source statement, and computed age in days. * score: 5 ### interface AgingBucket * file: src/cores/fa/hooks/useARAgingReport.ts:48 * kind: interface * core: fa * spec: FA-05 * summary: A single AR aging bucket holding its label, the invoices that fall in it, and the bucket total and count. * score: 5 ### interface AgingBucketSummary * file: src/cores/fa/hooks/useArAgingBuckets.ts:24 * kind: interface * core: fa * spec: FA-24 * summary: A summarized AR aging bucket carrying its label, item count, total, and the minimum days-overdue that defines it. * score: 5 ### type AgingReportRow * file: src/cores/fa/utils/auditExportCsv.ts:83 * kind: type * core: fa * spec: (none) * summary: Unposted entries report row shape (from useUnpostedEntriesReport). * score: 2 ### interface AICategorizationSuggestion * file: src/cores/fa/hooks/useAITransactionCategorization.ts:29 * kind: interface * core: fa * spec: FA-28 * summary: An AI-suggested GL categorization for a bank transaction, proposing debit/credit accounts with a confidence score and reasoning text. * score: 5 ### interface AIMatchSuggestion * file: src/cores/fa/hooks/useAIMatchSuggestions.ts:28 * kind: interface * core: fa * spec: FA-28 * summary: An AI-generated reconciliation match suggestion linking a bank statement line to a candidate transaction with a confidence score. * score: 5 ### interface AlertThreshold * file: src/cores/fa/hooks/useAlertThresholds.ts:24 * kind: interface * core: fa * spec: FA-16 * summary: A configurable financial-metric alert threshold with comparison operator, severity, notification roles, and last-triggered/checked tracking. * score: 5 ### interface AmountRange * file: src/cores/fa/components/TransactionFilters.tsx:45 * kind: interface * core: fa * spec: none * summary: Numeric amount-range filter with optional minimum and maximum bounds used to scope transaction queries. * score: 5 ### interface AnomalyFlag * file: src/cores/fa/components/AnomalyBadge.tsx:23 * kind: interface * core: fa * spec: (none) * summary: A single anomaly flag written to fa\_bank\_statement\_lines.anomaly\_flags by theai-detect-anomalies edge function. * score: 2 ### type AnomalyFlagType * file: src/cores/fa/components/AnomalyBadge.tsx:17 * kind: type * core: fa * spec: (none) * summary: Anomaly categories emitted by the ai-detect-anomalies edge function(mirrors the AnomalyFlag union in supabase/functions/ai-detect-anomalies). * score: 2 ### interface ApplyTemplateResult * file: src/cores/fa/hooks/useApplyCoATemplate.ts:44 * kind: interface * core: fa * spec: FA-01 * summary: Outcome counts from applying a chart-of-accounts template: accounts, funds, and programs created versus skipped, plus resolved parent-account links. * score: 5 ### interface ApprovalRequestParams * file: src/cores/fa/wizards/recurring-invoice-setup/lib/buildRecurringInvoicePayload.ts:48 * kind: interface * core: fa * spec: (none) * summary: Shape consumed by from .The platform hook fills in , , ,, , and any FW-54 routing fields. The wizard onlysupplies the chain to submit against and the source/payload metadata. * score: 2 ### interface ArAgingBucketsResult * file: src/cores/fa/hooks/useArAgingBuckets.ts:41 * kind: interface * core: fa * spec: FA-24 * summary: The four standard AR aging bucket summaries (current, 30/60/90+ days) plus the grand total across all buckets. * score: 5 ### interface ARAgingData * file: src/cores/fa/hooks/useARAgingReport.ts:65 * kind: interface * core: fa * spec: FA-05 * summary: Computed AR aging report: aging buckets, total outstanding and count, days-sales-outstanding, and a breakdown by customer type. * score: 5 ### interface ARAgingFilters * file: src/cores/fa/hooks/useARAgingReport.ts:32 * kind: interface * core: fa * spec: FA-05 * summary: Filter inputs for the AR aging report, scoping by customer, customer type, and an as-of date. * score: 5 ### interface ARPaymentApplicationWithDetails * file: src/cores/fa/hooks/useARPaymentApplications.ts:19 * kind: interface * core: fa * spec: FA-05 * summary: An AR payment application joined with a summary of the invoice it was applied to, including the invoice balance due. * score: 5 ### type Asc958Category * file: src/cores/fa/utils/asc958Mapping.ts:12 * kind: type * core: fa * spec: (none) * summary: ASC 958 Net Asset Classification MappingMaps internal values from the table toASC 958 restriction categories used in nonprofit financial statements.ASC 958 defines two categories:- "Without Donor Restrictions" (formerly "Unrestricted")- "With Donor Restrictions" (formerly "Temporarily" / "Permanently Restricted") * score: 2 ### type AssetFormValues * file: src/cores/fa/components/FixedAssetForm.tsx:61 * kind: type * core: fa * spec: FA-11 * summary: Validated fixed-asset form payload inferred from the Zod schema, capturing acquisition, depreciation, and disposal inputs. * score: 5 ### interface AuditLogFilters * file: src/cores/fa/hooks/useAuditLogViewerData.ts:24 * kind: interface * core: fa * spec: FA-25 * summary: Filter inputs for the financial audit-log viewer, scoping by date range, user, entry number, and status. * score: 5 ### interface AuditLogRow * file: src/cores/fa/hooks/useAuditLogViewerData.ts:42 * kind: interface * core: fa * spec: FA-25 * summary: A row in the financial audit-log viewer joining a journal entry with its created-by and updated-by profile names. * score: 5 ### interface BadDebtReserve * file: src/cores/fa/hooks/useBadDebtReserves.ts:19 * kind: interface * core: fa * spec: FA-05 * summary: A recorded bad-debt reserve entry with its method, amount, calculation detail, and the journal entry that posted it. * score: 5 ### interface BadDebtSummary * file: src/cores/fa/hooks/useBadDebtReserves.ts:45 * kind: interface * core: fa * spec: FA-05 * summary: Summary metrics for bad-debt reserves: current reserve balance, year-to-date write-offs, utilization, and last reserve date. * score: 5 ### interface BalanceSheetAccount * file: src/cores/fa/hooks/useBalanceSheet.ts:28 * kind: interface * core: fa * spec: FA-23 * summary: A balance-sheet line for one account, carrying its type/subtype, hierarchy level and parent, fund type, and ending balance. * score: 5 ### interface BalanceTerm * file: src/cores/fa/hooks/useBalanceTerminology.ts:15 * kind: interface * core: fa * spec: (none) * score: 1 ### interface BankAccount * file: src/cores/fa/hooks/useBankAccounts.ts:49 * kind: interface * core: fa * spec: FA-06 * summary: An organization bank account record with masked account number, type, linked GL account, and standard audit columns. * score: 5 ### type BankAccountFormValues * file: src/cores/fa/components/BankAccountForm.tsx:45 * kind: type * core: fa * spec: FA-06 * summary: Validated bank-account form payload inferred from the Zod schema, covering account name, type, masked number, and the linked GL account. * score: 5 ### interface BankAccountWithGL * file: src/cores/fa/hooks/useBankAccounts.ts:77 * kind: interface * core: fa * spec: FA-06 * summary: A bank account joined with its GL account summary and the Plaid feed-integration fields; the Plaid access token is intentionally omitted for security. * score: 5 ### interface BankReconciliation * file: src/cores/fa/hooks/useBankReconciliations.ts:47 * kind: interface * core: fa * spec: FA-06 * summary: A bank reconciliation record reconciling a statement against the GL, tracking cleared balance, outstanding checks, deposits in transit, and the balanced difference. * score: 5 ### interface BankReconciliationWithRelations * file: src/cores/fa/hooks/useBankReconciliations.ts:83 * kind: interface * core: fa * spec: FA-06 * summary: A bank reconciliation joined with its related bank account and source statement. * score: 5 ### interface BankStatement * file: src/cores/fa/hooks/useBankStatements.ts:55 * kind: interface * core: fa * spec: FA-06 * summary: An imported bank statement covering a period, with beginning/ending balances, debit/credit totals, and import provenance. * score: 5 ### interface BankStatementLine * file: src/cores/fa/hooks/useBankStatements.ts:29 * kind: interface * core: fa * spec: FA-06 * summary: A single imported bank-statement transaction line with amount, debit/credit type, reference fields, and its matched-to-GL status. * score: 5 ### interface BankStatementWithLines * file: src/cores/fa/hooks/useBankStatements.ts:84 * kind: interface * core: fa * spec: FA-06 * summary: A bank statement joined with its transaction lines and a summary of the owning bank account. * score: 5 ### interface BankTransactionFilters * file: src/cores/fa/hooks/useBankTransactions.ts:41 * kind: interface * core: fa * spec: FA-29 * summary: Filter inputs for the bank-transactions view, scoping by tab, date range, and account. * score: 5 ### type BankTransactionTab * file: src/cores/fa/hooks/useBankTransactions.ts:29 * kind: type * core: fa * spec: FA-29 * summary: Which bank-transaction tab is active, separating pending feed items from posted transactions. * score: 5 ### interface BatchGLPostItem * file: src/cores/fa/hooks/useBatchReimbursement.ts:73 * kind: interface * core: fa * spec: FA-12 * summary: One reimbursement payment queued for GL posting, naming the period and the AP, cash, and fund coding to use. * score: 5 ### interface BatchGLPostResult * file: src/cores/fa/hooks/useBatchReimbursement.ts:91 * kind: interface * core: fa * spec: FA-12 * summary: Per-payment outcome of posting reimbursements to the GL, reporting success with the journal entry id or an error. * score: 5 ### interface BatchReimbursementConfig * file: src/cores/fa/hooks/useBatchReimbursement.ts:36 * kind: interface * core: fa * spec: FA-12 * summary: Configuration for a batch reimbursement run, including payment date, default method, optional bank account, and whether to honor employee payment preferences. * score: 5 ### interface BatchReimbursementItem * file: src/cores/fa/hooks/useBatchReimbursement.ts:19 * kind: interface * core: fa * spec: FA-12 * summary: One expense report queued for batch reimbursement, naming the report, employee, amount, and optional payment method. * score: 5 ### interface BatchReimbursementResult * file: src/cores/fa/hooks/useBatchReimbursement.ts:55 * kind: interface * core: fa * spec: FA-12 * summary: Per-report outcome of a batch reimbursement, reporting success with the created payment number or an error message. * score: 5 ### interface BillLine * file: src/cores/fa/components/BillLineEditor.tsx:27 * kind: interface * core: fa * spec: none * summary: A single editable vendor-bill line carrying GL account, dimensional coding (fund/department/program), amount, and optional purchase-order match fields. * score: 5 ### interface BillLineWithAccount * file: src/cores/fa/hooks/useBillLines.ts:22 * kind: interface * core: fa * spec: FA-03 * summary: A vendor-bill line joined with summaries of its GL account and optional fund, department, and program dimensions. * score: 5 ### interface BudgetScenarioFilters * file: src/cores/fa/hooks/useBudgetScenarioList.ts:21 * kind: interface * core: fa * spec: FA-08 * summary: Filter inputs for the budget-scenario list, scoping by status, scenario type, and base budget. * score: 5 ### type BudgetScenarioFormValues * file: src/cores/fa/components/BudgetScenarioForm.tsx:59 * kind: type * core: fa * spec: FA-08 * summary: Validated budget-scenario form payload inferred from the Zod schema, used to create or edit what-if planning scenarios. * score: 5 ### interface BudgetSuggestionAccount * file: src/cores/fa/hooks/useSuggestBudgetLines.ts:32 * kind: interface * core: fa * spec: (none) * summary: One account row fed to the model (chart of accounts + its prior-period actual). * score: 2 ### type BudgetTemplateFormValues * file: src/cores/fa/components/BudgetTemplateForm.tsx:38 * kind: type * core: fa * spec: FA-08 * summary: Validated budget-template form payload inferred from the Zod schema, used to define reusable budget structures. * score: 5 ### interface BudgetVarianceCsvRow * file: src/cores/fa/utils/exportReportCsv.ts:30 * kind: interface * core: fa * spec: (none) * summary: Budget vs Actual variance data row for CSV * score: 2 ### interface CashFlowForecastCsvRow * file: src/cores/fa/utils/exportReportCsv.ts:76 * kind: interface * core: fa * spec: (none) * summary: Cash flow forecast row for CSV * score: 2 ### type CloseStatus * file: src/cores/fa/components/CloseStatusBadge.tsx:23 * kind: type * core: fa * spec: FA-19 * summary: Lifecycle status of a financial-close period, progressing from open through approval to closed. * score: 5 ### type CloseTaskStatus * file: src/cores/fa/components/CloseTaskStatusBadge.tsx:21 * kind: type * core: fa * spec: FA-19 * summary: Execution status of an individual financial-close checklist task, including skipped and blocked terminal states. * score: 5 ### interface CoATemplate * file: src/cores/fa/data/coaTemplates.ts:102 * kind: interface * core: fa * spec: FA-01 * summary: A complete chart-of-accounts template bundling accounts and optional default funds and programs, discriminated as built-in or custom (DB-backed) by its kind. * score: 5 ### interface CoATemplateAccount * file: src/cores/fa/data/coaTemplates.ts:39 * kind: interface * core: fa * spec: FA-01 * summary: A chart-of-accounts template account definition, including type/subtype, normal balance, and an optional same-template parent reference resolved on apply. * score: 5 ### interface CoATemplateFund * file: src/cores/fa/data/coaTemplates.ts:65 * kind: interface * core: fa * spec: FA-01 * summary: A fund definition seeded alongside a chart-of-accounts template, identified by fund number, name, and fund type. * score: 5 ### type CoATemplateFundType * file: src/cores/fa/data/coaTemplates.ts:21 * kind: type * core: fa * spec: (none) * summary: Fund types supported by the table ( enum).Source: baseline migration enum values. * score: 2 ### interface CoATemplateProgram * file: src/cores/fa/data/coaTemplates.ts:82 * kind: interface * core: fa * spec: FA-01 * summary: A program definition seeded alongside a chart-of-accounts template; its code maps to fa\_programs.code and is unique per organization. * score: 5 ### interface CollectionActivity * file: src/cores/fa/hooks/useCollectionWorkflow\.ts:20 * kind: interface * core: fa * spec: FA-24 * summary: A logged collections activity against an invoice (notice, call, promise-to-pay, escalation, write-off, payment), with date and next-action follow-up. * score: 5 ### interface CollectionQueueFilters * file: src/cores/fa/hooks/useCollectionWorkflow\.ts:77 * kind: interface * core: fa * spec: FA-24 * summary: Filter inputs for the collections workflow queue, scoping by minimum days overdue, customer, and search text. * score: 5 ### interface CollectionQueueItem * file: src/cores/fa/hooks/useCollectionWorkflow\.ts:52 * kind: interface * core: fa * spec: FA-24 * summary: An overdue invoice in the collections queue with customer, balance due, days overdue, in-collection flag, and most-recent activity. * score: 5 ### interface CollectionQueueListFilters * file: src/cores/fa/hooks/useCollectionQueueList.ts:21 * kind: interface * core: fa * spec: FA-24 * summary: Filter inputs for the collections queue list, scoping by status, assignee, unassigned-only, and free-text search. * score: 5 ### interface CollectionStats * file: src/cores/fa/hooks/useCollectionWorkflow\.ts:93 * kind: interface * core: fa * spec: FA-24 * summary: Headline collections metrics: count and outstanding total in collection, amount over 90 days, and activities logged this week. * score: 5 ### interface ConnectionFormData * file: src/cores/fa/components/BankAccountForm.tsx:48 * kind: interface * core: fa * spec: (none) * summary: Pre-fill data from bank connection (e.g. Plaid) * score: 2 ### interface ContractProgressRow * file: src/cores/fa/hooks/useRevenueReports.ts:187 * kind: interface * core: fa * spec: (none) * summary: One row per revenue contract showing recognition progress. * score: 2 ### interface CreateRevenueScheduleInput * file: src/cores/fa/hooks/useRevenueSchedules.ts:16 * kind: interface * core: fa * spec: (none) * summary: Input contract for the atomic RPC. * score: 2 ### interface CreditApplication * file: src/cores/fa/hooks/useCreditApplications.ts:15 * kind: interface * core: fa * spec: FA-05 * summary: A record applying a credit memo to an invoice, capturing the applied amount, application date, and notes. * score: 5 ### interface CreditApplicationWithInvoice * file: src/cores/fa/hooks/useCreditApplications.ts:37 * kind: interface * core: fa * spec: FA-05 * summary: A credit-memo application joined with a summary of the invoice it was applied to, including the invoice balance due. * score: 5 ### interface CreditMemo * file: src/cores/fa/hooks/useCreditMemos.ts:20 * kind: interface * core: fa * spec: FA-05 * summary: An AR credit memo with type, original-invoice link, applied/unapplied amounts, lifecycle status, and the posting journal entry. * score: 5 ### interface CreditMemoFilters * file: src/cores/fa/hooks/useCreditMemos.ts:96 * kind: interface * core: fa * spec: FA-05 * summary: Filter inputs for the credit-memo list, scoping by status, customer, credit type, and date range. * score: 5 ### interface CreditMemoLine * file: src/cores/fa/hooks/useCreditMemos.ts:73 * kind: interface * core: fa * spec: FA-05 * summary: A single credit-memo line with description, quantity, unit price, line amount, and an optional GL account summary. * score: 5 ### interface CreditMemoWithDetails * file: src/cores/fa/hooks/useCreditMemos.ts:54 * kind: interface * core: fa * spec: FA-05 * summary: A credit memo joined with its customer summary and line items. * score: 5 ### interface CustomerPaymentFilters * file: src/cores/fa/hooks/useCustomerPayments.ts:39 * kind: interface * core: fa * spec: FA-05 * summary: Filter inputs for the customer-payments list, scoping by application status, customer, and date range. * score: 5 ### interface CustomerPaymentWithDetails * file: src/cores/fa/hooks/useCustomerPayments.ts:21 * kind: interface * core: fa * spec: FA-05 * summary: A customer payment joined with its customer name and number. * score: 5 ### interface DateRange * file: src/cores/fa/components/TransactionFilters.tsx:30 * kind: interface * core: fa * spec: none * summary: Inclusive date-range filter with optional start and end bounds used to scope transaction queries. * score: 5 ### interface DeferredBalanceSummary * file: src/cores/fa/hooks/useRevenueReports.ts:101 * kind: interface * core: fa * spec: (none) * summary: Single-row balance summary across all active deferred revenue records. * score: 2 ### interface DepositInTransit * file: src/cores/fa/hooks/useDepositsInTransitReport.ts:16 * kind: interface * core: fa * spec: FA-06 * summary: A deposit recorded in the GL but not yet cleared by the bank, with its amount and computed days in transit. * score: 5 ### interface DisconnectResult * file: src/cores/fa/hooks/useBankDisconnect.ts:24 * kind: interface * core: fa * spec: FA-20 * summary: Result of disconnecting a bank feed integration, reporting success and an optional human-readable message. * score: 5 ### interface DuplicateBillInput * file: src/cores/fa/lib/billDuplicates.ts:16 * kind: interface * core: fa * spec: (none) * summary: Narrowed shape of an row needed for duplicate detection. * score: 2 ### interface DuplicateCheckBill * file: src/cores/fa/hooks/useBillDuplicates.ts:6 * kind: interface * core: fa * spec: (none) * summary: The fields a bill must expose for duplicate detection. * score: 2 ### interface ExpenseApprovalWithDetails * file: src/cores/fa/hooks/useExpenseApprovals.ts:23 * kind: interface * core: fa * spec: FA-12 * summary: An expense-report approval joined with the approver's profile and a summary of the report under review. * score: 5 ### type ExpenseCategory * file: src/cores/fa/components/ExpenseCategorySelect.tsx:37 * kind: type * core: fa * spec: FA-12 * summary: Union of selectable expense-category values derived from the EXPENSE\_CATEGORIES constant list. * score: 5 ### interface ExpenseCategoryMappingWithAccount * file: src/cores/fa/hooks/useExpenseCategoryMappings.ts:22 * kind: interface * core: fa * spec: FA-12 * summary: An expense-category-to-GL mapping joined with its GL account plus optional default department and fund. * score: 5 ### interface ExpenseDashboardStats * file: src/cores/fa/hooks/useExpenseDashboardStats.ts:21 * kind: interface * core: fa * spec: FA-12 * summary: Headline expense-dashboard metrics: pending report and approval counts, YTD reimbursements, pending amount, and a per-category breakdown. * score: 5 ### interface ExpenseLine * file: src/cores/fa/components/ExpenseLineRow\.tsx:26 * kind: interface * core: fa * spec: FA-12 * summary: A single editable expense-report line with category, amount, dimensional coding, per-diem/mileage inputs, and receipt/PHI/policy-violation flags. * score: 5 ### interface ExpensePolicyRuleWizardDialogProps * file: src/cores/fa/wizards/expense-policy-rule/ExpensePolicyRuleWizardDialog.tsx:28 * kind: interface * core: fa * spec: (none) * summary: Props for the guided FA-27 expense policy rule dialog ( + PF-41 steps). * score: 2 ### interface ExpenseReportForApproval * file: src/cores/fa/components/ExpenseApprovalDialog.tsx:29 * kind: interface * core: fa * spec: FA-12 * summary: Minimal expense-report projection shown in the approval dialog, with the report total and the submitting employee's name and number. * score: 5 ### interface ExpenseReportFormProps * file: src/cores/fa/components/ExpenseReportForm.tsx:54 * kind: interface * core: fa * spec: FA-12 * summary: Props for the expense-report editor, supplying reference lists, initial data, and save/submit/cancel callbacks in create or edit mode. * score: 5 ### interface ExpenseReportRow * file: src/cores/fa/components/ExpenseReportsTable.tsx:25 * kind: interface * core: fa * spec: FA-12 * summary: Row projection for the expense-reports list table, including period dates, total, status, and the submitting employee summary. * score: 5 ### type ExpenseReportStatus * file: src/cores/fa/components/ExpenseReportStatusBadge.tsx:18 * kind: type * core: fa * spec: FA-12 * summary: Lifecycle status of an expense report from draft through approval to paid or partially paid. * score: 5 ### interface FADepartment * file: src/cores/fa/hooks/useDepartments.ts:19 * kind: interface * core: fa * spec: FA-15 * summary: A finance department/cost-center record with hierarchy, clinical flag, cost-allocation method, and standard audit columns. * score: 5 ### type FADepartmentInsert * file: src/cores/fa/hooks/useDepartments.ts:50 * kind: type * core: fa * spec: FA-15 * summary: Insert payload for a finance department, omitting the server-generated id and timestamp columns. * score: 5 ### type FADepartmentUpdate * file: src/cores/fa/hooks/useDepartments.ts:61 * kind: type * core: fa * spec: FA-15 * summary: Partial update payload for a finance department, allowing any insertable field to be changed. * score: 5 ### interface FAEntity * file: src/cores/fa/hooks/useFAEntities.ts:12 * kind: interface * core: fa * spec: (none) * summary: FA-09a: Legal entity master record (multi-entity consolidation foundation).Each organization always has at least one PRIMARY entity (seeded by trigger). * score: 2 ### type FilterValue * file: src/cores/fa/schemas/report-filters.schema.ts:32 * kind: type * core: fa * spec: (none) * summary: Inferred type for filter values * score: 2 ### interface FiscalPeriodSlim * file: src/cores/fa/lib/revenueScheduleAllocation.ts:10 * kind: interface * core: fa * spec: (none) * summary: FA-UX-15: Pure allocation helpers for revenue schedules.Straight-line allocation of a total revenue amount across the fiscalperiods that intersect a recognition window. Output rounding is appliedto 2 decimals; the residual penny (if any) is added to the last periodso the sum exactly matches the input total. * score: 2 ### interface ForecastAssumptions * file: src/cores/fa/components/ForecastAssumptionsDialog.tsx:32 * kind: interface * core: fa * spec: FA-14 * summary: Cash-flow forecast assumptions: horizon in months, inflow/outflow growth rates, the historical-vs-budget blend weight, and per-period overrides. * score: 5 ### interface ForecastDataCsvRow * file: src/cores/fa/utils/exportReportCsv.ts:107 * kind: interface * core: fa * spec: (none) * summary: Financial forecast row for CSV * score: 2 ### interface ForecastLineInput * file: src/cores/fa/components/ForecastLineEditorEditable.tsx:32 * kind: interface * core: fa * spec: FA-08 * summary: An editable forecast line tying a GL account and dimensional coding to a forecast amount for a single period range. * score: 5 ### interface GenerateReportNarrativeParams * file: src/cores/fa/hooks/useGenerateReportNarrative.ts:18 * kind: interface * core: fa * spec: (none) * summary: FA Lane Q: AI executive-summary narratives for financial reports.Wires the existing edge function (PF-111 unified AIgateway, standard lane — FA financial data is org-confidential but not PHI) soa user can generate a plain-language narrative of a financial statement.The edge function is stateless over the data the caller supplies (which theclient already fetched under RLS) and does no DB read, so no organization\_idis required in the body. Human-in-the-loop: the narrative is a draft forreview, never auto-published. * score: 2 ### type InterFundTransferValues * file: src/cores/fa/components/InterFundTransferForm.tsx:47 * kind: type * core: fa * spec: FA-02 * summary: Validated inter-fund transfer form payload inferred from the Zod schema, used to move balances between funds with balanced GL postings. * score: 5 ### interface InvoiceLine * file: src/cores/fa/components/InvoiceLineEditor.tsx:23 * kind: interface * core: fa * spec: FA-05 * summary: A single editable customer-invoice line with description, revenue account, quantity, unit price, and computed line amount. * score: 5 ### type InvoiceLineFormData * file: src/cores/fa/schemas/invoice-line.schema.ts:39 * kind: type * core: fa * spec: (none) * summary: Inferred type for a single invoice line * score: 2 ### type InvoiceLinesFormData * file: src/cores/fa/schemas/invoice-line.schema.ts:44 * kind: type * core: fa * spec: (none) * summary: Inferred type for invoice lines array * score: 2 ### interface JeImportGroup * file: src/cores/fa/utils/jeImportValidation.ts:9 * kind: interface * core: fa * spec: (none) * summary: A validated, grouped journal entry ready for persistence. * score: 2 ### interface JeImportRowError * file: src/cores/fa/utils/jeImportValidation.ts:27 * kind: interface * core: fa * spec: (none) * summary: Row-level validation error. * score: 1 ### interface JeImportValidationResult * file: src/cores/fa/utils/jeImportValidation.ts:35 * kind: interface * core: fa * spec: (none) * summary: Result of grouping and validating import rows. * score: 2 ### interface JournalLine * file: src/cores/fa/components/JournalLineEditor.tsx:21 * kind: interface * core: fa * spec: FA-02 * summary: A single editable journal-entry line carrying GL account, dimensional coding, and the debit/credit amounts used to enforce a balanced entry. * score: 5 ### interface KPITrendData * file: src/cores/fa/components/analytics/KPITrendChart.tsx:21 * kind: interface * core: fa * spec: FA-16 * summary: A single KPI time-series point pairing a date with its value plus optional threshold and target reference lines. * score: 5 ### interface OrganizationUser * file: src/cores/fa/wizards/financial-close-setup/hooks/useOrganizationUsers.ts:16 * kind: interface * core: fa * spec: (none) * summary: User data for assignment dropdowns * score: 2 ### type PaymentPlanFormValues * file: src/cores/fa/components/PaymentPlanForm.tsx:46 * kind: type * core: fa * spec: FA-05 * summary: Validated AR payment-plan form payload inferred from the Zod schema, used to schedule installment terms against an outstanding balance. * score: 5 ### interface PendingBudget * file: src/cores/fa/hooks/useBudgetApprovals.ts:32 * kind: interface * core: fa * spec: FA-08 * summary: A budget version awaiting approval, with its fiscal year code, submission metadata, and the submitter's name. * score: 5 ### interface PendingExpenseReport * file: src/cores/fa/components/BatchReimbursementDialog.tsx:38 * kind: interface * core: fa * spec: FA-12 * summary: Approved-but-unpaid expense report awaiting batch reimbursement, with its totals and the submitting employee summary. * score: 5 ### interface PlaidAccountMappingDialogProps * file: src/cores/fa/components/PlaidAccountMappingDialog.tsx:44 * kind: interface * core: fa * spec: FA-20 * summary: Props for the dialog that maps newly linked Plaid accounts to internal bank accounts after a successful Plaid Link flow. * score: 5 ### interface POLine * file: src/cores/fa/components/POLineEditor.tsx:23 * kind: interface * core: fa * spec: FA-04 * summary: A single editable purchase-order line with GL account, dimensional coding, quantity, unit price, and unit-of-measure. * score: 5 ### interface PostBankTransactionInput * file: src/cores/fa/hooks/useBankTransactions.ts:156 * kind: interface * core: fa * spec: (none) * summary: Input for posting a single bank transaction. The debit/credit accounts are theline's categorization; if omitted the RPC resolves them from the matched rule orthe AI-suggested accounts (and refuses to post an uncategorized line). * score: 2 ### interface PostExpenseToGLParams * file: src/cores/fa/hooks/useExpenseGLPosting.ts:56 * kind: interface * core: fa * spec: FA-12 * summary: Parameters for posting an approved expense report to the GL, naming the report, period, and the employee-payable AP account. * score: 5 ### interface PostReimbursementToGLParams * file: src/cores/fa/hooks/useExpenseGLPosting.ts:74 * kind: interface * core: fa * spec: FA-12 * summary: Parameters for posting a reimbursement payment to the GL, naming the payment, period, and the AP and cash accounts to clear. * score: 5 ### interface RecognitionByPeriodRow * file: src/cores/fa/hooks/useRevenueReports.ts:16 * kind: interface * core: fa * spec: (none) * summary: One row per fiscal period (or recognition month when no fiscal period is set). * score: 2 ### interface ReconcilePlanInput * file: src/cores/fa/lib/paymentPlanReconciliation.ts:13 * kind: interface * core: fa * spec: (none) * summary: FA-UX-12: Pure tolerance reconciler for payment plan installments.Compares the sum of installment amounts to the recurring invoice totalusing integer minor-unit math (cents) to avoid floating-point drift.Default tolerance is ±\$0.01 (1 minor unit). The org-level override( per FA-05-ENH OQ-1)is wired in by the caller; this module is intentionally pure so it canrun in unit tests with no env / Supabase / React imports. * score: 2 ### interface ReconciliationMatch * file: src/cores/fa/hooks/useReconciliationMatches.ts:8 * kind: interface * core: fa * spec: (none) * summary: A persisted bank-line ↔ GL-line reconciliation pairing (fa\_reconciliation\_matches row). * score: 2 ### interface ReconciliationMatchBankLine * file: src/cores/fa/hooks/useReconciliationMatches.ts:21 * kind: interface * core: fa * spec: (none) * summary: Bank-statement-line fields joined onto a match for display. * score: 2 ### interface ReconciliationMatchGLLine * file: src/cores/fa/hooks/useReconciliationMatches.ts:30 * kind: interface * core: fa * spec: (none) * summary: GL journal-line fields joined onto a match for display. * score: 2 ### interface ReconciliationMatchWithRelations * file: src/cores/fa/hooks/useReconciliationMatches.ts:41 * kind: interface * core: fa * spec: (none) * summary: A reconciliation match with its joined bank and GL line details. * score: 2 ### interface RecurringInvoiceLine * file: src/cores/fa/components/RecurringInvoiceLineEditor.tsx:23 * kind: interface * core: fa * spec: FA-05 * summary: A single editable recurring-invoice template line with description, revenue account, quantity, unit price, and computed line amount. * score: 5 ### type ReportBasis * file: src/cores/fa/components/ReportBasisToggle.tsx:21 * kind: type * core: fa * spec: FA-07 * summary: Accounting basis used when rendering financial reports, toggling between GAAP and tax presentation. * score: 5 ### type ReportFiltersFormData * file: src/cores/fa/schemas/report-filters.schema.ts:37 * kind: type * core: fa * spec: (none) * summary: Inferred type for report filters * score: 2 ### interface RevenueScheduleWizardDraft * file: src/cores/fa/schemas/revenueScheduleWizardSchema.ts:22 * kind: interface * core: fa * spec: (none) * summary: Draft state used while the user moves through the wizard.Field types are permissive (allow empty strings) so partially-filledforms don't throw before the user reaches the final step. * score: 2 ### type RollingForecastFormValues * file: src/cores/fa/components/RollingForecastForm.tsx:72 * kind: type * core: fa * spec: FA-08 * summary: Validated rolling-forecast form payload inferred from the Zod schema, used to configure a continuously re-baselined forecast. * score: 5 ### interface RuleConfirmStepFieldsProps * file: src/cores/fa/wizards/expense-policy-rule/steps/RuleConfirmStep.tsx:15 * kind: interface * core: fa * spec: (none) * summary: Props for the review step field block (also used when embedding the confirm UI outside the default step shell). * score: 2 ### interface ScenarioLineInput * file: src/cores/fa/components/ScenarioBudgetLineEditor.tsx:31 * kind: interface * core: fa * spec: FA-08 * summary: An editable scenario-budget line tying a GL account and dimensional coding to a budget amount for a single period range. * score: 5 ### interface TaskFormItem * file: src/cores/fa/components/ChecklistTaskEditor.tsx:47 * kind: interface * core: fa * spec: FA-19 * summary: Editable close-checklist task row tracking name, type, priority, dependency, and client-side new/modified/deleted dirty flags for batch save. * score: 5 ### interface TermTooltipProps * file: src/cores/fa/components/BalanceTermsTooltips.tsx:37 * kind: interface * core: fa * spec: none * summary: Props for an accounting-term tooltip trigger; only the icon trigger is rendered while the legacy variant, label, and className props are accepted for backward compatibility. * score: 5 ### interface UnmatchedBankLine * file: src/cores/fa/hooks/useReconciliationMatches.ts:47 * kind: interface * core: fa * spec: (none) * summary: A bank statement line not yet matched to a GL line, with AI categorization/anomaly annotations. * score: 2 ### interface UnmatchedGLLine * file: src/cores/fa/hooks/useReconciliationMatches.ts:66 * kind: interface * core: fa * spec: (none) * summary: A GL journal line not yet matched to a bank statement line. * score: 2 ### type UpdatePlaidCategoryMappingPayload * file: src/cores/fa/hooks/usePlaidCategoryMappings.ts:31 * kind: type * core: fa * spec: (none) * summary: Allowed fields when updating a Plaid category mapping (excludes id, organization\_id, created\_\*). * score: 2 ### interface UseBankAccountListOptions * file: src/cores/fa/hooks/useBankAccounts.ts:108 * kind: interface * core: fa * spec: FA-06 * summary: Options for the bank-account list query: the required organization scope and an optional active-only filter. * score: 5 ### interface UseBankDisconnectOptions * file: src/cores/fa/hooks/useBankDisconnect.ts:39 * kind: interface * core: fa * spec: FA-20 * summary: Options for the bank-disconnect mutation, naming the bank account and organization plus success and error callbacks. * score: 5 ### interface UseBankStatementListOptions * file: src/cores/fa/hooks/useBankStatements.ts:104 * kind: interface * core: fa * spec: FA-06 * summary: Optional filters for the bank-statement list query, scoping by bank account and organization. * score: 5 ### interface UseCoATemplatesResult * file: src/cores/fa/hooks/useCoATemplates.ts:29 * kind: interface * core: fa * spec: FA-01 * summary: Chart-of-accounts templates available to the org, split into built-in and custom lists plus a combined all list. * score: 5 ### interface VarianceData * file: src/cores/fa/components/analytics/VarianceChart.tsx:19 * kind: interface * core: fa * spec: FA-16 * summary: A budget-vs-actual variance datum for one category, carrying both the absolute variance and its percentage. * score: 5 ### interface Vendor1099Summary * file: src/cores/fa/hooks/use1099Summary.ts:14 * kind: interface * core: fa * spec: FA-10 * summary: Per-vendor aggregated 1099 reporting summary for a tax year, totaling reportable payments and payment counts with the encrypted tax ID. * score: 5 ### interface WriteOffInput * file: src/cores/fa/hooks/useBadDebtReserves.ts:62 * kind: interface * core: fa * spec: FA-05 * summary: Input for writing off an invoice to bad debt, naming the invoice, amount, expense and AR accounts, and the reason. * score: 5 ## Hooks ### hook useAccessibleTemplates * file: src/cores/fa/hooks/useBudgetTemplateList.ts:88 * kind: hook * core: fa * spec: (none) * summary: Fetch templates available for the current user (respects sharing permissions) * score: 4 ### hook useAccount * file: src/cores/fa/hooks/useAccounts.ts:39 * kind: hook * core: fa * spec: (none) * summary: Hook for managing account. * score: 1 ### hook useAccountBalanceHistory * file: src/cores/fa/hooks/useTrialBalance.ts:52 * kind: hook * core: fa * spec: (none) * summary: Hook for managing account balance history. * score: 1 ### hook useAccountMappings * file: src/cores/fa/hooks/useAccountMappings.ts:16 * kind: hook * core: fa * spec: (none) * summary: Provides account mappings queries and mutation actions scoped to the current organization. * score: 4 ### hook useAccounts * file: src/cores/fa/hooks/useAccounts.ts:15 * kind: hook * core: fa * spec: (none) * summary: Hook for managing accounts. * score: 1 ### hook useAcknowledgeAlert * file: src/cores/fa/hooks/useBudgetAlerts.ts:189 * kind: hook * core: fa * spec: (none) * summary: Provides acknowledge alert queries and mutation actions scoped to the current organization. * score: 4 ### hook useActiveAlerts * file: src/cores/fa/hooks/useAlertThresholds.ts:72 * kind: hook * core: fa * spec: (none) * summary: Provides active alerts queries and mutation actions scoped to the current organization. * score: 4 ### hook useAddRecipient * file: src/cores/fa/hooks/useReportRecipients.ts:36 * kind: hook * core: fa * spec: (none) * summary: Hook for managing add recipient. * score: 1 ### hook useAddTemplateShare * file: src/cores/fa/hooks/useBudgetTemplateMutation.ts:374 * kind: hook * core: fa * spec: (none) * summary: Provides add template share queries and mutation actions scoped to the current organization. * score: 4 ### hook useAddToCollectionQueue * file: src/cores/fa/hooks/useCollectionQueueMutation.ts:40 * kind: hook * core: fa * spec: (none) * summary: Hook for managing add to collection queue. * score: 1 ### hook useAgedUnresolvedItems * file: src/cores/fa/hooks/useAgedUnresolvedItems.ts:54 * kind: hook * core: fa * spec: (none) * summary: Hook for managing aged unresolved items. * score: 1 ### hook useAIMatchSuggestions * file: src/cores/fa/hooks/useAIMatchSuggestions.ts:41 * kind: hook * core: fa * spec: (none) * summary: Hook for managing aimatch suggestions. * score: 1 ### hook useAITransactionCategorization * file: src/cores/fa/hooks/useAITransactionCategorization.ts:54 * kind: hook * core: fa * spec: (none) * summary: Hook to trigger AI categorization and manage suggestions on bank lines. * score: 4 ### hook useAlertsByBudget * file: src/cores/fa/hooks/useBudgetAlerts.ts:271 * kind: hook * core: fa * spec: (none) * summary: Provides alerts by budget queries and mutation actions scoped to the current organization. * score: 4 ### hook useAlertThresholds * file: src/cores/fa/hooks/useAlertThresholds.ts:47 * kind: hook * core: fa * spec: (none) * summary: Provides alert thresholds queries and mutation actions scoped to the current organization. * score: 4 ### hook useAllocateAnnualToPeriods * file: src/cores/fa/hooks/useBudgetLines.ts:282 * kind: hook * core: fa * spec: (none) * summary: Hook for managing allocate annual to periods. * score: 1 ### hook useAllocateExpense * file: src/cores/fa/hooks/useProjectExpenses.ts:182 * kind: hook * core: fa * spec: (none) * summary: Allocate a single expense to a project. * score: 4 ### hook useAllocateExpenseSplit * file: src/cores/fa/hooks/useProjectExpenses.ts:220 * kind: hook * core: fa * spec: (none) * summary: Allocate an expense to multiple projects with percentage splits. * score: 4 ### hook useAllocateIDC * file: src/cores/fa/hooks/useIndirectCostRates.ts:242 * kind: hook * core: fa * spec: (none) * summary: Allocate indirect costs to active projects using the database function. * score: 4 ### hook useAllocateRevenue * file: src/cores/fa/hooks/useProjectRevenue.ts:191 * kind: hook * core: fa * spec: (none) * summary: Allocate revenue to a project. * score: 4 ### hook useAllocationBase * file: src/cores/fa/hooks/useAllocationBases.ts:67 * kind: hook * core: fa * spec: (none) * summary: Get a single allocation base by ID. * score: 4 ### hook useAllocationBases * file: src/cores/fa/hooks/useAllocationBases.ts:26 * kind: hook * core: fa * spec: (none) * summary: List allocation bases for an organization. * score: 4 ### hook useAmendPO * file: src/cores/fa/hooks/usePOAmendment.ts:81 * kind: hook * core: fa * spec: (none) * summary: Hook for managing amend po. * score: 1 ### hook useApplyCoATemplate * file: src/cores/fa/hooks/useApplyCoATemplate.ts:64 * kind: hook * core: fa * spec: (none) * summary: Hook for managing apply co atemplate. * score: 1 ### hook useApplyCreditToInvoice * file: src/cores/fa/hooks/useCreditApplications.ts:120 * kind: hook * core: fa * spec: (none) * summary: Provides apply credit to invoice queries and mutation actions scoped to the current organization. * score: 4 ### hook useApplyCustomerPayment * file: src/cores/fa/hooks/useARPaymentApplications.ts:108 * kind: hook * core: fa * spec: (none) * summary: Provides apply customer payment queries and mutation actions scoped to the current organization. * score: 4 ### hook useApplyPayment * file: src/cores/fa/hooks/usePaymentApplications.ts:65 * kind: hook * core: fa * spec: (none) * summary: Hook for managing apply payment. * score: 1 ### hook useApplyTemplate * file: src/cores/fa/hooks/useBudgetTemplateMutation.ts:256 * kind: hook * core: fa * spec: (none) * summary: Provides apply template queries and mutation actions scoped to the current organization. * score: 4 ### hook useApprovalHistory * file: src/cores/fa/hooks/useExpenseApprovals.ts:89 * kind: hook * core: fa * spec: (none) * summary: Hook to fetch approval history for a specific expense report * score: 4 ### hook useApprovalThresholds * file: src/cores/fa/hooks/useApprovalThresholds.ts:15 * kind: hook * core: fa * spec: (none) * summary: Hook to fetch list of approval thresholds for an organization * score: 4 ### hook useApproveAllocationBase * file: src/cores/fa/hooks/useAllocationBases.ts:160 * kind: hook * core: fa * spec: (none) * summary: Approve an allocation base. * score: 1 ### hook useApproveBill * file: src/cores/fa/hooks/useBillApproval.ts:28 * kind: hook * core: fa * spec: (none) * summary: Hook to approve a vendor bill (calls fa\_approve\_bill function)This will:1. Validate user has approval authority2. Set bill status to 'approved'3. Create journal entry posting to GL4. Link journal entry back to bill5. Publish vendor\_bill\_approved domain event * score: 4 ### hook useApproveBudget * file: src/cores/fa/hooks/useBudgetApprovals.ts:89 * kind: hook * core: fa * spec: (none) * summary: Provides approve budget queries and mutation actions scoped to the current organization. * score: 4 ### hook useApproveClosePeriod * file: src/cores/fa/close/useClosePeriods.ts:339 * kind: hook * core: fa * spec: (none) * summary: Approve a close period (transition to approved) * score: 4 ### hook useApproveExpenseReport * file: src/cores/fa/hooks/useExpenseApprovals.ts:147 * kind: hook * core: fa * spec: (none) * summary: Hook to approve an expense reportUpdates approval record and checks if more approvals needed * score: 4 ### hook useApproveIndirectCostRate * file: src/cores/fa/hooks/useIndirectCostRates.ts:195 * kind: hook * core: fa * spec: (none) * summary: Approve an IDC rate. * score: 1 ### hook useApprovePaymentPlan * file: src/cores/fa/hooks/usePaymentPlans.ts:266 * kind: hook * core: fa * spec: (none) * summary: Hook to approve a payment plan * score: 4 ### hook useApprovePO * file: src/cores/fa/hooks/usePOApproval.ts:92 * kind: hook * core: fa * spec: (none) * summary: Approve PO (pending\_approval → approved)Triggers fa\_publish\_po\_approved() function * score: 4 ### hook useApproveProjectBudget * file: src/cores/fa/hooks/useProjectBudgets.ts:207 * kind: hook * core: fa * spec: (none) * summary: Approve a project budget line. * score: 4 ### hook useArAgingBuckets * file: src/cores/fa/hooks/useArAgingBuckets.ts:52 * kind: hook * core: fa * spec: (none) * summary: Hook for managing ar aging buckets. * score: 1 ### hook useARAgingReport * file: src/cores/fa/hooks/useARAgingReport.ts:77 * kind: hook * core: fa * spec: (none) * summary: Fetch and calculate AR aging report data * score: 4 ### hook useArchiveFAEntity * file: src/cores/fa/hooks/useFAEntities.ts:153 * kind: hook * core: fa * spec: (none) * summary: Soft-deletes (archives) a legal entity by stamping deleted\_at.The PRIMARY entity cannot be archived from the UI. * score: 4 ### hook useARPaymentApplications * file: src/cores/fa/hooks/useARPaymentApplications.ts:52 * kind: hook * core: fa * spec: (none) * summary: Provides arpayment applications queries and mutation actions scoped to the current organization. * score: 4 ### hook useAssetDisposal * file: src/cores/fa/hooks/useAssetDisposals.ts:97 * kind: hook * core: fa * spec: (none) * summary: Get a single disposal record by ID. * score: 4 ### hook useAssetDisposalsByAsset * file: src/cores/fa/hooks/useAssetDisposals.ts:141 * kind: hook * core: fa * spec: (none) * summary: Get disposals for a specific asset.Defense-in-depth: includes organizationId filter. * score: 4 ### hook useAssetTransferHistory * file: src/cores/fa/hooks/useAssetTransfers.ts:27 * kind: hook * core: fa * spec: (none) * summary: Get transfer history for a specific asset.Defense-in-depth: includes organizationId filter. * score: 4 ### hook useAssignCloseTask * file: src/cores/fa/close/useCloseTasks.ts:271 * kind: hook * core: fa * spec: (none) * summary: Assign a task to a user * score: 1 ### hook useAuditLogViewerData * file: src/cores/fa/hooks/useAuditLogViewerData.ts:58 * kind: hook * core: fa * spec: (none) * summary: Hook for managing audit log viewer data. * score: 1 ### hook useAutoMatchTransactions * file: src/cores/fa/hooks/useBankReconciliations.ts:254 * kind: hook * core: fa * spec: (none) * summary: Provides auto match transactions queries and mutation actions scoped to the current organization. * score: 4 ### hook useAvailableBudgetsForCopy * file: src/cores/fa/hooks/useBudgetTemplate.ts:38 * kind: hook * core: fa * spec: (none) * summary: Hook for managing available budgets for copy. * score: 1 ### hook useAvailablePOLinesForBilling * file: src/cores/fa/hooks/useValidate3WayMatch.ts:43 * kind: hook * core: fa * spec: (none) * summary: Hook to get available PO lines for billing (approved POs with received quantity) * score: 4 ### hook useBadDebtReserve * file: src/cores/fa/hooks/useBadDebtReserves.ts:104 * kind: hook * core: fa * spec: (none) * summary: Provides bad debt reserve queries and mutation actions scoped to the current organization. * score: 4 ### hook useBadDebtReserveList * file: src/cores/fa/hooks/useBadDebtReserves.ts:79 * kind: hook * core: fa * spec: (none) * summary: Provides bad debt reserve list queries and mutation actions scoped to the current organization. * score: 4 ### hook useBadDebtSummary * file: src/cores/fa/hooks/useBadDebtReserves.ts:130 * kind: hook * core: fa * spec: (none) * summary: Provides bad debt summary queries and mutation actions scoped to the current organization. * score: 4 ### hook useBalanceSheet * file: src/cores/fa/hooks/useBalanceSheet.ts:43 * kind: hook * core: fa * spec: (none) * summary: Hook for managing balance sheet. * score: 1 ### hook useBalanceSheetSummary * file: src/cores/fa/hooks/useBalanceSheet.ts:66 * kind: hook * core: fa * spec: (none) * summary: Hook for managing balance sheet summary. * score: 1 ### hook useBankAccount * file: src/cores/fa/hooks/useBankAccounts.ts:178 * kind: hook * core: fa * spec: (none) * summary: Provides bank account queries and mutation actions scoped to the current organization. * score: 4 ### hook useBankAccountList * file: src/cores/fa/hooks/useBankAccounts.ts:116 * kind: hook * core: fa * spec: (none) * summary: Provides bank account list queries and mutation actions scoped to the current organization. * score: 4 ### hook useBankDisconnect * file: src/cores/fa/hooks/useBankDisconnect.ts:49 * kind: hook * core: fa * spec: (none) * summary: Hook for managing bank disconnect. * score: 1 ### hook useBankReconciliation * file: src/cores/fa/hooks/useBankReconciliations.ts:135 * kind: hook * core: fa * spec: (none) * summary: Provides bank reconciliation queries and mutation actions scoped to the current organization. * score: 4 ### hook useBankReconciliationList * file: src/cores/fa/hooks/useBankReconciliations.ts:92 * kind: hook * core: fa * spec: (none) * summary: Provides bank reconciliation list queries and mutation actions scoped to the current organization. * score: 4 ### hook useBankStatement * file: src/cores/fa/hooks/useBankStatements.ts:193 * kind: hook * core: fa * spec: (none) * summary: Provides bank statement queries and mutation actions scoped to the current organization. * score: 4 ### hook useBankStatementList * file: src/cores/fa/hooks/useBankStatements.ts:127 * kind: hook * core: fa * spec: (none) * summary: Provides bank statement list queries and mutation actions scoped to the current organization. * score: 4 ### hook useBankTransactionsList * file: src/cores/fa/hooks/useBankTransactions.ts:92 * kind: hook * core: fa * spec: (none) * summary: List bank transaction lines with filters.Pending = unmatched and not excluded, Posted = matched, Excluded = status 'excluded'. * score: 4 ### hook useBankTransactionsPendingCount * file: src/cores/fa/hooks/useBankTransactions.ts:67 * kind: hook * core: fa * spec: (none) * summary: Count of pending (unmatched) bank transaction lines. * score: 4 ### hook useBatchCreateReimbursements * file: src/cores/fa/hooks/useBatchReimbursement.ts:105 * kind: hook * core: fa * spec: (none) * summary: Hook for batch creating reimbursement payments from approved expense reports.Processes payments sequentially to maintain data integrity.Max 100 items per batch per FA-12 spec. * score: 1 ### hook useBatchPostToGL * file: src/cores/fa/hooks/useBatchReimbursement.ts:257 * kind: hook * core: fa * spec: (none) * summary: Hook for batch posting reimbursement payments to GL.Processes posts sequentially to maintain data integrity. * score: 1 ### hook useBatchUpdateBillLines * file: src/cores/fa/hooks/useBillLines.ts:250 * kind: hook * core: fa * spec: (none) * summary: Hook to batch create/update bill lines * score: 4 ### hook useBatchUpdatePOLines * file: src/cores/fa/hooks/usePurchaseOrderLines.ts:202 * kind: hook * core: fa * spec: (none) * summary: Batch update/replace all lines for a POUseful for form submissions where all lines are replaced at once * score: 4 ### hook useBill * file: src/cores/fa/hooks/useVendorBills.ts:117 * kind: hook * core: fa * spec: (none) * summary: Hook to fetch a single vendor bill with lines * score: 4 ### hook useBillDuplicates * file: src/cores/fa/hooks/useBillDuplicates.ts:18 * kind: hook * core: fa * spec: (none) * summary: FA Lane Q: find likely-duplicate vendor bills for the given bill.Queries the org's other bills for the SAME vendor (small, indexed set — notall org bills) and runs the deterministic heuristic.Returns \[] (never throws to the UI) when the bill has no vendor or there areno candidates. Cancelled bills and the bill itself are excluded. * score: 4 ### hook useBillLines * file: src/cores/fa/hooks/useBillLines.ts:70 * kind: hook * core: fa * spec: (none) * summary: Hook to fetch bill lines for a specific bill * score: 4 ### hook useBillList * file: src/cores/fa/hooks/useVendorBills.ts:58 * kind: hook * core: fa * spec: (none) * summary: Hook to fetch list of vendor bills with optional filters * score: 4 ### hook useBudget * file: src/cores/fa/hooks/useBudgets.ts:73 * kind: hook * core: fa * spec: (none) * summary: Provides budget queries and mutation actions scoped to the current organization. * score: 4 ### hook useBudgetAlerts * file: src/cores/fa/hooks/useBudgetAlerts.ts:75 * kind: hook * core: fa * spec: (none) * summary: Provides budget alerts queries and mutation actions scoped to the current organization. * score: 4 ### hook useBudgetAlertsSummary * file: src/cores/fa/hooks/useBudgetAlerts.ts:130 * kind: hook * core: fa * spec: (none) * summary: Provides budget alerts summary queries and mutation actions scoped to the current organization. * score: 4 ### hook useBudgetApprovals * file: src/cores/fa/hooks/useBudgetApprovals.ts:55 * kind: hook * core: fa * spec: (none) * summary: Provides budget approvals queries and mutation actions scoped to the current organization. * score: 4 ### hook useBudgetLineOptions * file: src/cores/fa/wizards/budget-creation/hooks/useBudgetLineOptions.ts:18 * kind: hook * core: fa * spec: (none) * summary: Fetches all options needed for budget line entry. * returns: Query result with accounts, funds, departments, programs * score: 4 ### hook useBudgetLines * file: src/cores/fa/hooks/useBudgetLines.ts:23 * kind: hook * core: fa * spec: (none) * summary: Hook for managing budget lines. * score: 1 ### hook useBudgets * file: src/cores/fa/hooks/useBudgets.ts:23 * kind: hook * core: fa * spec: (none) * summary: Provides budgets queries and mutation actions scoped to the current organization. * score: 4 ### hook useBudgetScenario * file: src/cores/fa/hooks/useBudgetScenarioDetail.ts:8 * kind: hook * core: fa * spec: (none) * summary: Hook for managing budget scenario. * score: 1 ### hook useBudgetScenarioList * file: src/cores/fa/hooks/useBudgetScenarioList.ts:30 * kind: hook * core: fa * spec: (none) * summary: Hook for managing budget scenario list. * score: 1 ### hook useBudgetTemplateById * file: src/cores/fa/hooks/useBudgetTemplateDetail.ts:8 * kind: hook * core: fa * spec: (none) * summary: Fetch single budget template by ID with all relations * score: 4 ### hook useBudgetTemplateList * file: src/cores/fa/hooks/useBudgetTemplateList.ts:8 * kind: hook * core: fa * spec: (none) * summary: Fetch paginated list of budget templates with optional filters * score: 4 ### hook useBudgetTemplatePreview * file: src/cores/fa/hooks/useBudgetTemplate.ts:75 * kind: hook * core: fa * spec: (none) * summary: Hook for managing budget template preview. * score: 1 ### hook useBudgetTemplateShares * file: src/cores/fa/hooks/useBudgetTemplateDetail.ts:40 * kind: hook * core: fa * spec: (none) * summary: Fetch template shares for a specific template * score: 4 ### hook useBudgetTotals * file: src/cores/fa/wizards/budget-creation/hooks/useBudgetTotals.ts:17 * kind: hook * core: fa * spec: (none) * summary: Calculates budget totals from an array of budget lines. * params: * budgetLines — Array of budget line entries * returns: BudgetTotals with amount aggregations * score: 4 ### hook useBudgetVsActual * file: src/cores/fa/hooks/useBudgetVsActual.ts:32 * kind: hook * core: fa * spec: (none) * summary: Hook for managing budget vs actual. * score: 1 ### hook useBudgetVsActualForProject * file: src/cores/fa/hooks/useProjectBudgets.ts:256 * kind: hook * core: fa * spec: (none) * summary: Get Budget vs Actual report for a project using the database function. * score: 4 ### hook useBudgetVsActualSummary * file: src/cores/fa/hooks/useBudgetVsActual.ts:65 * kind: hook * core: fa * spec: (none) * summary: Hook for managing budget vs actual summary. * score: 1 ### hook useBulkCreateBudgetLines * file: src/cores/fa/hooks/useBudgetLines.ts:190 * kind: hook * core: fa * spec: (none) * summary: Hook for managing bulk create budget lines. * score: 1 ### hook useBulkCreateMatches * file: src/cores/fa/hooks/useReconciliationMatches.ts:283 * kind: hook * core: fa * spec: (none) * summary: Provides bulk create matches queries and mutation actions scoped to the current organization. * score: 4 ### hook useBulkPostBankTransactions * file: src/cores/fa/hooks/useBankTransactions.ts:216 * kind: hook * core: fa * spec: (none) * summary: Bulk post multiple bank transaction lines, each through the GL-posting RPC.Lines that cannot post (uncategorized, no open period, etc.) are counted as failuresrather than aborting the batch. * score: 4 ### hook useBulkUpdateBudgetLines * file: src/cores/fa/hooks/useBudgetLines.ts:229 * kind: hook * core: fa * spec: (none) * summary: Hook for managing bulk update budget lines. * score: 1 ### hook useBulkUpdateLines * file: src/cores/fa/hooks/useJournalEntryLines.ts:147 * kind: hook * core: fa * spec: (none) * summary: Provides bulk update lines queries and mutation actions scoped to the current organization. * score: 4 ### hook useCalculateBillTotal * file: src/cores/fa/hooks/useBillLines.ts:238 * kind: hook * core: fa * spec: (none) * summary: Hook to calculate total from bill lines * score: 4 ### hook useCalculateCashPosition * file: src/cores/fa/hooks/useCashPositions.ts:162 * kind: hook * core: fa * spec: (none) * summary: Trigger cash position calculation via the database function.This creates a new cash position record based on current bank account balances. * score: 4 ### hook useCalculateKPI * file: src/cores/fa/hooks/useKPIs.ts:75 * kind: hook * core: fa * spec: (none) * summary: Hook for managing calculate kpi. * score: 1 ### hook useCalculateMileage * file: src/cores/fa/hooks/useExpenseLines.ts:273 * kind: hook * core: fa * spec: (none) * summary: Hook to calculate mileage reimbursementUses fa\_calculate\_mileage RPC - fails loudly if no rate configured * score: 4 ### hook useCalculatePerDiem * file: src/cores/fa/hooks/useExpenseLines.ts:295 * kind: hook * core: fa * spec: (none) * summary: Hook to calculate per diem amountUses fa\_calculate\_per\_diem RPC - returns 0 if no rate configured * score: 4 ### hook useCancelDeferredRevenue * file: src/cores/fa/hooks/useDeferredRevenue.ts:145 * kind: hook * core: fa * spec: (none) * summary: Cancel a deferred revenue record (sets status = 'cancelled'). * score: 4 ### hook useCancelPaymentPlan * file: src/cores/fa/hooks/usePaymentPlans.ts:364 * kind: hook * core: fa * spec: (none) * summary: Hook to cancel a payment plan * score: 1 ### hook useCancelPO * file: src/cores/fa/hooks/usePOApproval.ts:186 * kind: hook * core: fa * spec: (none) * summary: Cancel PO with reason * score: 1 ### hook useCancelRevenueContract * file: src/cores/fa/hooks/useRevenueContracts.ts:149 * kind: hook * core: fa * spec: (none) * summary: Cancel a revenue contract (sets status = 'cancelled'). Phase 1 has no hard delete. * score: 4 ### hook useCancelRevenueSchedule * file: src/cores/fa/hooks/useRevenueSchedules.ts:180 * kind: hook * core: fa * spec: (none) * summary: Cancel a revenue schedule (sets status = 'cancelled'). No hard delete in Phase 1. * score: 4 ### hook useCardTransactionMutation * file: src/cores/fa/hooks/useCardTransactionMutation.ts:19 * kind: hook * core: fa * spec: (none) * summary: Hook for managing card transaction mutation. * score: 1 ### hook useCardTransactionsList * file: src/cores/fa/hooks/useCardTransactionsList.ts:18 * kind: hook * core: fa * spec: (none) * summary: Hook for managing card transactions list. * score: 1 ### hook useCashFlow * file: src/cores/fa/hooks/useCashFlow\.ts:24 * kind: hook * core: fa * spec: (none) * summary: Hook for managing cash flow. * score: 1 ### hook useCashFlowDirect * file: src/cores/fa/hooks/useCashFlowDirect.ts:17 * kind: hook * core: fa * spec: (none) * summary: Hook for managing cash flow direct. * score: 1 ### hook useCashFlowSummary * file: src/cores/fa/hooks/useCashFlow\.ts:46 * kind: hook * core: fa * spec: (none) * summary: Hook for managing cash flow summary. * score: 1 ### hook useCashForecast * file: src/cores/fa/hooks/useCashForecasts.ts:113 * kind: hook * core: fa * spec: (none) * summary: Get a single cash forecast by ID. * score: 4 ### hook useCashForecastList * file: src/cores/fa/hooks/useCashForecasts.ts:60 * kind: hook * core: fa * spec: (none) * summary: List cash forecasts with optional date and period filters.Sorted by forecast\_date descending. * score: 4 ### hook useCashPosition * file: src/cores/fa/hooks/useCashPositions.ts:82 * kind: hook * core: fa * spec: (none) * summary: Get a single cash position by ID. * score: 4 ### hook useCashPositionList * file: src/cores/fa/hooks/useCashPositions.ts:32 * kind: hook * core: fa * spec: (none) * summary: List cash positions with optional date filters.Sorted by position\_date descending (most recent first). * score: 4 ### hook useCategoryMapping * file: src/cores/fa/hooks/useExpenseCategoryMappings.ts:93 * kind: hook * core: fa * spec: (none) * summary: Hook to fetch a single category mapping by ID * score: 4 ### hook useCategoryMappingByCategory * file: src/cores/fa/hooks/useExpenseCategoryMappings.ts:147 * kind: hook * core: fa * spec: (none) * summary: Hook to get mapping by category name * score: 4 ### hook useCategoryMappings * file: src/cores/fa/hooks/useExpenseCategoryMappings.ts:60 * kind: hook * core: fa * spec: (none) * summary: Hook to fetch all category mappings with joined account info * score: 4 ### hook useCheckApprovalRequired * file: src/cores/fa/hooks/useApprovalThresholds.ts:159 * kind: hook * core: fa * spec: (none) * summary: Hook to check if a bill amount requires approval based on thresholds * score: 4 ### hook useCheckBudgetAlerts * file: src/cores/fa/hooks/useBudgetAlerts.ts:239 * kind: hook * core: fa * spec: (none) * summary: Provides check budget alerts queries and mutation actions scoped to the current organization. * score: 4 ### hook useCheckDuplicateInvoice * file: src/cores/fa/hooks/useVendorBills.ts:344 * kind: hook * core: fa * spec: (none) * summary: Hook to check for duplicate invoice numbers * score: 4 ### hook useCheckDuplicateStatement * file: src/cores/fa/hooks/useBankStatements.ts:408 * kind: hook * core: fa * spec: (none) * summary: Provides check duplicate statement queries and mutation actions scoped to the current organization. * score: 4 ### hook useCloseChecklistDetail * file: src/cores/fa/close/useCloseChecklists.ts:136 * kind: hook * core: fa * spec: (none) * summary: Get a single checklist with tasksIssue #2 fix: Added organizationId parameter for defense-in-depth * score: 4 ### hook useCloseChecklistsList * file: src/cores/fa/close/useCloseChecklists.ts:52 * kind: hook * core: fa * spec: (none) * summary: List close checklists for an organization with optional filters * score: 4 ### hook useCloseChecklistTemplates * file: src/cores/fa/close/useCloseChecklists.ts:96 * kind: hook * core: fa * spec: (none) * summary: List checklist templates only * score: 1 ### hook useCloseDocumentationList * file: src/cores/fa/close/useCloseDocumentation.ts:34 * kind: hook * core: fa * spec: (none) * summary: List documentation for a close period, optionally filtered by task * score: 4 ### hook useClosePeriodChecklists * file: src/cores/fa/close/useCloseChecklists.ts:104 * kind: hook * core: fa * spec: (none) * summary: List checklists for a specific close periodIssue #3 fix: Added organizationId parameter for defense-in-depth * score: 4 ### hook useClosePeriodDetail * file: src/cores/fa/close/useClosePeriods.ts:98 * kind: hook * core: fa * spec: (none) * summary: Get a single close period with full relations * score: 4 ### hook useClosePeriodsList * file: src/cores/fa/close/useClosePeriods.ts:47 * kind: hook * core: fa * spec: (none) * summary: List close periods for an organization with optional filtersIssue #8 fix: organizationId is now required (not optional) * score: 4 ### hook useCloseTaskDetail * file: src/cores/fa/close/useCloseTasks.ts:139 * kind: hook * core: fa * spec: (none) * summary: Get a single task with full relations * score: 4 ### hook useCloseTasksByPeriod * file: src/cores/fa/close/useCloseTasks.ts:105 * kind: hook * core: fa * spec: (none) * summary: List all tasks for a close period (across all checklists) * score: 4 ### hook useCloseTasksList * file: src/cores/fa/close/useCloseTasks.ts:54 * kind: hook * core: fa * spec: (none) * summary: List tasks for a specific checklist * score: 4 ### hook useCloseTaxYear * file: src/cores/fa/hooks/useTaxYears.ts:129 * kind: hook * core: fa * spec: (none) * summary: Mutation: Close tax year (update status to 'closed') * score: 4 ### hook useCoAExport * file: src/cores/fa/hooks/useCoAExport.ts:16 * kind: hook * core: fa * spec: (none) * summary: Hook for managing co aexport. * score: 1 ### hook useCoAImportApply * file: src/cores/fa/hooks/useCoAImport.ts:23 * kind: hook * core: fa * spec: (none) * summary: Apply validated import rows in chunked batches. * score: 4 ### hook useCoATemplates * file: src/cores/fa/hooks/useCoATemplates.ts:41 * kind: hook * core: fa * spec: (none) * summary: Hook for loading the merged CoA template library. * score: 1 ### hook useCollectionActivities * file: src/cores/fa/hooks/useCollectionWorkflow\.ts:196 * kind: hook * core: fa * spec: (none) * summary: Provides collection activities queries and mutation actions scoped to the current organization. * score: 4 ### hook useCollectionQueue * file: src/cores/fa/hooks/useCollectionWorkflow\.ts:119 * kind: hook * core: fa * spec: (none) * summary: Provides collection queue queries and mutation actions scoped to the current organization. * score: 4 ### hook useCollectionQueueList * file: src/cores/fa/hooks/useCollectionQueueList.ts:57 * kind: hook * core: fa * spec: (none) * summary: Hook for managing collection queue list. * score: 1 ### hook useCollectionStats * file: src/cores/fa/hooks/useCollectionWorkflow\.ts:222 * kind: hook * core: fa * spec: (none) * summary: Provides collection stats queries and mutation actions scoped to the current organization. * score: 4 ### hook useCompleteClosePeriod * file: src/cores/fa/close/useClosePeriods.ts:393 * kind: hook * core: fa * spec: (none) * summary: Complete (finalize) a close period (transition to closed) * score: 4 ### hook useCompleteClosePeriodWithAudit * file: src/cores/fa/hooks/usePeriodCloseWithAudit.ts:17 * kind: hook * core: fa * spec: (none) * summary: Wraps useCompleteClosePeriod — after a successful close, writes an audit row. * score: 4 ### hook useCompleteCloseTask * file: src/cores/fa/close/useCloseTasks.ts:407 * kind: hook * core: fa * spec: (none) * summary: Complete a task (with dependency validation) * score: 4 ### hook useCompleteReconciliation * file: src/cores/fa/hooks/useBankReconciliations.ts:315 * kind: hook * core: fa * spec: (none) * summary: Provides complete reconciliation queries and mutation actions scoped to the current organization. * score: 4 ### hook useComplianceMappings * file: src/cores/fa/hooks/useComplianceMappings.ts:20 * kind: hook * core: fa * spec: (none) * summary: List compliance-account mappings for the current organization. * score: 4 ### hook useContractProgressReport * file: src/cores/fa/hooks/useRevenueReports.ts:205 * kind: hook * core: fa * spec: (none) * summary: Contract progress report — joins contracts with their schedules' total\_recognizedto compute lifetime recognition progress per contract. * score: 4 ### hook useCopyBudgetTemplate * file: src/cores/fa/hooks/useBudgetTemplate.ts:126 * kind: hook * core: fa * spec: (none) * summary: Hook for managing copy budget template. * score: 1 ### hook useCopyChecklistToPeriod * file: src/cores/fa/close/useCloseChecklists.ts:264 * kind: hook * core: fa * spec: (none) * summary: Copy a checklist template to a close periodIssue #5 fix:- Accept userId instead of calling supabase.auth.getUser()- Add organization\_id filter to template query- Batch task inserts for performance- Rollback on partial failure * score: 4 ### hook useCopyFromBudget * file: src/cores/fa/hooks/useBudgetScenarioMutation.ts:306 * kind: hook * core: fa * spec: (none) * summary: Hook for managing copy from budget. * score: 1 ### hook useCopyFromTemplate * file: src/cores/fa/wizards/budget-creation/hooks/useCopyFromTemplate.ts:38 * kind: hook * core: fa * spec: (none) * summary: Hook for copying budget lines from a template budget with growth adjustments. * returns: Object with copyFromTemplate function * score: 1 ### hook useCostAllocation * file: src/cores/fa/hooks/useCostAllocations.ts:70 * kind: hook * core: fa * spec: (none) * summary: Get a single cost allocation by ID. * score: 4 ### hook useCostAllocations * file: src/cores/fa/hooks/useCostAllocations.ts:20 * kind: hook * core: fa * spec: (none) * summary: List cost allocations for an organization. * score: 4 ### hook useCreate1099Form * file: src/cores/fa/hooks/use1099Forms.ts:66 * kind: hook * core: fa * spec: (none) * summary: Mutation: Create 1099 form * score: 1 ### hook useCreateAccount * file: src/cores/fa/hooks/useAccounts.ts:75 * kind: hook * core: fa * spec: (none) * summary: Hook for managing create account. * score: 1 ### hook useCreateAccountMapping * file: src/cores/fa/hooks/useAccountMappings.ts:46 * kind: hook * core: fa * spec: (none) * summary: Provides create account mapping queries and mutation actions scoped to the current organization. * score: 4 ### hook useCreateAdjustment * file: src/cores/fa/hooks/useReconciliationAdjustments.ts:74 * kind: hook * core: fa * spec: (none) * summary: Create a new adjustment * score: 1 ### hook useCreateAlertThreshold * file: src/cores/fa/hooks/useAlertThresholds.ts:99 * kind: hook * core: fa * spec: (none) * summary: Provides create alert threshold queries and mutation actions scoped to the current organization. * score: 4 ### hook useCreateAllocationBase * file: src/cores/fa/hooks/useAllocationBases.ts:95 * kind: hook * core: fa * spec: (none) * summary: Create a new allocation base. * score: 1 ### hook useCreateAnnotation * file: src/cores/fa/hooks/useReportAnnotations.ts:66 * kind: hook * core: fa * spec: (none) * summary: Provides create annotation queries and mutation actions scoped to the current organization. * score: 4 ### hook useCreateApproval * file: src/cores/fa/hooks/useExpenseApprovals.ts:118 * kind: hook * core: fa * spec: (none) * summary: Hook to create an approval request * score: 4 ### hook useCreateApprovalThreshold * file: src/cores/fa/hooks/useApprovalThresholds.ts:51 * kind: hook * core: fa * spec: (none) * summary: Hook to create a new approval threshold * score: 4 ### hook useCreateBadDebtReserve * file: src/cores/fa/hooks/useBadDebtReserves.ts:188 * kind: hook * core: fa * spec: (none) * summary: Provides create bad debt reserve queries and mutation actions scoped to the current organization. * score: 4 ### hook useCreateBankAccount * file: src/cores/fa/hooks/useBankAccounts.ts:232 * kind: hook * core: fa * spec: (none) * summary: Provides create bank account queries and mutation actions scoped to the current organization. * score: 4 ### hook useCreateBankReconciliation * file: src/cores/fa/hooks/useBankReconciliations.ts:165 * kind: hook * core: fa * spec: (none) * summary: Provides create bank reconciliation queries and mutation actions scoped to the current organization. * score: 4 ### hook useCreateBankStatement * file: src/cores/fa/hooks/useBankStatements.ts:270 * kind: hook * core: fa * spec: (none) * summary: Provides create bank statement queries and mutation actions scoped to the current organization. * score: 4 ### hook useCreateBill * file: src/cores/fa/hooks/useVendorBills.ts:168 * kind: hook * core: fa * spec: (none) * summary: Hook to create a new vendor bill with lines * score: 4 ### hook useCreateBillLine * file: src/cores/fa/hooks/useBillLines.ts:120 * kind: hook * core: fa * spec: (none) * summary: Hook to create a new bill line * score: 4 ### hook useCreateBudget * file: src/cores/fa/hooks/useBudgets.ts:103 * kind: hook * core: fa * spec: (none) * summary: Provides create budget queries and mutation actions scoped to the current organization. * score: 4 ### hook useCreateBudgetLine * file: src/cores/fa/hooks/useBudgetLines.ts:82 * kind: hook * core: fa * spec: (none) * summary: Hook for managing create budget line. * score: 1 ### hook useCreateBudgetScenario * file: src/cores/fa/hooks/useBudgetScenarioMutation.ts:33 * kind: hook * core: fa * spec: (none) * summary: Hook for managing create budget scenario. * score: 1 ### hook useCreateBudgetTemplate * file: src/cores/fa/hooks/useBudgetTemplateMutation.ts:23 * kind: hook * core: fa * spec: (none) * summary: Provides create budget template queries and mutation actions scoped to the current organization. * score: 4 ### hook useCreateCashForecast * file: src/cores/fa/hooks/useCashForecasts.ts:152 * kind: hook * core: fa * spec: (none) * summary: Create a new cash forecast. * score: 1 ### hook useCreateCategoryMapping * file: src/cores/fa/hooks/useExpenseCategoryMappings.ts:181 * kind: hook * core: fa * spec: (none) * summary: Hook to create a new category mapping * score: 4 ### hook useCreateCloseChecklist * file: src/cores/fa/close/useCloseChecklists.ts:175 * kind: hook * core: fa * spec: (none) * summary: Create a new close checklistIssue #1 fix: Accept userId from caller instead of calling supabase.auth.getUser() * score: 4 ### hook useCreateCloseDocumentation * file: src/cores/fa/close/useCloseDocumentation.ts:109 * kind: hook * core: fa * spec: (none) * summary: Create documentation metadataIssue #6 fix: Accept userId from caller instead of calling supabase.auth.getUser()Usage:1. Upload file via PF-11 (Documents platform)2. Call this mutation with the storage\_path and document\_url * score: 4 ### hook useCreateClosePeriod * file: src/cores/fa/close/useClosePeriods.ts:134 * kind: hook * core: fa * spec: (none) * summary: Create a new close period * score: 1 ### hook useCreateCloseTask * file: src/cores/fa/close/useCloseTasks.ts:174 * kind: hook * core: fa * spec: (none) * summary: Create a new close task * score: 1 ### hook useCreateCollectionActivity * file: src/cores/fa/hooks/useCollectionWorkflow\.ts:280 * kind: hook * core: fa * spec: (none) * summary: Provides create collection activity queries and mutation actions scoped to the current organization. * score: 4 ### hook useCreateComplianceMapping * file: src/cores/fa/hooks/useComplianceMappings.ts:47 * kind: hook * core: fa * spec: (none) * summary: Create a new compliance-account mapping. * score: 4 ### hook useCreateCreditLine * file: src/cores/fa/hooks/useCreditLines.ts:191 * kind: hook * core: fa * spec: (none) * summary: Create a new credit line.The credit\_line\_number is auto-generated by a database trigger. * score: 4 ### hook useCreateCreditMemo * file: src/cores/fa/hooks/useCreditMemos.ts:215 * kind: hook * core: fa * spec: (none) * summary: Provides create credit memo queries and mutation actions scoped to the current organization. * score: 4 ### hook useCreateCreditMemoLine * file: src/cores/fa/hooks/useCreditMemoLines.ts:68 * kind: hook * core: fa * spec: (none) * summary: Provides create credit memo line queries and mutation actions scoped to the current organization. * score: 4 ### hook useCreateCustomer * file: src/cores/fa/hooks/useCustomers.ts:115 * kind: hook * core: fa * spec: (none) * summary: Provides create customer queries and mutation actions scoped to the current organization. * score: 4 ### hook useCreateCustomerPayment * file: src/cores/fa/hooks/useCustomerPayments.ts:176 * kind: hook * core: fa * spec: (none) * summary: Provides create customer payment queries and mutation actions scoped to the current organization. * score: 4 ### hook useCreateDashboardDefinition * file: src/cores/fa/hooks/useDashboardDefinition.ts:73 * kind: hook * core: fa * spec: (none) * summary: Hook for managing create dashboard definition. * score: 1 ### hook useCreateDeferredRevenue * file: src/cores/fa/hooks/useDeferredRevenue.ts:88 * kind: hook * core: fa * spec: (none) * summary: Create a deferred revenue record. * score: 4 ### hook useCreateDepartment * file: src/cores/fa/hooks/useDepartments.ts:130 * kind: hook * core: fa * spec: (none) * summary: Provides create department queries and mutation actions scoped to the current organization. * score: 4 ### hook useCreateDrawdownRequest * file: src/cores/fa/hooks/useGrantDrawdowns.ts:118 * kind: hook * core: fa * spec: (none) * summary: Create a new drawdown request.Note: drawdown\_number is auto-generated by database trigger. * score: 4 ### hook useCreateExpenseLine * file: src/cores/fa/hooks/useExpenseLines.ts:162 * kind: hook * core: fa * spec: (none) * summary: Hook to create a new expense line * score: 4 ### hook useCreateExpensePolicy * file: src/cores/fa/hooks/useExpensePolicies.ts:285 * kind: hook * core: fa * spec: (none) * summary: Hook to create a new expense policy * score: 4 ### hook useCreateExpenseReport * file: src/cores/fa/hooks/useExpenseReports.ts:184 * kind: hook * core: fa * spec: (none) * summary: Hook to create a new expense report * score: 4 ### hook useCreateFAEntity * file: src/cores/fa/hooks/useFAEntities.ts:89 * kind: hook * core: fa * spec: (none) * summary: Creates a new legal entity. * score: 1 ### hook useCreateFAEntityRelationship * file: src/cores/fa/hooks/useFAEntityRelationships.ts:46 * kind: hook * core: fa * spec: (none) * summary: Creates a parent → child ownership link. Server-side trigger blocks cycles. * score: 4 ### hook useCreateFiscalYear * file: src/cores/fa/hooks/useFiscalYears.ts:78 * kind: hook * core: fa * spec: (none) * summary: Provides create fiscal year queries and mutation actions scoped to the current organization. * score: 4 ### hook useCreateFixedAsset * file: src/cores/fa/hooks/useFixedAssets.ts:268 * kind: hook * core: fa * spec: (none) * summary: Create a new fixed asset.The asset\_tag is auto-generated by a database trigger if not provided. * score: 4 ### hook useCreateForecastLine * file: src/cores/fa/hooks/useRollingForecastMutation.ts:215 * kind: hook * core: fa * spec: (none) * summary: Provides create forecast line queries and mutation actions scoped to the current organization. * score: 4 ### hook useCreateFund * file: src/cores/fa/hooks/useFunds.ts:75 * kind: hook * core: fa * spec: (none) * summary: Provides create fund queries and mutation actions scoped to the current organization. * score: 4 ### hook useCreateGroupMatch * file: src/cores/fa/hooks/useGroupMatch.ts:19 * kind: hook * core: fa * spec: (none) * summary: Hook for managing create group match. * score: 1 ### hook useCreateIndirectCostPool * file: src/cores/fa/hooks/useIndirectCostPools.ts:88 * kind: hook * core: fa * spec: (none) * summary: Create a new indirect cost pool. * score: 4 ### hook useCreateIndirectCostRate * file: src/cores/fa/hooks/useIndirectCostRates.ts:132 * kind: hook * core: fa * spec: (none) * summary: Create a new IDC rate. * score: 1 ### hook useCreateInvestment * file: src/cores/fa/hooks/useInvestments.ts:200 * kind: hook * core: fa * spec: (none) * summary: Create a new investment.The investment\_number is auto-generated by a database trigger. * score: 4 ### hook useCreateInvoice * file: src/cores/fa/hooks/useInvoices.ts:143 * kind: hook * core: fa * spec: (none) * summary: Hook for managing create invoice. * score: 1 ### hook useCreateInvoiceLine * file: src/cores/fa/hooks/useInvoiceLines.ts:60 * kind: hook * core: fa * spec: (none) * summary: Hook for managing create invoice line. * score: 1 ### hook useCreateJournalEntry * file: src/cores/fa/hooks/useJournalEntries.ts:93 * kind: hook * core: fa * spec: (none) * summary: Provides create journal entry queries and mutation actions scoped to the current organization. * score: 4 ### hook useCreateJournalEntryLine * file: src/cores/fa/hooks/useJournalEntryLines.ts:55 * kind: hook * core: fa * spec: (none) * summary: Provides create journal entry line queries and mutation actions scoped to the current organization. * score: 4 ### hook useCreateMatch * file: src/cores/fa/hooks/useReconciliationMatches.ts:212 * kind: hook * core: fa * spec: (none) * summary: Provides create match queries and mutation actions scoped to the current organization. * score: 4 ### hook useCreatePayment * file: src/cores/fa/hooks/usePayments.ts:107 * kind: hook * core: fa * spec: (none) * summary: Hook for managing create payment. * score: 1 ### hook useCreatePaymentBatch * file: src/cores/fa/hooks/usePaymentBatches.ts:76 * kind: hook * core: fa * spec: (none) * summary: Provides create payment batch queries and mutation actions scoped to the current organization. * score: 4 ### hook useCreatePaymentPlan * file: src/cores/fa/hooks/usePaymentPlans.ts:126 * kind: hook * core: fa * spec: (none) * summary: Hook to create a new payment plan with auto-generated installments * score: 4 ### hook useCreatePlaidCategoryMapping * file: src/cores/fa/hooks/usePlaidCategoryMappings.ts:84 * kind: hook * core: fa * spec: (none) * summary: Provides create plaid category mapping queries and mutation actions scoped to the current organization. * score: 4 ### hook useCreatePOLine * file: src/cores/fa/hooks/usePurchaseOrderLines.ts:99 * kind: hook * core: fa * spec: (none) * summary: Create a new PO line item * score: 1 ### hook useCreatePOReceipt * file: src/cores/fa/hooks/usePOReceipts.ts:161 * kind: hook * core: fa * spec: (none) * summary: Hook to create a new receipt using the fa\_create\_receipt function * score: 4 ### hook useCreateProgram * file: src/cores/fa/hooks/usePrograms.ts:77 * kind: hook * core: fa * spec: (none) * summary: Provides create program queries and mutation actions scoped to the current organization. * score: 4 ### hook useCreateProject * file: src/cores/fa/hooks/useProjects.ts:143 * kind: hook * core: fa * spec: (none) * summary: Create a new project.Note: project\_number is auto-generated by database trigger. * score: 4 ### hook useCreateProjectBudget * file: src/cores/fa/hooks/useProjectBudgets.ts:87 * kind: hook * core: fa * spec: (none) * summary: Create a new project budget line. * score: 4 ### hook useCreatePurchaseOrder * file: src/cores/fa/hooks/usePurchaseOrders.ts:214 * kind: hook * core: fa * spec: (none) * summary: Create new purchase order with lines * score: 4 ### hook useCreateRecurringEntry * file: src/cores/fa/hooks/useRecurringEntries.ts:69 * kind: hook * core: fa * spec: (none) * summary: Provides create recurring entry queries and mutation actions scoped to the current organization. * score: 4 ### hook useCreateRecurringInvoice * file: src/cores/fa/hooks/useRecurringInvoices.ts:124 * kind: hook * core: fa * spec: (none) * summary: Provides create recurring invoice queries and mutation actions scoped to the current organization. * score: 4 ### hook useCreateRecurringTemplate * file: src/cores/fa/hooks/useRecurringTransactionTemplates.ts:213 * kind: hook * core: fa * spec: (none) * summary: Provides create recurring template queries and mutation actions scoped to the current organization. * score: 4 ### hook useCreateReimbursementPayment * file: src/cores/fa/hooks/useReimbursementPayments.ts:196 * kind: hook * core: fa * spec: (none) * summary: Hook to create a new reimbursement paymentAPPEND-ONLY: No updates allowed after creation * score: 4 ### hook useCreateReportSchedule * file: src/cores/fa/hooks/useReportSchedules.ts:63 * kind: hook * core: fa * spec: (none) * summary: Hook for managing create report schedule. * score: 1 ### hook useCreateReportVersion * file: src/cores/fa/hooks/useReportVersions.ts:45 * kind: hook * core: fa * spec: (none) * summary: Hook for managing create report version. * score: 1 ### hook useCreateRevenueContract * file: src/cores/fa/hooks/useRevenueContracts.ts:90 * kind: hook * core: fa * spec: (none) * summary: Create a revenue contract. * score: 1 ### hook useCreateRevenueSchedule * file: src/cores/fa/hooks/useRevenueSchedules.ts:102 * kind: hook * core: fa * spec: (none) * summary: Create a revenue schedule. Caller must supply EITHER revenue\_contract\_id OR invoice\_id (XOR). * score: 4 ### hook useCreateRollingForecast * file: src/cores/fa/hooks/useRollingForecastMutation.ts:38 * kind: hook * core: fa * spec: (none) * summary: Provides create rolling forecast queries and mutation actions scoped to the current organization. * score: 4 ### hook useCreateScenarioBudgetLine * file: src/cores/fa/hooks/useBudgetScenarioMutation.ts:188 * kind: hook * core: fa * spec: (none) * summary: Hook for managing create scenario budget line. * score: 1 ### hook useCreateTaxDistribution * file: src/cores/fa/hooks/useTaxDistributions.ts:65 * kind: hook * core: fa * spec: (none) * summary: Mutation: Create tax distribution * score: 4 ### hook useCreateTaxReport * file: src/cores/fa/hooks/useTaxReports.ts:65 * kind: hook * core: fa * spec: (none) * summary: Mutation: Create tax report * score: 1 ### hook useCreateTaxYear * file: src/cores/fa/hooks/useTaxYears.ts:64 * kind: hook * core: fa * spec: (none) * summary: Mutation: Create tax year * score: 1 ### hook useCreateTemplateFromBudget * file: src/cores/fa/hooks/useBudgetTemplateMutation.ts:141 * kind: hook * core: fa * spec: (none) * summary: Provides create template from budget queries and mutation actions scoped to the current organization. * score: 4 ### hook useCreateTransactionRule * file: src/cores/fa/hooks/useTransactionRules.ts:85 * kind: hook * core: fa * spec: (none) * summary: Create a new transaction rule * score: 1 ### hook useCreateVendor * file: src/cores/fa/hooks/useVendors.ts:96 * kind: hook * core: fa * spec: (none) * summary: Hook to create a new vendor * score: 1 ### hook useCreateW2Form * file: src/cores/fa/hooks/useW2Forms.ts:65 * kind: hook * core: fa * spec: (none) * summary: Mutation: Create W-2 form * score: 1 ### hook useCreditApplications * file: src/cores/fa/hooks/useCreditApplications.ts:64 * kind: hook * core: fa * spec: (none) * summary: Provides credit applications queries and mutation actions scoped to the current organization. * score: 4 ### hook useCreditLine * file: src/cores/fa/hooks/useCreditLines.ts:93 * kind: hook * core: fa * spec: (none) * summary: Get a single credit line by ID. * score: 4 ### hook useCreditLineList * file: src/cores/fa/hooks/useCreditLines.ts:38 * kind: hook * core: fa * spec: (none) * summary: List credit lines with optional status and utilization filters.Sorted by credit\_line\_name alphabetically. * score: 4 ### hook useCreditMemo * file: src/cores/fa/hooks/useCreditMemos.ts:162 * kind: hook * core: fa * spec: (none) * summary: Provides credit memo queries and mutation actions scoped to the current organization. * score: 4 ### hook useCreditMemoLines * file: src/cores/fa/hooks/useCreditMemoLines.ts:39 * kind: hook * core: fa * spec: (none) * summary: Provides credit memo lines queries and mutation actions scoped to the current organization. * score: 4 ### hook useCreditMemoList * file: src/cores/fa/hooks/useCreditMemos.ts:119 * kind: hook * core: fa * spec: (none) * summary: Provides credit memo list queries and mutation actions scoped to the current organization. * score: 4 ### hook useCurrentMileageRate * file: src/cores/fa/hooks/useExpensePolicies.ts:217 * kind: hook * core: fa * spec: (none) * summary: Hook to get current active mileage rateReturns the rate per mile, or null if not configured * score: 4 ### hook useCurrentPerDiemRate * file: src/cores/fa/hooks/useExpensePolicies.ts:251 * kind: hook * core: fa * spec: (none) * summary: Hook to get current active per diem rate for a location * score: 4 ### hook useCustomer * file: src/cores/fa/hooks/useCustomers.ts:60 * kind: hook * core: fa * spec: (none) * summary: Provides customer queries and mutation actions scoped to the current organization. * score: 4 ### hook useCustomerList * file: src/cores/fa/hooks/useCustomers.ts:25 * kind: hook * core: fa * spec: (none) * summary: Provides customer list queries and mutation actions scoped to the current organization. * score: 4 ### hook useCustomerPayment * file: src/cores/fa/hooks/useCustomerPayments.ts:100 * kind: hook * core: fa * spec: (none) * summary: Provides customer payment queries and mutation actions scoped to the current organization. * score: 4 ### hook useCustomerPayments * file: src/cores/fa/hooks/useCustomerPayments.ts:61 * kind: hook * core: fa * spec: (none) * summary: Provides customer payments queries and mutation actions scoped to the current organization. * score: 4 ### hook useDashboardDefinition * file: src/cores/fa/hooks/useDashboardDefinition.ts:19 * kind: hook * core: fa * spec: (none) * summary: Hook for managing dashboard definition. * score: 1 ### hook useDashboardWidgets * file: src/cores/fa/hooks/useAnalyticsDashboard.ts:18 * kind: hook * core: fa * spec: (none) * summary: Hook for managing dashboard widgets. * score: 1 ### hook useDeferredBalanceReport * file: src/cores/fa/hooks/useRevenueReports.ts:124 * kind: hook * core: fa * spec: (none) * summary: Deferred revenue balance report — summary totals plus per-record breakdown. * score: 4 ### hook useDeferredRevenue * file: src/cores/fa/hooks/useDeferredRevenue.ts:52 * kind: hook * core: fa * spec: (none) * summary: Fetch a single deferred revenue record. * score: 4 ### hook useDeferredRevenueList * file: src/cores/fa/hooks/useDeferredRevenue.ts:25 * kind: hook * core: fa * spec: (none) * summary: List deferred revenue records for the current organization. * score: 4 ### hook useDelegateApproval * file: src/cores/fa/hooks/useExpenseApprovals.ts:286 * kind: hook * core: fa * spec: (none) * summary: Hook to delegate an approval to another user * score: 4 ### hook useDeleteAccount * file: src/cores/fa/hooks/useAccounts.ts:155 * kind: hook * core: fa * spec: (none) * summary: Hook for managing delete account. * score: 1 ### hook useDeleteAccountMapping * file: src/cores/fa/hooks/useAccountMappings.ts:123 * kind: hook * core: fa * spec: (none) * summary: Provides delete account mapping queries and mutation actions scoped to the current organization. * score: 4 ### hook useDeleteAdjustment * file: src/cores/fa/hooks/useReconciliationAdjustments.ts:116 * kind: hook * core: fa * spec: (none) * summary: Delete an adjustment * score: 1 ### hook useDeleteAlertThreshold * file: src/cores/fa/hooks/useAlertThresholds.ts:179 * kind: hook * core: fa * spec: (none) * summary: Provides delete alert threshold queries and mutation actions scoped to the current organization. * score: 4 ### hook useDeleteAnnotation * file: src/cores/fa/hooks/useReportAnnotations.ts:143 * kind: hook * core: fa * spec: (none) * summary: Provides delete annotation queries and mutation actions scoped to the current organization. * score: 4 ### hook useDeleteApprovalThreshold * file: src/cores/fa/hooks/useApprovalThresholds.ts:127 * kind: hook * core: fa * spec: (none) * summary: Hook to delete an approval threshold * score: 4 ### hook useDeleteBankAccount * file: src/cores/fa/hooks/useBankAccounts.ts:357 * kind: hook * core: fa * spec: (none) * summary: Provides delete bank account queries and mutation actions scoped to the current organization. * score: 4 ### hook useDeleteBankReconciliation * file: src/cores/fa/hooks/useBankReconciliations.ts:366 * kind: hook * core: fa * spec: (none) * summary: Provides delete bank reconciliation queries and mutation actions scoped to the current organization. * score: 4 ### hook useDeleteBankStatement * file: src/cores/fa/hooks/useBankStatements.ts:354 * kind: hook * core: fa * spec: (none) * summary: Provides delete bank statement queries and mutation actions scoped to the current organization. * score: 4 ### hook useDeleteBill * file: src/cores/fa/hooks/useVendorBills.ts:314 * kind: hook * core: fa * spec: (none) * summary: Hook to delete a vendor bill (draft only) * score: 4 ### hook useDeleteBillLine * file: src/cores/fa/hooks/useBillLines.ts:201 * kind: hook * core: fa * spec: (none) * summary: Hook to delete a bill line * score: 1 ### hook useDeleteBudget * file: src/cores/fa/hooks/useBudgets.ts:187 * kind: hook * core: fa * spec: (none) * summary: Provides delete budget queries and mutation actions scoped to the current organization. * score: 4 ### hook useDeleteBudgetLine * file: src/cores/fa/hooks/useBudgetLines.ts:152 * kind: hook * core: fa * spec: (none) * summary: Hook for managing delete budget line. * score: 1 ### hook useDeleteBudgetScenario * file: src/cores/fa/hooks/useBudgetScenarioMutation.ts:112 * kind: hook * core: fa * spec: (none) * summary: Hook for managing delete budget scenario. * score: 1 ### hook useDeleteBudgetTemplate * file: src/cores/fa/hooks/useBudgetTemplateMutation.ts:106 * kind: hook * core: fa * spec: (none) * summary: Provides delete budget template queries and mutation actions scoped to the current organization. * score: 4 ### hook useDeleteCashForecast * file: src/cores/fa/hooks/useCashForecasts.ts:258 * kind: hook * core: fa * spec: (none) * summary: Delete a cash forecast.Uses defense-in-depth by verifying organization\_id. * score: 4 ### hook useDeleteCategoryMapping * file: src/cores/fa/hooks/useExpenseCategoryMappings.ts:253 * kind: hook * core: fa * spec: (none) * summary: Hook to delete a category mappingNote: This is a hard delete as category mappings don't have deleted\_at * score: 4 ### hook useDeleteCloseChecklist * file: src/cores/fa/close/useCloseChecklists.ts:411 * kind: hook * core: fa * spec: (none) * summary: Delete a close checklistIssue #4 fix: Check task deletion result before proceeding to delete checklist * score: 4 ### hook useDeleteCloseDocumentation * file: src/cores/fa/close/useCloseDocumentation.ts:222 * kind: hook * core: fa * spec: (none) * summary: Delete documentationIssue #7 fix: Check storage deletion result and handle errorsNote: This deletes both the file from storage and the metadata record. * score: 4 ### hook useDeleteCloseTask * file: src/cores/fa/close/useCloseTasks.ts:603 * kind: hook * core: fa * spec: (none) * summary: Delete a close task * score: 1 ### hook useDeleteComplianceMapping * file: src/cores/fa/hooks/useComplianceMappings.ts:120 * kind: hook * core: fa * spec: (none) * summary: Delete a compliance-account mapping (org-scoped). * score: 4 ### hook useDeleteCreditMemo * file: src/cores/fa/hooks/useCreditMemos.ts:368 * kind: hook * core: fa * spec: (none) * summary: Provides delete credit memo queries and mutation actions scoped to the current organization. * score: 4 ### hook useDeleteCreditMemoLine * file: src/cores/fa/hooks/useCreditMemoLines.ts:132 * kind: hook * core: fa * spec: (none) * summary: Provides delete credit memo line queries and mutation actions scoped to the current organization. * score: 4 ### hook useDeleteCustomer * file: src/cores/fa/hooks/useCustomers.ts:189 * kind: hook * core: fa * spec: (none) * summary: Provides delete customer queries and mutation actions scoped to the current organization. * score: 4 ### hook useDeleteCustomerPayment * file: src/cores/fa/hooks/useCustomerPayments.ts:239 * kind: hook * core: fa * spec: (none) * summary: Provides delete customer payment queries and mutation actions scoped to the current organization. * score: 4 ### hook useDeleteDepartment * file: src/cores/fa/hooks/useDepartments.ts:225 * kind: hook * core: fa * spec: (none) * summary: Provides delete department queries and mutation actions scoped to the current organization. * score: 4 ### hook useDeleteFAEntityRelationship * file: src/cores/fa/hooks/useFAEntityRelationships.ts:67 * kind: hook * core: fa * spec: (none) * summary: Removes a parent/child ownership link. * score: 4 ### hook useDeleteFiscalYear * file: src/cores/fa/hooks/useFiscalYears.ts:157 * kind: hook * core: fa * spec: (none) * summary: Provides delete fiscal year queries and mutation actions scoped to the current organization. * score: 4 ### hook useDeleteForecastLine * file: src/cores/fa/hooks/useRollingForecastMutation.ts:291 * kind: hook * core: fa * spec: (none) * summary: Provides delete forecast line queries and mutation actions scoped to the current organization. * score: 4 ### hook useDeleteFund * file: src/cores/fa/hooks/useFunds.ts:151 * kind: hook * core: fa * spec: (none) * summary: Provides delete fund queries and mutation actions scoped to the current organization. * score: 4 ### hook useDeleteGrantDrawdown * file: src/cores/fa/hooks/useGrantDrawdowns.ts:324 * kind: hook * core: fa * spec: (none) * summary: Delete a drawdown (only pending requests can be deleted). * score: 4 ### hook useDeleteIndirectCostPool * file: src/cores/fa/hooks/useIndirectCostPools.ts:147 * kind: hook * core: fa * spec: (none) * summary: Soft delete an indirect cost pool. * score: 4 ### hook useDeleteIndirectCostRate * file: src/cores/fa/hooks/useIndirectCostRates.ts:306 * kind: hook * core: fa * spec: (none) * summary: Delete an IDC rate (only draft rates can be deleted). * score: 4 ### hook useDeleteInvoice * file: src/cores/fa/hooks/useInvoices.ts:306 * kind: hook * core: fa * spec: (none) * summary: Hook for managing delete invoice. * score: 1 ### hook useDeleteInvoiceLine * file: src/cores/fa/hooks/useInvoiceLines.ts:140 * kind: hook * core: fa * spec: (none) * summary: Hook for managing delete invoice line. * score: 1 ### hook useDeleteJournalEntry * file: src/cores/fa/hooks/useJournalEntries.ts:165 * kind: hook * core: fa * spec: (none) * summary: Provides delete journal entry queries and mutation actions scoped to the current organization. * score: 4 ### hook useDeleteJournalEntryLine * file: src/cores/fa/hooks/useJournalEntryLines.ts:119 * kind: hook * core: fa * spec: (none) * summary: Provides delete journal entry line queries and mutation actions scoped to the current organization. * score: 4 ### hook useDeleteMatch * file: src/cores/fa/hooks/useReconciliationMatches.ts:369 * kind: hook * core: fa * spec: (none) * summary: Provides delete match queries and mutation actions scoped to the current organization. * score: 4 ### hook useDeletePayment * file: src/cores/fa/hooks/usePayments.ts:168 * kind: hook * core: fa * spec: (none) * summary: Hook for managing delete payment. * score: 1 ### hook useDeletePaymentBatch * file: src/cores/fa/hooks/usePaymentBatches.ts:212 * kind: hook * core: fa * spec: (none) * summary: Provides delete payment batch queries and mutation actions scoped to the current organization. * score: 4 ### hook useDeletePaymentPlan * file: src/cores/fa/hooks/usePaymentPlans.ts:413 * kind: hook * core: fa * spec: (none) * summary: Hook to delete a payment plan (soft delete) * score: 4 ### hook useDeletePlaidCategoryMapping * file: src/cores/fa/hooks/usePlaidCategoryMappings.ts:161 * kind: hook * core: fa * spec: (none) * summary: Provides delete plaid category mapping queries and mutation actions scoped to the current organization. * score: 4 ### hook useDeletePOLine * file: src/cores/fa/hooks/usePurchaseOrderLines.ts:171 * kind: hook * core: fa * spec: (none) * summary: Delete a PO line item * score: 1 ### hook useDeleteProgram * file: src/cores/fa/hooks/usePrograms.ts:153 * kind: hook * core: fa * spec: (none) * summary: Provides delete program queries and mutation actions scoped to the current organization. * score: 4 ### hook useDeleteProject * file: src/cores/fa/hooks/useProjects.ts:207 * kind: hook * core: fa * spec: (none) * summary: Delete a project. * score: 1 ### hook useDeleteProjectBudget * file: src/cores/fa/hooks/useProjectBudgets.ts:162 * kind: hook * core: fa * spec: (none) * summary: Delete a project budget line. * score: 1 ### hook useDeleteProjectExpense * file: src/cores/fa/hooks/useProjectExpenses.ts:334 * kind: hook * core: fa * spec: (none) * summary: Delete an expense allocation. * score: 1 ### hook useDeleteProjectRevenue * file: src/cores/fa/hooks/useProjectRevenue.ts:284 * kind: hook * core: fa * spec: (none) * summary: Delete a revenue allocation. * score: 1 ### hook useDeletePurchaseOrder * file: src/cores/fa/hooks/usePurchaseOrders.ts:291 * kind: hook * core: fa * spec: (none) * summary: Delete purchase order (draft only) * score: 4 ### hook useDeleteReceipt * file: src/cores/fa/hooks/useReceiptUpload.ts:158 * kind: hook * core: fa * spec: (none) * summary: Hook to delete a receipt from storage * score: 4 ### hook useDeleteRecurringEntry * file: src/cores/fa/hooks/useRecurringEntries.ts:143 * kind: hook * core: fa * spec: (none) * summary: Provides delete recurring entry queries and mutation actions scoped to the current organization. * score: 4 ### hook useDeleteRecurringInvoice * file: src/cores/fa/hooks/useRecurringInvoices.ts:282 * kind: hook * core: fa * spec: (none) * summary: Provides delete recurring invoice queries and mutation actions scoped to the current organization. * score: 4 ### hook useDeleteRecurringTemplate * file: src/cores/fa/hooks/useRecurringTransactionTemplates.ts:297 * kind: hook * core: fa * spec: (none) * summary: Provides delete recurring template queries and mutation actions scoped to the current organization. * score: 4 ### hook useDeleteReportDefinition * file: src/cores/fa/hooks/useReportDefinitions.ts:88 * kind: hook * core: fa * spec: (none) * summary: Hook for managing delete report definition. * score: 1 ### hook useDeleteReportSchedule * file: src/cores/fa/hooks/useReportSchedules.ts:157 * kind: hook * core: fa * spec: (none) * summary: Hook for managing delete report schedule. * score: 1 ### hook useDeleteRollingForecast * file: src/cores/fa/hooks/useRollingForecastMutation.ts:183 * kind: hook * core: fa * spec: (none) * summary: Provides delete rolling forecast queries and mutation actions scoped to the current organization. * score: 4 ### hook useDeleteScenarioBudgetLine * file: src/cores/fa/hooks/useBudgetScenarioMutation.ts:265 * kind: hook * core: fa * spec: (none) * summary: Hook for managing delete scenario budget line. * score: 1 ### hook useDeleteTransactionRule * file: src/cores/fa/hooks/useTransactionRules.ts:163 * kind: hook * core: fa * spec: (none) * summary: Soft-delete a transaction rule (sets deleted\_at) * score: 4 ### hook useDeleteVendor * file: src/cores/fa/hooks/useVendors.ts:168 * kind: hook * core: fa * spec: (none) * summary: Hook to deactivate a vendor (soft delete) * score: 4 ### hook useDepartment * file: src/cores/fa/hooks/useDepartments.ts:94 * kind: hook * core: fa * spec: (none) * summary: Provides department queries and mutation actions scoped to the current organization. * score: 4 ### hook useDepartments * file: src/cores/fa/hooks/useDepartments.ts:66 * kind: hook * core: fa * spec: (none) * summary: Provides departments queries and mutation actions scoped to the current organization. * score: 4 ### hook useDepositsInTransitReport * file: src/cores/fa/hooks/useDepositsInTransitReport.ts:38 * kind: hook * core: fa * spec: (none) * summary: Fetch deposits in transit report * score: 4 ### hook useDepreciationHistory * file: src/cores/fa/hooks/useAssetDepreciation.ts:51 * kind: hook * core: fa * spec: (none) * summary: Get depreciation history for a specific asset.Defense-in-depth: includes organizationId filter. * score: 4 ### hook useDepreciationSchedule * file: src/cores/fa/hooks/useAssetDepreciation.ts:94 * kind: hook * core: fa * spec: (none) * summary: Get depreciation schedule for a month (all assets). * score: 4 ### hook useDepreciationSummary * file: src/cores/fa/hooks/useAssetDepreciation.ts:188 * kind: hook * core: fa * spec: (none) * summary: Get depreciation summary stats for dashboard. * score: 4 ### hook useDisposalHistory * file: src/cores/fa/hooks/useAssetDisposals.ts:35 * kind: hook * core: fa * spec: (none) * summary: Get disposal history with optional filters. * score: 4 ### hook useDisposalSummary * file: src/cores/fa/hooks/useAssetDisposals.ts:175 * kind: hook * core: fa * spec: (none) * summary: Get disposal summary for dashboard. * score: 4 ### hook useDisposeAsset * file: src/cores/fa/hooks/useFixedAssets.ts:374 * kind: hook * core: fa * spec: (none) * summary: Dispose a fixed asset.Updates asset status to 'disposed' and creates a disposal record. * score: 4 ### hook useDownloadReportFile * file: src/cores/fa/hooks/useReportRuns.ts:150 * kind: hook * core: fa * spec: (none) * summary: Provides download report file queries and mutation actions scoped to the current organization. * score: 4 ### hook useDraftCollectionNotice * file: src/cores/fa/hooks/useDraftCollectionNotice.ts:46 * kind: hook * core: fa * spec: (none) * summary: Hook that drafts a collection notice via the platform AI structured-outputprimitive, grounded only in the supplied financial fields. * score: 4 ### hook useDrawdownAlert * file: src/cores/fa/hooks/useGrantDrawdowns.ts:391 * kind: hook * core: fa * spec: (none) * summary: Check if a project's drawdowns have reached the alert threshold. * score: 4 ### hook useDrawdownSummary * file: src/cores/fa/hooks/useGrantDrawdowns.ts:434 * kind: hook * core: fa * spec: (none) * summary: Get drawdown summary for a project. * score: 4 ### hook useExcludeBankTransaction * file: src/cores/fa/hooks/useBankTransactions.ts:266 * kind: hook * core: fa * spec: (none) * summary: Exclude a pending bank transaction line (moves it to the Excluded tab). Excluded linesare not posted and do not appear in Pending (FA-29 #944). * score: 4 ### hook useExpenseApprovalHistory * file: src/cores/fa/hooks/useExpenseApprovalWorkflow\.ts:214 * kind: hook * core: fa * spec: (none) * summary: Hook to fetch approval history for an expense report. * score: 4 ### hook useExpenseCategories * file: src/cores/fa/hooks/useExpenseCategoryMappings.ts:325 * kind: hook * core: fa * spec: (none) * summary: Get list of distinct expense categories for dropdown * score: 4 ### hook useExpenseDashboardStats * file: src/cores/fa/hooks/useExpenseDashboardStats.ts:32 * kind: hook * core: fa * spec: (none) * summary: Hook for managing expense dashboard stats. * score: 1 ### hook useExpenseLine * file: src/cores/fa/hooks/useExpenseLines.ts:81 * kind: hook * core: fa * spec: (none) * summary: Hook to fetch a single expense line by ID * score: 4 ### hook useExpenseLinesByReport * file: src/cores/fa/hooks/useExpenseLines.ts:52 * kind: hook * core: fa * spec: (none) * summary: Hook to fetch expense lines for a specific reportFilters soft-deleted records (deleted\_at IS NULL) * score: 4 ### hook useExpensePoliciesByType * file: src/cores/fa/hooks/useExpensePolicies.ts:191 * kind: hook * core: fa * spec: (none) * summary: Hook to fetch policies by type (e.g., 'mileage', 'per\_diem') * score: 4 ### hook useExpensePolicy * file: src/cores/fa/hooks/useExpensePolicies.ts:165 * kind: hook * core: fa * spec: (none) * summary: Hook to fetch a single expense policy by ID * score: 4 ### hook useExpensePolicyList * file: src/cores/fa/hooks/useExpensePolicies.ts:130 * kind: hook * core: fa * spec: (none) * summary: Hook to fetch list of expense policies with optional filtersFilters soft-deleted records (deleted\_at IS NULL) * score: 4 ### hook useExpensePolicyRuleWizardContext * file: src/cores/fa/wizards/expense-policy-rule/expensePolicyRuleWizardContext.ts:21 * kind: hook * core: fa * spec: (none) * summary: Returns the non-null expense policy rule wizard context. * returns: from the nearest provider. * score: 4 ### hook useExpenseReport * file: src/cores/fa/hooks/useExpenseReports.ts:129 * kind: hook * core: fa * spec: (none) * summary: Hook to fetch a single expense report by ID * score: 4 ### hook useExpenseReportList * file: src/cores/fa/hooks/useExpenseReports.ts:77 * kind: hook * core: fa * spec: (none) * summary: Hook to fetch list of expense reports with optional filtersFilters soft-deleted records (deleted\_at IS NULL) * score: 4 ### hook useExpenseRuleList * file: src/cores/fa/hooks/useExpenseRules.ts:59 * kind: hook * core: fa * spec: (none) * summary: Fetches (with nested ) for the given organization. * params: * organizationId — Organization UUID; query is disabled when falsy. * returns: TanStack result (, , , etc.). * score: 4 ### hook useExtractVendorBill * file: src/cores/fa/hooks/useExtractVendorBill.ts:75 * kind: hook * core: fa * spec: (none) * summary: Hook that OCR-extracts a vendor bill via the shared edge function using the field-constrained . * score: 4 ### hook useFADashboardStats * file: src/cores/fa/hooks/useFADashboardStats.ts:25 * kind: hook * core: fa * spec: (none) * summary: Hook for managing fadashboard stats. * score: 1 ### hook useFAEntities * file: src/cores/fa/hooks/useFAEntities.ts:43 * kind: hook * core: fa * spec: (none) * summary: Lists active legal entities scoped to the current organization. * score: 4 ### hook useFAEntity * file: src/cores/fa/hooks/useFAEntities.ts:66 * kind: hook * core: fa * spec: (none) * summary: Fetches a single legal entity by id, organization-scoped. * score: 4 ### hook useFAEntityRelationships * file: src/cores/fa/hooks/useFAEntityRelationships.ts:24 * kind: hook * core: fa * spec: (none) * summary: Lists parent/child ownership relationships for the org. * score: 4 ### hook useFAKeyboardShortcuts * file: src/cores/fa/hooks/useFAKeyboardShortcuts.ts:37 * kind: hook * core: fa * spec: (none) * summary: Hook for managing fakeyboard shortcuts. * score: 1 ### hook useFAModuleSettings * file: src/cores/fa/hooks/useFAModuleSettings.ts:17 * kind: hook * core: fa * spec: (none) * summary: Hook for managing FA module settings at the organization levelUses context for organizationId - standardized pattern * score: 1 ### hook useFinancialBalances * file: src/cores/fa/hooks/useFinancialBalances.ts:82 * kind: hook * core: fa * spec: (none) * summary: Hook for managing financial balances. * score: 1 ### hook useFinancialStatementPdf * file: src/cores/fa/hooks/useFinancialStatementPdf.ts:16 * kind: hook * core: fa * spec: (none) * summary: Hook for managing financial statement pdf. * score: 1 ### hook useFinancialTrends * file: src/cores/fa/hooks/useFinancialTrends.ts:23 * kind: hook * core: fa * spec: (none) * summary: Hook for managing financial trends. * score: 1 ### hook useFiscalPeriod * file: src/cores/fa/hooks/useFiscalPeriods.ts:50 * kind: hook * core: fa * spec: (none) * summary: Hook for managing fiscal period. * score: 1 ### hook useFiscalPeriods * file: src/cores/fa/hooks/useFiscalPeriods.ts:19 * kind: hook * core: fa * spec: (none) * summary: Hook for managing fiscal periods. * score: 1 ### hook useFiscalYear * file: src/cores/fa/hooks/useFiscalYears.ts:53 * kind: hook * core: fa * spec: (none) * summary: Provides fiscal year queries and mutation actions scoped to the current organization. * score: 4 ### hook useFiscalYears * file: src/cores/fa/hooks/useFiscalYears.ts:29 * kind: hook * core: fa * spec: (none) * summary: Provides fiscal years queries and mutation actions scoped to the current organization. * score: 4 ### hook useFixedAsset * file: src/cores/fa/hooks/useFixedAssets.ts:149 * kind: hook * core: fa * spec: (none) * summary: Get a single fixed asset by ID.Defense-in-depth: includes organizationId filter. * score: 4 ### hook useFixedAssetList * file: src/cores/fa/hooks/useFixedAssets.ts:78 * kind: hook * core: fa * spec: (none) * summary: List fixed assets with optional filters.Sorted by asset\_tag ascending. * score: 4 ### hook useFixedAssetsBySite * file: src/cores/fa/hooks/useFixedAssets.ts:199 * kind: hook * core: fa * spec: (none) * summary: Get active assets for a specific site. * score: 4 ### hook useFixedAssetSummary * file: src/cores/fa/hooks/useFixedAssets.ts:228 * kind: hook * core: fa * spec: (none) * summary: Get asset count summary by status. * score: 4 ### hook useForecast * file: src/cores/fa/hooks/useForecast.ts:29 * kind: hook * core: fa * spec: (none) * summary: Hook for managing forecast. * score: 1 ### hook useForecastSummary * file: src/cores/fa/hooks/useForecast.ts:60 * kind: hook * core: fa * spec: (none) * summary: Hook for managing forecast summary. * score: 1 ### hook useForecastVersion * file: src/cores/fa/hooks/useForecastVersions.ts:38 * kind: hook * core: fa * spec: (none) * summary: Hook for managing forecast version. * score: 1 ### hook useForecastVersions * file: src/cores/fa/hooks/useForecastVersions.ts:12 * kind: hook * core: fa * spec: (none) * summary: Hook for managing forecast versions. * score: 1 ### hook useForecastVsActual * file: src/cores/fa/hooks/useForecastVsActual.ts:21 * kind: hook * core: fa * spec: (none) * summary: Hook for managing forecast vs actual. * score: 1 ### hook useForecastVsActualSummary * file: src/cores/fa/hooks/useForecastVsActual.ts:94 * kind: hook * core: fa * spec: (none) * summary: Hook for managing forecast vs actual summary. * score: 1 ### hook useFunctionalExpenses * file: src/cores/fa/hooks/useFunctionalExpenses.ts:25 * kind: hook * core: fa * spec: (none) * summary: Hook for managing functional expenses. * score: 1 ### hook useFunctionalExpensesMatrix * file: src/cores/fa/hooks/useFunctionalExpensesMatrix.ts:17 * kind: hook * core: fa * spec: (none) * summary: Hook for managing functional expenses matrix. * score: 1 ### hook useFunctionalExpensesSummary * file: src/cores/fa/hooks/useFunctionalExpenses.ts:47 * kind: hook * core: fa * spec: (none) * summary: Hook for managing functional expenses summary. * score: 1 ### hook useFund * file: src/cores/fa/hooks/useFunds.ts:39 * kind: hook * core: fa * spec: (none) * summary: Provides fund queries and mutation actions scoped to the current organization. * score: 4 ### hook useFunds * file: src/cores/fa/hooks/useFunds.ts:15 * kind: hook * core: fa * spec: (none) * summary: Provides funds queries and mutation actions scoped to the current organization. * score: 4 ### hook useGenerate1099Forms * file: src/cores/fa/hooks/use1099Forms.ts:131 * kind: hook * core: fa * spec: (none) * summary: Mutation: Generate 1099 forms for a tax year (calls RPC) * score: 4 ### hook useGenerateCreditMemoNumber * file: src/cores/fa/hooks/useCreditMemos.ts:195 * kind: hook * core: fa * spec: (none) * summary: Provides generate credit memo number queries and mutation actions scoped to the current organization. * score: 4 ### hook useGenerateCustomerNumber * file: src/cores/fa/hooks/useCustomers.ts:84 * kind: hook * core: fa * spec: (none) * summary: Provides generate customer number queries and mutation actions scoped to the current organization. * score: 4 ### hook useGenerateExpenseReportNumber * file: src/cores/fa/hooks/useExpenseReports.ts:159 * kind: hook * core: fa * spec: (none) * summary: Hook to generate next expense report numberFormat: EXP-YYYYMMDD-###### * score: 4 ### hook useGenerateForecast * file: src/cores/fa/hooks/useCashForecasts.ts:315 * kind: hook * core: fa * spec: (none) * summary: Generate cash forecasts based on assumptions.Creates multiple forecast records for the specified horizon. * score: 4 ### hook useGenerateForm941 * file: src/cores/fa/hooks/useTaxReports.ts:130 * kind: hook * core: fa * spec: (none) * summary: Mutation: Generate Form 941 (quarterly payroll report) * score: 4 ### hook useGenerateFromRecurring * file: src/cores/fa/hooks/useRecurringEntries.ts:173 * kind: hook * core: fa * spec: (none) * summary: Provides generate from recurring queries and mutation actions scoped to the current organization. * score: 4 ### hook useGenerateFromRecurringInvoice * file: src/cores/fa/hooks/useRecurringInvoices.ts:316 * kind: hook * core: fa * spec: (none) * summary: Provides generate from recurring invoice queries and mutation actions scoped to the current organization. * score: 4 ### hook useGenerateInvoiceNumber * file: src/cores/fa/hooks/useInvoices.ts:123 * kind: hook * core: fa * spec: (none) * summary: Hook for managing generate invoice number. * score: 1 ### hook useGeneratePaymentNumber * file: src/cores/fa/hooks/useCustomerPayments.ts:156 * kind: hook * core: fa * spec: (none) * summary: Provides generate payment number queries and mutation actions scoped to the current organization. * score: 4 ### hook useGeneratePONumber * file: src/cores/fa/hooks/usePurchaseOrders.ts:194 * kind: hook * core: fa * spec: (none) * summary: Generate next PO number for organization * score: 4 ### hook useGenerateReimbursementPaymentNumber * file: src/cores/fa/hooks/useReimbursementPayments.ts:175 * kind: hook * core: fa * spec: (none) * summary: Hook to generate next payment numberFormat: RMB-YYYYMMDD-#### * score: 4 ### hook useGenerateVendorNumber * file: src/cores/fa/hooks/useVendors.ts:201 * kind: hook * core: fa * spec: (none) * summary: Hook to generate next vendor number for an organization * score: 4 ### hook useGenerateW2Forms * file: src/cores/fa/hooks/useW2Forms.ts:130 * kind: hook * core: fa * spec: (none) * summary: Mutation: Generate W-2 forms for a tax year (calls RPC) * score: 4 ### hook useGetReceiptUrl * file: src/cores/fa/hooks/useReceiptUpload.ts:136 * kind: hook * core: fa * spec: (none) * summary: Hook to get a fresh signed URL for a receipt * score: 4 ### hook useGLAccountForCategory * file: src/cores/fa/hooks/useExpenseCategoryMappings.ts:124 * kind: hook * core: fa * spec: (none) * summary: Hook to get GL account for a specific categoryUses fa\_get\_category\_gl\_account RPC * score: 4 ### hook useGLAccountOptions * file: src/cores/fa/hooks/useGLAccountOptions.ts:20 * kind: hook * core: fa * spec: (none) * summary: Hook for managing glaccount options. * score: 1 ### hook useGrantCompliance * file: src/cores/fa/hooks/useGrantCompliance.ts:30 * kind: hook * core: fa * spec: (none) * summary: Hook for managing grant compliance. * score: 1 ### hook useGrantComplianceSummary * file: src/cores/fa/hooks/useGrantCompliance.ts:52 * kind: hook * core: fa * spec: (none) * summary: Hook for managing grant compliance summary. * score: 1 ### hook useGrantDrawdown * file: src/cores/fa/hooks/useGrantDrawdowns.ts:87 * kind: hook * core: fa * spec: (none) * summary: Get a single drawdown by ID. * score: 1 ### hook useGrantDrawdowns * file: src/cores/fa/hooks/useGrantDrawdowns.ts:38 * kind: hook * core: fa * spec: (none) * summary: List drawdowns for a project. * score: 1 ### hook useHighUtilizationCreditLines * file: src/cores/fa/hooks/useCreditLines.ts:137 * kind: hook * core: fa * spec: (none) * summary: Get active credit lines with utilization above the threshold.Used for alerts and dashboard widgets. * score: 4 ### hook useHistoricalSync * file: src/cores/fa/hooks/useHistoricalSync.ts:31 * kind: hook * core: fa * spec: (none) * summary: Hook for managing historical sync. * score: 1 ### hook useImportTemplate * file: src/cores/fa/hooks/useImportTemplate.ts:29 * kind: hook * core: fa * spec: (none) * summary: Hook for managing import template. * score: 1 ### hook useIndirectCostPool * file: src/cores/fa/hooks/useIndirectCostPools.ts:63 * kind: hook * core: fa * spec: (none) * summary: Get a single indirect cost pool by ID. * score: 4 ### hook useIndirectCostPools * file: src/cores/fa/hooks/useIndirectCostPools.ts:27 * kind: hook * core: fa * spec: (none) * summary: List indirect cost pools for an organization. * score: 4 ### hook useIndirectCostRate * file: src/cores/fa/hooks/useIndirectCostRates.ts:92 * kind: hook * core: fa * spec: (none) * summary: Get a single IDC rate by ID. * score: 1 ### hook useIndirectCostRates * file: src/cores/fa/hooks/useIndirectCostRates.ts:38 * kind: hook * core: fa * spec: (none) * summary: List IDC rates for an organization. * score: 4 ### hook useInstallmentsByPlan * file: src/cores/fa/hooks/usePaymentPlanInstallments.ts:52 * kind: hook * core: fa * spec: (none) * summary: Hook to list installments for a specific payment plan * score: 4 ### hook useInvestment * file: src/cores/fa/hooks/useInvestments.ts:108 * kind: hook * core: fa * spec: (none) * summary: Get a single investment by ID. * score: 4 ### hook useInvestmentList * file: src/cores/fa/hooks/useInvestments.ts:49 * kind: hook * core: fa * spec: (none) * summary: List investments with optional status, type, and maturity filters.Sorted by maturity\_date ascending (soonest first). * score: 4 ### hook useInvoice * file: src/cores/fa/hooks/useInvoices.ts:90 * kind: hook * core: fa * spec: (none) * summary: Hook for managing invoice. * score: 1 ### hook useInvoiceCreditApplications * file: src/cores/fa/hooks/useCreditApplications.ts:92 * kind: hook * core: fa * spec: (none) * summary: Provides invoice credit applications queries and mutation actions scoped to the current organization. * score: 4 ### hook useInvoiceLines * file: src/cores/fa/hooks/useInvoiceLines.ts:29 * kind: hook * core: fa * spec: (none) * summary: Hook for managing invoice lines. * score: 1 ### hook useInvoiceList * file: src/cores/fa/hooks/useInvoices.ts:47 * kind: hook * core: fa * spec: (none) * summary: Hook for managing invoice list. * score: 1 ### hook useInvoicePaymentApplications * file: src/cores/fa/hooks/useARPaymentApplications.ts:80 * kind: hook * core: fa * spec: (none) * summary: Provides invoice payment applications queries and mutation actions scoped to the current organization. * score: 4 ### hook useInvoicePdf * file: src/cores/fa/hooks/useInvoicePdf.ts:19 * kind: hook * core: fa * spec: (none) * summary: Hook for managing invoice pdf. * score: 1 ### hook useIssueCreditMemo * file: src/cores/fa/hooks/useCreditMemos.ts:280 * kind: hook * core: fa * spec: (none) * summary: Provides issue credit memo queries and mutation actions scoped to the current organization. * score: 4 ### hook useJournalEntries * file: src/cores/fa/hooks/useJournalEntries.ts:26 * kind: hook * core: fa * spec: (none) * summary: Provides journal entries queries and mutation actions scoped to the current organization. * score: 4 ### hook useJournalEntry * file: src/cores/fa/hooks/useJournalEntries.ts:57 * kind: hook * core: fa * spec: (none) * summary: Provides journal entry queries and mutation actions scoped to the current organization. * score: 4 ### hook useJournalEntryAuditTrailReport * file: src/cores/fa/hooks/useJournalEntryAuditTrailReport.ts:35 * kind: hook * core: fa * spec: (none) * summary: Fetches journal entries for audit trail reporting with profile joins. * params: * organizationId — Tenant org ID (required to enable query) * filters — Optional date range filters (dateFrom / dateTo) * returns: Standard useQuery result with JournalAuditTrailRow\[] * score: 4 ### hook useJournalEntryLines * file: src/cores/fa/hooks/useJournalEntryLines.ts:24 * kind: hook * core: fa * spec: (none) * summary: Provides journal entry lines queries and mutation actions scoped to the current organization. * score: 4 ### hook useKPIDefinitions * file: src/cores/fa/hooks/useKPIs.ts:19 * kind: hook * core: fa * spec: (none) * summary: Hook for managing kpidefinitions. * score: 1 ### hook useKPIHistory * file: src/cores/fa/hooks/useKPIs.ts:45 * kind: hook * core: fa * spec: (none) * summary: Hook for managing kpihistory. * score: 1 ### hook useLatestCashPosition * file: src/cores/fa/hooks/useCashPositions.ts:122 * kind: hook * core: fa * spec: (none) * summary: Get the most recent cash position for an organization.This is the most common use case for dashboards. * score: 4 ### hook useLockBudget * file: src/cores/fa/hooks/useBudgets.ts:264 * kind: hook * core: fa * spec: (none) * summary: Provides lock budget queries and mutation actions scoped to the current organization. * score: 4 ### hook useMarkInCollection * file: src/cores/fa/hooks/useCollectionWorkflow\.ts:332 * kind: hook * core: fa * spec: (none) * summary: Provides mark in collection queries and mutation actions scoped to the current organization. * score: 4 ### hook useMarkOverdueInstallments * file: src/cores/fa/hooks/usePaymentPlanInstallments.ts:261 * kind: hook * core: fa * spec: (none) * summary: Hook to update installment status to overdue (batch operation) * score: 4 ### hook useMaturingInvestments * file: src/cores/fa/hooks/useInvestments.ts:153 * kind: hook * core: fa * spec: (none) * summary: Get investments approaching maturity within the specified days.Used for alerts and dashboard widgets. * score: 4 ### hook useModifyRevenueSchedule * file: src/cores/fa/hooks/useRevenueScheduleModifications.ts:108 * kind: hook * core: fa * spec: (none) * summary: Modify an active revenue schedule (amount and/or end date).Server validates that new total ≥ already recognized. * score: 4 ### hook useOpenCommitments * file: src/cores/fa/hooks/useOpenCommitments.ts:30 * kind: hook * core: fa * spec: (none) * summary: Hook for managing open commitments. * score: 1 ### hook useOpenCommitmentsSummary * file: src/cores/fa/hooks/useOpenCommitments.ts:70 * kind: hook * core: fa * spec: (none) * summary: Hook for managing open commitments summary. * score: 1 ### hook useOptionalExpensePolicyRuleWizardContext * file: src/cores/fa/wizards/expense-policy-rule/expensePolicyRuleWizardContext.ts:34 * kind: hook * core: fa * spec: (none) * summary: Returns wizard context when a provider is mounted; otherwise (for standalone PF-41 step previews). * returns: Context value or if no ancestor exists. * score: 4 ### hook useOptionalRevenueScheduleWizardContext * file: src/cores/fa/wizards/revenue-schedule-creation/revenueScheduleWizardContext.ts:30 * kind: hook * core: fa * spec: (none) * summary: Optional accessor for standalone PF-41 step previews. * score: 4 ### hook useOrganizationUsers * file: src/cores/fa/wizards/financial-close-setup/hooks/useOrganizationUsers.ts:26 * kind: hook * core: fa * spec: (none) * summary: Fetches users who have roles in the current organization.Used for task assignment in the close setup wizard. * score: 4 ### hook useOutstandingChecksReport * file: src/cores/fa/hooks/useOutstandingChecksReport.ts:39 * kind: hook * core: fa * spec: (none) * summary: Fetch outstanding checks report * score: 4 ### hook useOverdueInstallments * file: src/cores/fa/hooks/usePaymentPlanInstallments.ts:77 * kind: hook * core: fa * spec: (none) * summary: Hook to get overdue installments for an organization * score: 4 ### hook usePauseRecurringInvoice * file: src/cores/fa/hooks/useRecurringInvoices.ts:246 * kind: hook * core: fa * spec: (none) * summary: Provides pause recurring invoice queries and mutation actions scoped to the current organization. * score: 4 ### hook usePayment * file: src/cores/fa/hooks/usePayments.ts:62 * kind: hook * core: fa * spec: (none) * summary: Hook for managing payment. * score: 1 ### hook usePaymentApplications * file: src/cores/fa/hooks/usePaymentApplications.ts:35 * kind: hook * core: fa * spec: (none) * summary: Hook for managing payment applications. * score: 1 ### hook usePaymentBatch * file: src/cores/fa/hooks/usePaymentBatches.ts:48 * kind: hook * core: fa * spec: (none) * summary: Provides payment batch queries and mutation actions scoped to the current organization. * score: 4 ### hook usePaymentBatches * file: src/cores/fa/hooks/usePaymentBatches.ts:23 * kind: hook * core: fa * spec: (none) * summary: Provides payment batches queries and mutation actions scoped to the current organization. * score: 4 ### hook usePaymentPlan * file: src/cores/fa/hooks/usePaymentPlans.ts:96 * kind: hook * core: fa * spec: (none) * summary: Hook to get a single payment plan with installments * score: 4 ### hook usePaymentPlanList * file: src/cores/fa/hooks/usePaymentPlans.ts:53 * kind: hook * core: fa * spec: (none) * summary: Hook to list payment plans for an organization * score: 4 ### hook usePaymentReceiptPdf * file: src/cores/fa/hooks/usePaymentReceiptPdf.ts:16 * kind: hook * core: fa * spec: (none) * summary: Hook for managing payment receipt pdf. * score: 1 ### hook usePayments * file: src/cores/fa/hooks/usePayments.ts:27 * kind: hook * core: fa * spec: (none) * summary: Hook for managing payments. * score: 1 ### hook usePendingApprovalCount * file: src/cores/fa/hooks/useExpenseApprovals.ts:356 * kind: hook * core: fa * spec: (none) * summary: Hook to get count of pending approvals for badge display * score: 4 ### hook usePendingApprovals * file: src/cores/fa/hooks/useExpenseApprovals.ts:61 * kind: hook * core: fa * spec: (none) * summary: Hook to fetch approvals pending for a specific approver * score: 4 ### hook usePendingBudgetApprovals * file: src/cores/fa/hooks/useBudgetApprovals.ts:195 * kind: hook * core: fa * spec: (none) * summary: Provides pending budget approvals queries and mutation actions scoped to the current organization. * score: 4 ### hook usePendingExpenseReports * file: src/cores/fa/hooks/useExpenseReports.ts:360 * kind: hook * core: fa * spec: (none) * summary: Hook to get expense reports pending approval for a specific approver * score: 4 ### hook usePendingGLPostings * file: src/cores/fa/hooks/useAssetDepreciation.ts:147 * kind: hook * core: fa * spec: (none) * summary: Get pending GL postings for retry. * score: 4 ### hook usePendingReimbursements * file: src/cores/fa/hooks/useReimbursementPayments.ts:336 * kind: hook * core: fa * spec: (none) * summary: Hook to get pending reimbursements (approved reports without payments) * score: 4 ### hook usePeriodCloseValidation * file: src/cores/fa/hooks/usePeriodCloseValidation.ts:29 * kind: hook * core: fa * spec: (none) * summary: Query draft JE count and trial balance status for a fiscal period.Used by PeriodCloseValidationWidget on the FA-19 close detail page. * score: 4 ### hook usePlaidApiUsageDashboard * file: src/cores/fa/hooks/usePlaidApiUsageDashboard.ts:82 * kind: hook * core: fa * spec: (none) * summary: Fetches Plaid sync log data and computes dashboard aggregations. * score: 4 ### hook usePlaidCategoryMappings * file: src/cores/fa/hooks/usePlaidCategoryMappings.ts:55 * kind: hook * core: fa * spec: (none) * summary: Provides plaid category mappings queries and mutation actions scoped to the current organization. * score: 4 ### hook usePOAmendmentHistory * file: src/cores/fa/hooks/usePOAmendment.ts:53 * kind: hook * core: fa * spec: (none) * summary: Hook for managing poamendment history. * score: 1 ### hook usePOLinesForReceipt * file: src/cores/fa/hooks/usePOReceiptLines.ts:46 * kind: hook * core: fa * spec: (none) * summary: Hook to fetch PO lines with receivable quantity for a given POReturns lines that still have quantity available to receive * score: 4 ### hook usePOReceipt * file: src/cores/fa/hooks/usePOReceipts.ts:115 * kind: hook * core: fa * spec: (none) * summary: Hook to fetch a single receipt with full details including lines * score: 4 ### hook usePOReceiptLines * file: src/cores/fa/hooks/usePOReceiptLines.ts:7 * kind: hook * core: fa * spec: (none) * summary: Hook to fetch receipt lines for a specific receipt * score: 4 ### hook usePOReceiptList * file: src/cores/fa/hooks/usePOReceipts.ts:66 * kind: hook * core: fa * spec: (none) * summary: Hook to fetch list of receipts for an organization with optional filters * score: 4 ### hook usePostAdjustments * file: src/cores/fa/hooks/useReconciliationAdjustments.ts:147 * kind: hook * core: fa * spec: (none) * summary: Post reconciliation adjustments to GL * score: 4 ### hook usePostBankTransaction * file: src/cores/fa/hooks/useBankTransactions.ts:175 * kind: hook * core: fa * spec: (none) * summary: Post a bank transaction line to the GL: creates a balanced journal entry from theline's categorization and links it (FA-29 #944). The RPC marks the line posted andis idempotent (a second call returns "already posted"). * score: 4 ### hook usePostExpenseToGL * file: src/cores/fa/hooks/useExpenseGLPosting.ts:89 * kind: hook * core: fa * spec: (none) * summary: Hook to post approved expense report to GL.Creates journal entry: DR: Expense Account(s) from category mappings CR: Accounts Payable - Employee * score: 4 ### hook usePostJournalEntry * file: src/cores/fa/hooks/useJournalEntries.ts:194 * kind: hook * core: fa * spec: (none) * summary: Provides post journal entry queries and mutation actions scoped to the current organization. * score: 4 ### hook usePostPaymentBatch * file: src/cores/fa/hooks/usePaymentBatches.ts:160 * kind: hook * core: fa * spec: (none) * summary: Provides post payment batch queries and mutation actions scoped to the current organization. * score: 4 ### hook usePostReimbursementToGL * file: src/cores/fa/hooks/useExpenseGLPosting.ts:248 * kind: hook * core: fa * spec: (none) * summary: Hook to post reimbursement payment to GL.Creates journal entry: DR: Accounts Payable - Employee CR: Cash/Bank Account * score: 4 ### hook useProcessRevenueRecognition * file: src/cores/fa/hooks/useRevenueRecognitions.ts:57 * kind: hook * core: fa * spec: (none) * summary: Trigger the fa\_process\_revenue\_recognition RPC for a fiscal period.Idempotent: re-running for the same (schedule, period) is a no-op.Phase 1: writes journal\_entry\_id = NULL (GL posting deferred to Phase 2). * score: 4 ### hook useProgram * file: src/cores/fa/hooks/usePrograms.ts:52 * kind: hook * core: fa * spec: (none) * summary: Provides program queries and mutation actions scoped to the current organization. * score: 4 ### hook usePrograms * file: src/cores/fa/hooks/usePrograms.ts:26 * kind: hook * core: fa * spec: (none) * summary: Provides programs queries and mutation actions scoped to the current organization. * score: 4 ### hook useProject * file: src/cores/fa/hooks/useProjects.ts:111 * kind: hook * core: fa * spec: (none) * summary: Get a single project by ID with all relations. * score: 4 ### hook useProjectBudgets * file: src/cores/fa/hooks/useProjectBudgets.ts:37 * kind: hook * core: fa * spec: (none) * summary: List budget lines for a project. * score: 4 ### hook useProjectBudgetUtilization * file: src/cores/fa/hooks/useProjectBudgets.ts:308 * kind: hook * core: fa * spec: (none) * summary: Calculate budget utilization percentage for a project. * score: 4 ### hook useProjectExpenses * file: src/cores/fa/hooks/useProjectExpenses.ts:37 * kind: hook * core: fa * spec: (none) * summary: List expense allocations for a project. * score: 4 ### hook useProjectExpenseSummary * file: src/cores/fa/hooks/useProjectExpenses.ts:86 * kind: hook * core: fa * spec: (none) * summary: Get expense summary by account and cost type for a project. * score: 4 ### hook useProjectList * file: src/cores/fa/hooks/useProjects.ts:48 * kind: hook * core: fa * spec: (none) * summary: List projects with optional filters. * score: 4 ### hook useProjectRevenue * file: src/cores/fa/hooks/useProjectRevenue.ts:34 * kind: hook * core: fa * spec: (none) * summary: List revenue allocations for a project. * score: 4 ### hook useProjectRevenueSummary * file: src/cores/fa/hooks/useProjectRevenue.ts:83 * kind: hook * core: fa * spec: (none) * summary: Get revenue summary for a project. * score: 4 ### hook usePurchaseOrder * file: src/cores/fa/hooks/usePurchaseOrders.ts:134 * kind: hook * core: fa * spec: (none) * summary: Get single purchase order with lines and vendor details * score: 4 ### hook usePurchaseOrderLines * file: src/cores/fa/hooks/usePurchaseOrderLines.ts:52 * kind: hook * core: fa * spec: (none) * summary: Get all lines for a purchase order * score: 4 ### hook usePurchaseOrderList * file: src/cores/fa/hooks/usePurchaseOrders.ts:73 * kind: hook * core: fa * spec: (none) * summary: List purchase orders with filters * score: 4 ### hook usePurchaseOrderPdf * file: src/cores/fa/hooks/usePurchaseOrderPdf.ts:16 * kind: hook * core: fa * spec: (none) * summary: Hook for managing purchase order pdf. * score: 1 ### hook useRampConnect * file: src/cores/fa/hooks/useRampConnect.ts:18 * kind: hook * core: fa * spec: (none) * summary: Hook for managing ramp connect. * score: 1 ### hook useRampConnection * file: src/cores/fa/hooks/useRampConnection.ts:12 * kind: hook * core: fa * spec: (none) * summary: Hook for managing ramp connection. * score: 1 ### hook useRampDisconnect * file: src/cores/fa/hooks/useRampDisconnect.ts:16 * kind: hook * core: fa * spec: (none) * summary: Hook for managing ramp disconnect. * score: 1 ### hook useRampSync * file: src/cores/fa/hooks/useRampSync.ts:16 * kind: hook * core: fa * spec: (none) * summary: Hook for managing ramp sync. * score: 1 ### hook useRecentReportRuns * file: src/cores/fa/hooks/useRecentReportRuns.ts:17 * kind: hook * core: fa * spec: (none) * summary: Hook for managing recent report runs. * score: 1 ### hook useRecentTransfers * file: src/cores/fa/hooks/useAssetTransfers.ts:132 * kind: hook * core: fa * spec: (none) * summary: Get recent transfers (last 30 days). * score: 4 ### hook useRecognitionByPeriodReport * file: src/cores/fa/hooks/useRevenueReports.ts:35 * kind: hook * core: fa * spec: (none) * summary: Aggregates fa\_revenue\_recognitions by fiscal period (falling back torecognition month when fiscal\_period\_id is null). Reversal entries (negativerecognition\_amount) net against the period totals. * score: 4 ### hook useReconciliationAdjustments * file: src/cores/fa/hooks/useReconciliationAdjustments.ts:43 * kind: hook * core: fa * spec: (none) * summary: Fetch all adjustments for a reconciliation * score: 4 ### hook useReconciliationDashboard * file: src/cores/fa/hooks/useReconciliationDashboard.ts:24 * kind: hook * core: fa * spec: (none) * summary: Hook for managing reconciliation dashboard. * score: 1 ### hook useReconciliationExcelExport * file: src/cores/fa/hooks/useReconciliationExcelExport.ts:71 * kind: hook * core: fa * spec: (none) * summary: Hook for managing reconciliation excel export. * score: 1 ### hook useReconciliationHistory * file: src/cores/fa/hooks/useReconciliationHistory.ts:37 * kind: hook * core: fa * spec: (none) * summary: Hook for managing reconciliation history. * score: 1 ### hook useReconciliationMatches * file: src/cores/fa/hooks/useReconciliationMatches.ts:86 * kind: hook * core: fa * spec: (none) * summary: Provides reconciliation matches queries and mutation actions scoped to the current organization. * score: 4 ### hook useReconciliationPdfExport * file: src/cores/fa/hooks/useReconciliationPdfExport.ts:92 * kind: hook * core: fa * spec: (none) * summary: Hook for managing reconciliation pdf export. * score: 1 ### hook useReconciliationReport * file: src/cores/fa/hooks/useReconciliationReport.ts:96 * kind: hook * core: fa * spec: (none) * summary: Fetch comprehensive reconciliation report data * score: 4 ### hook useRecordDrawdownReceipt * file: src/cores/fa/hooks/useGrantDrawdowns.ts:167 * kind: hook * core: fa * spec: (none) * summary: Record a drawdown receipt (marks funds as received).Note: drawdown\_number is auto-generated by database trigger. * score: 4 ### hook useRecordInstallmentPayment * file: src/cores/fa/hooks/usePaymentPlanInstallments.ts:146 * kind: hook * core: fa * spec: (none) * summary: Hook to record a payment against an installment * score: 4 ### hook useRecurringEntries * file: src/cores/fa/hooks/useRecurringEntries.ts:23 * kind: hook * core: fa * spec: (none) * summary: Provides recurring entries queries and mutation actions scoped to the current organization. * score: 4 ### hook useRecurringEntry * file: src/cores/fa/hooks/useRecurringEntries.ts:45 * kind: hook * core: fa * spec: (none) * summary: Provides recurring entry queries and mutation actions scoped to the current organization. * score: 4 ### hook useRecurringInvoice * file: src/cores/fa/hooks/useRecurringInvoices.ts:90 * kind: hook * core: fa * spec: (none) * summary: Provides recurring invoice queries and mutation actions scoped to the current organization. * score: 4 ### hook useRecurringInvoiceHistory * file: src/cores/fa/hooks/useRecurringInvoices.ts:358 * kind: hook * core: fa * spec: (none) * summary: Provides recurring invoice history queries and mutation actions scoped to the current organization. * score: 4 ### hook useRecurringInvoiceList * file: src/cores/fa/hooks/useRecurringInvoices.ts:54 * kind: hook * core: fa * spec: (none) * summary: Provides recurring invoice list queries and mutation actions scoped to the current organization. * score: 4 ### hook useRecurringInvoiceWizardContext * file: src/cores/fa/wizards/recurring-invoice-setup/recurringInvoiceWizardContext.ts:31 * kind: hook * core: fa * spec: (none) * summary: Consume wizard context inside step components. Throws when used outside theprovider so missing wiring is caught immediately during development. * score: 4 ### hook useRecurringInvoiceWizardSubmit * file: src/cores/fa/wizards/recurring-invoice-setup/hooks/useRecurringInvoiceWizardSubmit.ts:55 * kind: hook * core: fa * spec: (none) * summary: Submit hook for the FA-UX-12 wizard. Returns a TanStack mutation thatthe wizard host calls from its handler. * score: 4 ### hook useRecurringTemplates * file: src/cores/fa/hooks/useRecurringTransactionTemplates.ts:135 * kind: hook * core: fa * spec: (none) * summary: Provides recurring templates queries and mutation actions scoped to the current organization. * score: 4 ### hook useReimbursementPayment * file: src/cores/fa/hooks/useReimbursementPayments.ts:117 * kind: hook * core: fa * spec: (none) * summary: Hook to fetch a single reimbursement payment by ID * score: 4 ### hook useReimbursementPayments * file: src/cores/fa/hooks/useReimbursementPayments.ts:72 * kind: hook * core: fa * spec: (none) * summary: Hook to fetch list of reimbursement payments with filters * score: 4 ### hook useReimbursementPaymentsByReport * file: src/cores/fa/hooks/useReimbursementPayments.ts:146 * kind: hook * core: fa * spec: (none) * summary: Hook to fetch payments for a specific expense report * score: 4 ### hook useReimbursementStats * file: src/cores/fa/hooks/useReimbursementPayments.ts:373 * kind: hook * core: fa * spec: (none) * summary: Hook to get reimbursement summary stats * score: 4 ### hook useRejectBill * file: src/cores/fa/hooks/useBillApproval.ts:79 * kind: hook * core: fa * spec: (none) * summary: Hook to reject a vendor billSets status back to draft with rejection note * score: 4 ### hook useRejectBudget * file: src/cores/fa/hooks/useBudgetApprovals.ts:142 * kind: hook * core: fa * spec: (none) * summary: Provides reject budget queries and mutation actions scoped to the current organization. * score: 4 ### hook useRejectExpenseReport * file: src/cores/fa/hooks/useExpenseApprovals.ts:223 * kind: hook * core: fa * spec: (none) * summary: Hook to reject an expense report * score: 4 ### hook useRejectPaymentPlan * file: src/cores/fa/hooks/usePaymentPlans.ts:315 * kind: hook * core: fa * spec: (none) * summary: Hook to reject a payment plan * score: 1 ### hook useRejectPO * file: src/cores/fa/hooks/usePOApproval.ts:131 * kind: hook * core: fa * spec: (none) * summary: Reject PO (pending\_approval → draft) * score: 4 ### hook useRemoveARPaymentApplication * file: src/cores/fa/hooks/useARPaymentApplications.ts:196 * kind: hook * core: fa * spec: (none) * summary: Provides remove arpayment application queries and mutation actions scoped to the current organization. * score: 4 ### hook useRemoveCreditApplication * file: src/cores/fa/hooks/useCreditApplications.ts:154 * kind: hook * core: fa * spec: (none) * summary: Provides remove credit application queries and mutation actions scoped to the current organization. * score: 4 ### hook useRemoveFromCollectionQueue * file: src/cores/fa/hooks/useCollectionQueueMutation.ts:120 * kind: hook * core: fa * spec: (none) * summary: Hook for managing remove from collection queue. * score: 1 ### hook useRemovePaymentApplication * file: src/cores/fa/hooks/usePaymentApplications.ts:104 * kind: hook * core: fa * spec: (none) * summary: Hook for managing remove payment application. * score: 1 ### hook useRemoveRecipient * file: src/cores/fa/hooks/useReportRecipients.ts:72 * kind: hook * core: fa * spec: (none) * summary: Hook for managing remove recipient. * score: 1 ### hook useRemoveTemplateShare * file: src/cores/fa/hooks/useBudgetTemplateMutation.ts:411 * kind: hook * core: fa * spec: (none) * summary: Provides remove template share queries and mutation actions scoped to the current organization. * score: 4 ### hook useReopenClosePeriod * file: src/cores/fa/close/useClosePeriods.ts:463 * kind: hook * core: fa * spec: (none) * summary: Reopen a close period (admin action) * score: 4 ### hook useReopenClosePeriodWithAudit * file: src/cores/fa/hooks/usePeriodCloseWithAudit.ts:60 * kind: hook * core: fa * spec: (none) * summary: Wraps useReopenClosePeriod — after a successful reopen, writes an audit row. * score: 4 ### hook useReorderTransactionRules * file: src/cores/fa/hooks/useTransactionRules.ts:201 * kind: hook * core: fa * spec: (none) * summary: Batch update rule priorities (for drag-and-drop reorder) * score: 4 ### hook useReportAnnotations * file: src/cores/fa/hooks/useReportAnnotations.ts:41 * kind: hook * core: fa * spec: (none) * summary: Provides report annotations queries and mutation actions scoped to the current organization. * score: 4 ### hook useReportDefinitions * file: src/cores/fa/hooks/useReportDefinitions.ts:32 * kind: hook * core: fa * spec: (none) * summary: Hook for managing report definitions. * score: 1 ### hook useReportFavorites * file: src/cores/fa/hooks/useReportFavorites.ts:11 * kind: hook * core: fa * spec: (none) * summary: Hook for managing report favorites. * score: 1 ### hook useReportFilters * file: src/cores/fa/hooks/useReportFilters.ts:15 * kind: hook * core: fa * spec: (none) * summary: Hook for managing report filters. * score: 1 ### hook useReportRecipients * file: src/cores/fa/hooks/useReportRecipients.ts:13 * kind: hook * core: fa * spec: (none) * summary: Hook for managing report recipients. * score: 1 ### hook useReportRun * file: src/cores/fa/hooks/useReportRuns.ts:60 * kind: hook * core: fa * spec: (none) * summary: Provides report run queries and mutation actions scoped to the current organization. * score: 4 ### hook useReportRuns * file: src/cores/fa/hooks/useReportRuns.ts:20 * kind: hook * core: fa * spec: (none) * summary: Provides report runs queries and mutation actions scoped to the current organization. * score: 4 ### hook useReportSchedule * file: src/cores/fa/hooks/useReportSchedules.ts:38 * kind: hook * core: fa * spec: (none) * summary: Hook for managing report schedule. * score: 1 ### hook useReportSchedules * file: src/cores/fa/hooks/useReportSchedules.ts:14 * kind: hook * core: fa * spec: (none) * summary: Hook for managing report schedules. * score: 1 ### hook useReportVersions * file: src/cores/fa/hooks/useReportVersions.ts:19 * kind: hook * core: fa * spec: (none) * summary: Hook for managing report versions. * score: 1 ### hook useResendTaxDistribution * file: src/cores/fa/hooks/useTaxDistributions.ts:130 * kind: hook * core: fa * spec: (none) * summary: Mutation: Resend tax distribution * score: 4 ### hook useRetryGLPosting * file: src/cores/fa/hooks/useAssetDepreciation.ts:289 * kind: hook * core: fa * spec: (none) * summary: Retry a failed GL posting.Updates status and increments retry count. * score: 4 ### hook useRevenueContract * file: src/cores/fa/hooks/useRevenueContracts.ts:54 * kind: hook * core: fa * spec: (none) * summary: Fetch a single revenue contract. * score: 4 ### hook useRevenueContractList * file: src/cores/fa/hooks/useRevenueContracts.ts:25 * kind: hook * core: fa * spec: (none) * summary: List revenue contracts for the current organization. * score: 4 ### hook useRevenueExpenseTrend * file: src/cores/fa/hooks/useRevenueExpenseTrend.ts:24 * kind: hook * core: fa * spec: (none) * summary: Fetches monthly revenue vs expense data for the last N monthsby querying fa\_journal\_entry\_lines grouped by month and account type. * score: 4 ### hook useRevenueMilestoneList * file: src/cores/fa/hooks/useRevenueMilestones.ts:20 * kind: hook * core: fa * spec: (none) * summary: List milestones for a schedule (or all schedules in the org if no scheduleId). * score: 4 ### hook useRevenueRecognitionList * file: src/cores/fa/hooks/useRevenueRecognitions.ts:23 * kind: hook * core: fa * spec: (none) * summary: List revenue recognition entries for the current organization. * score: 4 ### hook useRevenueSchedule * file: src/cores/fa/hooks/useRevenueSchedules.ts:66 * kind: hook * core: fa * spec: (none) * summary: Fetch a single revenue schedule. * score: 4 ### hook useRevenueScheduleList * file: src/cores/fa/hooks/useRevenueSchedules.ts:39 * kind: hook * core: fa * spec: (none) * summary: List revenue schedules for the current organization. * score: 4 ### hook useRevenueScheduleModificationList * file: src/cores/fa/hooks/useRevenueScheduleModifications.ts:28 * kind: hook * core: fa * spec: (none) * summary: List modifications/reversals for the current org (optionally scoped to a schedule). * score: 4 ### hook useRevenueScheduleWizardContext * file: src/cores/fa/wizards/revenue-schedule-creation/revenueScheduleWizardContext.ts:19 * kind: hook * core: fa * spec: (none) * summary: Strict accessor — throws if used outside the provider. * score: 4 ### hook useReverseJournalEntry * file: src/cores/fa/hooks/useJournalEntries.ts:234 * kind: hook * core: fa * spec: (none) * summary: Provides reverse journal entry queries and mutation actions scoped to the current organization. * score: 4 ### hook useReverseReimbursementPayment * file: src/cores/fa/hooks/useReimbursementPayments.ts:235 * kind: hook * core: fa * spec: (none) * summary: Hook to reverse a reimbursement paymentCreates a new payment record with reversal\_payment\_id referencing the original * score: 4 ### hook useReverseRevenueRecognition * file: src/cores/fa/hooks/useRevenueScheduleModifications.ts:62 * kind: hook * core: fa * spec: (none) * summary: Reverse a posted recognition by appending a negative recognition row\.Idempotent guard: server rejects a second reversal of the same recognition. * score: 4 ### hook useRollingForecast * file: src/cores/fa/hooks/useRollingForecastDetail.ts:12 * kind: hook * core: fa * spec: (none) * summary: Hook for managing rolling forecast. * score: 1 ### hook useRollingForecastLines * file: src/cores/fa/hooks/useRollingForecastDetail.ts:40 * kind: hook * core: fa * spec: (none) * summary: Hook for managing rolling forecast lines. * score: 1 ### hook useRollingForecasts * file: src/cores/fa/hooks/useRollingForecasts.ts:18 * kind: hook * core: fa * spec: (none) * summary: Hook for managing rolling forecasts. * score: 1 ### hook useRunDepreciation * file: src/cores/fa/hooks/useAssetDepreciation.ts:229 * kind: hook * core: fa * spec: (none) * summary: Run monthly depreciation for all eligible assets.Calls the database function fa\_process\_monthly\_depreciation. * score: 4 ### hook useRunReportNow * file: src/cores/fa/hooks/useReportRuns.ts:84 * kind: hook * core: fa * spec: (none) * summary: Provides run report now queries and mutation actions scoped to the current organization. * score: 4 ### hook useSaveCoATemplate * file: src/cores/fa/hooks/useSaveCoATemplate.ts:51 * kind: hook * core: fa * spec: (none) * summary: Hook for saving the current org's CoA as a new DB-backed template. * score: 1 ### hook useSaveReportDefinition * file: src/cores/fa/hooks/useReportDefinitions.ts:56 * kind: hook * core: fa * spec: (none) * summary: Hook for managing save report definition. * score: 1 ### hook useScenarioBudgetLines * file: src/cores/fa/hooks/useBudgetScenarioDetail.ts:38 * kind: hook * core: fa * spec: (none) * summary: Hook for managing scenario budget lines. * score: 1 ### hook useScenarioComparison * file: src/cores/fa/hooks/useScenarioComparison.ts:17 * kind: hook * core: fa * spec: (none) * summary: Hook for managing scenario comparison. * score: 1 ### hook useScenarioComparisonSummary * file: src/cores/fa/hooks/useScenarioComparison.ts:71 * kind: hook * core: fa * spec: (none) * summary: Hook for managing scenario comparison summary. * score: 1 ### hook useSeedCategoryMappings * file: src/cores/fa/hooks/usePlaidCategoryMappings.ts:190 * kind: hook * core: fa * spec: (none) * summary: Provides seed category mappings queries and mutation actions scoped to the current organization. * score: 4 ### hook useSendInvoice * file: src/cores/fa/hooks/useInvoices.ts:205 * kind: hook * core: fa * spec: (none) * summary: Hook for managing send invoice. * score: 1 ### hook useSetActiveBudget * file: src/cores/fa/hooks/useBudgets.ts:305 * kind: hook * core: fa * spec: (none) * summary: Provides set active budget queries and mutation actions scoped to the current organization. * score: 4 ### hook useSkipCloseTask * file: src/cores/fa/close/useCloseTasks.ts:489 * kind: hook * core: fa * spec: (none) * summary: Skip a task * score: 1 ### hook useSkipInstallment * file: src/cores/fa/hooks/usePaymentPlanInstallments.ts:212 * kind: hook * core: fa * spec: (none) * summary: Hook to skip an installment * score: 1 ### hook useSoftDeleteExpenseLine * file: src/cores/fa/hooks/useExpenseLines.ts:240 * kind: hook * core: fa * spec: (none) * summary: Hook to soft delete an expense line (sets deleted\_at) * score: 4 ### hook useSoftDeleteExpensePolicy * file: src/cores/fa/hooks/useExpensePolicies.ts:376 * kind: hook * core: fa * spec: (none) * summary: Hook to soft delete an expense policy (sets deleted\_at) * score: 4 ### hook useSoftDeleteExpenseReport * file: src/cores/fa/hooks/useExpenseReports.ts:253 * kind: hook * core: fa * spec: (none) * summary: Hook to soft delete an expense report (sets deleted\_at) * score: 4 ### hook useStartClosePeriod * file: src/cores/fa/close/useClosePeriods.ts:219 * kind: hook * core: fa * spec: (none) * summary: Start a close period (transition to in\_progress) * score: 4 ### hook useStartCloseTask * file: src/cores/fa/close/useCloseTasks.ts:337 * kind: hook * core: fa * spec: (none) * summary: Start a task (transition to in\_progress) * score: 4 ### hook useStatementOfActivities * file: src/cores/fa/hooks/useStatementOfActivities.ts:27 * kind: hook * core: fa * spec: (none) * summary: Hook for managing statement of activities. * score: 1 ### hook useStatementOfActivitiesSummary * file: src/cores/fa/hooks/useStatementOfActivities.ts:49 * kind: hook * core: fa * spec: (none) * summary: Hook for managing statement of activities summary. * score: 1 ### hook useStatementTemplateDraft * file: src/cores/fa/wizards/statement-template/hooks/useStatementTemplateDraft.ts:69 * kind: hook * core: fa * spec: (none) * summary: Auto-save with a debounced write to localStorage. * score: 4 ### hook useStatementTemplateMutation * file: src/cores/fa/wizards/statement-template/hooks/useStatementTemplateMutation.ts:150 * kind: hook * core: fa * spec: (none) * summary: Persist an FA-UX-13 statement-template wizard draft to the FA-23 template schema. * score: 4 ### hook useStatementTemplateWizardContext * file: src/cores/fa/wizards/statement-template/statementTemplateWizardContext.ts:56 * kind: hook * core: fa * spec: (none) * summary: Access the FA statement-template wizard state from a descendant step. * score: 4 ### hook useSubmitBudgetForApproval * file: src/cores/fa/hooks/useBudgets.ts:221 * kind: hook * core: fa * spec: (none) * summary: Provides submit budget for approval queries and mutation actions scoped to the current organization. * score: 4 ### hook useSubmitClosePeriodForApproval * file: src/cores/fa/close/useClosePeriods.ts:273 * kind: hook * core: fa * spec: (none) * summary: Submit close period for approval (transition to pending\_approval) * score: 4 ### hook useSubmitExpenseReport * file: src/cores/fa/hooks/useExpenseReports.ts:287 * kind: hook * core: fa * spec: (none) * summary: Hook to submit an expense report for approvalPublishes fa\_expense\_report\_submitted event to trigger FW-03 workflow * score: 4 ### hook useSubmitForApproval * file: src/cores/fa/hooks/useBillApproval.ts:134 * kind: hook * core: fa * spec: (none) * summary: Hook to submit a bill for approvalChanges status from 'draft' to 'pending\_approval' * score: 4 ### hook useSubmitForApproval * file: src/cores/fa/hooks/usePaymentPlans.ts:228 * kind: hook * core: fa * spec: (none) * summary: Hook to submit a payment plan for approval * score: 4 ### hook useSubmitPOForApproval * file: src/cores/fa/hooks/usePOApproval.ts:54 * kind: hook * core: fa * spec: (none) * summary: Submit PO for approval (draft → pending\_approval) * score: 4 ### hook useSyncAllBankAccounts * file: src/cores/fa/hooks/useSyncAllBankAccounts.ts:48 * kind: hook * core: fa * spec: (none) * summary: Hook for managing sync all bank accounts. * score: 1 ### hook useTaskDocumentation * file: src/cores/fa/close/useCloseDocumentation.ts:73 * kind: hook * core: fa * spec: (none) * summary: Get documentation for a specific task * score: 4 ### hook useTaxDistributionDetail * file: src/cores/fa/hooks/useTaxDistributions.ts:40 * kind: hook * core: fa * spec: (none) * summary: Query: Get single tax distribution detail * score: 4 ### hook useTaxDistributionsList * file: src/cores/fa/hooks/useTaxDistributions.ts:14 * kind: hook * core: fa * spec: (none) * summary: Query: List tax distributions for a tax year * score: 4 ### hook useTaxReportDetail * file: src/cores/fa/hooks/useTaxReports.ts:40 * kind: hook * core: fa * spec: (none) * summary: Query: Get single tax report detail * score: 4 ### hook useTaxReportsList * file: src/cores/fa/hooks/useTaxReports.ts:14 * kind: hook * core: fa * spec: (none) * summary: Query: List tax reports for a tax year * score: 4 ### hook useTaxYearDetail * file: src/cores/fa/hooks/useTaxYears.ts:39 * kind: hook * core: fa * spec: (none) * summary: Query: Get single tax year detail * score: 4 ### hook useTaxYearsList * file: src/cores/fa/hooks/useTaxYears.ts:15 * kind: hook * core: fa * spec: (none) * summary: Query: List all tax years for an organization * score: 4 ### hook useTemplateBudgets * file: src/cores/fa/wizards/budget-creation/hooks/useTemplateBudgets.ts:18 * kind: hook * core: fa * spec: (none) * summary: Fetches approved budgets available for template selection. * returns: Query result with template budgets * score: 4 ### hook useTemplateCategories * file: src/cores/fa/hooks/useBudgetTemplateList.ts:59 * kind: hook * core: fa * spec: (none) * summary: Fetch distinct template categories for filter dropdown * score: 4 ### hook useTemplatePreview * file: src/cores/fa/hooks/useBudgetTemplateDetail.ts:72 * kind: hook * core: fa * spec: (none) * summary: Preview template structure with calculated totals * score: 4 ### hook useTemplateWithEnrichedLines * file: src/cores/fa/hooks/useBudgetTemplateDetail.ts:115 * kind: hook * core: fa * spec: (none) * summary: Fetch template with enriched line items (account names, fund names, etc.) * score: 4 ### hook useToggleMappingActive * file: src/cores/fa/hooks/useExpenseCategoryMappings.ts:293 * kind: hook * core: fa * spec: (none) * summary: Hook to toggle mapping active status * score: 4 ### hook useTogglePolicyActive * file: src/cores/fa/hooks/useExpensePolicies.ts:408 * kind: hook * core: fa * spec: (none) * summary: Hook to deactivate a policy (toggle is\_active) * score: 4 ### hook useToggleReportFavorite * file: src/cores/fa/hooks/useReportFavorites.ts:37 * kind: hook * core: fa * spec: (none) * summary: Hook for managing toggle report favorite. * score: 1 ### hook useToggleSchedule * file: src/cores/fa/hooks/useReportSchedules.ts:188 * kind: hook * core: fa * spec: (none) * summary: Hook for managing toggle schedule. * score: 1 ### hook useTransactionAISuggestions * file: src/cores/fa/hooks/useTransactionAISuggestions.ts:22 * kind: hook * core: fa * spec: (none) * summary: Fetch AI match suggestions for a specific bank line (transaction-scoped). * score: 4 ### hook useTransactionAISuggestionsBatch * file: src/cores/fa/hooks/useTransactionAISuggestionsBatch.ts:25 * kind: hook * core: fa * spec: (none) * summary: Fetch AI match suggestions for multiple bank lines in one query.Returns a map of bank\_line\_id - suggestions (best first, max 5 per line). * params: * bankLineIds — Array of bank line IDs (deduplicated and sorted internally for stable keys). - : When false, the query does not run (e.g. when not on pending tab). * score: 4 ### hook useTransactionRule * file: src/cores/fa/hooks/useTransactionRules.ts:57 * kind: hook * core: fa * spec: (none) * summary: Fetch a single transaction rule by ID * score: 4 ### hook useTransactionRules * file: src/cores/fa/hooks/useTransactionRules.ts:29 * kind: hook * core: fa * spec: (none) * summary: Fetch all active (non-soft-deleted) transaction rules for the current org * score: 4 ### hook useTransferAsset * file: src/cores/fa/hooks/useFixedAssets.ts:482 * kind: hook * core: fa * spec: (none) * summary: Transfer an asset to a new location.Creates a transfer record and updates asset location. * score: 4 ### hook useTransferCountBySite * file: src/cores/fa/hooks/useAssetTransfers.ts:169 * kind: hook * core: fa * spec: (none) * summary: Get transfer count by site for dashboard. * score: 4 ### hook useTransfersByOrganization * file: src/cores/fa/hooks/useAssetTransfers.ts:70 * kind: hook * core: fa * spec: (none) * summary: Get all transfers for an organization. * score: 4 ### hook useTrialBalance * file: src/cores/fa/hooks/useTrialBalance.ts:13 * kind: hook * core: fa * spec: (none) * summary: Hook for managing trial balance. * score: 1 ### hook useUnappliedPayments * file: src/cores/fa/hooks/useCustomerPayments.ts:128 * kind: hook * core: fa * spec: (none) * summary: Provides unapplied payments queries and mutation actions scoped to the current organization. * score: 4 ### hook useUnmatchedBankLines * file: src/cores/fa/hooks/useReconciliationMatches.ts:119 * kind: hook * core: fa * spec: (none) * summary: Provides unmatched bank lines queries and mutation actions scoped to the current organization. * score: 4 ### hook useUnmatchedGLLines * file: src/cores/fa/hooks/useReconciliationMatches.ts:146 * kind: hook * core: fa * spec: (none) * summary: Provides unmatched gllines queries and mutation actions scoped to the current organization. * score: 4 ### hook useUnmatchGroup * file: src/cores/fa/hooks/useGroupMatch.ts:96 * kind: hook * core: fa * spec: (none) * summary: Hook for managing unmatch group. * score: 1 ### hook useUnpostedEntriesReport * file: src/cores/fa/hooks/useUnpostedEntriesReport.ts:27 * kind: hook * core: fa * spec: (none) * summary: Fetches draft (unposted) journal entries with client-side aging calculation. * params: * organizationId — Tenant org ID (required to enable query) * returns: Standard useQuery result with UnpostedEntryRow\[] including aging\_days and aging\_bucket * score: 4 ### hook useUpcomingInstallments * file: src/cores/fa/hooks/usePaymentPlanInstallments.ts:110 * kind: hook * core: fa * spec: (none) * summary: Hook to get upcoming installments for an organization * score: 4 ### hook useUpdate1099Form * file: src/cores/fa/hooks/use1099Forms.ts:97 * kind: hook * core: fa * spec: (none) * summary: Mutation: Update 1099 form * score: 1 ### hook useUpdateAccount * file: src/cores/fa/hooks/useAccounts.ts:113 * kind: hook * core: fa * spec: (none) * summary: Hook for managing update account. * score: 1 ### hook useUpdateAccountMapping * file: src/cores/fa/hooks/useAccountMappings.ts:82 * kind: hook * core: fa * spec: (none) * summary: Provides update account mapping queries and mutation actions scoped to the current organization. * score: 4 ### hook useUpdateAlertThreshold * file: src/cores/fa/hooks/useAlertThresholds.ts:144 * kind: hook * core: fa * spec: (none) * summary: Provides update alert threshold queries and mutation actions scoped to the current organization. * score: 4 ### hook useUpdateAllocationBase * file: src/cores/fa/hooks/useAllocationBases.ts:125 * kind: hook * core: fa * spec: (none) * summary: Update an allocation base. * score: 1 ### hook useUpdateAnnotation * file: src/cores/fa/hooks/useReportAnnotations.ts:99 * kind: hook * core: fa * spec: (none) * summary: Provides update annotation queries and mutation actions scoped to the current organization. * score: 4 ### hook useUpdateApprovalThreshold * file: src/cores/fa/hooks/useApprovalThresholds.ts:89 * kind: hook * core: fa * spec: (none) * summary: Hook to update an existing approval threshold * score: 4 ### hook useUpdateBankAccount * file: src/cores/fa/hooks/useBankAccounts.ts:289 * kind: hook * core: fa * spec: (none) * summary: Provides update bank account queries and mutation actions scoped to the current organization. * score: 4 ### hook useUpdateBankReconciliation * file: src/cores/fa/hooks/useBankReconciliations.ts:210 * kind: hook * core: fa * spec: (none) * summary: Provides update bank reconciliation queries and mutation actions scoped to the current organization. * score: 4 ### hook useUpdateBill * file: src/cores/fa/hooks/useVendorBills.ts:230 * kind: hook * core: fa * spec: (none) * summary: Hook to update an existing vendor bill and its lines * score: 4 ### hook useUpdateBillLine * file: src/cores/fa/hooks/useBillLines.ts:160 * kind: hook * core: fa * spec: (none) * summary: Hook to update an existing bill line * score: 4 ### hook useUpdateBudget * file: src/cores/fa/hooks/useBudgets.ts:142 * kind: hook * core: fa * spec: (none) * summary: Provides update budget queries and mutation actions scoped to the current organization. * score: 4 ### hook useUpdateBudgetLine * file: src/cores/fa/hooks/useBudgetLines.ts:111 * kind: hook * core: fa * spec: (none) * summary: Hook for managing update budget line. * score: 1 ### hook useUpdateBudgetScenario * file: src/cores/fa/hooks/useBudgetScenarioMutation.ts:70 * kind: hook * core: fa * spec: (none) * summary: Hook for managing update budget scenario. * score: 1 ### hook useUpdateBudgetTemplate * file: src/cores/fa/hooks/useBudgetTemplateMutation.ts:61 * kind: hook * core: fa * spec: (none) * summary: Provides update budget template queries and mutation actions scoped to the current organization. * score: 4 ### hook useUpdateCashForecast * file: src/cores/fa/hooks/useCashForecasts.ts:199 * kind: hook * core: fa * spec: (none) * summary: Update an existing cash forecast.Uses defense-in-depth by verifying organization\_id. * score: 4 ### hook useUpdateCategoryMapping * file: src/cores/fa/hooks/useExpenseCategoryMappings.ts:211 * kind: hook * core: fa * spec: (none) * summary: Hook to update an existing category mapping * score: 4 ### hook useUpdateCloseChecklist * file: src/cores/fa/close/useCloseChecklists.ts:212 * kind: hook * core: fa * spec: (none) * summary: Update a close checklist (with defense-in-depth) * score: 4 ### hook useUpdateCloseDocumentation * file: src/cores/fa/close/useCloseDocumentation.ts:160 * kind: hook * core: fa * spec: (none) * summary: Update documentation metadata * score: 1 ### hook useUpdateClosePeriod * file: src/cores/fa/close/useClosePeriods.ts:170 * kind: hook * core: fa * spec: (none) * summary: Update a close period (with defense-in-depth) * score: 4 ### hook useUpdateCloseTask * file: src/cores/fa/close/useCloseTasks.ts:220 * kind: hook * core: fa * spec: (none) * summary: Update a close task (with defense-in-depth) * score: 4 ### hook useUpdateCollectionQueueItem * file: src/cores/fa/hooks/useCollectionQueueMutation.ts:84 * kind: hook * core: fa * spec: (none) * summary: Hook for managing update collection queue item. * score: 1 ### hook useUpdateComplianceMapping * file: src/cores/fa/hooks/useComplianceMappings.ts:81 * kind: hook * core: fa * spec: (none) * summary: Update an existing compliance-account mapping (org-scoped). * score: 4 ### hook useUpdateCreditLine * file: src/cores/fa/hooks/useCreditLines.ts:247 * kind: hook * core: fa * spec: (none) * summary: Update an existing credit line.Uses defense-in-depth by verifying organization\_id. * score: 4 ### hook useUpdateCreditMemo * file: src/cores/fa/hooks/useCreditMemos.ts:243 * kind: hook * core: fa * spec: (none) * summary: Provides update credit memo queries and mutation actions scoped to the current organization. * score: 4 ### hook useUpdateCreditMemoLine * file: src/cores/fa/hooks/useCreditMemoLines.ts:97 * kind: hook * core: fa * spec: (none) * summary: Provides update credit memo line queries and mutation actions scoped to the current organization. * score: 4 ### hook useUpdateCustomer * file: src/cores/fa/hooks/useCustomers.ts:151 * kind: hook * core: fa * spec: (none) * summary: Provides update customer queries and mutation actions scoped to the current organization. * score: 4 ### hook useUpdateCustomerPayment * file: src/cores/fa/hooks/useCustomerPayments.ts:203 * kind: hook * core: fa * spec: (none) * summary: Provides update customer payment queries and mutation actions scoped to the current organization. * score: 4 ### hook useUpdateDashboardDefinition * file: src/cores/fa/hooks/useDashboardDefinition.ts:43 * kind: hook * core: fa * spec: (none) * summary: Hook for managing update dashboard definition. * score: 1 ### hook useUpdateDeferredRevenue * file: src/cores/fa/hooks/useDeferredRevenue.ts:116 * kind: hook * core: fa * spec: (none) * summary: Update a deferred revenue record. * score: 4 ### hook useUpdateDepartment * file: src/cores/fa/hooks/useDepartments.ts:178 * kind: hook * core: fa * spec: (none) * summary: Provides update department queries and mutation actions scoped to the current organization. * score: 4 ### hook useUpdateDisposal * file: src/cores/fa/hooks/useAssetDisposals.ts:222 * kind: hook * core: fa * spec: (none) * summary: Update a disposal record. * score: 1 ### hook useUpdateDrawdownStatus * file: src/cores/fa/hooks/useGrantDrawdowns.ts:216 * kind: hook * core: fa * spec: (none) * summary: Update a drawdown request status (e.g., submit, approve, reject). * score: 4 ### hook useUpdateExpenseLine * file: src/cores/fa/hooks/useExpenseLines.ts:199 * kind: hook * core: fa * spec: (none) * summary: Hook to update an existing expense line * score: 4 ### hook useUpdateExpensePolicy * file: src/cores/fa/hooks/useExpensePolicies.ts:323 * kind: hook * core: fa * spec: (none) * summary: Hook to update an existing expense policy * score: 4 ### hook useUpdateExpenseReport * file: src/cores/fa/hooks/useExpenseReports.ts:211 * kind: hook * core: fa * spec: (none) * summary: Hook to update an existing expense report * score: 4 ### hook useUpdateFAEntity * file: src/cores/fa/hooks/useFAEntities.ts:115 * kind: hook * core: fa * spec: (none) * summary: Updates an existing legal entity (org-scoped, defense-in-depth). * score: 4 ### hook useUpdateFiscalYear * file: src/cores/fa/hooks/useFiscalYears.ts:117 * kind: hook * core: fa * spec: (none) * summary: Provides update fiscal year queries and mutation actions scoped to the current organization. * score: 4 ### hook useUpdateFixedAsset * file: src/cores/fa/hooks/useFixedAssets.ts:315 * kind: hook * core: fa * spec: (none) * summary: Update an existing fixed asset.Uses defense-in-depth by verifying organization\_id. * score: 4 ### hook useUpdateForecastLine * file: src/cores/fa/hooks/useRollingForecastMutation.ts:248 * kind: hook * core: fa * spec: (none) * summary: Provides update forecast line queries and mutation actions scoped to the current organization. * score: 4 ### hook useUpdateForecastStatus * file: src/cores/fa/hooks/useRollingForecastMutation.ts:331 * kind: hook * core: fa * spec: (none) * summary: Provides update forecast status queries and mutation actions scoped to the current organization. * score: 4 ### hook useUpdateFund * file: src/cores/fa/hooks/useFunds.ts:113 * kind: hook * core: fa * spec: (none) * summary: Provides update fund queries and mutation actions scoped to the current organization. * score: 4 ### hook useUpdateGrantDrawdown * file: src/cores/fa/hooks/useGrantDrawdowns.ts:274 * kind: hook * core: fa * spec: (none) * summary: Update a drawdown (general update). * score: 4 ### hook useUpdateIndirectCostPool * file: src/cores/fa/hooks/useIndirectCostPools.ts:112 * kind: hook * core: fa * spec: (none) * summary: Update an indirect cost pool. * score: 1 ### hook useUpdateIndirectCostRate * file: src/cores/fa/hooks/useIndirectCostRates.ts:158 * kind: hook * core: fa * spec: (none) * summary: Update an IDC rate. * score: 1 ### hook useUpdateInstallment * file: src/cores/fa/hooks/usePaymentPlanInstallments.ts:300 * kind: hook * core: fa * spec: (none) * summary: Hook to update a single installment * score: 4 ### hook useUpdateInvestment * file: src/cores/fa/hooks/useInvestments.ts:249 * kind: hook * core: fa * spec: (none) * summary: Update an existing investment.Uses defense-in-depth by verifying organization\_id. * score: 4 ### hook useUpdateInvoice * file: src/cores/fa/hooks/useInvoices.ts:170 * kind: hook * core: fa * spec: (none) * summary: Hook for managing update invoice. * score: 1 ### hook useUpdateInvoiceLine * file: src/cores/fa/hooks/useInvoiceLines.ts:103 * kind: hook * core: fa * spec: (none) * summary: Hook for managing update invoice line. * score: 1 ### hook useUpdateJournalEntry * file: src/cores/fa/hooks/useJournalEntries.ts:128 * kind: hook * core: fa * spec: (none) * summary: Provides update journal entry queries and mutation actions scoped to the current organization. * score: 4 ### hook useUpdateJournalEntryLine * file: src/cores/fa/hooks/useJournalEntryLines.ts:81 * kind: hook * core: fa * spec: (none) * summary: Provides update journal entry line queries and mutation actions scoped to the current organization. * score: 4 ### hook useUpdatePayment * file: src/cores/fa/hooks/usePayments.ts:136 * kind: hook * core: fa * spec: (none) * summary: Hook for managing update payment. * score: 1 ### hook useUpdatePaymentBatch * file: src/cores/fa/hooks/usePaymentBatches.ts:121 * kind: hook * core: fa * spec: (none) * summary: Provides update payment batch queries and mutation actions scoped to the current organization. * score: 4 ### hook useUpdatePaymentPlan * file: src/cores/fa/hooks/usePaymentPlans.ts:188 * kind: hook * core: fa * spec: (none) * summary: Hook to update a payment plan * score: 1 ### hook useUpdatePeriodStatus * file: src/cores/fa/hooks/useFiscalPeriods.ts:78 * kind: hook * core: fa * spec: (none) * summary: Hook for managing update period status. * score: 1 ### hook useUpdatePlaidCategoryMapping * file: src/cores/fa/hooks/usePlaidCategoryMappings.ts:128 * kind: hook * core: fa * spec: (none) * summary: Provides update plaid category mapping queries and mutation actions scoped to the current organization. * score: 4 ### hook useUpdatePOLine * file: src/cores/fa/hooks/usePurchaseOrderLines.ts:127 * kind: hook * core: fa * spec: (none) * summary: Update a PO line item * score: 1 ### hook useUpdateProgram * file: src/cores/fa/hooks/usePrograms.ts:113 * kind: hook * core: fa * spec: (none) * summary: Provides update program queries and mutation actions scoped to the current organization. * score: 4 ### hook useUpdateProject * file: src/cores/fa/hooks/useProjects.ts:175 * kind: hook * core: fa * spec: (none) * summary: Update an existing project. * score: 1 ### hook useUpdateProjectBudget * file: src/cores/fa/hooks/useProjectBudgets.ts:120 * kind: hook * core: fa * spec: (none) * summary: Update a project budget line. * score: 1 ### hook useUpdateProjectExpense * file: src/cores/fa/hooks/useProjectExpenses.ts:290 * kind: hook * core: fa * spec: (none) * summary: Update an expense allocation. * score: 1 ### hook useUpdateProjectRevenue * file: src/cores/fa/hooks/useProjectRevenue.ts:240 * kind: hook * core: fa * spec: (none) * summary: Update a revenue allocation. * score: 1 ### hook useUpdateProjectStatus * file: src/cores/fa/hooks/useProjects.ts:234 * kind: hook * core: fa * spec: (none) * summary: Update project status with automatic status\_date update. * score: 4 ### hook useUpdatePurchaseOrder * file: src/cores/fa/hooks/usePurchaseOrders.ts:255 * kind: hook * core: fa * spec: (none) * summary: Update purchase order header * score: 1 ### hook useUpdateRecurringEntry * file: src/cores/fa/hooks/useRecurringEntries.ts:105 * kind: hook * core: fa * spec: (none) * summary: Provides update recurring entry queries and mutation actions scoped to the current organization. * score: 4 ### hook useUpdateRecurringInvoice * file: src/cores/fa/hooks/useRecurringInvoices.ts:176 * kind: hook * core: fa * spec: (none) * summary: Provides update recurring invoice queries and mutation actions scoped to the current organization. * score: 4 ### hook useUpdateRecurringTemplate * file: src/cores/fa/hooks/useRecurringTransactionTemplates.ts:255 * kind: hook * core: fa * spec: (none) * summary: Provides update recurring template queries and mutation actions scoped to the current organization. * score: 4 ### hook useUpdateReportSchedule * file: src/cores/fa/hooks/useReportSchedules.ts:105 * kind: hook * core: fa * spec: (none) * summary: Hook for managing update report schedule. * score: 1 ### hook useUpdateRevenueContract * file: src/cores/fa/hooks/useRevenueContracts.ts:120 * kind: hook * core: fa * spec: (none) * summary: Update a revenue contract. * score: 1 ### hook useUpdateRevenueSchedule * file: src/cores/fa/hooks/useRevenueSchedules.ts:151 * kind: hook * core: fa * spec: (none) * summary: Update a revenue schedule. * score: 1 ### hook useUpdateRollingForecast * file: src/cores/fa/hooks/useRollingForecastMutation.ts:75 * kind: hook * core: fa * spec: (none) * summary: Provides update rolling forecast queries and mutation actions scoped to the current organization. * score: 4 ### hook useUpdateScenarioBudgetLine * file: src/cores/fa/hooks/useBudgetScenarioMutation.ts:221 * kind: hook * core: fa * spec: (none) * summary: Hook for managing update scenario budget line. * score: 1 ### hook useUpdateScenarioStatus * file: src/cores/fa/hooks/useBudgetScenarioMutation.ts:140 * kind: hook * core: fa * spec: (none) * summary: Hook for managing update scenario status. * score: 1 ### hook useUpdateTaxDistributionStatus * file: src/cores/fa/hooks/useTaxDistributions.ts:96 * kind: hook * core: fa * spec: (none) * summary: Mutation: Update tax distribution status * score: 4 ### hook useUpdateTaxReport * file: src/cores/fa/hooks/useTaxReports.ts:96 * kind: hook * core: fa * spec: (none) * summary: Mutation: Update tax report * score: 1 ### hook useUpdateTaxYear * file: src/cores/fa/hooks/useTaxYears.ts:95 * kind: hook * core: fa * spec: (none) * summary: Mutation: Update tax year * score: 1 ### hook useUpdateTemplateShare * file: src/cores/fa/hooks/useBudgetTemplateMutation.ts:450 * kind: hook * core: fa * spec: (none) * summary: Provides update template share queries and mutation actions scoped to the current organization. * score: 4 ### hook useUpdateTransactionRule * file: src/cores/fa/hooks/useTransactionRules.ts:125 * kind: hook * core: fa * spec: (none) * summary: Update an existing transaction rule * score: 4 ### hook useUpdateVendor * file: src/cores/fa/hooks/useVendors.ts:131 * kind: hook * core: fa * spec: (none) * summary: Hook to update an existing vendor * score: 4 ### hook useUpdateW2Form * file: src/cores/fa/hooks/useW2Forms.ts:96 * kind: hook * core: fa * spec: (none) * summary: Mutation: Update W-2 form * score: 1 ### hook useUploadReceipt * file: src/cores/fa/hooks/useReceiptUpload.ts:46 * kind: hook * core: fa * spec: (none) * summary: Hook to upload receipt files for expense linesFeatures:- Client-side validation (type, size)- PHI scanning integration (stub)- Automatic expense line update- Audit logging- Returns signed URL for display * score: 4 ### hook useUpsertExpenseRule * file: src/cores/fa/hooks/useExpenseRules.ts:85 * kind: hook * core: fa * spec: (none) * summary: Upserts an expense policy engine rule via RPC from a wizard draft. * params: * organizationId — Target organization passed to the RPC. * returns: TanStack with / ; on success invalidates . * score: 4 ### hook useValidate3WayMatch * file: src/cores/fa/hooks/useValidate3WayMatch.ts:19 * kind: hook * core: fa * spec: (none) * summary: Hook to validate a 3-way match for a PO line * score: 4 ### hook useVarianceAnalysis * file: src/cores/fa/hooks/useVarianceAnalysis.ts:25 * kind: hook * core: fa * spec: (none) * summary: Hook for managing variance analysis. * score: 1 ### hook useVendor * file: src/cores/fa/hooks/useVendors.ts:71 * kind: hook * core: fa * spec: (none) * summary: Hook to fetch a single vendor by ID * score: 4 ### hook useVendorList * file: src/cores/fa/hooks/useVendors.ts:34 * kind: hook * core: fa * spec: (none) * summary: Hook to fetch list of vendors with optional filtersUses PF-57 Search/Sort Framework * score: 4 ### hook useVerifyCloseTask * file: src/cores/fa/close/useCloseTasks.ts:546 * kind: hook * core: fa * spec: (none) * summary: Verify a completed task * score: 1 ### hook useVerifyReceipt * file: src/cores/fa/hooks/useExpenseLines.ts:318 * kind: hook * core: fa * spec: (none) * summary: Hook to verify a receipt * score: 1 ### hook useVoidCreditMemo * file: src/cores/fa/hooks/useCreditMemos.ts:335 * kind: hook * core: fa * spec: (none) * summary: Provides void credit memo queries and mutation actions scoped to the current organization. * score: 4 ### hook useVoidInvoice * file: src/cores/fa/hooks/useInvoices.ts:271 * kind: hook * core: fa * spec: (none) * summary: Hook for managing void invoice. * score: 1 ### hook useVoidPOReceipt * file: src/cores/fa/hooks/usePOReceipts.ts:212 * kind: hook * core: fa * spec: (none) * summary: Hook to void a receipt * score: 1 ### hook useW2FormDetail * file: src/cores/fa/hooks/useW2Forms.ts:40 * kind: hook * core: fa * spec: (none) * summary: Query: Get single W-2 form detail * score: 4 ### hook useW2FormsList * file: src/cores/fa/hooks/useW2Forms.ts:14 * kind: hook * core: fa * spec: (none) * summary: Query: List W-2 forms for a tax year * score: 4 ### hook useWizardCompletion * file: src/cores/fa/wizards/bank-reconciliation/hooks/useWizardCompletion.ts:18 * kind: hook * core: fa * spec: (none) * summary: Hook for managing wizard completion. * score: 1 ### hook useWizardValidation * file: src/cores/fa/wizards/bank-reconciliation/hooks/useWizardValidation.ts:11 * kind: hook * core: fa * spec: (none) * summary: Hook for managing wizard validation. * score: 1 ### hook useWizardValidation * file: src/cores/fa/wizards/financial-close-setup/hooks/useWizardValidation.ts:11 * kind: hook * core: fa * spec: (none) * summary: Provides validation functions for each wizard step. * score: 4 ### hook useWriteOffBadDebt * file: src/cores/fa/hooks/useBadDebtReserves.ts:239 * kind: hook * core: fa * spec: (none) * summary: Provides write off bad debt queries and mutation actions scoped to the current organization. * score: 4 ## Components ### component AccountBalanceWidget * file: src/cores/fa/components/widgets/AccountBalanceWidget.tsx:25 * kind: component * core: fa * spec: (none) * summary: Financial Overview dashboard widget.Uses the unified hook so that the data source isconsistent with every other balance widget on the dashboard.- Fund-based orgs → title "Fund Balances", shows unrestricted / restricted split- Bank-linked orgs → title "Bank Summary", shows per-account breakdown + fallback banner * score: 2 ### component AccountDialog * file: src/cores/fa/components/AccountDialog.tsx:67 * kind: component * core: fa * spec: (none) * summary: Utility for account dialog. * score: 1 ### component AccountDrillDownDialog * file: src/cores/fa/components/AccountDrillDownDialog.tsx:35 * kind: component * core: fa * spec: (none) * summary: Utility for account drill down dialog. * score: 1 ### component AccountMappingEditor * file: src/cores/fa/components/AccountMappingEditor.tsx:46 * kind: component * core: fa * spec: (none) * summary: Utility for account mapping editor. * score: 1 ### component AccountMappingPage * file: src/cores/fa/pages/AccountMappingPage.tsx:13 * kind: component * core: fa * spec: (none) * summary: Utility for account mapping page. * score: 1 ### component AccountsPage * file: src/cores/fa/pages/AccountsPage.tsx:23 * kind: component * core: fa * spec: (none) * summary: Utility for accounts page. * score: 1 ### component AccountsTable * file: src/cores/fa/components/AccountsTable.tsx:44 * kind: component * core: fa * spec: (none) * summary: Utility for accounts table. * score: 1 ### component ActiveAlertsBar * file: src/cores/fa/components/ActiveAlertsBar.tsx:39 * kind: component * core: fa * spec: (none) * summary: Utility for active alerts bar. * score: 1 ### component AdjustmentDialog * file: src/cores/fa/components/AdjustmentDialog.tsx:34 * kind: component * core: fa * spec: (none) * summary: Utility for adjustment dialog. * score: 1 ### component AgedUnresolvedReport * file: src/cores/fa/components/reconciliation/AgedUnresolvedReport.tsx:16 * kind: component * core: fa * spec: (none) * summary: Utility for aged unresolved report. * score: 1 ### component AgingReportsHubPage * file: src/cores/fa/pages/AgingReportsHubPage.tsx:45 * kind: component * core: fa * spec: (none) * summary: Utility for aging reports hub page. * score: 1 ### component AICategorizationBadge * file: src/cores/fa/components/AICategorizationBadge.tsx:35 * kind: component * core: fa * spec: (none) * summary: Inline AI categorization confidence indicator with accept/reject actions,showing a per-row spinner while that row's mutation is in flight. * score: 2 ### component AIMatchSuggestionLine * file: src/cores/fa/components/AIMatchSuggestionLine.tsx:27 * kind: component * core: fa * spec: (none) * summary: Utility for aimatch suggestion line. * score: 1 ### component AlertThresholdForm * file: src/cores/fa/components/AlertThresholdForm.tsx:57 * kind: component * core: fa * spec: (none) * summary: Utility for alert threshold form. * score: 1 ### component AlertThresholdsPage * file: src/cores/fa/pages/AlertThresholdsPage.tsx:43 * kind: component * core: fa * spec: (none) * summary: Utility for alert thresholds page. * score: 1 ### component AllocationBasesTab * file: src/cores/fa/components/cost-allocation/AllocationBasesTab.tsx:26 * kind: component * core: fa * spec: (none) * summary: Utility for allocation bases tab. * score: 1 ### component AllocationTooltip * file: src/cores/fa/components/BalanceTermsTooltips.tsx:100 * kind: component * core: fa * spec: (none) * summary: Displays contextual help for cash allocation and liquidity concepts. * score: 2 ### component AnomalyBadge * file: src/cores/fa/components/AnomalyBadge.tsx:39 * kind: component * core: fa * spec: (none) * summary: Severity-styled badge with a tooltip listing the AI-detected anomaly flagson a bank statement line; hidden when the line has no anomalies. * score: 2 ### component APAgingReportPage * file: src/cores/fa/pages/APAgingReportPage.tsx:24 * kind: component * core: fa * spec: (none) * summary: Utility for apaging report page. * score: 1 ### component ApplyCoATemplateDialog * file: src/cores/fa/components/ApplyCoATemplateDialog.tsx:20 * kind: component * core: fa * spec: (none) * summary: Utility for apply co atemplate dialog. * score: 1 ### component ApplyTemplateDialog * file: src/cores/fa/components/ApplyTemplateDialog.tsx:33 * kind: component * core: fa * spec: (none) * summary: Utility for apply template dialog. * score: 1 ### component ApprovalHistoryTimeline * file: src/cores/fa/components/ApprovalHistoryTimeline.tsx:34 * kind: component * core: fa * spec: (none) * summary: Utility for approval history timeline. * score: 1 ### component ApprovalThresholdDialog * file: src/cores/fa/components/ApprovalThresholdDialog.tsx:41 * kind: component * core: fa * spec: (none) * summary: Utility for approval threshold dialog. * score: 1 ### component ApprovalThresholdsPage * file: src/cores/fa/pages/ApprovalThresholdsPage.tsx:10 * kind: component * core: fa * spec: (none) * summary: Utility for approval thresholds page. * score: 1 ### component ApprovalThresholdsTable * file: src/cores/fa/components/ApprovalThresholdsTable.tsx:20 * kind: component * core: fa * spec: (none) * summary: Utility for approval thresholds table. * score: 1 ### component ARAgingReportPage * file: src/cores/fa/pages/ARAgingReportPage.tsx:26 * kind: component * core: fa * spec: (none) * summary: Utility for araging report page. * score: 1 ### component AssetDisposalDialog * file: src/cores/fa/components/AssetDisposalDialog.tsx:48 * kind: component * core: fa * spec: (none) * summary: Utility for asset disposal dialog. * score: 1 ### component AssetDisposalsPage * file: src/cores/fa/pages/AssetDisposalsPage.tsx:41 * kind: component * core: fa * spec: (none) * summary: Utility for asset disposals page. * score: 1 ### component AssetDisposalsTable * file: src/cores/fa/components/AssetDisposalsTable.tsx:32 * kind: component * core: fa * spec: (none) * summary: Utility for asset disposals table. * score: 1 ### component AssetsHubPage * file: src/cores/fa/pages/AssetsHubPage.tsx:47 * kind: component * core: fa * spec: (none) * summary: Utility for assets hub page. * score: 1 ### component AssetStatusBadge * file: src/cores/fa/components/AssetStatusBadge.tsx:30 * kind: component * core: fa * spec: (none) * summary: Utility for asset status badge. * score: 1 ### component AssetTransferDialog * file: src/cores/fa/components/AssetTransferDialog.tsx:51 * kind: component * core: fa * spec: (none) * summary: Utility for asset transfer dialog. * score: 1 ### component AssignTasksStep * file: src/cores/fa/wizards/financial-close-setup/steps/AssignTasksStep.tsx:26 * kind: component * core: fa * spec: (none) * summary: Utility for assign tasks step. * score: 1 ### component AuditLogViewerPage * file: src/cores/fa/pages/AuditLogViewerPage.tsx:211 * kind: component * core: fa * spec: (none) * summary: Utility for audit log viewer page. * score: 1 ### component AutoMatchResults * file: src/cores/fa/components/AutoMatchResults.tsx:12 * kind: component * core: fa * spec: (none) * summary: Utility for auto match results. * score: 1 ### component BadDebtReservesPage * file: src/cores/fa/pages/BadDebtReservesPage.tsx:23 * kind: component * core: fa * spec: (none) * summary: Utility for bad debt reserves page. * score: 1 ### component BadDebtWriteOffDialog * file: src/cores/fa/components/BadDebtWriteOffDialog.tsx:31 * kind: component * core: fa * spec: (none) * summary: Utility for bad debt write off dialog. * score: 1 ### component BalanceDefinitionsPage * file: src/cores/fa/pages/BalanceDefinitionsPage.tsx:13 * kind: component * core: fa * spec: (none) * summary: Utility for balance definitions page. * score: 1 ### component BalanceFlowDiagram * file: src/cores/fa/components/BalanceFlowDiagram.tsx:95 * kind: component * core: fa * spec: (none) * summary: Utility for balance flow diagram. * score: 1 ### component BalanceReconciliationPage * file: src/cores/fa/pages/BalanceReconciliationPage.tsx:366 * kind: component * core: fa * spec: (none) * summary: Utility for balance reconciliation page. * score: 1 ### component BalanceSheetPage * file: src/cores/fa/pages/BalanceSheetPage.tsx:31 * kind: component * core: fa * spec: (none) * summary: Utility for balance sheet page. * score: 1 ### component BalanceSheetReport * file: src/cores/fa/components/BalanceSheetReport.tsx:45 * kind: component * core: fa * spec: (none) * summary: Utility for balance sheet report. * score: 1 ### component BalanceSourceIndicator * file: src/cores/fa/components/BalanceSourceIndicator.tsx:40 * kind: component * core: fa * spec: (none) * summary: Utility for balance source indicator. * score: 1 ### component BalanceTrendChart * file: src/cores/fa/components/BalanceTrendChart.tsx:24 * kind: component * core: fa * spec: (none) * summary: Utility for balance trend chart. * score: 1 ### component BankAccountCard * file: src/cores/fa/components/BankAccountCard.tsx:117 * kind: component * core: fa * spec: (none) * summary: Displays a unified bank account card showing status, balances, last sync, variance, and available actions.Renders a compact card with account metadata (name, bank, type, masked number), GL and bank balances, last sync time(with tooltip), pending-data or variance warnings when applicable, and contextual action buttons for syncing,reconnecting, viewing details, or editing.Accessibility:- Buttons and links include visible labels and iconography; ensure surrounding page provides appropriate focus management.- Tooltips expose absolute timestamps; ensure screen readers can access the same information via the DOM if needed. - : Bank account with GL information (BankAccountWithGL). Used to derive balances, provider, connection status, enrollment id, and timestamps. - : Organization identifier used for connect/sync actions. - : Optional callback invoked with the account when the Edit action is triggered. - : Optional callback invoked after an external sync completes successfully. - : Optional additional CSS class names applied to the root Card. * returns: A React element representing the bank account card. * example: | BankAccountCard account=account organizationId="org\_123" onEdit=(acct) = openEditModal(acct) onSyncComplete=() = refreshAccounts()/ * score: 5 ### component BankAccountCardSkeleton * file: src/cores/fa/components/BankAccountCard.tsx:322 * kind: component * core: fa * spec: (none) * summary: Skeleton loader for BankAccountCard * score: 2 ### component BankAccountDetailPage * file: src/cores/fa/pages/BankAccountDetailPage.tsx:46 * kind: component * core: fa * spec: (none) * summary: Utility for bank account detail page. * score: 1 ### component BankAccountDialog * file: src/cores/fa/components/BankAccountDialog.tsx:37 * kind: component * core: fa * spec: (none) * summary: Utility for bank account dialog. * score: 1 ### component BankAccountForm * file: src/cores/fa/components/BankAccountForm.tsx:88 * kind: component * core: fa * spec: (none) * summary: Utility for bank account form. * score: 1 ### component BankAccountsPage * file: src/cores/fa/pages/BankAccountsPage.tsx:57 * kind: component * core: fa * spec: (none) * summary: Renders the Bank Accounts management page for listing, filtering, viewing, connecting, and adding bank accounts.Displays summary metrics, a grid or table view of accounts, controls to connect a bank (single or multi-account flows) or add accounts manually,and manages page-level dialog state used to pre-fill account creation from bank connection results.Accessibility:- View mode toggle buttons include aria-labels for their purpose.- Interactive controls (Connect Bank, Add Manually, filter switch) provide visible labels. * example: | PageLayout BankAccountsPage //PageLayout * score: 5 ### component BankAccountsTable * file: src/cores/fa/components/BankAccountsTable.tsx:24 * kind: component * core: fa * spec: (none) * summary: Utility for bank accounts table. * score: 1 ### component BankBalanceTooltip * file: src/cores/fa/components/BalanceTermsTooltips.tsx:71 * kind: component * core: fa * spec: (none) * summary: Displays contextual help for bank balance terminology. * score: 2 ### component BankConnectionStatus * file: src/cores/fa/components/BankConnectionStatus.tsx:113 * kind: component * core: fa * spec: (none) * summary: Utility for bank connection status. * score: 1 ### component BankingHubPage * file: src/cores/fa/pages/BankingHubPage.tsx:51 * kind: component * core: fa * spec: (none) * summary: Utility for banking hub page. * score: 1 ### component BankLineFlagButton * file: src/cores/fa/components/reconciliation/BankLineFlagButton.tsx:25 * kind: component * core: fa * spec: (none) * summary: Utility for bank line flag button. * score: 1 ### component BankLineNotesPopover * file: src/cores/fa/components/reconciliation/BankLineNotesPopover.tsx:32 * kind: component * core: fa * spec: (none) * summary: Utility for bank line notes popover. * score: 1 ### component BankReconciliationWizardPage * file: src/cores/fa/wizards/bank-reconciliation/BankReconciliationWizardPage.tsx:17 * kind: component * core: fa * spec: (none) * summary: Utility for bank reconciliation wizard page. * score: 1 ### component BankStatementDetailPage * file: src/cores/fa/pages/BankStatementDetailPage.tsx:22 * kind: component * core: fa * spec: (none) * summary: Utility for bank statement detail page. * score: 1 ### component BankStatementsPage * file: src/cores/fa/pages/BankStatementsPage.tsx:26 * kind: component * core: fa * spec: (none) * summary: Utility for bank statements page. * score: 1 ### component BankStatementsTable * file: src/cores/fa/components/BankStatementsTable.tsx:25 * kind: component * core: fa * spec: (none) * summary: Utility for bank statements table. * score: 1 ### component BankTransactionFromToCell * file: src/cores/fa/components/BankTransactionFromToCell.tsx:44 * kind: component * core: fa * spec: (none) * summary: Utility for bank transaction from to cell. * score: 1 ### component BankTransactionsPage * file: src/cores/fa/pages/BankTransactionsPage.tsx:37 * kind: component * core: fa * spec: (none) * summary: Utility for bank transactions page. * score: 1 ### component BankTransactionsTable * file: src/cores/fa/components/BankTransactionsTable.tsx:101 * kind: component * core: fa * spec: (none) * summary: Utility for bank transactions table. * score: 1 ### component BatchActionBar * file: src/cores/fa/components/BatchActionBar.tsx:28 * kind: component * core: fa * spec: (none) * summary: Utility for batch action bar. * score: 1 ### component BatchReimbursementDialog * file: src/cores/fa/components/BatchReimbursementDialog.tsx:64 * kind: component * core: fa * spec: (none) * summary: Utility for batch reimbursement dialog. * score: 1 ### component BatchReimbursementPage * file: src/cores/fa/pages/BatchReimbursementPage.tsx:37 * kind: component * core: fa * spec: (none) * summary: Utility for batch reimbursement page. * score: 1 ### component BillCreatePage * file: src/cores/fa/pages/BillCreatePage.tsx:19 * kind: component * core: fa * spec: (none) * summary: Utility for bill create page. * score: 1 ### component BillDetailPage * file: src/cores/fa/pages/BillDetailPage.tsx:167 * kind: component * core: fa * spec: (none) * summary: Utility for bill detail page. * score: 1 ### component BillDuplicateWarning * file: src/cores/fa/components/BillDuplicateWarning.tsx:22 * kind: component * core: fa * spec: (none) * summary: FA Lane Q: surfaces likely-duplicate vendor bills on the bill detail page so areviewer catches double-entry / OCR duplicates before approval. Deterministic(no model call); renders nothing when there are no candidates. The routealready gates this behind . * score: 2 ### component BillForm * file: src/cores/fa/components/BillForm.tsx:49 * kind: component * core: fa * spec: (none) * summary: Utility for bill form. * score: 1 ### component BillLineEditor * file: src/cores/fa/components/BillLineEditor.tsx:92 * kind: component * core: fa * spec: (none) * summary: Utility for bill line editor. * score: 1 ### component BillSelector * file: src/cores/fa/components/BillSelector.tsx:19 * kind: component * core: fa * spec: (none) * summary: Utility for bill selector. * score: 1 ### component BillsPage * file: src/cores/fa/pages/BillsPage.tsx:33 * kind: component * core: fa * spec: (none) * summary: Utility for bills page. * score: 1 ### component BillsTable * file: src/cores/fa/components/BillsTable.tsx:35 * kind: component * core: fa * spec: (none) * summary: Utility for bills table. * score: 1 ### component BillStatusBadge * file: src/cores/fa/components/BillStatusBadge.tsx:24 * kind: component * core: fa * spec: (none) * summary: Utility for bill status badge. * score: 1 ### component BudgetActionsMenu * file: src/cores/fa/components/BudgetActionsMenu.tsx:22 * kind: component * core: fa * spec: (none) * summary: Utility for budget actions menu. * score: 1 ### component BudgetAlertCard * file: src/cores/fa/components/BudgetAlertCard.tsx:40 * kind: component * core: fa * spec: (none) * summary: Utility for budget alert card. * score: 1 ### component BudgetAlertsSummary * file: src/cores/fa/components/BudgetAlertsSummary.tsx:13 * kind: component * core: fa * spec: (none) * summary: Utility for budget alerts summary. * score: 1 ### component BudgetAlertsTable * file: src/cores/fa/components/BudgetAlertsTable.tsx:19 * kind: component * core: fa * spec: (none) * summary: Utility for budget alerts table. * score: 1 ### component BudgetAllocationDialog * file: src/cores/fa/components/BudgetAllocationDialog.tsx:21 * kind: component * core: fa * spec: (none) * summary: Utility for budget allocation dialog. * score: 1 ### component BudgetApprovalDialog * file: src/cores/fa/components/BudgetApprovalDialog.tsx:27 * kind: component * core: fa * spec: (none) * summary: Utility for budget approval dialog. * score: 1 ### component BudgetApprovalHistory * file: src/cores/fa/components/BudgetApprovalHistory.tsx:15 * kind: component * core: fa * spec: (none) * summary: Utility for budget approval history. * score: 1 ### component BudgetCopyPage * file: src/cores/fa/pages/BudgetCopyPage.tsx:9 * kind: component * core: fa * spec: (none) * summary: Utility for budget copy page. * score: 1 ### component BudgetCreationWizardPage * file: src/cores/fa/wizards/budget-creation/BudgetCreationWizardPage.tsx:31 * kind: component * core: fa * spec: (none) * summary: Budget Creation Wizard PageRenders the 4-step budget creation wizard:1. Budget Header (form step)2. Copy Template (custom step - optional)3. Enter Budget Lines (custom step)4. Review & Submit (custom step) * score: 2 ### component BudgetDetailPage * file: src/cores/fa/pages/BudgetDetailPage.tsx:32 * kind: component * core: fa * spec: (none) * summary: Utility for budget detail page. * score: 1 ### component BudgetDialog * file: src/cores/fa/components/BudgetDialog.tsx:21 * kind: component * core: fa * spec: (none) * summary: Utility for budget dialog. * score: 1 ### component BudgetForm * file: src/cores/fa/components/BudgetForm.tsx:34 * kind: component * core: fa * spec: (none) * summary: Utility for budget form. * score: 1 ### component BudgetHeaderStep * file: src/cores/fa/wizards/budget-creation/steps/BudgetHeaderStep.tsx:29 * kind: component * core: fa * spec: (none) * summary: Utility for budget header step. * score: 1 ### component BudgetingHubPage * file: src/cores/fa/pages/BudgetingHubPage.tsx:51 * kind: component * core: fa * spec: (none) * summary: Utility for budgeting hub page. * score: 1 ### component BudgetLineForm * file: src/cores/fa/components/BudgetLineForm.tsx:42 * kind: component * core: fa * spec: (none) * summary: Utility for budget line form. * score: 1 ### component BudgetLineGrid * file: src/cores/fa/components/BudgetLineGrid.tsx:18 * kind: component * core: fa * spec: (none) * summary: Utility for budget line grid. * score: 1 ### component BudgetScenarioDetailPage * file: src/cores/fa/pages/BudgetScenarioDetailPage.tsx:34 * kind: component * core: fa * spec: (none) * summary: Utility for budget scenario detail page. * score: 1 ### component BudgetScenarioEditPage * file: src/cores/fa/pages/BudgetScenarioEditPage.tsx:25 * kind: component * core: fa * spec: (none) * summary: Utility for budget scenario edit page. * score: 1 ### component BudgetScenarioForm * file: src/cores/fa/components/BudgetScenarioForm.tsx:80 * kind: component * core: fa * spec: (none) * summary: Utility for budget scenario form. * score: 1 ### component BudgetScenarioNewPage * file: src/cores/fa/pages/BudgetScenarioNewPage.tsx:18 * kind: component * core: fa * spec: (none) * summary: Utility for budget scenario new page. * score: 1 ### component BudgetScenariosPage * file: src/cores/fa/pages/BudgetScenariosPage.tsx:26 * kind: component * core: fa * spec: (none) * summary: Utility for budget scenarios page. * score: 1 ### component BudgetScenariosTable * file: src/cores/fa/components/BudgetScenariosTable.tsx:37 * kind: component * core: fa * spec: (none) * summary: Utility for budget scenarios table. * score: 1 ### component BudgetsPage * file: src/cores/fa/pages/BudgetsPage.tsx:17 * kind: component * core: fa * spec: (none) * summary: Utility for budgets page. * score: 1 ### component BudgetsTable * file: src/cores/fa/components/BudgetsTable.tsx:38 * kind: component * core: fa * spec: (none) * summary: Utility for budgets table. * score: 1 ### component BudgetStatusBadge * file: src/cores/fa/components/BudgetStatusBadge.tsx:23 * kind: component * core: fa * spec: (none) * summary: Utility for budget status badge. * score: 1 ### component BudgetSummaryCard * file: src/cores/fa/components/BudgetSummaryCard.tsx:13 * kind: component * core: fa * spec: (none) * summary: Utility for budget summary card. * score: 1 ### component BudgetTemplateCopyWizard * file: src/cores/fa/components/BudgetTemplateCopyWizard.tsx:33 * kind: component * core: fa * spec: (none) * summary: Utility for budget template copy wizard. * score: 1 ### component BudgetTemplateDetailPage * file: src/cores/fa/pages/BudgetTemplateDetailPage.tsx:52 * kind: component * core: fa * spec: (none) * summary: Utility for budget template detail page. * score: 1 ### component BudgetTemplateEditPage * file: src/cores/fa/pages/BudgetTemplateEditPage.tsx:22 * kind: component * core: fa * spec: (none) * summary: Utility for budget template edit page. * score: 1 ### component BudgetTemplateForm * file: src/cores/fa/components/BudgetTemplateForm.tsx:77 * kind: component * core: fa * spec: (none) * summary: Utility for budget template form. * score: 1 ### component BudgetTemplateNewPage * file: src/cores/fa/pages/BudgetTemplateNewPage.tsx:21 * kind: component * core: fa * spec: (none) * summary: Utility for budget template new page. * score: 1 ### component BudgetTemplatesPage * file: src/cores/fa/pages/BudgetTemplatesPage.tsx:28 * kind: component * core: fa * spec: (none) * summary: Utility for budget templates page. * score: 1 ### component BudgetTemplatesTable * file: src/cores/fa/components/BudgetTemplatesTable.tsx:25 * kind: component * core: fa * spec: (none) * summary: Utility for budget templates table. * score: 1 ### component BudgetVarianceFilters * file: src/cores/fa/components/BudgetVarianceFilters.tsx:24 * kind: component * core: fa * spec: (none) * summary: Utility for budget variance filters. * score: 1 ### component BudgetVsActualChart * file: src/cores/fa/components/projects/BudgetVsActualChart.tsx:19 * kind: component * core: fa * spec: (none) * summary: Utility for budget vs actual chart. * score: 1 ### component BudgetVsActualReport * file: src/cores/fa/components/BudgetVsActualReport.tsx:27 * kind: component * core: fa * spec: (none) * summary: Utility for budget vs actual report. * score: 1 ### component BudgetVsActualSummary * file: src/cores/fa/components/BudgetVsActualSummary.tsx:23 * kind: component * core: fa * spec: (none) * summary: Utility for budget vs actual summary. * score: 1 ### component CalculatedRowsStep * file: src/cores/fa/wizards/statement-template/steps/CalculatedRowsStep.tsx:32 * kind: component * core: fa * spec: (none) * summary: Renders the calculated-row configuration step for the statement template wizard. * score: 2 ### component CardTransactionsPage * file: src/cores/fa/pages/CardTransactionsPage.tsx:13 * kind: component * core: fa * spec: (none) * summary: Utility for card transactions page. * score: 1 ### component CardTransactionsTable * file: src/cores/fa/components/CardTransactionsTable.tsx:32 * kind: component * core: fa * spec: (none) * summary: Utility for card transactions table. * score: 1 ### component CashFlowDirectPage * file: src/cores/fa/pages/CashFlowDirectPage.tsx:31 * kind: component * core: fa * spec: (none) * summary: Utility for cash flow direct page. * score: 1 ### component CashFlowForecastChart * file: src/cores/fa/components/CashFlowForecastChart.tsx:22 * kind: component * core: fa * spec: (none) * summary: Utility for cash flow forecast chart. * score: 1 ### component CashFlowForecastPage * file: src/cores/fa/pages/CashFlowForecastPage.tsx:35 * kind: component * core: fa * spec: (none) * summary: Utility for cash flow forecast page. * score: 1 ### component CashFlowPage * file: src/cores/fa/pages/CashFlowPage.tsx:22 * kind: component * core: fa * spec: (none) * summary: Utility for cash flow page. * score: 1 ### component CashFlowReport * file: src/cores/fa/components/CashFlowReport.tsx:49 * kind: component * core: fa * spec: (none) * summary: Utility for cash flow report. * score: 1 ### component CashManagementDashboard * file: src/cores/fa/pages/CashManagementDashboard.tsx:41 * kind: component * core: fa * spec: (none) * summary: Utility for cash management dashboard. * score: 1 ### component CashPositionTooltip * file: src/cores/fa/components/BalanceTermsTooltips.tsx:78 * kind: component * core: fa * spec: (none) * summary: Displays contextual help for cash position terminology. * score: 2 ### component CashPositionTrendsChart * file: src/cores/fa/components/CashPositionTrendsChart.tsx:47 * kind: component * core: fa * spec: (none) * summary: Utility for cash position trends chart. * score: 1 ### component CategoryMappingFormDialog * file: src/cores/fa/components/CategoryMappingFormDialog.tsx:44 * kind: component * core: fa * spec: (none) * summary: Utility for category mapping form dialog. * score: 1 ### component CategoryMappingTable * file: src/cores/fa/components/CategoryMappingTable.tsx:26 * kind: component * core: fa * spec: (none) * summary: Utility for category mapping table. * score: 1 ### component ChecklistTaskEditor * file: src/cores/fa/components/ChecklistTaskEditor.tsx:257 * kind: component * core: fa * spec: (none) * summary: Utility for checklist task editor. * score: 1 ### component ChecklistTemplateSelector * file: src/cores/fa/components/ChecklistTemplateSelector.tsx:24 * kind: component * core: fa * spec: (none) * summary: Utility for checklist template selector. * score: 1 ### component CloseChecklistSection * file: src/cores/fa/components/CloseChecklistSection.tsx:32 * kind: component * core: fa * spec: (none) * summary: Utility for close checklist section. * score: 1 ### component CloseChecklistsPage * file: src/cores/fa/pages/CloseChecklistsPage.tsx:32 * kind: component * core: fa * spec: (none) * summary: Utility for close checklists page. * score: 1 ### component CloseChecklistsTable * file: src/cores/fa/components/CloseChecklistsTable.tsx:26 * kind: component * core: fa * spec: (none) * summary: Utility for close checklists table. * score: 1 ### component ClosePeriodDetailPage * file: src/cores/fa/pages/ClosePeriodDetailPage.tsx:52 * kind: component * core: fa * spec: (none) * summary: Utility for close period detail page. * score: 1 ### component ClosePeriodProgress * file: src/cores/fa/components/ClosePeriodProgress.tsx:22 * kind: component * core: fa * spec: (none) * summary: Utility for close period progress. * score: 1 ### component ClosePeriodsPage * file: src/cores/fa/pages/ClosePeriodsPage.tsx:26 * kind: component * core: fa * spec: (none) * summary: Utility for close periods page. * score: 1 ### component ClosePeriodsTable * file: src/cores/fa/components/ClosePeriodsTable.tsx:50 * kind: component * core: fa * spec: (none) * summary: Utility for close periods table. * score: 1 ### component CloseStatusBadge * file: src/cores/fa/components/CloseStatusBadge.tsx:75 * kind: component * core: fa * spec: (none) * summary: Utility for close status badge. * score: 1 ### component CloseTaskCard * file: src/cores/fa/components/CloseTaskCard.tsx:35 * kind: component * core: fa * spec: (none) * summary: Utility for close task card. * score: 1 ### component CloseTaskDetailDialog * file: src/cores/fa/components/CloseTaskDetailDialog.tsx:58 * kind: component * core: fa * spec: (none) * summary: Utility for close task detail dialog. * score: 1 ### component CloseTasksList * file: src/cores/fa/components/CloseTasksList.tsx:32 * kind: component * core: fa * spec: (none) * summary: Utility for close tasks list. * score: 1 ### component CloseTaskStatusBadge * file: src/cores/fa/components/CloseTaskStatusBadge.tsx:72 * kind: component * core: fa * spec: (none) * summary: Utility for close task status badge. * score: 1 ### component CloseTaxYearDialog * file: src/cores/fa/components/CloseTaxYearDialog.tsx:46 * kind: component * core: fa * spec: (none) * summary: Utility for close tax year dialog. * score: 1 ### component CoAExportDialog * file: src/cores/fa/components/CoAExportDialog.tsx:23 * kind: component * core: fa * spec: (none) * summary: Utility for co aexport dialog. * score: 1 ### component CoAImport * file: src/cores/fa/components/CoAImport.tsx:42 * kind: component * core: fa * spec: (none) * summary: Utility for co aimport. * score: 1 ### component CoAImportPage * file: src/cores/fa/pages/CoAImportPage.tsx:13 * kind: component * core: fa * spec: (none) * summary: Utility for co aimport page. * score: 1 ### component CoATemplateList * file: src/cores/fa/components/CoATemplateList.tsx:24 * kind: component * core: fa * spec: (none) * summary: Renders the merged template library (built-in + custom) with Apply and"Save current CoA as template" actions. * score: 2 ### component CollectionActivityLog * file: src/cores/fa/components/CollectionActivityLog.tsx:49 * kind: component * core: fa * spec: (none) * summary: Utility for collection activity log. * score: 1 ### component CollectionQueueTable * file: src/cores/fa/components/CollectionQueueTable.tsx:29 * kind: component * core: fa * spec: (none) * summary: Utility for collection queue table. * score: 1 ### component CollectionQueueWorkflowTable * file: src/cores/fa/components/CollectionQueueWorkflowTable.tsx:64 * kind: component * core: fa * spec: (none) * summary: Utility for collection queue workflow table. * score: 1 ### component CollectionWorkflowPage * file: src/cores/fa/pages/CollectionWorkflowPage.tsx:23 * kind: component * core: fa * spec: (none) * summary: Utility for collection workflow page. * score: 1 ### component CompleteReconciliationStep * file: src/cores/fa/wizards/bank-reconciliation/steps/CompleteReconciliationStep.tsx:21 * kind: component * core: fa * spec: (none) * summary: Utility for complete reconciliation step. * score: 1 ### component CompletionConfirmationDialog * file: src/cores/fa/components/CompletionConfirmationDialog.tsx:33 * kind: component * core: fa * spec: (none) * summary: Utility for completion confirmation dialog. * score: 1 ### component ComplianceMappingEditor * file: src/cores/fa/components/ComplianceMappingEditor.tsx:49 * kind: component * core: fa * spec: (none) * summary: Admin editor for compliance-to-account mappings (FA-34). * score: 2 ### component ComplianceMappingPage * file: src/cores/fa/pages/ComplianceMappingPage.tsx:12 * kind: component * core: fa * spec: (none) * summary: FA-34 admin page: Compliance Cost Mappings. * score: 2 ### component ConfigureDependenciesStep * file: src/cores/fa/wizards/financial-close-setup/steps/ConfigureDependenciesStep.tsx:23 * kind: component * core: fa * spec: (none) * summary: Utility for configure dependencies step. * score: 1 ### component ConfirmStartStep * file: src/cores/fa/wizards/financial-close-setup/steps/ConfirmStartStep.tsx:22 * kind: component * core: fa * spec: (none) * summary: Utility for confirm start step. * score: 1 ### component ConfirmStep * file: src/cores/fa/wizards/revenue-schedule-creation/steps/ConfirmStep.tsx:82 * kind: component * core: fa * spec: (none) * summary: PF-41 standalone wrapper. * score: 1 ### component ConfirmStepFields * file: src/cores/fa/wizards/revenue-schedule-creation/steps/ConfirmStep.tsx:20 * kind: component * core: fa * spec: (none) * summary: Step 4 — Final review before submit. Read-only summary of the draft anda sum-vs-total balance check (final guard before the create mutation). * score: 2 ### component ContractProgressReportPage * file: src/cores/fa/pages/ContractProgressReportPage.tsx:24 * kind: component * core: fa * spec: (none) * summary: Contract Progress report page. * score: 1 ### component CopyFromBudgetDialog * file: src/cores/fa/components/CopyFromBudgetDialog.tsx:32 * kind: component * core: fa * spec: (none) * summary: Utility for copy from budget dialog. * score: 1 ### component CopyTemplateStep * file: src/cores/fa/wizards/budget-creation/steps/CopyTemplateStep.tsx:28 * kind: component * core: fa * spec: (none) * summary: Copy Template StepAllows selection of prior budget as template with growth percentage. * score: 2 ### component CreateBadDebtReserveDialog * file: src/cores/fa/components/CreateBadDebtReserveDialog.tsx:38 * kind: component * core: fa * spec: (none) * summary: Utility for create bad debt reserve dialog. * score: 1 ### component CreateChecklistTemplateDialog * file: src/cores/fa/components/CreateChecklistTemplateDialog.tsx:52 * kind: component * core: fa * spec: (none) * summary: Utility for create checklist template dialog. * score: 1 ### component CreateClosePeriodDialog * file: src/cores/fa/components/CreateClosePeriodDialog.tsx:84 * kind: component * core: fa * spec: (none) * summary: Utility for create close period dialog. * score: 1 ### component CreateDistributionDialog * file: src/cores/fa/components/CreateDistributionDialog.tsx:39 * kind: component * core: fa * spec: (none) * summary: Utility for create distribution dialog. * score: 1 ### component CreateFromBudgetDialog * file: src/cores/fa/components/CreateFromBudgetDialog.tsx:38 * kind: component * core: fa * spec: (none) * summary: Utility for create from budget dialog. * score: 1 ### component CreateIndirectCostPoolDialog * file: src/cores/fa/components/cost-allocation/CreateIndirectCostPoolDialog.tsx:35 * kind: component * core: fa * spec: (none) * summary: Utility for create indirect cost pool dialog. * score: 1 ### component CreateRuleFromTransaction * file: src/cores/fa/components/CreateRuleFromTransaction.tsx:21 * kind: component * core: fa * spec: (none) * summary: Utility for create rule from transaction. * score: 1 ### component CreateTaxYearDialog * file: src/cores/fa/components/CreateTaxYearDialog.tsx:40 * kind: component * core: fa * spec: (none) * summary: Utility for create tax year dialog. * score: 1 ### component CreditApplicationDialog * file: src/cores/fa/components/CreditApplicationDialog.tsx:42 * kind: component * core: fa * spec: (none) * summary: Utility for credit application dialog. * score: 1 ### component CreditLineDetailPage * file: src/cores/fa/pages/CreditLineDetailPage.tsx:38 * kind: component * core: fa * spec: (none) * summary: Utility for credit line detail page. * score: 1 ### component CreditLineDialog * file: src/cores/fa/components/CreditLineDialog.tsx:25 * kind: component * core: fa * spec: (none) * summary: Utility for credit line dialog. * score: 1 ### component CreditLineForm * file: src/cores/fa/components/CreditLineForm.tsx:46 * kind: component * core: fa * spec: (none) * summary: Utility for credit line form. * score: 1 ### component CreditLinesPage * file: src/cores/fa/pages/CreditLinesPage.tsx:61 * kind: component * core: fa * spec: (none) * summary: Utility for credit lines page. * score: 1 ### component CreditLinesTable * file: src/cores/fa/components/CreditLinesTable.tsx:24 * kind: component * core: fa * spec: (none) * summary: Utility for credit lines table. * score: 1 ### component CreditLineStatusBadge * file: src/cores/fa/components/CreditLineStatusBadge.tsx:22 * kind: component * core: fa * spec: (none) * summary: Utility for credit line status badge. * score: 1 ### component CreditMemoCreatePage * file: src/cores/fa/pages/CreditMemoCreatePage.tsx:43 * kind: component * core: fa * spec: (none) * summary: Utility for credit memo create page. * score: 1 ### component CreditMemoDetailPage * file: src/cores/fa/pages/CreditMemoDetailPage.tsx:31 * kind: component * core: fa * spec: (none) * summary: Utility for credit memo detail page. * score: 1 ### component CreditMemoForm * file: src/cores/fa/components/CreditMemoForm.tsx:28 * kind: component * core: fa * spec: (none) * summary: Utility for credit memo form. * score: 1 ### component CreditMemoLineEditor * file: src/cores/fa/components/CreditMemoLineEditor.tsx:34 * kind: component * core: fa * spec: (none) * summary: Utility for credit memo line editor. * score: 1 ### component CreditMemosPage * file: src/cores/fa/pages/CreditMemosPage.tsx:19 * kind: component * core: fa * spec: (none) * summary: Utility for credit memos page. * score: 1 ### component CreditMemosTable * file: src/cores/fa/components/CreditMemosTable.tsx:29 * kind: component * core: fa * spec: (none) * summary: Utility for credit memos table. * score: 1 ### component CreditMemoStatusBadge * file: src/cores/fa/components/CreditMemoStatusBadge.tsx:18 * kind: component * core: fa * spec: (none) * summary: Utility for credit memo status badge. * score: 1 ### component CustomerDetailPage * file: src/cores/fa/pages/CustomerDetailPage.tsx:33 * kind: component * core: fa * spec: (none) * summary: Utility for customer detail page. * score: 1 ### component CustomerDialog * file: src/cores/fa/components/CustomerDialog.tsx:27 * kind: component * core: fa * spec: (none) * summary: Utility for customer dialog. * score: 1 ### component CustomerForm * file: src/cores/fa/components/CustomerForm.tsx:22 * kind: component * core: fa * spec: (none) * summary: Utility for customer form. * score: 1 ### component CustomerPaymentCreatePage * file: src/cores/fa/pages/CustomerPaymentCreatePage.tsx:20 * kind: component * core: fa * spec: (none) * summary: Utility for customer payment create page. * score: 1 ### component CustomerPaymentDetailPage * file: src/cores/fa/pages/CustomerPaymentDetailPage.tsx:32 * kind: component * core: fa * spec: (none) * summary: Utility for customer payment detail page. * score: 1 ### component CustomerPaymentForm * file: src/cores/fa/components/CustomerPaymentForm.tsx:39 * kind: component * core: fa * spec: (none) * summary: Utility for customer payment form. * score: 1 ### component CustomerPaymentsPage * file: src/cores/fa/pages/CustomerPaymentsPage.tsx:22 * kind: component * core: fa * spec: (none) * summary: Utility for customer payments page. * score: 1 ### component CustomerPaymentsTable * file: src/cores/fa/components/CustomerPaymentsTable.tsx:20 * kind: component * core: fa * spec: (none) * summary: Utility for customer payments table. * score: 1 ### component CustomersPage * file: src/cores/fa/pages/CustomersPage.tsx:25 * kind: component * core: fa * spec: (none) * summary: Utility for customers page. * score: 1 ### component CustomersTable * file: src/cores/fa/components/CustomersTable.tsx:44 * kind: component * core: fa * spec: (none) * summary: Utility for customers table. * score: 1 ### component CustomReportBuilderPage * file: src/cores/fa/pages/CustomReportBuilderPage.tsx:36 * kind: component * core: fa * spec: (none) * summary: Utility for custom report builder page. * score: 1 ### component DeferredBalanceReportPage * file: src/cores/fa/pages/DeferredBalanceReportPage.tsx:24 * kind: component * core: fa * spec: (none) * summary: Deferred Balance report page. * score: 1 ### component DeferredRevenuePage * file: src/cores/fa/pages/DeferredRevenuePage.tsx:18 * kind: component * core: fa * spec: (none) * summary: Deferred revenue list page. * score: 1 ### component DepartmentDialog * file: src/cores/fa/components/DepartmentDialog.tsx:36 * kind: component * core: fa * spec: (none) * summary: Utility for department dialog. * score: 1 ### component DepartmentsPage * file: src/cores/fa/pages/DepartmentsPage.tsx:16 * kind: component * core: fa * spec: (none) * summary: Utility for departments page. * score: 1 ### component DepartmentTree * file: src/cores/fa/components/DepartmentTree.tsx:98 * kind: component * core: fa * spec: (none) * summary: Utility for department tree. * score: 1 ### component DepositsInTransitReportPage * file: src/cores/fa/pages/DepositsInTransitReportPage.tsx:9 * kind: component * core: fa * spec: (none) * summary: Utility for deposits in transit report page. * score: 1 ### component DepreciationMethodBadge * file: src/cores/fa/components/DepreciationMethodBadge.tsx:28 * kind: component * core: fa * spec: (none) * summary: Utility for depreciation method badge. * score: 1 ### component DepreciationSchedulePage * file: src/cores/fa/pages/DepreciationSchedulePage.tsx:54 * kind: component * core: fa * spec: (none) * summary: Utility for depreciation schedule page. * score: 1 ### component DepreciationScheduleTable * file: src/cores/fa/components/DepreciationScheduleTable.tsx:30 * kind: component * core: fa * spec: (none) * summary: Utility for depreciation schedule table. * score: 1 ### component DrawdownAlertBanner * file: src/cores/fa/components/projects/DrawdownAlertBanner.tsx:20 * kind: component * core: fa * spec: (none) * summary: Utility for drawdown alert banner. * score: 1 ### component DrawdownReceiptForm * file: src/cores/fa/components/projects/DrawdownReceiptForm.tsx:35 * kind: component * core: fa * spec: (none) * summary: Utility for drawdown receipt form. * score: 1 ### component DrawdownRequestForm * file: src/cores/fa/components/projects/DrawdownRequestForm.tsx:33 * kind: component * core: fa * spec: (none) * summary: Utility for drawdown request form. * score: 1 ### component EnterLinesStep * file: src/cores/fa/wizards/budget-creation/steps/EnterLinesStep.tsx:53 * kind: component * core: fa * spec: (none) * summary: Enter Budget Lines StepInteractive table for budget line entry with add/edit/remove/duplicate.Auto-populates period dates from the selected fiscal year.Auto-populates from template if navigated from Template Library. * score: 2 ### component EntityConsolidationSelector * file: src/cores/fa/components/EntityConsolidationSelector.tsx:29 * kind: component * core: fa * spec: (none) * summary: Utility for entity consolidation selector. * score: 1 ### component ExpenseApprovalDialog * file: src/cores/fa/components/ExpenseApprovalDialog.tsx:53 * kind: component * core: fa * spec: (none) * summary: Utility for expense approval dialog. * score: 1 ### component ExpenseCategoryPicklistSelect * file: src/cores/fa/components/ExpenseCategoryPicklistSelect.tsx:26 * kind: component * core: fa * spec: (none) * summary: Utility for expense category picklist select. * score: 1 ### component ExpenseCategorySelect * file: src/cores/fa/components/ExpenseCategorySelect.tsx:49 * kind: component * core: fa * spec: (none) * summary: Utility for expense category select. * score: 1 ### component ExpenseDashboardPage * file: src/cores/fa/pages/ExpenseDashboardPage.tsx:25 * kind: component * core: fa * spec: (none) * summary: Utility for expense dashboard page. * score: 1 ### component ExpenseLineEditor * file: src/cores/fa/components/ExpenseLineEditor.tsx:33 * kind: component * core: fa * spec: (none) * summary: Utility for expense line editor. * score: 1 ### component ExpenseLineExpandedDetails * file: src/cores/fa/components/ExpenseLineRow\.tsx:58 * kind: component * core: fa * spec: (none) * summary: Utility for expense line expanded details. * score: 1 ### component ExpenseLinesTable * file: src/cores/fa/components/ExpenseLinesTable.tsx:21 * kind: component * core: fa * spec: (none) * summary: Utility for expense lines table. * score: 1 ### component ExpensePoliciesPage * file: src/cores/fa/pages/ExpensePoliciesPage.tsx:34 * kind: component * core: fa * spec: (none) * summary: Utility for expense policies page. * score: 1 ### component ExpensePolicyEngineRulesSection * file: src/cores/fa/components/ExpensePolicyEngineRulesSection.tsx:30 * kind: component * core: fa * spec: (none) * summary: FA-27 / FA-UX-16: Expense policy engine rules (fa\_expense\_rules) separate from legacy fa\_expense\_policies rows. * score: 2 ### component ExpensePolicyFormDialog * file: src/cores/fa/components/ExpensePolicyFormDialog.tsx:60 * kind: component * core: fa * spec: (none) * summary: Utility for expense policy form dialog. * score: 1 ### component ExpensePolicyRuleWizardDialog * file: src/cores/fa/wizards/expense-policy-rule/ExpensePolicyRuleWizardDialog.tsx:48 * kind: component * core: fa * spec: (none) * summary: FA-UX-16 dialog wizard to create or edit via . * params: * open — Dialog visibility. * onOpenChange — Passed through to the shell; invoked with after successful upsert. * organizationId — Tenant id for RPC and nested queries. * initialRule — Optional existing rule row for edit mode. * returns: Rendered wrapped in . * score: 2 ### component ExpensePolicyRuleWizardProvider * file: src/cores/fa/wizards/expense-policy-rule/ExpensePolicyRuleWizardProvider.tsx:14 * kind: component * core: fa * spec: (none) * summary: React context provider for the FA-UX-16 expense policy rule wizard (draft, errors, org id). * params: * value — Wizard state bundle (, , , , , ). * children — Descendants that may call the wizard hooks. * returns: Provider element wiring for descendants. * score: 2 ### component ExpensePolicyTable * file: src/cores/fa/components/ExpensePolicyTable.tsx:43 * kind: component * core: fa * spec: (none) * summary: Utility for expense policy table. * score: 1 ### component ExpenseReportDetailPage * file: src/cores/fa/pages/ExpenseReportDetailPage.tsx:86 * kind: component * core: fa * spec: (none) * summary: Utility for expense report detail page. * score: 1 ### component ExpenseReportEditPage * file: src/cores/fa/pages/ExpenseReportEditPage.tsx:66 * kind: component * core: fa * spec: (none) * summary: Utility for expense report edit page. * score: 1 ### component ExpenseReportForm * file: src/cores/fa/components/ExpenseReportForm.tsx:73 * kind: component * core: fa * spec: (none) * summary: Utility for expense report form. * score: 1 ### component ExpenseReportNewPage * file: src/cores/fa/pages/ExpenseReportNewPage.tsx:62 * kind: component * core: fa * spec: (none) * summary: Utility for expense report new page. * score: 1 ### component ExpenseReportsPage * file: src/cores/fa/pages/ExpenseReportsPage.tsx:60 * kind: component * core: fa * spec: (none) * summary: Utility for expense reports page. * score: 1 ### component ExpenseReportsTable * file: src/cores/fa/components/ExpenseReportsTable.tsx:56 * kind: component * core: fa * spec: (none) * summary: Utility for expense reports table. * score: 1 ### component ExpenseReportStatusBadge * file: src/cores/fa/components/ExpenseReportStatusBadge.tsx:39 * kind: component * core: fa * spec: (none) * summary: Utility for expense report status badge. * score: 1 ### component ExpenseReportSummaryCard * file: src/cores/fa/components/ExpenseReportSummaryCard.tsx:23 * kind: component * core: fa * spec: (none) * summary: Expense Report Summary Card ComponentDisplays a summary card with report information, employee details, and totals. * params: * props — Component props - : The expense report with employee information (ExpenseReportWithEmployee) * returns: JSX.Element - A grid of cards displaying report and employee information * score: 2 ### component ExpenseTrendChart * file: src/cores/fa/components/analytics/ExpenseTrendChart.tsx:26 * kind: component * core: fa * spec: (none) * summary: Utility for expense trend chart. * score: 1 ### component FAAgingSummaryWidget * file: src/cores/fa/components/dashboard/FAAgingSummaryWidget.tsx:46 * kind: component * core: fa * spec: (none) * summary: Utility for faaging summary widget. * score: 1 ### component FAApprovalsPage * file: src/cores/fa/pages/FAApprovalsPage.tsx:18 * kind: component * core: fa * spec: (none) * summary: Utility for faapprovals page. * score: 1 ### component FABudgetAlertsWidget * file: src/cores/fa/components/dashboard/FABudgetAlertsWidget.tsx:13 * kind: component * core: fa * spec: (none) * summary: Utility for fabudget alerts widget. * score: 1 ### component FACashPositionWidget * file: src/cores/fa/components/dashboard/FACashPositionWidget.tsx:29 * kind: component * core: fa * spec: (none) * summary: Utility for facash position widget. * score: 1 ### component FACollectionsQueueWidget * file: src/cores/fa/components/dashboard/FACollectionsQueueWidget.tsx:78 * kind: component * core: fa * spec: (none) * summary: Utility for facollections queue widget. * score: 1 ### component FAEntitiesPage * file: src/cores/fa/pages/FAEntitiesPage.tsx:16 * kind: component * core: fa * spec: (none) * summary: FA-09a Entities page — manage legal entity master records for multi-entity consolidation. * score: 2 ### component FAEntityDialog * file: src/cores/fa/components/FAEntityDialog.tsx:36 * kind: component * core: fa * spec: (none) * summary: Create / edit dialog for FA legal entities (FA-09a). * score: 2 ### component FAExpenseApprovalQueueWidget * file: src/cores/fa/components/dashboard/FAExpenseApprovalQueueWidget.tsx:34 * kind: component * core: fa * spec: (none) * summary: Utility for faexpense approval queue widget. * score: 1 ### component FAExpenseCategoryWidget * file: src/cores/fa/components/dashboard/FAExpenseCategoryWidget.tsx:33 * kind: component * core: fa * spec: (none) * summary: Utility for faexpense category widget. * score: 1 ### component FAFinanceHealthWidget * file: src/cores/fa/components/dashboard/FAFinanceHealthWidget.tsx:41 * kind: component * core: fa * spec: (none) * summary: Utility for fafinance health widget. * score: 1 ### component FAFinancialSummaryWidget * file: src/cores/fa/components/dashboard/FAFinancialSummaryWidget.tsx:33 * kind: component * core: fa * spec: (none) * summary: Utility for fafinancial summary widget. * score: 1 ### component FAIntegrationsSettingsTab * file: src/cores/fa/components/FAIntegrationsSettingsTab.tsx:18 * kind: component * core: fa * spec: (none) * summary: Utility for faintegrations settings tab. * score: 1 ### component FAKeyboardShortcutsHelp * file: src/cores/fa/components/FAKeyboardShortcutsHelp.tsx:30 * kind: component * core: fa * spec: (none) * summary: Utility for fakeyboard shortcuts help. * score: 1 ### component FallbackBanner * file: src/cores/fa/components/BalanceSourceIndicator.tsx:87 * kind: component * core: fa * spec: (none) * summary: Compact fallback banner shown when AccountBalanceWidget uses bank datainstead of fund data. * score: 2 ### component FAOverview * file: src/cores/fa/pages/FAOverview\.tsx:34 * kind: component * core: fa * spec: (none) * summary: Utility for faoverview. * score: 1 ### component FAPendingApprovalsWidget * file: src/cores/fa/components/dashboard/FAPendingApprovalsWidget.tsx:13 * kind: component * core: fa * spec: (none) * summary: Utility for fapending approvals widget. * score: 1 ### component FARecentExpenseReportsWidget * file: src/cores/fa/components/dashboard/FARecentExpenseReportsWidget.tsx:47 * kind: component * core: fa * spec: (none) * summary: Utility for farecent expense reports widget. * score: 1 ### component FARevenueExpenseTrendWidget * file: src/cores/fa/components/dashboard/FARevenueExpenseTrendWidget.tsx:24 * kind: component * core: fa * spec: (none) * summary: Utility for farevenue expense trend widget. * score: 1 ### component FASettingsForm * file: src/cores/fa/components/FASettingsForm.tsx:73 * kind: component * core: fa * spec: (none) * summary: Utility for fasettings form. * score: 1 ### component FASettingsPage * file: src/cores/fa/pages/FASettingsPage.tsx:27 * kind: component * core: fa * spec: (none) * summary: Utility for fasettings page. * score: 1 ### component FinancialCloseSetupWizardPage * file: src/cores/fa/wizards/financial-close-setup/FinancialCloseSetupWizardPage.tsx:32 * kind: component * core: fa * spec: (none) * summary: Utility for financial close setup wizard page. * score: 1 ### component FinancialStatementsHubPage * file: src/cores/fa/pages/FinancialStatementsHubPage.tsx:54 * kind: component * core: fa * spec: (none) * summary: Utility for financial statements hub page. * score: 1 ### component FiscalPeriodsPage * file: src/cores/fa/pages/FiscalPeriodsPage.tsx:16 * kind: component * core: fa * spec: (none) * summary: Utility for fiscal periods page. * score: 1 ### component FiscalYearDialog * file: src/cores/fa/components/FiscalYearDialog.tsx:31 * kind: component * core: fa * spec: (none) * summary: Utility for fiscal year dialog. * score: 1 ### component FixedAssetCreatePage * file: src/cores/fa/pages/FixedAssetCreatePage.tsx:31 * kind: component * core: fa * spec: (none) * summary: Utility for fixed asset create page. * score: 1 ### component FixedAssetDetailPage * file: src/cores/fa/pages/FixedAssetDetailPage.tsx:53 * kind: component * core: fa * spec: (none) * summary: Utility for fixed asset detail page. * score: 1 ### component FixedAssetDialog * file: src/cores/fa/components/FixedAssetDialog.tsx:24 * kind: component * core: fa * spec: (none) * summary: Utility for fixed asset dialog. * score: 1 ### component FixedAssetEditPage * file: src/cores/fa/pages/FixedAssetEditPage.tsx:27 * kind: component * core: fa * spec: (none) * summary: Utility for fixed asset edit page. * score: 1 ### component FixedAssetForm * file: src/cores/fa/components/FixedAssetForm.tsx:74 * kind: component * core: fa * spec: (none) * summary: Utility for fixed asset form. * score: 1 ### component FixedAssetsPage * file: src/cores/fa/pages/FixedAssetsPage.tsx:52 * kind: component * core: fa * spec: (none) * summary: Utility for fixed assets page. * score: 1 ### component FixedAssetsTable * file: src/cores/fa/components/FixedAssetsTable.tsx:37 * kind: component * core: fa * spec: (none) * summary: Utility for fixed assets table. * score: 1 ### component ForecastAssumptionsDialog * file: src/cores/fa/components/ForecastAssumptionsDialog.tsx:59 * kind: component * core: fa * spec: (none) * summary: Utility for forecast assumptions dialog. * score: 1 ### component ForecastChart * file: src/cores/fa/components/ForecastChart.tsx:19 * kind: component * core: fa * spec: (none) * summary: Utility for forecast chart. * score: 1 ### component ForecastLineEditor * file: src/cores/fa/components/ForecastLineEditor.tsx:21 * kind: component * core: fa * spec: (none) * summary: Utility for forecast line editor. * score: 1 ### component ForecastLineEditorEditable * file: src/cores/fa/components/ForecastLineEditorEditable.tsx:71 * kind: component * core: fa * spec: (none) * summary: Utility for forecast line editor editable. * score: 1 ### component ForecastLineEditorSkeleton * file: src/cores/fa/components/ForecastLineEditor.tsx:96 * kind: component * core: fa * spec: (none) * summary: Utility for forecast line editor skeleton. * score: 1 ### component ForecastPage * file: src/cores/fa/pages/ForecastPage.tsx:19 * kind: component * core: fa * spec: (none) * summary: Utility for forecast page. * score: 1 ### component ForecastReport * file: src/cores/fa/components/ForecastReport.tsx:25 * kind: component * core: fa * spec: (none) * summary: Utility for forecast report. * score: 1 ### component ForecastStatusBadge * file: src/cores/fa/components/ForecastStatusBadge.tsx:21 * kind: component * core: fa * spec: (none) * summary: Utility for forecast status badge. * score: 1 ### component ForecastSummary * file: src/cores/fa/components/ForecastSummary.tsx:25 * kind: component * core: fa * spec: (none) * summary: Utility for forecast summary. * score: 1 ### component ForecastVersionHistory * file: src/cores/fa/components/ForecastVersionHistory.tsx:22 * kind: component * core: fa * spec: (none) * summary: Utility for forecast version history. * score: 1 ### component ForecastVsActualTable * file: src/cores/fa/components/ForecastVsActualTable.tsx:21 * kind: component * core: fa * spec: (none) * summary: Utility for forecast vs actual table. * score: 1 ### component Form1099DetailPage * file: src/cores/fa/pages/Form1099DetailPage.tsx:60 * kind: component * core: fa * spec: (none) * summary: Utility for form1099 detail page. * score: 1 ### component Form1099ListPage * file: src/cores/fa/pages/Form1099ListPage.tsx:17 * kind: component * core: fa * spec: (none) * summary: Utility for form1099 list page. * score: 1 ### component FunctionalExpensesMatrixPage * file: src/cores/fa/pages/FunctionalExpensesMatrixPage.tsx:37 * kind: component * core: fa * spec: (none) * summary: Utility for functional expenses matrix page. * score: 1 ### component FunctionalExpensesPage * file: src/cores/fa/pages/FunctionalExpensesPage.tsx:24 * kind: component * core: fa * spec: (none) * summary: Utility for functional expenses page. * score: 1 ### component FunctionalExpensesReport * file: src/cores/fa/components/FunctionalExpensesReport.tsx:68 * kind: component * core: fa * spec: (none) * summary: Utility for functional expenses report. * score: 1 ### component FundBalanceTooltip * file: src/cores/fa/components/BalanceTermsTooltips.tsx:64 * kind: component * core: fa * spec: (none) * summary: Displays contextual help for fund balance terminology. * score: 2 ### component FundDialog * file: src/cores/fa/components/FundDialog.tsx:47 * kind: component * core: fa * spec: (none) * summary: Utility for fund dialog. * score: 1 ### component FundRestrictionTooltip * file: src/cores/fa/components/BalanceTermsTooltips.tsx:119 * kind: component * core: fa * spec: (none) * summary: Displays contextual help for fund restriction terminology. * score: 2 ### component FundsPage * file: src/cores/fa/pages/FundsPage.tsx:14 * kind: component * core: fa * spec: (none) * summary: Utility for funds page. * score: 1 ### component FundsTable * file: src/cores/fa/components/FundsTable.tsx:23 * kind: component * core: fa * spec: (none) * summary: Utility for funds table. * score: 1 ### component GenerateTaxFormsDialog * file: src/cores/fa/components/GenerateTaxFormsDialog.tsx:51 * kind: component * core: fa * spec: (none) * summary: Utility for generate tax forms dialog. * score: 1 ### component GLBalanceTooltip * file: src/cores/fa/components/BalanceTermsTooltips.tsx:57 * kind: component * core: fa * spec: (none) * summary: Displays contextual help for General Ledger balance terminology. * score: 2 ### component GlMigrationPage * file: src/cores/fa/pages/GlMigrationPage.tsx:35 * kind: component * core: fa * spec: (none) * summary: Utility for gl migration page. * score: 1 ### component GLPostingIndicator * file: src/cores/fa/components/GLPostingIndicator.tsx:18 * kind: component * core: fa * spec: (none) * summary: Utility for glposting indicator. * score: 1 ### component GLPostingStatusBadge * file: src/cores/fa/components/GLPostingStatusBadge.tsx:37 * kind: component * core: fa * spec: (none) * summary: Utility for glposting status badge. * score: 1 ### component GrantCompliancePage * file: src/cores/fa/pages/GrantCompliancePage.tsx:23 * kind: component * core: fa * spec: (none) * summary: Utility for grant compliance page. * score: 1 ### component GrantComplianceReport * file: src/cores/fa/components/GrantComplianceReport.tsx:48 * kind: component * core: fa * spec: (none) * summary: Utility for grant compliance report. * score: 1 ### component HistoricalComparisonReport * file: src/cores/fa/components/reconciliation/HistoricalComparisonReport.tsx:19 * kind: component * core: fa * spec: (none) * summary: Utility for historical comparison report. * score: 1 ### component HistoricalSyncDialog * file: src/cores/fa/components/HistoricalSyncDialog.tsx:44 * kind: component * core: fa * spec: (none) * summary: Utility for historical sync dialog. * score: 1 ### component IDCAllocationsTab * file: src/cores/fa/components/cost-allocation/IDCAllocationsTab.tsx:18 * kind: component * core: fa * spec: (none) * summary: Utility for idcallocations tab. * score: 1 ### component IDCPoolsTab * file: src/cores/fa/components/cost-allocation/IDCPoolsTab.tsx:22 * kind: component * core: fa * spec: (none) * summary: Utility for idcpools tab. * score: 1 ### component IDCRatesTab * file: src/cores/fa/components/cost-allocation/IDCRatesTab.tsx:26 * kind: component * core: fa * spec: (none) * summary: Utility for idcrates tab. * score: 1 ### component ImportStatementStep * file: src/cores/fa/wizards/bank-reconciliation/steps/ImportStatementStep.tsx:80 * kind: component * core: fa * spec: (none) * summary: Utility for import statement step. * score: 1 ### component IndirectCostHubPage * file: src/cores/fa/pages/IndirectCostHubPage.tsx:31 * kind: component * core: fa * spec: (none) * summary: Utility for indirect cost hub page. * score: 1 ### component InterFundTransferForm * file: src/cores/fa/components/InterFundTransferForm.tsx:58 * kind: component * core: fa * spec: (none) * summary: Utility for inter fund transfer form. * score: 1 ### component InterFundTransferPage * file: src/cores/fa/pages/InterFundTransferPage.tsx:23 * kind: component * core: fa * spec: (none) * summary: Utility for inter fund transfer page. * score: 1 ### component InvestmentDetailPage * file: src/cores/fa/pages/InvestmentDetailPage.tsx:36 * kind: component * core: fa * spec: (none) * summary: Utility for investment detail page. * score: 1 ### component InvestmentDialog * file: src/cores/fa/components/InvestmentDialog.tsx:26 * kind: component * core: fa * spec: (none) * summary: Utility for investment dialog. * score: 1 ### component InvestmentForm * file: src/cores/fa/components/InvestmentForm.tsx:54 * kind: component * core: fa * spec: (none) * summary: Utility for investment form. * score: 1 ### component InvestmentsPage * file: src/cores/fa/pages/InvestmentsPage.tsx:62 * kind: component * core: fa * spec: (none) * summary: Utility for investments page. * score: 1 ### component InvestmentsTable * file: src/cores/fa/components/InvestmentsTable.tsx:68 * kind: component * core: fa * spec: (none) * summary: Utility for investments table. * score: 1 ### component InvestmentStatusBadge * file: src/cores/fa/components/InvestmentStatusBadge.tsx:28 * kind: component * core: fa * spec: (none) * summary: Utility for investment status badge. * score: 1 ### component InvoiceCreatePage * file: src/cores/fa/pages/InvoiceCreatePage.tsx:44 * kind: component * core: fa * spec: (none) * summary: Utility for invoice create page. * score: 1 ### component InvoiceCreditHistory * file: src/cores/fa/components/InvoiceCreditHistory.tsx:18 * kind: component * core: fa * spec: (none) * summary: Utility for invoice credit history. * score: 1 ### component InvoiceDetailPage * file: src/cores/fa/pages/InvoiceDetailPage.tsx:39 * kind: component * core: fa * spec: (none) * summary: Utility for invoice detail page. * score: 1 ### component InvoiceForm * file: src/cores/fa/components/InvoiceForm.tsx:53 * kind: component * core: fa * spec: (none) * summary: Utility for invoice form. * score: 1 ### component InvoiceLineEditor * file: src/cores/fa/components/InvoiceLineEditor.tsx:43 * kind: component * core: fa * spec: (none) * summary: Utility for invoice line editor. * score: 1 ### component InvoicePaymentHistory * file: src/cores/fa/components/InvoicePaymentHistory.tsx:19 * kind: component * core: fa * spec: (none) * summary: Utility for invoice payment history. * score: 1 ### component InvoicesPage * file: src/cores/fa/pages/InvoicesPage.tsx:28 * kind: component * core: fa * spec: (none) * summary: Utility for invoices page. * score: 1 ### component InvoicesTable * file: src/cores/fa/components/InvoicesTable.tsx:30 * kind: component * core: fa * spec: (none) * summary: Utility for invoices table. * score: 1 ### component InvoiceStatusBadge * file: src/cores/fa/components/InvoiceStatusBadge.tsx:28 * kind: component * core: fa * spec: (none) * summary: Utility for invoice status badge. * score: 1 ### component JournalEntriesPage * file: src/cores/fa/pages/JournalEntriesPage.tsx:40 * kind: component * core: fa * spec: (none) * summary: Utility for journal entries page. * score: 1 ### component JournalEntriesTable * file: src/cores/fa/components/JournalEntriesTable.tsx:58 * kind: component * core: fa * spec: (none) * summary: Utility for journal entries table. * score: 1 ### component JournalEntryAuditTrailReportPage * file: src/cores/fa/pages/JournalEntryAuditTrailReportPage.tsx:198 * kind: component * core: fa * spec: (none) * summary: Utility for journal entry audit trail report page. * score: 1 ### component JournalEntryCreatePage * file: src/cores/fa/pages/JournalEntryCreatePage.tsx:52 * kind: component * core: fa * spec: (none) * summary: Utility for journal entry create page. * score: 1 ### component JournalEntryDetailPage * file: src/cores/fa/pages/JournalEntryDetailPage.tsx:25 * kind: component * core: fa * spec: (none) * summary: Utility for journal entry detail page. * score: 1 ### component JournalEntryForm * file: src/cores/fa/components/JournalEntryForm.tsx:56 * kind: component * core: fa * spec: (none) * summary: Utility for journal entry form. * score: 1 ### component JournalEntryImportPage * file: src/cores/fa/pages/JournalEntryImportPage.tsx:47 * kind: component * core: fa * spec: (none) * summary: Utility for journal entry import page. * score: 1 ### component JournalLineEditor * file: src/cores/fa/components/JournalLineEditor.tsx:43 * kind: component * core: fa * spec: (none) * summary: Utility for journal line editor. * score: 1 ### component KPIPage * file: src/cores/fa/pages/KPIPage.tsx:82 * kind: component * core: fa * spec: (none) * summary: Utility for kpipage. * score: 1 ### component KPITrendChart * file: src/cores/fa/components/analytics/KPITrendChart.tsx:39 * kind: component * core: fa * spec: (none) * summary: Utility for kpitrend chart. * score: 1 ### component LedgerHubPage * file: src/cores/fa/pages/LedgerHubPage.tsx:47 * kind: component * core: fa * spec: (none) * summary: Utility for ledger hub page. * score: 1 ### component LogCollectionActivityDialog * file: src/cores/fa/components/LogCollectionActivityDialog.tsx:34 * kind: component * core: fa * spec: (none) * summary: Utility for log collection activity dialog. * score: 1 ### component ManualMatchDialog * file: src/cores/fa/components/ManualMatchDialog.tsx:23 * kind: component * core: fa * spec: (none) * summary: Utility for manual match dialog. * score: 1 ### component ManualMatchStep * file: src/cores/fa/wizards/bank-reconciliation/steps/ManualMatchStep.tsx:28 * kind: component * core: fa * spec: (none) * summary: Utility for manual match step. * score: 1 ### component MappingStep * file: src/cores/fa/wizards/statement-template/steps/MappingStep.tsx:27 * kind: component * core: fa * spec: (none) * summary: Configures Chart-of-Accounts range mappings for each statement section. * score: 2 ### component MatchedTransactionsTab * file: src/cores/fa/components/reconciliation/MatchedTransactionsTab.tsx:15 * kind: component * core: fa * spec: (none) * summary: Utility for matched transactions tab. * score: 1 ### component MatchedTransactionsTable * file: src/cores/fa/components/MatchedTransactionsTable.tsx:18 * kind: component * core: fa * spec: (none) * summary: Utility for matched transactions table. * score: 1 ### component MatchingAISettingsTab * file: src/cores/fa/components/MatchingAISettingsTab.tsx:26 * kind: component * core: fa * spec: (none) * summary: Utility for matching aisettings tab. * score: 1 ### component MatchSelectedDialog * file: src/cores/fa/components/reconciliation/MatchSelectedDialog.tsx:23 * kind: component * core: fa * spec: (none) * summary: Utility for match selected dialog. * score: 1 ### component MileageCalculator * file: src/cores/fa/components/MileageCalculator.tsx:35 * kind: component * core: fa * spec: (none) * summary: Utility for mileage calculator. * score: 1 ### component ModifyRevenueScheduleDialog * file: src/cores/fa/components/ModifyRevenueScheduleDialog.tsx:52 * kind: component * core: fa * spec: (none) * summary: Dialog to modify an active revenue schedule. * score: 2 ### component OpenCommitmentsPage * file: src/cores/fa/pages/OpenCommitmentsPage.tsx:33 * kind: component * core: fa * spec: (none) * summary: Utility for open commitments page. * score: 1 ### component OutstandingChecksReportPage * file: src/cores/fa/pages/OutstandingChecksReportPage.tsx:12 * kind: component * core: fa * spec: (none) * summary: Utility for outstanding checks report page. * score: 1 ### component ParamsStep * file: src/cores/fa/wizards/revenue-schedule-creation/steps/ParamsStep.tsx:126 * kind: component * core: fa * spec: (none) * summary: PF-41 standalone wrapper. * score: 1 ### component ParamsStepFields * file: src/cores/fa/wizards/revenue-schedule-creation/steps/ParamsStep.tsx:17 * kind: component * core: fa * spec: (none) * summary: Step 2 — Schedule parameters (name, total, dates, optional GL accounts, notes). * score: 2 ### component PayablesHubPage * file: src/cores/fa/pages/PayablesHubPage.tsx:43 * kind: component * core: fa * spec: (none) * summary: Payables & Expenses hub page. Renders the procure-to-pay tab strip via theshared primitive. * score: 2 ### component PaymentApplicationDialog * file: src/cores/fa/components/PaymentApplicationDialog.tsx:33 * kind: component * core: fa * spec: (none) * summary: Utility for payment application dialog. * score: 1 ### component PaymentBatchCreatePage * file: src/cores/fa/pages/PaymentBatchCreatePage.tsx:34 * kind: component * core: fa * spec: (none) * summary: Utility for payment batch create page. * score: 1 ### component PaymentBatchDetailPage * file: src/cores/fa/pages/PaymentBatchDetailPage.tsx:26 * kind: component * core: fa * spec: (none) * summary: Utility for payment batch detail page. * score: 1 ### component PaymentBatchesPage * file: src/cores/fa/pages/PaymentBatchesPage.tsx:49 * kind: component * core: fa * spec: (none) * summary: Utility for payment batches page. * score: 1 ### component PaymentPlanApprovalDialog * file: src/cores/fa/components/PaymentPlanApprovalDialog.tsx:78 * kind: component * core: fa * spec: (none) * summary: Utility for payment plan approval dialog. * score: 1 ### component PaymentPlanCreatePage * file: src/cores/fa/pages/PaymentPlanCreatePage.tsx:19 * kind: component * core: fa * spec: (none) * summary: Utility for payment plan create page. * score: 1 ### component PaymentPlanDetailPage * file: src/cores/fa/pages/PaymentPlanDetailPage.tsx:87 * kind: component * core: fa * spec: (none) * summary: Utility for payment plan detail page. * score: 1 ### component PaymentPlanEditPage * file: src/cores/fa/pages/PaymentPlanEditPage.tsx:19 * kind: component * core: fa * spec: (none) * summary: Utility for payment plan edit page. * score: 1 ### component PaymentPlanForm * file: src/cores/fa/components/PaymentPlanForm.tsx:59 * kind: component * core: fa * spec: (none) * summary: Utility for payment plan form. * score: 1 ### component PaymentPlansPage * file: src/cores/fa/pages/PaymentPlansPage.tsx:43 * kind: component * core: fa * spec: (none) * summary: Utility for payment plans page. * score: 1 ### component PaymentPlansTable * file: src/cores/fa/components/PaymentPlansTable.tsx:49 * kind: component * core: fa * spec: (none) * summary: Utility for payment plans table. * score: 1 ### component PaymentStatusBadge * file: src/cores/fa/components/PaymentStatusBadge.tsx:19 * kind: component * core: fa * spec: (none) * summary: Utility for payment status badge. * score: 1 ### component PendingBudgetApprovals * file: src/cores/fa/components/PendingBudgetApprovals.tsx:18 * kind: component * core: fa * spec: (none) * summary: Utility for pending budget approvals. * score: 1 ### component PerDiemCalculator * file: src/cores/fa/components/PerDiemCalculator.tsx:26 * kind: component * core: fa * spec: (none) * summary: Utility for per diem calculator. * score: 1 ### component PeriodCloseValidationWidget * file: src/cores/fa/components/PeriodCloseValidationWidget.tsx:25 * kind: component * core: fa * spec: (none) * summary: Utility for period close validation widget. * score: 1 ### component PeriodPreviewStepFields * file: src/cores/fa/wizards/revenue-schedule-creation/steps/PeriodPreviewStep.tsx:34 * kind: component * core: fa * spec: (none) * summary: Step 3 — Fiscal period preview with editable per-period allocations.Auto-computes a straight-line allocation across periods that intersect. Users can overrideindividual amounts; sum must equal the total within tolerance. * score: 2 ### component PeriodStatusToggle * file: src/cores/fa/components/PeriodStatusToggle.tsx:20 * kind: component * core: fa * spec: (none) * summary: Utility for period status toggle. * score: 1 ### component PlaidAccountMappingDialog * file: src/cores/fa/components/PlaidAccountMappingDialog.tsx:56 * kind: component * core: fa * spec: (none) * summary: Dialog to select which Plaid accounts to connect and assign GL accounts.Submits to plaid-exchange-token with selected accounts and gl\_account\_id per account. * score: 2 ### component PlaidApiUsageDashboard * file: src/cores/fa/pages/PlaidApiUsageDashboard.tsx:47 * kind: component * core: fa * spec: (none) * summary: Plaid API Usage Dashboard page component. * score: 2 ### component PlaidCategoryMappingFormDialog * file: src/cores/fa/components/PlaidCategoryMappingFormDialog.tsx:63 * kind: component * core: fa * spec: (none) * summary: Utility for plaid category mapping form dialog. * score: 1 ### component PlaidCategoryMappingsTab * file: src/cores/fa/components/PlaidCategoryMappingsTab.tsx:32 * kind: component * core: fa * spec: (none) * summary: Utility for plaid category mappings tab. * score: 1 ### component POAmendmentDialog * file: src/cores/fa/components/POAmendmentDialog.tsx:34 * kind: component * core: fa * spec: (none) * summary: Utility for poamendment dialog. * score: 1 ### component POAmendmentHistory * file: src/cores/fa/components/POAmendmentHistory.tsx:17 * kind: component * core: fa * spec: (none) * summary: Utility for poamendment history. * score: 1 ### component POForm * file: src/cores/fa/components/POForm.tsx:50 * kind: component * core: fa * spec: (none) * summary: Utility for poform. * score: 1 ### component POLineEditor * file: src/cores/fa/components/POLineEditor.tsx:49 * kind: component * core: fa * spec: (none) * summary: Utility for poline editor. * score: 1 ### component POLinkSelector * file: src/cores/fa/components/POLinkSelector.tsx:35 * kind: component * core: fa * spec: (none) * summary: Utility for polink selector. * score: 1 ### component POReceiptHistory * file: src/cores/fa/components/POReceiptHistory.tsx:17 * kind: component * core: fa * spec: (none) * summary: Utility for poreceipt history. * score: 1 ### component POsTable * file: src/cores/fa/components/POsTable.tsx:37 * kind: component * core: fa * spec: (none) * summary: Utility for pos table. * score: 1 ### component POStatusBadge * file: src/cores/fa/components/POStatusBadge.tsx:24 * kind: component * core: fa * spec: (none) * summary: Utility for postatus badge. * score: 1 ### component PostReimbursementToGLDialog * file: src/cores/fa/components/PostReimbursementToGLDialog.tsx:32 * kind: component * core: fa * spec: (none) * summary: Utility for post reimbursement to gldialog. * score: 1 ### component PostToGLDialog * file: src/cores/fa/components/PostToGLDialog.tsx:32 * kind: component * core: fa * spec: (none) * summary: Utility for post to gldialog. * score: 1 ### component ProcessRecognitionDialog * file: src/cores/fa/components/ProcessRecognitionDialog.tsx:32 * kind: component * core: fa * spec: (none) * summary: Dialog to trigger revenue recognition processing for a selected period. * score: 2 ### component ProgramDialog * file: src/cores/fa/components/ProgramDialog.tsx:36 * kind: component * core: fa * spec: (none) * summary: Utility for program dialog. * score: 1 ### component ProgramsPage * file: src/cores/fa/pages/ProgramsPage.tsx:13 * kind: component * core: fa * spec: (none) * summary: Utility for programs page. * score: 1 ### component ProgramsTable * file: src/cores/fa/components/ProgramsTable.tsx:25 * kind: component * core: fa * spec: (none) * summary: Utility for programs table. * score: 1 ### component ProjectBudgetLineForm * file: src/cores/fa/components/projects/ProjectBudgetLineForm.tsx:44 * kind: component * core: fa * spec: (none) * summary: Utility for project budget line form. * score: 1 ### component ProjectBudgetTab * file: src/cores/fa/components/projects/ProjectBudgetTab.tsx:47 * kind: component * core: fa * spec: (none) * summary: Utility for project budget tab. * score: 1 ### component ProjectCreatePage * file: src/cores/fa/pages/ProjectCreatePage.tsx:23 * kind: component * core: fa * spec: (none) * summary: Utility for project create page. * score: 1 ### component ProjectDetailPage * file: src/cores/fa/pages/ProjectDetailPage.tsx:39 * kind: component * core: fa * spec: (none) * summary: Utility for project detail page. * score: 1 ### component ProjectDrawdownsTab * file: src/cores/fa/components/projects/ProjectDrawdownsTab.tsx:69 * kind: component * core: fa * spec: (none) * summary: Utility for project drawdowns tab. * score: 1 ### component ProjectEditPage * file: src/cores/fa/pages/ProjectEditPage.tsx:23 * kind: component * core: fa * spec: (none) * summary: Utility for project edit page. * score: 1 ### component ProjectExpenseForm * file: src/cores/fa/components/projects/ProjectExpenseForm.tsx:38 * kind: component * core: fa * spec: (none) * summary: Utility for project expense form. * score: 1 ### component ProjectExpensesTab * file: src/cores/fa/components/projects/ProjectExpensesTab.tsx:53 * kind: component * core: fa * spec: (none) * summary: Utility for project expenses tab. * score: 1 ### component ProjectForm * file: src/cores/fa/components/projects/ProjectForm.tsx:93 * kind: component * core: fa * spec: (none) * summary: Utility for project form. * score: 1 ### component ProjectRevenueForm * file: src/cores/fa/components/projects/ProjectRevenueForm.tsx:38 * kind: component * core: fa * spec: (none) * summary: Utility for project revenue form. * score: 1 ### component ProjectRevenueTab * file: src/cores/fa/components/projects/ProjectRevenueTab.tsx:52 * kind: component * core: fa * spec: (none) * summary: Utility for project revenue tab. * score: 1 ### component ProjectsPage * file: src/cores/fa/pages/ProjectsPage.tsx:48 * kind: component * core: fa * spec: (none) * summary: Utility for projects page. * score: 1 ### component ProjectsTable * file: src/cores/fa/components/projects/ProjectsTable.tsx:26 * kind: component * core: fa * spec: (none) * summary: Utility for projects table. * score: 1 ### component ProjectStatusBadge * file: src/cores/fa/components/projects/ProjectStatusBadge.tsx:27 * kind: component * core: fa * spec: (none) * summary: Utility for project status badge. * score: 1 ### component ProjectSummaryCard * file: src/cores/fa/components/projects/ProjectSummaryCard.tsx:21 * kind: component * core: fa * spec: (none) * summary: Utility for project summary card. * score: 1 ### component ProjectTypeBadge * file: src/cores/fa/components/projects/ProjectTypeBadge.tsx:67 * kind: component * core: fa * spec: (none) * summary: Utility for project type badge. * score: 1 ### component ProjectUtilizationBar * file: src/cores/fa/components/projects/ProjectUtilizationBar.tsx:20 * kind: component * core: fa * spec: (none) * summary: Utility for project utilization bar. * score: 1 ### component PurchaseOrderCreatePage * file: src/cores/fa/pages/PurchaseOrderCreatePage.tsx:26 * kind: component * core: fa * spec: (none) * summary: Utility for purchase order create page. * score: 1 ### component PurchaseOrderDetailPage * file: src/cores/fa/pages/PurchaseOrderDetailPage.tsx:41 * kind: component * core: fa * spec: (none) * summary: Utility for purchase order detail page. * score: 1 ### component PurchaseOrdersPage * file: src/cores/fa/pages/PurchaseOrdersPage.tsx:31 * kind: component * core: fa * spec: (none) * summary: Utility for purchase orders page. * score: 1 ### component RampConnectionCard * file: src/cores/fa/components/RampConnectionCard.tsx:51 * kind: component * core: fa * spec: (none) * summary: Utility for ramp connection card. * score: 1 ### component ReceiptCreatePage * file: src/cores/fa/pages/ReceiptCreatePage.tsx:24 * kind: component * core: fa * spec: (none) * summary: Utility for receipt create page. * score: 1 ### component ReceiptDetailPage * file: src/cores/fa/pages/ReceiptDetailPage.tsx:15 * kind: component * core: fa * spec: (none) * summary: Utility for receipt detail page. * score: 1 ### component ReceiptForm * file: src/cores/fa/components/ReceiptForm.tsx:47 * kind: component * core: fa * spec: (none) * summary: Utility for receipt form. * score: 1 ### component ReceiptLineEditor * file: src/cores/fa/components/ReceiptLineEditor.tsx:32 * kind: component * core: fa * spec: (none) * summary: Utility for receipt line editor. * score: 1 ### component ReceiptsPage * file: src/cores/fa/pages/ReceiptsPage.tsx:23 * kind: component * core: fa * spec: (none) * summary: Utility for receipts page. * score: 1 ### component ReceiptsTable * file: src/cores/fa/components/ReceiptsTable.tsx:38 * kind: component * core: fa * spec: (none) * summary: Utility for receipts table. * score: 1 ### component ReceiptStatusBadge * file: src/cores/fa/components/ReceiptStatusBadge.tsx:15 * kind: component * core: fa * spec: (none) * summary: Utility for receipt status badge. * score: 1 ### component ReceiptThumbnail * file: src/cores/fa/components/ReceiptThumbnail.tsx:20 * kind: component * core: fa * spec: (none) * summary: Utility for receipt thumbnail. * score: 1 ### component ReceiptUpload * file: src/cores/fa/components/ReceiptUpload.tsx:34 * kind: component * core: fa * spec: (none) * summary: Utility for receipt upload. * score: 1 ### component ReceiptViewer * file: src/cores/fa/components/ReceiptViewer.tsx:29 * kind: component * core: fa * spec: (none) * summary: Receipt Viewer ComponentDisplays a receipt image or PDF in a dialog with download and external open options. * params: * props — Component props - : Whether the dialog is open - : Callback when dialog open state changes - : The URL of the receipt to display - : The name of the receipt file * returns: JSX.Element - A dialog displaying the receipt * score: 2 ### component ReceivablesHubPage * file: src/cores/fa/pages/ReceivablesHubPage.tsx:51 * kind: component * core: fa * spec: (none) * summary: Utility for receivables hub page. * score: 1 ### component RecognitionByPeriodReportPage * file: src/cores/fa/pages/RecognitionByPeriodReportPage.tsx:25 * kind: component * core: fa * spec: (none) * summary: Recognition by Period report page. * score: 1 ### component ReconciliationAdjustmentsTable * file: src/cores/fa/components/ReconciliationAdjustmentsTable.tsx:18 * kind: component * core: fa * spec: (none) * summary: Utility for reconciliation adjustments table. * score: 1 ### component ReconciliationDashboard * file: src/cores/fa/components/ReconciliationDashboard.tsx:16 * kind: component * core: fa * spec: (none) * summary: Utility for reconciliation dashboard. * score: 1 ### component ReconciliationDetailPage * file: src/cores/fa/pages/ReconciliationDetailPage.tsx:30 * kind: component * core: fa * spec: (none) * summary: Bank reconciliation detail page: summary/unmatched/matched/adjustments/reportstabs plus an AI assistant panel (narrative + summary memo) and exports. * score: 2 ### component ReconciliationReportPage * file: src/cores/fa/pages/ReconciliationReportPage.tsx:17 * kind: component * core: fa * spec: (none) * summary: Utility for reconciliation report page. * score: 1 ### component ReconciliationReportsTab * file: src/cores/fa/components/reconciliation/ReconciliationReportsTab.tsx:12 * kind: component * core: fa * spec: (none) * summary: Utility for reconciliation reports tab. * score: 1 ### component ReconciliationsPage * file: src/cores/fa/pages/ReconciliationsPage.tsx:22 * kind: component * core: fa * spec: (none) * summary: Utility for reconciliations page. * score: 1 ### component ReconciliationStatusBadge * file: src/cores/fa/components/ReconciliationStatusBadge.tsx:19 * kind: component * core: fa * spec: (none) * summary: Utility for reconciliation status badge. * score: 1 ### component ReconciliationSummaryCard * file: src/cores/fa/components/ReconciliationSummaryCard.tsx:14 * kind: component * core: fa * spec: (none) * summary: Utility for reconciliation summary card. * score: 1 ### component ReconciliationVarianceTrend * file: src/cores/fa/components/reconciliation/ReconciliationVarianceTrend.tsx:67 * kind: component * core: fa * spec: (none) * summary: Utility for reconciliation variance trend. * score: 1 ### component RecurringEntriesPage * file: src/cores/fa/pages/RecurringEntriesPage.tsx:33 * kind: component * core: fa * spec: (none) * summary: Utility for recurring entries page. * score: 1 ### component RecurringEntryDialog * file: src/cores/fa/components/RecurringEntryDialog.tsx:40 * kind: component * core: fa * spec: (none) * summary: Utility for recurring entry dialog. * score: 1 ### component RecurringInvoiceCreatePage * file: src/cores/fa/pages/RecurringInvoiceCreatePage.tsx:20 * kind: component * core: fa * spec: (none) * summary: Default export consumed by the lazy route loader. Renders the wizardin mode. * score: 2 ### component RecurringInvoiceDetailPage * file: src/cores/fa/pages/RecurringInvoiceDetailPage.tsx:57 * kind: component * core: fa * spec: (none) * summary: Page component that displays full details and generation history for a recurring invoice template. * score: 2 ### component RecurringInvoiceEditPage * file: src/cores/fa/pages/RecurringInvoiceEditPage.tsx:19 * kind: component * core: fa * spec: (none) * summary: Default export consumed by the lazy route loader. Renders the wizardin mode and lets the wizard read via . * score: 2 ### component RecurringInvoiceForm * file: src/cores/fa/components/RecurringInvoiceForm.tsx:52 * kind: component * core: fa * spec: (none) * summary: Utility for recurring invoice form. * score: 1 ### component RecurringInvoiceLineEditor * file: src/cores/fa/components/RecurringInvoiceLineEditor.tsx:43 * kind: component * core: fa * spec: (none) * summary: Utility for recurring invoice line editor. * score: 1 ### component RecurringInvoiceSetupWizardPage * file: src/cores/fa/wizards/recurring-invoice-setup/RecurringInvoiceSetupWizardPage.tsx:224 * kind: component * core: fa * spec: (none) * summary: Default-exported route page. Renders the wizard inside its provider onceorganization context is available; shows an otherwise so wenever tear down the context mid-render. * score: 2 ### component RecurringInvoicesPage * file: src/cores/fa/pages/RecurringInvoicesPage.tsx:28 * kind: component * core: fa * spec: (none) * summary: Utility for recurring invoices page. * score: 1 ### component RecurringInvoicesTable * file: src/cores/fa/components/RecurringInvoicesTable.tsx:51 * kind: component * core: fa * spec: (none) * summary: Utility for recurring invoices table. * score: 1 ### component RecurringInvoiceWizardProvider * file: src/cores/fa/wizards/recurring-invoice-setup/RecurringInvoiceWizardProvider.tsx:37 * kind: component * core: fa * spec: (none) * summary: Provider for the FA-UX-12 wizard. Wrap the host with thisso that step components can read and update the shared draft. * score: 2 ### component RecurringTemplateFormDialog * file: src/cores/fa/components/RecurringTemplateFormDialog.tsx:65 * kind: component * core: fa * spec: (none) * summary: Utility for recurring template form dialog. * score: 1 ### component RecurringTransactionTemplatesTab * file: src/cores/fa/components/RecurringTransactionTemplatesTab.tsx:20 * kind: component * core: fa * spec: (none) * summary: Utility for recurring transaction templates tab. * score: 1 ### component ReimbursementPaymentDetailPage * file: src/cores/fa/pages/ReimbursementPaymentDetailPage.tsx:47 * kind: component * core: fa * spec: (none) * summary: Utility for reimbursement payment detail page. * score: 1 ### component ReimbursementPaymentsPage * file: src/cores/fa/pages/ReimbursementPaymentsPage.tsx:53 * kind: component * core: fa * spec: (none) * summary: Utility for reimbursement payments page. * score: 1 ### component Report1099Page * file: src/cores/fa/pages/Report1099Page.tsx:18 * kind: component * core: fa * spec: (none) * summary: Utility for report1099 page. * score: 1 ### component ReportAnnotationButton * file: src/cores/fa/components/ReportAnnotation.tsx:39 * kind: component * core: fa * spec: (none) * summary: Utility for report annotation button. * score: 1 ### component ReportBasisToggle * file: src/cores/fa/components/ReportBasisToggle.tsx:31 * kind: component * core: fa * spec: (none) * summary: Utility for report basis toggle. * score: 1 ### component ReportExportButtons * file: src/cores/fa/components/ReportExportButtons.tsx:18 * kind: component * core: fa * spec: (none) * summary: Utility for report export buttons. * score: 1 ### component ReportFilters * file: src/cores/fa/components/ReportFilters.tsx:18 * kind: component * core: fa * spec: (none) * summary: Utility for report filters. * score: 1 ### component ReportHeader * file: src/cores/fa/components/ReportHeader.tsx:14 * kind: component * core: fa * spec: (none) * summary: Utility for report header. * score: 1 ### component ReportNarrativeCard * file: src/cores/fa/components/reports/ReportNarrativeCard.tsx:28 * kind: component * core: fa * spec: (none) * summary: FA Lane Q: a reusable card that generates an AI executive-summary narrative fora financial report via the edge function. Rendersnothing unless FA AI is enabled for the org (useAIModuleEnabled('fa')). Thenarrative is a draft for human review — always verify before sharing. * score: 2 ### component ReportRecipientsEditor * file: src/cores/fa/components/ReportRecipientsEditor.tsx:17 * kind: component * core: fa * spec: (none) * summary: Utility for report recipients editor. * score: 1 ### component ReportRefreshButton * file: src/cores/fa/components/ReportRefreshButton.tsx:23 * kind: component * core: fa * spec: (none) * summary: Utility for report refresh button. * score: 1 ### component ReportRunDetailDialog * file: src/cores/fa/components/ReportRunDetailDialog.tsx:29 * kind: component * core: fa * spec: (none) * summary: Utility for report run detail dialog. * score: 1 ### component ReportRunsPage * file: src/cores/fa/pages/ReportRunsPage.tsx:13 * kind: component * core: fa * spec: (none) * summary: Utility for report runs page. * score: 1 ### component ReportRunsTable * file: src/cores/fa/components/ReportRunsTable.tsx:36 * kind: component * core: fa * spec: (none) * summary: Utility for report runs table. * score: 1 ### component ReportScheduleCard * file: src/cores/fa/components/ReportScheduleCard.tsx:38 * kind: component * core: fa * spec: (none) * summary: Utility for report schedule card. * score: 1 ### component ReportScheduleDialog * file: src/cores/fa/components/ReportScheduleDialog.tsx:39 * kind: component * core: fa * spec: (none) * summary: Utility for report schedule dialog. * score: 1 ### component ReportScheduleForm * file: src/cores/fa/components/ReportScheduleForm.tsx:48 * kind: component * core: fa * spec: (none) * summary: Utility for report schedule form. * score: 1 ### component ReportSchedulesPage * file: src/cores/fa/pages/ReportSchedulesPage.tsx:20 * kind: component * core: fa * spec: (none) * summary: Utility for report schedules page. * score: 1 ### component ReportsPage * file: src/cores/fa/pages/ReportsPage.tsx:102 * kind: component * core: fa * spec: (none) * summary: Utility for reports page. * score: 1 ### component ReportTooltip * file: src/cores/fa/components/BalanceTermsTooltips.tsx:141 * kind: component * core: fa * spec: (none) * summary: Displays contextual help for report-specific balance terms. * score: 2 ### component ReportVersionHistorySheet * file: src/cores/fa/components/ReportVersionHistorySheet.tsx:25 * kind: component * core: fa * spec: (none) * summary: Utility for report version history sheet. * score: 1 ### component RevenueContractDialog * file: src/cores/fa/components/RevenueContractDialog.tsx:23 * kind: component * core: fa * spec: (none) * summary: Dialog wrapper for the revenue contract form. * score: 2 ### component RevenueContractForm * file: src/cores/fa/components/RevenueContractForm.tsx:28 * kind: component * core: fa * spec: (none) * summary: Revenue contract create/edit form. * score: 2 ### component RevenueContractsPage * file: src/cores/fa/pages/RevenueContractsPage.tsx:26 * kind: component * core: fa * spec: (none) * summary: Revenue contracts list page. * score: 1 ### component RevenueMilestonesDialog * file: src/cores/fa/components/RevenueMilestonesDialog.tsx:42 * kind: component * core: fa * spec: (none) * summary: Dialog to manage milestones for a single schedule. * score: 2 ### component RevenueRecognitionsPage * file: src/cores/fa/pages/RevenueRecognitionsPage.tsx:28 * kind: component * core: fa * spec: (none) * summary: Revenue recognitions list page. * score: 2 ### component RevenueReportsHubPage * file: src/cores/fa/pages/RevenueReportsHubPage.tsx:51 * kind: component * core: fa * spec: (none) * summary: Revenue Reports hub page. * score: 1 ### component RevenueScheduleDialog * file: src/cores/fa/components/RevenueScheduleDialog.tsx:24 * kind: component * core: fa * spec: (none) * summary: Dialog wrapper for the revenue schedule form. * score: 2 ### component RevenueScheduleForm * file: src/cores/fa/components/RevenueScheduleForm.tsx:33 * kind: component * core: fa * spec: (none) * summary: Revenue schedule create/edit form. * score: 2 ### component RevenueSchedulesPage * file: src/cores/fa/pages/RevenueSchedulesPage.tsx:30 * kind: component * core: fa * spec: (none) * summary: Revenue schedules list page. * score: 1 ### component RevenueScheduleWizardDialog * file: src/cores/fa/wizards/revenue-schedule-creation/RevenueScheduleWizardDialog.tsx:46 * kind: component * core: fa * spec: (none) * summary: FA-UX-15: Guided 4-step dialog for creating a revenue schedule( insert + period allocation preview).Source defaults are auto-applied when the user picks a contract or invoice(schedule name + total + dates), but remain user-editable. * score: 2 ### component RevenueScheduleWizardProvider * file: src/cores/fa/wizards/revenue-schedule-creation/RevenueScheduleWizardProvider.tsx:7 * kind: component * core: fa * spec: (none) * summary: Provider for FA-UX-15 revenue schedule creation wizard state. * score: 2 ### component RevenueTrendChart * file: src/cores/fa/components/analytics/RevenueTrendChart.tsx:30 * kind: component * core: fa * spec: (none) * summary: Utility for revenue trend chart. * score: 1 ### component ReverseRecognitionDialog * file: src/cores/fa/components/ReverseRecognitionDialog.tsx:40 * kind: component * core: fa * spec: (none) * summary: Dialog to reverse a posted recognition. * score: 2 ### component ReviewFinalizeStep * file: src/cores/fa/wizards/statement-template/steps/ReviewFinalizeStep.tsx:26 * kind: component * core: fa * spec: (none) * summary: Renders the read-only review and validation summary before template submission. * score: 2 ### component ReviewMatchesStep * file: src/cores/fa/wizards/bank-reconciliation/steps/ReviewMatchesStep.tsx:36 * kind: component * core: fa * spec: (none) * summary: Utility for review matches step. * score: 1 ### component ReviewSubmitStep * file: src/cores/fa/wizards/budget-creation/steps/ReviewSubmitStep.tsx:30 * kind: component * core: fa * spec: (none) * summary: Review & Submit StepRead-only summary of budget header and totals with approval submission option. * score: 2 ### component ReviewTasksStep * file: src/cores/fa/wizards/financial-close-setup/steps/ReviewTasksStep.tsx:34 * kind: component * core: fa * spec: (none) * summary: Utility for review tasks step. * score: 1 ### component RollingForecastDetailPage * file: src/cores/fa/pages/RollingForecastDetailPage.tsx:29 * kind: component * core: fa * spec: (none) * summary: Utility for rolling forecast detail page. * score: 1 ### component RollingForecastEditPage * file: src/cores/fa/pages/RollingForecastEditPage.tsx:27 * kind: component * core: fa * spec: (none) * summary: Utility for rolling forecast edit page. * score: 1 ### component RollingForecastForm * file: src/cores/fa/components/RollingForecastForm.tsx:100 * kind: component * core: fa * spec: (none) * summary: Utility for rolling forecast form. * score: 1 ### component RollingForecastNewPage * file: src/cores/fa/pages/RollingForecastNewPage.tsx:17 * kind: component * core: fa * spec: (none) * summary: Utility for rolling forecast new page. * score: 1 ### component RollingForecastsPage * file: src/cores/fa/pages/RollingForecastsPage.tsx:25 * kind: component * core: fa * spec: (none) * summary: Utility for rolling forecasts page. * score: 1 ### component RollingForecastsTable * file: src/cores/fa/components/RollingForecastsTable.tsx:38 * kind: component * core: fa * spec: (none) * summary: Utility for rolling forecasts table. * score: 1 ### component RuleConditionsStep * file: src/cores/fa/wizards/expense-policy-rule/steps/RuleConditionsStep.tsx:186 * kind: component * core: fa * spec: (none) * summary: PF-41 “Conditions & priority” step; uses wizard context when available. * returns: Conditions fields from context, or guidance text when rendered standalone. * score: 2 ### component RuleConditionsStepFields * file: src/cores/fa/wizards/expense-policy-rule/steps/RuleConditionsStep.tsx:61 * kind: component * core: fa * spec: (none) * summary: Step 2 fields: scope (all / department / employee), selectors, evaluation priority. * params: * organizationId — Tenant used for department and employee picklists. * draft — Current wizard draft. * setDraft — React state setter for the draft. * errors — Field-level errors from step-1 validation (). * returns: Rendered condition and priority controls. * score: 2 ### component RuleConfirmStep * file: src/cores/fa/wizards/expense-policy-rule/steps/RuleConfirmStep.tsx:89 * kind: component * core: fa * spec: (none) * summary: PF-41 “Review & confirm” step; uses wizard context when available. * returns: Confirm fields from context, or guidance text when rendered standalone. * score: 2 ### component RuleConfirmStepFields * file: src/cores/fa/wizards/expense-policy-rule/steps/RuleConfirmStep.tsx:27 * kind: component * core: fa * spec: (none) * summary: Review & confirm UI: summary of draft fields plus active toggle. * params: * draft — Current wizard draft to display. * setDraft — Updates draft (e.g. from the switch). * returns: Rendered review card and active toggle. * score: 2 ### component RuleDefineStep * file: src/cores/fa/wizards/expense-policy-rule/steps/RuleDefineStep.tsx:158 * kind: component * core: fa * spec: (none) * summary: PF-41-backed “Rule definition” step; reads wizard context when rendered inside the dialog shell. * returns: Step content or a short fallback message when used outside . * score: 2 ### component RuleDefineStepFields * file: src/cores/fa/wizards/expense-policy-rule/steps/RuleDefineStep.tsx:28 * kind: component * core: fa * spec: (none) * summary: Step 1 fields: rule name, type, type-specific amounts, optional category scope. * params: * draft — Current wizard draft. * setDraft — React state setter for the draft. * errors — Field-level errors from step-0 validation (). * returns: Rendered form controls for the “Rule definition” wizard step. * score: 2 ### component RuleTestPreview * file: src/cores/fa/components/RuleTestPreview\.tsx:70 * kind: component * core: fa * spec: (none) * summary: Utility for rule test preview. * score: 1 ### component RunDepreciationDialog * file: src/cores/fa/components/RunDepreciationDialog.tsx:45 * kind: component * core: fa * spec: (none) * summary: Utility for run depreciation dialog. * score: 1 ### component SaveCoATemplateDialog * file: src/cores/fa/components/SaveCoATemplateDialog.tsx:24 * kind: component * core: fa * spec: (none) * summary: Dialog for capturing the current CoA into a new fa\_coa\_templates row. * score: 2 ### component SaveReportDialog * file: src/cores/fa/components/SaveReportDialog.tsx:25 * kind: component * core: fa * spec: (none) * summary: Utility for save report dialog. * score: 1 ### component ScanBillDialog * file: src/cores/fa/components/ScanBillDialog.tsx:31 * kind: component * core: fa * spec: (none) * summary: FA Lane Q (#1629): "Scan bill with AI" affordance for the bill-create surface.Renders nothing unless FA AI is enabled for the org (useAIModuleEnabled('fa')).The user uploads a vendor invoice; the hook OCRsit through the shared edge function into afield-constrained shape. The result is handed back to the form for humanreview/edit before save — this dialog never persists anything itself. * score: 2 ### component ScenarioBudgetLineEditor * file: src/cores/fa/components/ScenarioBudgetLineEditor.tsx:69 * kind: component * core: fa * spec: (none) * summary: Utility for scenario budget line editor. * score: 1 ### component ScenarioComparisonView * file: src/cores/fa/components/ScenarioComparisonView\.tsx:28 * kind: component * core: fa * spec: (none) * summary: Utility for scenario comparison view. * score: 1 ### component ScenarioCopyFromBudgetDialog * file: src/cores/fa/components/ScenarioCopyFromBudgetDialog.tsx:29 * kind: component * core: fa * spec: (none) * summary: Utility for scenario copy from budget dialog. * score: 1 ### component ScenarioStatusBadge * file: src/cores/fa/components/ScenarioStatusBadge.tsx:21 * kind: component * core: fa * spec: (none) * summary: Utility for scenario status badge. * score: 1 ### component ScenarioTypeBadge * file: src/cores/fa/components/ScenarioTypeBadge.tsx:25 * kind: component * core: fa * spec: (none) * summary: Utility for scenario type badge. * score: 1 ### component SectionsStep * file: src/cores/fa/wizards/statement-template/steps/SectionsStep.tsx:26 * kind: component * core: fa * spec: (none) * summary: Renders the section/group definition step for FA statement templates. * score: 2 ### component SelectAccountStep * file: src/cores/fa/wizards/bank-reconciliation/steps/SelectAccountStep.tsx:24 * kind: component * core: fa * spec: (none) * summary: Utility for select account step. * score: 1 ### component SelectTemplateStep * file: src/cores/fa/wizards/financial-close-setup/steps/SelectTemplateStep.tsx:23 * kind: component * core: fa * spec: (none) * summary: Utility for select template step. * score: 1 ### component SendCollectionNoticeDialog * file: src/cores/fa/components/SendCollectionNoticeDialog.tsx:39 * kind: component * core: fa * spec: (none) * summary: Utility for send collection notice dialog. * score: 1 ### component SourceStep * file: src/cores/fa/wizards/revenue-schedule-creation/steps/SourceStep.tsx:158 * kind: component * core: fa * spec: (none) * summary: PF-41 wrapper used when the step is rendered standalone via. Pulls + draft from context. * score: 2 ### component SourceStepFields * file: src/cores/fa/wizards/revenue-schedule-creation/steps/SourceStep.tsx:27 * kind: component * core: fa * spec: (none) * summary: Step 1 — Source selection.Pick one revenue contract OR one invoice. Selection auto-populates thedefault name + amount + dates in step 2 (handled by the dialog host). * score: 2 ### component StatementImportDialog * file: src/cores/fa/components/StatementImportDialog.tsx:44 * kind: component * core: fa * spec: (none) * summary: Utility for statement import dialog. * score: 1 ### component StatementLinesPreview * file: src/cores/fa/components/StatementLinesPreview\.tsx:24 * kind: component * core: fa * spec: (none) * summary: Utility for statement lines preview. * score: 1 ### component StatementOfActivitiesPage * file: src/cores/fa/pages/StatementOfActivitiesPage.tsx:22 * kind: component * core: fa * spec: (none) * summary: Utility for statement of activities page. * score: 1 ### component StatementOfActivitiesReport * file: src/cores/fa/components/StatementOfActivitiesReport.tsx:52 * kind: component * core: fa * spec: (none) * summary: Utility for statement of activities report. * score: 1 ### component StatementTemplateWizardPage * file: src/cores/fa/wizards/statement-template/StatementTemplateWizardPage.tsx:259 * kind: component * core: fa * spec: (none) * summary: Default-exported route page. Hydrates the draft synchronously on mountso unsaved work survives a refresh. * score: 2 ### component StatementTemplateWizardProvider * file: src/cores/fa/wizards/statement-template/StatementTemplateWizardProvider.tsx:40 * kind: component * core: fa * spec: (none) * summary: Provider for FA-UX-13. Wrap the host so step componentscan read and update the shared draft. * score: 2 ### component StatementTypeStep * file: src/cores/fa/wizards/statement-template/steps/StatementTypeStep.tsx:36 * kind: component * core: fa * spec: (none) * summary: Captures the statement type and display name for a new or edited template. * score: 2 ### component TaxComplianceDashboard * file: src/cores/fa/pages/TaxComplianceDashboard.tsx:19 * kind: component * core: fa * spec: (none) * summary: Utility for tax compliance dashboard. * score: 1 ### component TaxDistributionPage * file: src/cores/fa/pages/TaxDistributionPage.tsx:17 * kind: component * core: fa * spec: (none) * summary: Utility for tax distribution page. * score: 1 ### component TaxReportDetailPage * file: src/cores/fa/pages/TaxReportDetailPage.tsx:17 * kind: component * core: fa * spec: (none) * summary: Utility for tax report detail page. * score: 1 ### component TaxReportsPage * file: src/cores/fa/pages/TaxReportsPage.tsx:17 * kind: component * core: fa * spec: (none) * summary: Utility for tax reports page. * score: 1 ### component TaxYearDetailPage * file: src/cores/fa/pages/TaxYearDetailPage.tsx:18 * kind: component * core: fa * spec: (none) * summary: Utility for tax year detail page. * score: 1 ### component TaxYearsPage * file: src/cores/fa/pages/TaxYearsPage.tsx:17 * kind: component * core: fa * spec: (none) * summary: Utility for tax years page. * score: 1 ### component TemplateCard * file: src/cores/fa/components/TemplateCard.tsx:25 * kind: component * core: fa * spec: (none) * summary: Utility for template card. * score: 1 ### component TemplateExportDialog * file: src/cores/fa/components/TemplateExportDialog.tsx:25 * kind: component * core: fa * spec: (none) * summary: Utility for template export dialog. * score: 1 ### component TemplateImportDialog * file: src/cores/fa/components/TemplateImportDialog.tsx:31 * kind: component * core: fa * spec: (none) * summary: Utility for template import dialog. * score: 1 ### component TemplateLibraryPage * file: src/cores/fa/pages/TemplateLibraryPage.tsx:26 * kind: component * core: fa * spec: (none) * summary: Utility for template library page. * score: 1 ### component TemplatePreviewDialog * file: src/cores/fa/components/TemplatePreviewDialog.tsx:35 * kind: component * core: fa * spec: (none) * summary: Utility for template preview dialog. * score: 1 ### component TemplateSharingBadge * file: src/cores/fa/components/TemplateSharingBadge.tsx:36 * kind: component * core: fa * spec: (none) * summary: Utility for template sharing badge. * score: 1 ### component TestTransferUIPage * file: src/cores/fa/pages/TestTransferUIPage.tsx:17 * kind: component * core: fa * spec: (none) * summary: Utility for test transfer uipage. * score: 1 ### component ThreeWayMatchIndicator * file: src/cores/fa/components/ThreeWayMatchIndicator.tsx:15 * kind: component * core: fa * spec: (none) * summary: Utility for three way match indicator. * score: 1 ### component ThreeWayMatchSummary * file: src/cores/fa/components/ThreeWayMatchSummary.tsx:20 * kind: component * core: fa * spec: (none) * summary: Utility for three way match summary. * score: 1 ### component TransactionCategoryChart * file: src/cores/fa/components/TransactionCategoryChart.tsx:35 * kind: component * core: fa * spec: (none) * summary: Utility for transaction category chart. * score: 1 ### component TransactionFilters * file: src/cores/fa/components/TransactionFilters.tsx:66 * kind: component * core: fa * spec: (none) * summary: Utility for transaction filters. * score: 1 ### component TransactionRuleForm * file: src/cores/fa/components/TransactionRuleForm.tsx:58 * kind: component * core: fa * spec: (none) * summary: Utility for transaction rule form. * score: 1 ### component TransactionRulesList * file: src/cores/fa/components/TransactionRulesList.tsx:142 * kind: component * core: fa * spec: (none) * summary: Utility for transaction rules list. * score: 1 ### component TransactionRulesPage * file: src/cores/fa/pages/TransactionRulesPage.tsx:28 * kind: component * core: fa * spec: (none) * summary: Utility for transaction rules page. * score: 1 ### component TransactionRulesTab * file: src/cores/fa/components/TransactionRulesTab.tsx:24 * kind: component * core: fa * spec: (none) * summary: Utility for transaction rules tab. * score: 1 ### component TrendAnalysisPage * file: src/cores/fa/pages/TrendAnalysisPage.tsx:17 * kind: component * core: fa * spec: (none) * summary: Utility for trend analysis page. * score: 1 ### component TrialBalanceReport * file: src/cores/fa/components/TrialBalanceReport.tsx:30 * kind: component * core: fa * spec: (none) * summary: Utility for trial balance report. * score: 1 ### component TrialBalanceTable * file: src/cores/fa/components/TrialBalanceTable.tsx:58 * kind: component * core: fa * spec: (none) * summary: Utility for trial balance table. * score: 1 ### component UnmatchedBankLinesTable * file: src/cores/fa/components/UnmatchedBankLinesTable.tsx:22 * kind: component * core: fa * spec: (none) * summary: Selectable table of unmatched bank statement lines with AI categorizationsuggestions (accept/reject) and anomaly badges per line. * score: 2 ### component UnmatchedGLLinesTable * file: src/cores/fa/components/UnmatchedGLLinesTable.tsx:16 * kind: component * core: fa * spec: (none) * summary: Utility for unmatched gllines table. * score: 1 ### component UnmatchedTransactionsTab * file: src/cores/fa/components/reconciliation/UnmatchedTransactionsTab.tsx:36 * kind: component * core: fa * spec: (none) * summary: Utility for unmatched transactions tab. * score: 1 ### component UnpostedEntriesReportPage * file: src/cores/fa/pages/UnpostedEntriesReportPage.tsx:158 * kind: component * core: fa * spec: (none) * summary: Utility for unposted entries report page. * score: 1 ### component UserAssignmentSelector * file: src/cores/fa/components/UserAssignmentSelector.tsx:27 * kind: component * core: fa * spec: (none) * summary: Utility for user assignment selector. * score: 1 ### component UtilizationBadge * file: src/cores/fa/components/UtilizationBadge.tsx:16 * kind: component * core: fa * spec: (none) * summary: Utility for utilization badge. * score: 1 ### component VarianceAnalysisPage * file: src/cores/fa/pages/VarianceAnalysisPage.tsx:25 * kind: component * core: fa * spec: (none) * summary: Utility for variance analysis page. * score: 1 ### component VarianceChart * file: src/cores/fa/components/analytics/VarianceChart.tsx:37 * kind: component * core: fa * spec: (none) * summary: Utility for variance chart. * score: 1 ### component VarianceChart * file: src/cores/fa/components/VarianceChart.tsx:20 * kind: component * core: fa * spec: (none) * summary: Utility for variance chart. * score: 1 ### component VendorDetailPage * file: src/cores/fa/pages/VendorDetailPage.tsx:29 * kind: component * core: fa * spec: (none) * summary: Utility for vendor detail page. * score: 1 ### component VendorDialog * file: src/cores/fa/components/VendorDialog.tsx:20 * kind: component * core: fa * spec: (none) * summary: Utility for vendor dialog. * score: 1 ### component VendorForm * file: src/cores/fa/components/VendorForm.tsx:25 * kind: component * core: fa * spec: (none) * summary: Utility for vendor form. * score: 1 ### component VendorsPage * file: src/cores/fa/pages/VendorsPage.tsx:51 * kind: component * core: fa * spec: (none) * summary: Utility for vendors page. * score: 1 ### component VendorsTable * file: src/cores/fa/components/VendorsTable.tsx:29 * kind: component * core: fa * spec: (none) * summary: Utility for vendors table. * score: 1 ### component W2FormDetailPage * file: src/cores/fa/pages/W2FormDetailPage.tsx:46 * kind: component * core: fa * spec: (none) * summary: Utility for w2 form detail page. * score: 1 ### component W2FormsPage * file: src/cores/fa/pages/W2FormsPage.tsx:17 * kind: component * core: fa * spec: (none) * summary: Utility for w2 forms page. * score: 1 ## Functions & utilities ### function aggregateByAccountType * file: src/cores/fa/utils/cashPositionUtils.ts:86 * kind: function * core: fa * spec: (none) * summary: Aggregates bank account balances by account type into cash buckets.Only includes active accounts. * score: 4 ### function aggregateCashByFund * file: src/cores/fa/utils/cashPositionUtils.ts:113 * kind: function * core: fa * spec: (none) * summary: Aggregates cash balances by fund ID.Returns a map of fund\_id - total balance.Accounts without a fund\_id are grouped under 'unassigned'. * score: 4 ### function aggregateInvoicesByARAgingBucket * file: src/cores/fa/utils/agingBuckets.ts:128 * kind: function * core: fa * spec: (none) * summary: Aggregate a list of invoices into AR aging buckets.Pure function — accepts pre-fetched data, no DB calls. * score: 4 ### function allocateStraightLine * file: src/cores/fa/lib/revenueScheduleAllocation.ts:73 * kind: function * core: fa * spec: (none) * summary: Allocate straight-line across based on each period'sday intersection with . Rounds to 2 decimals; residualis added to the last allocated period so the sum equals the input total.Returns an empty array if no periods intersect or . * score: 4 ### function analyzeHistoricalPatterns * file: src/cores/fa/utils/cashForecastUtils.ts:113 * kind: function * core: fa * spec: (none) * summary: Analyzes historical cash positions to extract patterns.Returns average flows, seasonality factors, and volatility. * score: 4 ### function BillApprovalActions * file: src/cores/fa/components/BillApprovalActions.tsx:21 * kind: function * core: fa * spec: (none) * summary: Utility for bill approval actions. * score: 1 ### function blendForecasts * file: src/cores/fa/utils/cashForecastUtils.ts:292 * kind: function * core: fa * spec: (none) * summary: Blends historical and budget-based forecasts.Uses weighted average based on budgetWeight (0 = all historical, 1 = all budget). * score: 4 ### function bucketImbalance * file: src/cores/fa/wizards/statement-template/lib/tolerance.ts:36 * kind: function * core: fa * spec: (none) * summary: Bucket the imbalance for analytics (D-9): never log raw amounts. * score: 4 ### function buildApprovalRequestInsert * file: src/cores/fa/wizards/recurring-invoice-setup/lib/buildRecurringInvoicePayload.ts:188 * kind: function * core: fa * spec: (none) * summary: Build the FW-03 approval-request insert for a high-risk payment plan.Payload is intentionally PII-free: only the recurring template id,frequency, plan total, installment count, and the threshold the plancrossed. * score: 4 ### function buildBalanceSheetPdf * file: src/cores/fa/utils/statementPdfExport.ts:18 * kind: function * core: fa * spec: (none) * summary: Build Balance Sheet PDF content with ASC 958 net asset sub-grouping. * score: 4 ### function buildCustomTemplate * file: src/cores/fa/lib/dbCoaTemplateDefinition.ts:153 * kind: function * core: fa * spec: (none) * summary: Produce a runtime CoATemplate from a DB row. Accepts the row's metadatacolumns plus the parsed definition. * score: 4 ### function buildDbTemplateId * file: src/cores/fa/data/coaTemplates.ts:142 * kind: function * core: fa * spec: (none) * summary: Build a stable template id for a DB row. * score: 4 ### function buildDefinitionFromTemplate * file: src/cores/fa/lib/dbCoaTemplateDefinition.ts:130 * kind: function * core: fa * spec: (none) * summary: Build a CoATemplate definition payload from an in-memory template.Strips metadata columns and undefined optional arrays. * score: 4 ### function buildExpenseRuleRpcPayload * file: src/cores/fa/schemas/expensePolicyRuleWizardSchema.ts:208 * kind: function * core: fa * spec: (none) * summary: Builds the JSON payload expected by from a validated wizard draft. * params: * draft — Wizard draft (caller should run full Zod parse before RPC when enforcing server rules). * returns: object passed as to the RPC. * score: 4 ### function buildFinancialStatementContent * file: src/cores/fa/templates/financial-statement-content.ts:16 * kind: function * core: fa * spec: (none) * summary: Build financial statements document content for PDF generation (PF-64). * score: 4 ### function buildFunctionalExpensesPdf * file: src/cores/fa/utils/statementPdfExport.ts:177 * kind: function * core: fa * spec: (none) * summary: Build Functional Expenses PDF content in matrix format. * score: 4 ### function buildInvoiceContent * file: src/cores/fa/templates/invoice-content.ts:85 * kind: function * core: fa * spec: (none) * summary: Build invoice document content for PDF generation (PF-64 generate-templated-pdf).Payment account/routing are always masked in output; use includeUnmaskedPayment only whenthe caller has fa.payments.view\_sensitive and uses a secure delivery channel. * score: 4 ### function buildKPISnapshots * file: src/cores/fa/hooks/useKPIs.ts:131 * kind: function * core: fa * spec: (none) * summary: Build KPI snapshots from definitions + latest history * score: 4 ### function buildPaymentReceiptContent * file: src/cores/fa/templates/payment-receipt-content.ts:17 * kind: function * core: fa * spec: (none) * summary: Build payment receipt document content for PDF generation (PF-64). * score: 4 ### function buildPurchaseOrderContent * file: src/cores/fa/templates/purchase-order-content.ts:35 * kind: function * core: fa * spec: (none) * summary: Build purchase order document content for PDF generation (PF-64). * score: 4 ### function buildStatementOfActivitiesPdf * file: src/cores/fa/utils/statementPdfExport.ts:105 * kind: function * core: fa * spec: (none) * summary: Build Statement of Activities PDF content with multi-column restriction layout. * score: 4 ### function calcPlanTotal * file: src/cores/fa/wizards/recurring-invoice-setup/lib/buildRecurringInvoicePayload.ts:69 * kind: function * core: fa * spec: (none) * summary: Sum installment amounts as a decimal Number. Returns 0 when the plan isdisabled or empty. Used both for and forthe FW-03 high-risk threshold comparison. * score: 4 ### function calculateBucketVariance * file: src/cores/fa/utils/cashPositionUtils.ts:216 * kind: function * core: fa * spec: (none) * summary: Calculates variance for a specific cash bucket. * score: 4 ### function calculateCashPosition * file: src/cores/fa/utils/cashPositionUtils.ts:132 * kind: function * core: fa * spec: (none) * summary: Main cash position calculation function.Mirrors the fa\_calculate\_cash\_position() database function logic. * score: 4 ### function calculateCashVariance * file: src/cores/fa/utils/cashPositionUtils.ts:191 * kind: function * core: fa * spec: (none) * summary: Calculates variance between current and previous cash positions.Returns amount difference, percentage change, and direction indicator. * score: 4 ### function calculateDSO * file: src/cores/fa/utils/agingBuckets.ts:160 * kind: function * core: fa * spec: (none) * summary: Simplified Days Sales Outstanding.Real DSO would require revenue data from GL; this is a rough estimate. * score: 4 ### function checkBalanceSheetTolerance * file: src/cores/fa/wizards/statement-template/lib/tolerance.ts:19 * kind: function * core: fa * spec: (none) * summary: Evaluates whether balance-sheet totals are within configured absolute/relative tolerance. * score: 4 ### function clearDraft * file: src/cores/fa/wizards/statement-template/hooks/useStatementTemplateDraft.ts:58 * kind: function * core: fa * spec: (none) * summary: Remove a persisted FA-UX-13 localStorage draft after successful submit or explicit discard. * score: 4 ### function createEmptyCashPosition * file: src/cores/fa/utils/cashPositionUtils.ts:266 * kind: function * core: fa * spec: (none) * summary: Returns an empty cash position calculation.Useful for initializing state or handling empty account lists. * score: 4 ### function createEmptyExpenseRuleWizardDraft * file: src/cores/fa/schemas/expensePolicyRuleWizardSchema.ts:77 * kind: function * core: fa * spec: (none) * summary: Returns a new wizard draft with FA-UX-16 defaults (name empty, , scope “all”, priority 10). * returns: Valid starting for the guided rule wizard. * score: 4 ### function createEmptyRevenueScheduleWizardDraft * file: src/cores/fa/schemas/revenueScheduleWizardSchema.ts:44 * kind: function * core: fa * spec: (none) * summary: Build an empty draft (defaults to today as both start/end dates). * score: 4 ### function createEmptyStatementTemplateWizardData * file: src/cores/fa/wizards/statement-template/statementTemplateWizardContext.ts:16 * kind: function * core: fa * spec: (none) * summary: Empty/default wizard state. * score: 1 ### function daysUntilShortfall * file: src/cores/fa/utils/cashForecastUtils.ts:479 * kind: function * core: fa * spec: (none) * summary: Calculates days until first shortfall.Returns null if no shortfall is projected. * score: 4 ### function detectCycle * file: src/cores/fa/wizards/statement-template/lib/cycle.ts:21 * kind: function * core: fa * spec: (none) * summary: Detect a cycle in the directed graph defined by .Edges point from a calculated row to each of its referenced row ids.Self-loops ( includes ) are reported as cycles.References to unknown ids are ignored (treated as terminal leaves). * score: 4 ### function detectFileFormat * file: src/cores/fa/utils/templateImport.ts:115 * kind: function * core: fa * spec: (none) * summary: Implements detect file format behavior. * score: 4 ### function downloadFile * file: src/cores/fa/lib/coaExport.ts:77 * kind: function * core: fa * spec: (none) * summary: Trigger browser download of a file. * score: 4 ### function downloadReportCsv * file: src/cores/fa/utils/exportReportCsv.ts:16 * kind: function * core: fa * spec: (none) * summary: Build CSV content from headers and row arrays, then trigger download. * score: 4 ### function expenseRuleRowToWizardDraft * file: src/cores/fa/schemas/expensePolicyRuleWizardSchema.ts:111 * kind: function * core: fa * spec: (none) * summary: Maps a DB row (plus optional nested condition) into the FA-UX-16 wizard draft shape.Unknown values fall back to . Unknown values fall back to .Numeric strings on / are coerced with . * params: * row — Row-like object from Supabase or RPC (may contain stringly-typed enums from JSON/DB). * returns: Draft suitable for / validation. * score: 4 ### function exportAccountMappingsCsv * file: src/cores/fa/lib/accountMappingExport.ts:12 * kind: function * core: fa * spec: (none) * summary: Provides export account mappings csv functionality. * score: 4 ### function exportAgingReportCsv * file: src/cores/fa/utils/auditExportCsv.ts:98 * kind: function * core: fa * spec: (none) * summary: Export unposted/aging report to CSV. Append organization\_id and export\_timestamp.Gate at call site with fa.audit.export; pass only rows already filtered by organization\_id. * score: 4 ### function exportBudgetVsActualToCsv * file: src/cores/fa/utils/exportReportCsv.ts:46 * kind: function * core: fa * spec: (none) * summary: Provides export budget vs actual to csv functionality. * score: 4 ### function exportCashFlowForecastToCsv * file: src/cores/fa/utils/exportReportCsv.ts:88 * kind: function * core: fa * spec: (none) * summary: Provides export cash flow forecast to csv functionality. * score: 4 ### function exportFaJournalCsv * file: src/cores/fa/utils/auditExportCsv.ts:53 * kind: function * core: fa * spec: (none) * summary: Export journal entry audit trail to CSV. Append organization\_id and export\_timestamp.Gate at call site with fa.audit.export; pass only rows already filtered by organization\_id.Schema note: (user) and (timestamp) columns do not exist.Reversal info is via (FK to reversing JE). * score: 4 ### function exportForecastToCsv * file: src/cores/fa/utils/exportReportCsv.ts:122 * kind: function * core: fa * spec: (none) * summary: Provides export forecast to csv functionality. * score: 4 ### function exportReconciliationToCSV * file: src/cores/fa/utils/reconciliationExport.ts:10 * kind: function * core: fa * spec: (none) * summary: Export reconciliation report to CSV * score: 4 ### function exportReconciliationToPDF * file: src/cores/fa/utils/reconciliationExport.ts:89 * kind: function * core: fa * spec: (none) * summary: Export reconciliation report to PDF (using browser print) * score: 4 ### function exportTemplateToCSV * file: src/cores/fa/utils/templateExport.ts:64 * kind: function * core: fa * spec: (none) * summary: Provides export template to csv functionality. * score: 4 ### function exportTemplateToJSON * file: src/cores/fa/utils/templateExport.ts:43 * kind: function * core: fa * spec: (none) * summary: Provides export template to json functionality. * score: 4 ### function exportToCSV * file: src/cores/fa/utils/reportExport.ts:58 * kind: function * core: fa * spec: (none) * summary: Implements export to csv behavior. * score: 4 ### function exportToExcel * file: src/cores/fa/utils/reportExport.ts:91 * kind: function * core: fa * spec: (none) * summary: Implements export to excel behavior.Uses dynamic ExcelJS import to avoid bundling \~937KB eagerly. * score: 4 ### function exportToPDF * file: src/cores/fa/utils/reportExport.ts:9 * kind: function * core: fa * spec: (none) * summary: Implements export to pdf behavior. * score: 4 ### function findBillDuplicates * file: src/cores/fa/lib/billDuplicates.ts:60 * kind: function * core: fa * spec: (none) * summary: Find likely duplicates of among (same-vendor candidates). is expected to already be scoped to the target's vendor + org, butthis guards defensively (different vendor → never a match; missing targetvendor → nothing to compare). * score: 4 ### function findInvalidRanges * file: src/cores/fa/wizards/statement-template/lib/overlap.ts:45 * kind: function * core: fa * spec: (none) * summary: Mappings whose . * score: 1 ### function findMaximumShortfall * file: src/cores/fa/utils/cashForecastUtils.ts:454 * kind: function * core: fa * spec: (none) * summary: Calculates the maximum shortfall amount and date. * score: 4 ### function findOverlaps * file: src/cores/fa/wizards/statement-template/lib/overlap.ts:31 * kind: function * core: fa * spec: (none) * summary: Find every overlapping pair in . Stable order: outer index inner index.Invalid (descending) ranges are skipped here — surface those separately via so the UI can label them distinctly. * score: 4 ### function formatAbsoluteTime * file: src/cores/fa/utils/formatRelativeTime.ts:48 * kind: function * core: fa * spec: (none) * summary: Format a date into an absolute timestamp for tooltips * params: * date — Date to format * returns: Formatted date/time string or "Never" * score: 4 ### function formatCashByFund * file: src/cores/fa/utils/cashPositionUtils.ts:169 * kind: function * core: fa * spec: (none) * summary: Formats cash by fund for display.Returns an array of fundId, fundName, amount, formatted objects. * score: 4 ### function formatCashPosition * file: src/cores/fa/utils/cashPositionUtils.ts:154 * kind: function * core: fa * spec: (none) * summary: Formats a cash position calculation for display.Uses the platform's formatCurrency utility. * score: 4 ### function formatDate * file: src/cores/fa/utils/reportExport.ts:143 * kind: function * core: fa * spec: (none) * summary: Formats date values for display. * score: 4 ### function formatRelativeTime * file: src/cores/fa/utils/formatRelativeTime.ts:18 * kind: function * core: fa * spec: (none) * summary: Format a date into a relative time string * params: * date — Date to format (Date object, ISO string, or null) * returns: Human-readable relative time string * example: | formatRelativeTime(new Date()) // "Just now"formatRelativeTime(new Date(Date.now() - 60000)) // "1m ago"formatRelativeTime(null) // "Never" * score: 4 ### function generateCashForecast * file: src/cores/fa/utils/cashForecastUtils.ts:338 * kind: function * core: fa * spec: (none) * summary: Generates a complete cash flow forecast.Combines historical patterns with optional budget integration. * score: 4 ### function generateCoACsv * file: src/cores/fa/lib/coaExport.ts:24 * kind: function * core: fa * spec: (none) * summary: Generate CSV string from account rows. * score: 4 ### function generateCoAExcel * file: src/cores/fa/lib/coaExport.ts:44 * kind: function * core: fa * spec: (none) * summary: Generate Excel workbook from account rows using wekanteam/exceljs.Returns a Blob for download. * score: 4 ### function generateErrorReportCsv * file: src/cores/fa/lib/coaImportValidation.ts:154 * kind: function * core: fa * spec: (none) * summary: Generate an error report CSV from validation errors. * score: 4 ### function generateImportTemplate * file: src/cores/fa/lib/coaImportValidation.ts:147 * kind: function * core: fa * spec: (none) * summary: Generate a CSV template string for download. * score: 4 ### function generatePeriodDates * file: src/cores/fa/utils/cashForecastUtils.ts:61 * kind: function * core: fa * spec: (none) * summary: Generates an array of period start dates between start and end. * score: 4 ### function getAccountBucket * file: src/cores/fa/utils/cashPositionUtils.ts:70 * kind: function * core: fa * spec: (none) * summary: Gets the cash bucket for a given account type.Falls back to 'other\_cash' for unmapped types. * score: 4 ### function getAgingBucket * file: src/cores/fa/utils/auditAging.ts:16 * kind: function * core: fa * spec: (none) * summary: Provides get aging bucket functionality. * score: 4 ### function getAgingDays * file: src/cores/fa/utils/auditAging.ts:5 * kind: function * core: fa * spec: (none) * summary: FA-25: Aging in days and bucket for unposted (draft) journal entries. * score: 4 ### function getARAgingBucket * file: src/cores/fa/utils/agingBuckets.ts:79 * kind: function * core: fa * spec: (none) * summary: Determine AR aging bucket (5-bucket: invoices, bills). * params: * daysPastDue — days past the due date (use ) * boundaries — org-configurable ascending day bounds; defaults to \[30,60,90,120] * score: 4 ### function getARAgingBuckets * file: src/cores/fa/utils/agingBuckets.ts:109 * kind: function * core: fa * spec: (none) * summary: Return bucket metadata keyed by ARAgingBucketKey (labels, ranges). * params: * boundaries — org-configurable ascending day bounds; defaults to \[30,60,90,120].With the default the labels/ranges reproduce the historical static metadata exactly. * score: 4 ### function getAuditAgingBucket * file: src/cores/fa/utils/agingBuckets.ts:92 * kind: function * core: fa * spec: (none) * summary: Determine audit aging bucket (4-bucket: journal entries, unposted items).Mirrors logic in auditAging.ts — kept here for colocation. * score: 4 ### function getCategoryLabel * file: src/cores/fa/components/ExpenseCategorySelect.tsx:74 * kind: function * core: fa * spec: (none) * summary: Provides get category label functionality. * score: 4 ### function getCategoryLabelFromPicklist * file: src/cores/fa/components/ExpenseCategoryPicklistSelect.tsx:75 * kind: function * core: fa * spec: (none) * summary: Get the label for a category valueUses picklist items if available, falls back to hardcoded * score: 4 ### function getDaysInPeriod * file: src/cores/fa/utils/cashForecastUtils.ts:92 * kind: function * core: fa * spec: (none) * summary: Gets the number of days in a forecast period.Used for pro-rating budget amounts. * score: 4 ### function getDaysPastDue * file: src/cores/fa/utils/agingBuckets.ts:65 * kind: function * core: fa * spec: (none) * summary: Calculate days past due from a due date relative to an as-of date.Returns 0 for future dates (not yet past due). * score: 4 ### function getFundTypeLabel * file: src/cores/fa/utils/asc958Mapping.ts:47 * kind: function * core: fa * spec: (none) * summary: Returns a human-readable label for a fund\_type value using ASC 958 terminology. * score: 4 ### function getInitialDraft * file: src/cores/fa/wizards/statement-template/hooks/useStatementTemplateDraft.ts:40 * kind: function * core: fa * spec: (none) * summary: Synchronous read used to seed . Safe in SSR (returns null). * score: 4 ### function getRestrictionLabel * file: src/cores/fa/utils/asc958Mapping.ts:40 * kind: function * core: fa * spec: (none) * summary: Returns a human-readable label for an ASC 958 category. * score: 4 ### function hasCash * file: src/cores/fa/utils/cashPositionUtils.ts:281 * kind: function * core: fa * spec: (none) * summary: Checks if a cash position has any cash. * score: 4 ### function identifyShortfallPeriods * file: src/cores/fa/utils/cashForecastUtils.ts:447 * kind: function * core: fa * spec: (none) * summary: Identifies periods where cash falls below minimum threshold.Useful for alerts and dashboard warnings. * score: 4 ### function isHighRiskPlan * file: src/cores/fa/wizards/recurring-invoice-setup/lib/buildRecurringInvoicePayload.ts:79 * kind: function * core: fa * spec: (none) * summary: FW-03 high-risk handoff: a payment plan whose total meets or exceeds theorg's requiresmanager approval before activation. * score: 4 ### function isInvalidRange * file: src/cores/fa/wizards/statement-template/lib/overlap.ts:14 * kind: function * core: fa * spec: (none) * summary: True if . * score: 1 ### function isSumWithinTolerance * file: src/cores/fa/lib/revenueScheduleAllocation.ts:131 * kind: function * core: fa * spec: (none) * summary: Returns true when within . * score: 4 ### function mapFundTypeToRestriction * file: src/cores/fa/utils/asc958Mapping.ts:30 * kind: function * core: fa * spec: (none) * summary: Maps a fund\_type value to its ASC 958 net-asset restriction category. * params: * fundType — The fund\_type from (e.g., 'unrestricted', 'temporarily\_restricted') * returns: The ASC 958 category, defaulting to 'without\_donor\_restrictions' for unknown values * score: 4 ### function maskAccountNumber * file: src/cores/fa/utils/payment-masking.ts:10 * kind: function * core: fa * spec: (none) * summary: Mask account number for display (show only last 4 digits). * score: 4 ### function maskPaymentReference * file: src/cores/fa/utils/payment-masking.ts:30 * kind: function * core: fa * spec: (none) * summary: Mask payment reference or other short identifiers (show only last 4 characters). * score: 4 ### function maskRoutingNumber * file: src/cores/fa/utils/payment-masking.ts:20 * kind: function * core: fa * spec: (none) * summary: Mask routing number for display (show only last 4 digits). * score: 4 ### function normalizeBudgetForCopyRow * file: src/cores/fa/hooks/useBudgetTemplate.ts:28 * kind: function * core: fa * spec: FA-08 * summary: Normalizes a raw budget-copy row by coercing its aggregate line\_count into a numeric value, leaving all other fields intact. * params: * row — Raw budget row whose may be a string or aggregate object. * returns: The same row with normalized to a number. * score: 5 ### function normalizeExpenseRuleConditionForSave * file: src/cores/fa/schemas/expensePolicyRuleWizardSchema.ts:141 * kind: function * core: fa * spec: (none) * summary: Normalizes the in-wizard object for RPC / persistence ( always clears ). * params: * condition — Draft condition from step 2 of the wizard. * returns: safe to send inside . * score: 4 ### function parseCSVTemplate * file: src/cores/fa/utils/templateImport.ts:84 * kind: function * core: fa * spec: (none) * summary: Parses csvtemplate into normalized values. * score: 4 ### function parseDbTemplateId * file: src/cores/fa/data/coaTemplates.ts:150 * kind: function * core: fa * spec: (none) * summary: Parse a DB-backed template id back to the underlying ,or return null when the id refers to a built-in template. * score: 4 ### function parseImportDate * file: src/cores/fa/utils/jeImportValidation.ts:61 * kind: function * core: fa * spec: (none) * summary: Parse a date string into ISO format (YYYY-MM-DD).Accepts YYYY-MM-DD, MM/DD/YYYY, M/D/YYYY.Returns null if unparseable. * score: 4 ### function parseTemplateDefinition * file: src/cores/fa/lib/dbCoaTemplateDefinition.ts:145 * kind: function * core: fa * spec: (none) * summary: Validate and parse a JSON value retrieved from .Throws on shape errors; callers should for UI display. * score: 4 ### function periodsIntersectingWindow * file: src/cores/fa/lib/revenueScheduleAllocation.ts:50 * kind: function * core: fa * spec: (none) * summary: Returns periods overlapping , sorted by . * score: 4 ### function POApprovalActions * file: src/cores/fa/components/POApprovalActions.tsx:23 * kind: function * core: fa * spec: (none) * summary: Utility for poapproval actions. * score: 1 ### function prepareInvoiceDataForPdf * file: src/cores/fa/utils/payment-masking.ts:43 * kind: function * core: fa * spec: (none) * summary: Prepare invoice-like data for PDF/content builders. Use when calling buildInvoiceContent.When hasSensitivePermission is false, payment account/routing are replaced with maskedvalues and includeUnmaskedPayment is false. When true, includeUnmaskedPayment is set;only pass true when fa.payments.view\_sensitive is granted. * score: 4 ### function projectFromBudget * file: src/cores/fa/utils/cashForecastUtils.ts:195 * kind: function * core: fa * spec: (none) * summary: Projects cash flows from FA-08 budget data.Queries budget lines and maps revenue/expense accounts to inflows/outflows. * score: 4 ### function prorateBudgetToDate * file: src/cores/fa/utils/cashForecastUtils.ts:258 * kind: function * core: fa * spec: (none) * summary: Pro-rates budget projection to a specific forecast date.Handles cases where budget periods don't align with forecast periods. * score: 4 ### function publishBankBalanceUpdated * file: src/cores/fa/utils/eventPublishers.ts:181 * kind: function * core: fa * spec: (none) * summary: Publish bank\_balance\_updated event.Triggers cash position recalculation. * score: 4 ### function publishCashPositionUpdated * file: src/cores/fa/utils/eventPublishers.ts:47 * kind: function * core: fa * spec: (none) * summary: Publish cash\_position\_updated event.Triggered after cash position recalculation. * score: 4 ### function publishCreditLimitApproaching * file: src/cores/fa/utils/eventPublishers.ts:136 * kind: function * core: fa * spec: (none) * summary: Publish credit\_limit\_approaching event.Triggered by daily credit limit check. * score: 4 ### function publishInvestmentMaturityApproaching * file: src/cores/fa/utils/eventPublishers.ts:90 * kind: function * core: fa * spec: (none) * summary: Publish investment\_maturity\_approaching event.Triggered by daily maturity check. * score: 4 ### function publishPaymentProcessed * file: src/cores/fa/utils/eventPublishers.ts:229 * kind: function * core: fa * spec: (none) * summary: Publish payment\_processed event.Triggers forecast actual tracking updates. * score: 4 ### function rangesOverlap * file: src/cores/fa/wizards/statement-template/lib/overlap.ts:19 * kind: function * core: fa * spec: (none) * summary: Inclusive overlap predicate. * score: 1 ### function readFileAsText * file: src/cores/fa/utils/templateImport.ts:103 * kind: function * core: fa * spec: (none) * summary: Implements read file as text behavior. * score: 4 ### function reconcilePlanTotal * file: src/cores/fa/lib/paymentPlanReconciliation.ts:60 * kind: function * core: fa * spec: (none) * summary: Reconcile a payment plan against its recurring invoice total. * score: 4 ### function registerFAWizardSteps * file: src/cores/fa/wizards/registerFAWizardSteps.ts:19 * kind: function * core: fa * spec: (none) * summary: Register all FA module wizard steps.Call this function during app initialization (e.g., in App.tsx or FA module entry).Steps are registered with lazy-loaded components for code splitting. * score: 4 ### function sanitizeCsvValue * file: src/cores/fa/utils/jeImportValidation.ts:99 * kind: function * core: fa * spec: (none) * summary: Sanitize a CSV field value to prevent formula injection.Strips leading =, +, -, characters. * score: 4 ### function sumAllocations * file: src/cores/fa/lib/revenueScheduleAllocation.ts:143 * kind: function * core: fa * spec: (none) * summary: Sum allocated amounts (rounded to 2 decimals). * score: 4 ### function summarizeForecast * file: src/cores/fa/utils/cashForecastUtils.ts:510 * kind: function * core: fa * spec: (none) * summary: Generates summary statistics for a forecast. * score: 4 ### function tasksToFormItems * file: src/cores/fa/components/ChecklistTaskEditor.tsx:366 * kind: function * core: fa * spec: (none) * summary: Convert CloseTask\[] to TaskFormItem\[] for editing * score: 4 ### function use1099FormDetail * file: src/cores/fa/hooks/use1099Forms.ts:40 * kind: function * core: fa * spec: (none) * summary: Query: Get single 1099 form detail * score: 4 ### function use1099FormsList * file: src/cores/fa/hooks/use1099Forms.ts:14 * kind: function * core: fa * spec: (none) * summary: Query: List 1099 forms for a tax year * score: 4 ### function use1099Summary * file: src/cores/fa/hooks/use1099Summary.ts:29 * kind: function * core: fa * spec: (none) * summary: Hook for managing 1099 summary. * score: 1 ### function use1099Vendor * file: src/cores/fa/hooks/use1099Summary.ts:57 * kind: function * core: fa * spec: (none) * summary: Hook for managing 1099 vendor. * score: 1 ### function validateCashByFundTotals * file: src/cores/fa/utils/cashPositionUtils.ts:251 * kind: function * core: fa * spec: (none) * summary: Validates cash by fund totals match the overall total. * score: 4 ### function validateCashPositionTotals * file: src/cores/fa/utils/cashPositionUtils.ts:240 * kind: function * core: fa * spec: (none) * summary: Validates that cash position totals are consistent.Returns true if the sum of buckets equals total\_cash. * score: 4 ### function validateCoAImport * file: src/cores/fa/lib/coaImportValidation.ts:36 * kind: function * core: fa * spec: (none) * summary: Validate parsed CSV text against existing accounts.Returns a dry-run result with preview rows and summary. * score: 4 ### function validateExpenseLine * file: src/cores/fa/hooks/useExpenseLines.ts:110 * kind: function * core: fa * spec: (none) * summary: Validate an expense line against organization policiesUses fa\_validate\_expense\_policies RPC * score: 4 ### function validateExpensePolicyRuleWizardStep * file: src/cores/fa/schemas/expensePolicyRuleWizardSchema.ts:158 * kind: function * core: fa * spec: (none) * summary: Step-scoped validation for the FA-UX-16 expense policy rule wizard (steps 0–2). * params: * stepIndex — = define, = conditions/priority, = full draft Zod parse. * draft — Current wizard state. * returns: Map of field keys to first error message (empty object when valid for that step). * score: 4 ### function validateImportPackage * file: src/cores/fa/utils/templateImport.ts:46 * kind: function * core: fa * spec: (none) * summary: Implements validate import package behavior. * score: 4 ### function validateJeImportRows * file: src/cores/fa/utils/jeImportValidation.ts:107 * kind: function * core: fa * spec: (none) * summary: Group parsed rows by entry\_group, validate dates and amounts,and check that each group balances (debits = credits). * score: 4 ### function validateRecurringInvoiceWizardStep * file: src/cores/fa/wizards/recurring-invoice-setup/schemas/recurringInvoiceWizardSchema.ts:169 * kind: function * core: fa * spec: (none) * summary: Run the appropriate per-step schema and return a flat error map keyed bythe same field names used in the draft. * score: 4 ### function validateRevenueScheduleWizardStep * file: src/cores/fa/schemas/revenueScheduleWizardSchema.ts:131 * kind: function * core: fa * spec: (none) * summary: Per-step validator. Returns (empty if step valid).Step indices: 0 → Source 1 → Parameters 2 → Period preview (no extra Zod gating beyond presence; sum-tolerance is enforced live in the UI and rechecked at submit) 3 → Confirm (re-validates everything via the composed schema) * score: 4 ### function validateStatementTemplateStep * file: src/cores/fa/wizards/statement-template/lib/validate.ts:113 * kind: function * core: fa * spec: (none) * summary: Validate one FA-UX-13 wizard step and return field-keyed blocking errors. * score: 4 ## Classes ### class FA23SchemaUnavailableError * file: src/cores/fa/wizards/statement-template/hooks/useStatementTemplateMutation.ts:20 * kind: class * core: fa * spec: (none) * summary: Typed feature-availability error for environments missing FA-23 statement-template tables. * score: 4 # fm — Public API surface Source: https://docs.encoreos.io/api/fm Per-symbol API documentation for the fm area, generated from TSDoc blocks. Refresh with `npm run docs:api:generate`. # fm — Public API surface ## Types & interfaces ### interface AssetRegisterFilters * file: src/cores/fm/hooks/useAssetReportData.ts:25 * kind: interface * core: fm * spec: FM-05 * summary: Filter criteria for the asset register report (site, category, status, andacquisition-date window). * score: 5 ### interface AssetRegisterRow * file: src/cores/fm/hooks/useAssetReportData.ts:78 * kind: interface * core: fm * spec: FM-05 * summary: One row of the asset register report: identity, location, status, andbook-value fields for a single asset. * see: * AssetRegisterFilters * score: 5 ### interface DepreciationReportFilters * file: src/cores/fm/hooks/useAssetReportData.ts:43 * kind: interface * core: fm * spec: FM-05 * summary: Filter criteria for the depreciation report, narrowing by date window,asset category, and depreciation method. * score: 5 ### interface DepreciationReportRow * file: src/cores/fm/hooks/useAssetReportData.ts:103 * kind: interface * core: fm * spec: FM-05 * summary: One row of the depreciation report: purchase basis, salvage value, method,and computed monthly / YTD / lifetime depreciation for an asset. * see: * DepreciationReportFilters * score: 5 ### interface FleetDriverDetail * file: src/cores/fm/hooks/useFleetDriverDetail.ts:18 * kind: interface * core: fm * spec: FM-13 * summary: A fleet driver record enriched with their linked user profile, currentlyassigned vehicles, and recent trip history. * see: * FleetDriver * score: 5 ### interface FleetFuelLogListFilters * file: src/cores/fm/hooks/useFleetFuelLogs.ts:22 * kind: interface * core: fm * spec: FM-13 * summary: Filter criteria for fuel-log queries: by vehicle, driver, fuel type, anddate window. * score: 5 ### interface FleetMaintenanceListFilters * file: src/cores/fm/hooks/useFleetMaintenance.ts:22 * kind: interface * core: fm * spec: FM-13 * summary: Filter criteria for fleet maintenance-schedule queries: by vehicle, activestate, trigger type, and overdue flag. * score: 5 ### interface FleetMaintenanceWithVehicle * file: src/cores/fm/hooks/useFleetMaintenance.ts:36 * kind: interface * core: fm * spec: FM-13 * summary: A fleet maintenance schedule joined with its vehicle reference and acomputed flag. * see: * FleetMaintenanceSchedule * score: 5 ### interface FMDashboardStats * file: src/cores/fm/hooks/useFMDashboardStats.ts:20 * kind: interface * core: fm * spec: none * summary: Top-line counts for the FM module overview dashboard, spanning work orders,assets, inventory, and vendors. * score: 5 ### type FMModuleSettings * file: src/cores/fm/hooks/useFMModuleSettings.ts:16 * kind: type * core: fm * spec: none * summary: Per-organization FM module configuration row (e.g. alert windows and moduletoggles), aliased from the generated table Row type. * see: * Database * score: 5 ### interface MaintenanceCostByMonth * file: src/cores/fm/hooks/useAssetReportData.ts:146 * kind: interface * core: fm * spec: FM-05 * summary: Maintenance cost aggregated into a single month bucket, for trend charts. * score: 5 ### interface MaintenanceCostFilters * file: src/cores/fm/hooks/useAssetReportData.ts:60 * kind: interface * core: fm * spec: FM-05 * summary: Filter criteria for the maintenance-cost report, narrowing by date window,asset category, and site. * score: 5 ### interface MaintenanceCostRow * file: src/cores/fm/hooks/useAssetReportData.ts:125 * kind: interface * core: fm * spec: FM-05 * summary: One row of the maintenance-cost report: per-asset work-order count, totaland average spend, and most recent maintenance date. * see: * MaintenanceCostFilters * score: 5 ### interface MaintenanceScheduleFormValues * file: src/cores/fm/hooks/useFleetMaintenanceMutations.ts:35 * kind: interface * core: fm * spec: FM-13 * summary: Form payload for creating or updating a fleet maintenance schedule, coveringthe vehicle, trigger type, mileage/time intervals, and next-due targets. * score: 5 ### interface PMTemplateListItem * file: src/cores/fm/hooks/usePMTemplateList.ts:19 * kind: interface * core: fm * spec: FM-04 * summary: A PM template list row augmented with rollup counts of its checklist items,required materials, and schedules that reference it. * see: * PMTemplate * score: 5 ### interface RecordMileageInput * file: src/cores/fm/hooks/useFleetMileageMutations.ts:24 * kind: interface * core: fm * spec: FM-13 * summary: Payload for recording a new odometer reading against a vehicle, optionallytied to a trip. * score: 5 ### interface TrendDataPoint * file: src/cores/fm/hooks/useFleetTrendData.ts:39 * kind: interface * core: fm * spec: FM-13 * summary: A single time bucket (month) of aggregated fleet metrics for trend charts. * score: 5 ### type TrendPeriod * file: src/cores/fm/hooks/useFleetTrendData.ts:20 * kind: type * core: fm * spec: FM-13 * summary: Supported lookback windows for fleet trend charts. * score: 5 ### interface TrendSummary * file: src/cores/fm/hooks/useFleetTrendData.ts:55 * kind: interface * core: fm * spec: FM-13 * summary: Roll-up totals across the entire trend window, shown above the chart. * see: * TrendDataPoint * score: 5 ### interface UseAssetDetailOptions * file: src/cores/fm/hooks/useAssetDetail.ts:29 * kind: interface * core: fm * spec: FM-05 * summary: Options controlling the query. * score: 5 ### interface UseAssetDetailResult * file: src/cores/fm/hooks/useAssetDetail.ts:43 * kind: interface * core: fm * spec: FM-05 * summary: Result of : the resolved asset (with maintenance,depreciation, and location relations) plus query status flags. * score: 5 ### interface UseAssetListOptions * file: src/cores/fm/hooks/useAssetList.ts:25 * kind: interface * core: fm * spec: FM-05 * summary: Filtering and pagination inputs for . * score: 5 ### interface UseAssetListResult * file: src/cores/fm/hooks/useAssetList.ts:42 * kind: interface * core: fm * spec: FM-05 * summary: Result of : the current page of assets, the totalmatching count for pagination, and query status flags. * score: 5 ### interface UseAssetStatsOptions * file: src/cores/fm/hooks/useAssetStats.ts:21 * kind: interface * core: fm * spec: FM-05 * summary: Options controlling the dashboard query. * score: 5 ### interface UseAssetStatsResult * file: src/cores/fm/hooks/useAssetStats.ts:35 * kind: interface * core: fm * spec: FM-05 * summary: Result of : aggregated asset dashboard statistics(counts by category and status, totals) plus query status flags. * score: 5 ### interface UseFleetAnalyticsOptions * file: src/cores/fm/hooks/useFleetAnalytics.ts:22 * kind: interface * core: fm * spec: FM-13 * summary: Options controlling the dashboard query. * score: 5 ### interface UseFleetDriverDetailOptions * file: src/cores/fm/hooks/useFleetDriverDetail.ts:37 * kind: interface * core: fm * spec: FM-13 * summary: Inputs for : the driver and organization to load,plus an optional enable flag. * score: 5 ### interface UseFleetDriversOptions * file: src/cores/fm/hooks/useFleetDrivers.ts:30 * kind: interface * core: fm * spec: FM-13 * summary: Filtering and pagination inputs for . * score: 5 ### interface UseFleetDriversResult * file: src/cores/fm/hooks/useFleetDrivers.ts:47 * kind: interface * core: fm * spec: FM-13 * summary: Result of : the current page of drivers (each withprofile and assigned-vehicle count), total count, and query status flags. * score: 5 ### interface UseFleetFuelLogsOptions * file: src/cores/fm/hooks/useFleetFuelLogs.ts:39 * kind: interface * core: fm * spec: FM-13 * summary: Filtering and pagination inputs for . * score: 5 ### interface UseFleetFuelLogsResult * file: src/cores/fm/hooks/useFleetFuelLogs.ts:56 * kind: interface * core: fm * spec: FM-13 * summary: Result of : the current page of fuel logs plusaggregated totals (cost, gallons, average MPG) and query status flags. * score: 5 ### interface UseFleetMaintenanceOptions * file: src/cores/fm/hooks/useFleetMaintenance.ts:50 * kind: interface * core: fm * spec: FM-13 * summary: Filtering and pagination inputs for . * score: 5 ### interface UseFleetMaintenanceResult * file: src/cores/fm/hooks/useFleetMaintenance.ts:67 * kind: interface * core: fm * spec: FM-13 * summary: Result of : the current page of maintenanceschedules, total and overdue counts, and query status flags. * score: 5 ### interface UseFleetMileageOptions * file: src/cores/fm/hooks/useFleetMileage.ts:22 * kind: interface * core: fm * spec: FM-13 * summary: Inputs for : the target vehicle plus optionaldate-range and pagination controls. * score: 5 ### interface UseFleetMileageResult * file: src/cores/fm/hooks/useFleetMileage.ts:41 * kind: interface * core: fm * spec: FM-13 * summary: Result of : the current page of odometer/mileage logs,total count, and query status flags. * score: 5 ### interface UseFleetReservationsOptions * file: src/cores/fm/hooks/useFleetReservations.ts:20 * kind: interface * core: fm * spec: FM-13-P2 * summary: Filtering inputs for . * score: 1 ### interface UseFleetTrendDataOptions * file: src/cores/fm/hooks/useFleetTrendData.ts:74 * kind: interface * core: fm * spec: FM-13 * summary: Inputs for : the lookback window and optionalsingle-vehicle scope. * score: 5 ### interface UseFleetTrendDataResult * file: src/cores/fm/hooks/useFleetTrendData.ts:90 * kind: interface * core: fm * spec: FM-13 * summary: Result of : per-bucket trend points, a window-level, and query status flags. * score: 5 ### interface UseFleetTripsOptions * file: src/cores/fm/hooks/useFleetTrips.ts:21 * kind: interface * core: fm * spec: FM-13 * summary: Filtering and pagination inputs for . * score: 5 ### interface UseFleetTripsResult * file: src/cores/fm/hooks/useFleetTrips.ts:38 * kind: interface * core: fm * spec: FM-13 * summary: Result of : the current page of trips (each enrichedwith vehicle and driver details), total count, and query status flags. * score: 5 ### interface UseFleetVehicleDetailOptions * file: src/cores/fm/hooks/useFleetVehicleDetail.ts:21 * kind: interface * core: fm * spec: FM-13 * summary: Inputs for : the vehicle and organization toload, plus an optional enable flag. * score: 5 ### interface UseFleetVehiclesOptions * file: src/cores/fm/hooks/useFleetVehicles.ts:21 * kind: interface * core: fm * spec: FM-13 * summary: Filtering and pagination inputs for . * score: 5 ### interface UseFleetVehiclesResult * file: src/cores/fm/hooks/useFleetVehicles.ts:38 * kind: interface * core: fm * spec: FM-13 * summary: Result of : the current page of vehicles (eachenriched with site and driver data), total count, and query status flags. * score: 5 ### interface UseInventoryDetailOptions * file: src/cores/fm/hooks/useInventoryDetail.ts:20 * kind: interface * core: fm * spec: FM-02 * summary: Options controlling the query. * score: 5 ### interface UseInventoryDetailResult * file: src/cores/fm/hooks/useInventoryDetail.ts:34 * kind: interface * core: fm * spec: FM-02 * summary: Result of : the resolved inventory item (withtransactions and per-location quantities) plus query status flags. * score: 5 ### interface UseInventoryListOptions * file: src/cores/fm/hooks/useInventoryList.ts:21 * kind: interface * core: fm * spec: FM-02 * summary: Filtering and pagination inputs for . * score: 5 ### interface UseInventoryListResult * file: src/cores/fm/hooks/useInventoryList.ts:38 * kind: interface * core: fm * spec: FM-02 * summary: Result of : the current page of inventory items,total matching count, and query status flags. * score: 5 ### interface UseInventoryLocationListOptions * file: src/cores/fm/hooks/useInventoryLocationList.ts:21 * kind: interface * core: fm * spec: FM-02 * summary: Filtering and pagination inputs for . * score: 5 ### interface UseInventoryLocationListResult * file: src/cores/fm/hooks/useInventoryLocationList.ts:38 * kind: interface * core: fm * spec: FM-02 * summary: Result of : the current page of inventorylocations (each joined with its site), total count, and query status flags. * score: 5 ### interface UseInventoryStatsOptions * file: src/cores/fm/hooks/useInventoryStats.ts:21 * kind: interface * core: fm * spec: FM-02 * summary: Options controlling the dashboard query. * score: 5 ### interface UseInventoryStatsResult * file: src/cores/fm/hooks/useInventoryStats.ts:36 * kind: interface * core: fm * spec: FM-02 * summary: Result of : aggregated inventory dashboardstatistics (stock value, low-stock and out-of-stock counts) plus querystatus flags. * score: 5 ### interface UsePMComplianceStatsOptions * file: src/cores/fm/hooks/usePMComplianceStats.ts:21 * kind: interface * core: fm * spec: FM-04 * summary: Options controlling the query. * score: 5 ### interface UsePMComplianceStatsResult * file: src/cores/fm/hooks/usePMComplianceStats.ts:36 * kind: interface * core: fm * spec: FM-04 * summary: Result of : aggregate preventive-maintenancecompliance metrics (on-time vs overdue completion rates) plus query statusflags. * score: 5 ### interface UsePMDashboardStatsOptions * file: src/cores/fm/hooks/usePMDashboardStats.ts:21 * kind: interface * core: fm * spec: FM-04 * summary: Options controlling the query. * score: 5 ### interface UsePMDashboardStatsResult * file: src/cores/fm/hooks/usePMDashboardStats.ts:35 * kind: interface * core: fm * spec: FM-04 * summary: Result of : quick PM counts for dashboard widgets(due, overdue, upcoming schedules) plus query status flags. * score: 5 ### interface UsePMScheduleDetailOptions * file: src/cores/fm/hooks/usePMScheduleDetail.ts:22 * kind: interface * core: fm * spec: FM-04 * summary: Inputs for : the schedule to load plus an optionalenable flag. * score: 5 ### interface UsePMScheduleDetailResult * file: src/cores/fm/hooks/usePMScheduleDetail.ts:37 * kind: interface * core: fm * spec: FM-04 * summary: Result of : the PM schedule with its template andgenerated work orders, its completion history, and query status flags. * score: 5 ### interface UsePMScheduleListOptions * file: src/cores/fm/hooks/usePMScheduleList.ts:21 * kind: interface * core: fm * spec: FM-04 * summary: Filtering and pagination inputs for . * score: 5 ### interface UsePMScheduleListResult * file: src/cores/fm/hooks/usePMScheduleList.ts:38 * kind: interface * core: fm * spec: FM-04 * summary: Result of : the current page of PM schedules (withoverdue tracking), total count, and query status flags. * score: 5 ### interface UsePMTemplateDetailOptions * file: src/cores/fm/hooks/usePMTemplateDetail.ts:22 * kind: interface * core: fm * spec: FM-04 * summary: Inputs for : the template to load plus an optionalenable flag. * score: 5 ### interface UsePMTemplateDetailResult * file: src/cores/fm/hooks/usePMTemplateDetail.ts:37 * kind: interface * core: fm * spec: FM-04 * summary: Result of : the PM template with its checklistitems and material lines, plus query status flags. * score: 5 ### interface UsePMTemplateListOptions * file: src/cores/fm/hooks/usePMTemplateList.ts:34 * kind: interface * core: fm * spec: FM-04 * summary: Filtering and pagination inputs for . * score: 5 ### interface UsePMTemplateListResult * file: src/cores/fm/hooks/usePMTemplateList.ts:51 * kind: interface * core: fm * spec: FM-04 * summary: Result of : the current page of PM templates (withrollup counts), total count, and query status flags. * score: 5 ### interface UseVendorCertificationListOptions * file: src/cores/fm/hooks/useVendorCertificationList.ts:23 * kind: interface * core: fm * spec: FM-03 * summary: Filtering inputs for (by vendor andexpiration window). * score: 5 ### interface UseVendorCertificationListResult * file: src/cores/fm/hooks/useVendorCertificationList.ts:38 * kind: interface * core: fm * spec: FM-03 * summary: Result of : vendor certifications withderived expiration status, total count, and query status flags. * score: 5 ### interface UseVendorDetailOptions * file: src/cores/fm/hooks/useVendorDetail.ts:27 * kind: interface * core: fm * spec: FM-03 * summary: Inputs for : the vendor to load plus an optionalenable flag. * score: 5 ### interface UseVendorDetailResult * file: src/cores/fm/hooks/useVendorDetail.ts:42 * kind: interface * core: fm * spec: FM-03 * summary: Result of : the vendor with its certifications,served sites, and work-order history, plus query status flags. * score: 5 ### interface UseVendorListOptions * file: src/cores/fm/hooks/useVendorList.ts:21 * kind: interface * core: fm * spec: FM-03 * summary: Filtering and pagination inputs for . * score: 5 ### interface UseVendorListResult * file: src/cores/fm/hooks/useVendorList.ts:38 * kind: interface * core: fm * spec: FM-03 * summary: Result of : the current page of vendors, total matchingcount, and query status flags. * score: 5 ### interface UseVendorStatsOptions * file: src/cores/fm/hooks/useVendorStats.ts:21 * kind: interface * core: fm * spec: FM-03 * summary: Options controlling the dashboard query. * score: 5 ### interface UseVendorStatsResult * file: src/cores/fm/hooks/useVendorStats.ts:35 * kind: interface * core: fm * spec: FM-03 * summary: Result of : aggregated vendor dashboard statistics(active vendors, expiring certifications) plus query status flags. * score: 5 ### interface UseWorkOrderDetailOptions * file: src/cores/fm/hooks/useWorkOrderDetail.ts:26 * kind: interface * core: fm * spec: FM-01 * summary: Options controlling the query. * score: 5 ### interface UseWorkOrderDetailResult * file: src/cores/fm/hooks/useWorkOrderDetail.ts:40 * kind: interface * core: fm * spec: FM-01 * summary: Result of : the resolved work order with site,assignee, and history relations, plus query status flags. * score: 5 ### interface UseWorkOrderHistoryOptions * file: src/cores/fm/hooks/useWorkOrderHistory.ts:20 * kind: interface * core: fm * spec: FM-01 * summary: Options controlling the query. * score: 5 ### interface UseWorkOrderHistoryResult * file: src/cores/fm/hooks/useWorkOrderHistory.ts:34 * kind: interface * core: fm * spec: FM-01 * summary: Result of : the ordered audit-trail entries for awork order (each with the acting profile) plus query status flags. * score: 5 ### interface UseWorkOrderListOptions * file: src/cores/fm/hooks/useWorkOrderList.ts:21 * kind: interface * core: fm * spec: FM-01 * summary: Filtering and pagination inputs for . * score: 5 ### interface UseWorkOrderListResult * file: src/cores/fm/hooks/useWorkOrderList.ts:38 * kind: interface * core: fm * spec: FM-01 * summary: Result of : the current page of work orders, totalmatching count, and query status flags. * score: 5 ### interface UseWorkOrderStatsOptions * file: src/cores/fm/hooks/useWorkOrderStats.ts:26 * kind: interface * core: fm * spec: FM-01 * summary: Options controlling the dashboard query. * score: 5 ### interface UseWorkOrderStatsResult * file: src/cores/fm/hooks/useWorkOrderStats.ts:41 * kind: interface * core: fm * spec: FM-01 * summary: Result of : aggregated work-order dashboardstatistics (counts by status, priority, and category) plus query statusflags. * score: 5 ### interface ValidationResult * file: src/cores/fm/utils/inventoryValidation.ts:25 * kind: interface * core: fm * spec: FM-02 * summary: Outcome of a client-side inventory transaction validation: a flagwith an optional human-readable message when invalid. * score: 5 ### interface VehicleComparisonData * file: src/cores/fm/components/analytics/FleetVehicleComparisonTable.tsx:42 * kind: interface * core: fm * spec: FM-13 * summary: One vehicle's aggregated performance row in the fleet comparison table.Each row pre-computes utilization and efficiency metrics (total miles, fuelcost, average MPG, cost per mile, trip count) so the table can sort and rankvehicles without re-querying. * score: 5 ### interface VendorAssignmentValidation * file: src/cores/fm/utils/vendorValidation.ts:144 * kind: interface * core: fm * spec: FM-03 * summary: Result of checking whether a vendor may be assigned to a work order: plus the list of blocking when it cannot. * score: 5 ### interface VendorValidationResult * file: src/cores/fm/utils/vendorValidation.ts:225 * kind: interface * core: fm * spec: FM-03 * summary: Result of validating a vendor form submission: plus a map offield name to error message for any fields that failed validation. * score: 5 ### interface WarrantyAlert * file: src/cores/fm/hooks/useAssetWarrantyAlerts.ts:29 * kind: interface * core: fm * spec: FM-05 * summary: A single expiring asset warranty or service contract, with urgency derivedfrom the number of days remaining until expiration. * score: 5 ### interface WarrantyAlertsSummary * file: src/cores/fm/hooks/useAssetWarrantyAlerts.ts:47 * kind: interface * core: fm * spec: FM-05 * summary: Expiring warranties and service contracts bucketed by urgency, with a totalcount for badge display. * see: * WarrantyAlert * score: 5 ### interface WorkOrderValidationResult * file: src/cores/fm/utils/workOrderValidation.ts:131 * kind: interface * core: fm * spec: (none) * summary: Validate work order form data. * score: 2 ## Hooks ### hook useAssetDepreciationHistory * file: src/cores/fm/hooks/useAssetDepreciationHistory.ts:19 * kind: hook * core: fm * spec: (none) * summary: Hook for managing asset depreciation history. * score: 1 ### hook useAssetDetail * file: src/cores/fm/hooks/useAssetDetail.ts:63 * kind: hook * core: fm * spec: FM-05 * summary: Fetch a single asset by id with its maintenance history, depreciationrecords, and location history, exposed as a .The query stays disabled until an is supplied; pass to gate it further. * params: * assetId — Asset id to load; when undefined the query does not run. * options — Query options (see ). * returns: The asset and query status (see ). * score: 5 ### hook useAssetList * file: src/cores/fm/hooks/useAssetList.ts:59 * kind: hook * core: fm * spec: FM-05 * summary: Fetch a paginated, filterable list of assets scoped to the currentorganization, returning the page rows and total count. * params: * options — Filters and pagination (see ). * returns: The asset page and query status (see ). * score: 5 ### hook useAssetMaintenanceHistory * file: src/cores/fm/hooks/useAssetMaintenanceHistory.ts:19 * kind: hook * core: fm * spec: (none) * summary: Hook for managing asset maintenance history. * score: 1 ### hook useAssetMutations * file: src/cores/fm/hooks/useAssetMutations.ts:24 * kind: hook * core: fm * spec: (none) * summary: Hook for managing asset mutations. * score: 1 ### hook useAssetRegisterData * file: src/cores/fm/hooks/useAssetReportData.ts:165 * kind: hook * core: fm * spec: FM-05 * summary: Fetch the asset register report rows for an organization, applying the givenfilters server-side. * params: * organizationId — Tenant to scope the report to; query is disabled when undefined. * filters — Register filter criteria (see ). * returns: A React Query result resolving to an array of . * score: 5 ### hook useAssetStats * file: src/cores/fm/hooks/useAssetStats.ts:51 * kind: hook * core: fm * spec: FM-05 * summary: Compute organization-scoped asset dashboard statistics (counts by categoryand status, book-value totals) for summary widgets. * params: * options — Query options (see ). * returns: The stats and query status (see ). * score: 5 ### hook useAssetWarrantyAlerts * file: src/cores/fm/hooks/useAssetWarrantyAlerts.ts:62 * kind: hook * core: fm * spec: FM-05 * summary: Query assets whose warranty or service contract expires within the next 90days, returning them bucketed by urgency as a . * params: * organizationId — Tenant to scope the query to; disabled when undefined. * returns: A React Query result resolving to a . * score: 5 ### hook useCalculateBulkDepreciation * file: src/cores/fm/hooks/useCalculateDepreciation.ts:89 * kind: hook * core: fm * spec: (none) * summary: Hook to calculate depreciation for all eligible assets in an organization * score: 4 ### hook useCalculateDepreciation * file: src/cores/fm/hooks/useCalculateDepreciation.ts:45 * kind: hook * core: fm * spec: (none) * summary: Hook to calculate depreciation for a single asset * score: 4 ### hook useDepreciationReportData * file: src/cores/fm/hooks/useAssetReportData.ts:249 * kind: hook * core: fm * spec: FM-05 * summary: Fetch the depreciation report rows for an organization, applying the givenfilters server-side. * params: * organizationId — Tenant to scope the report to; query is disabled when undefined. * filters — Depreciation filter criteria (see ). * returns: A React Query result resolving to an array of . * score: 5 ### hook useFleetAnalytics * file: src/cores/fm/hooks/useFleetAnalytics.ts:39 * kind: hook * core: fm * spec: (none) * summary: Fetch aggregated fleet dashboard metrics for the current organization. Retrieves vehicles, drivers, mileage, and fuel data from Supabase and computes aggregated metrics: total and active vehicle/driver counts, distributions by vehicle status and fuel type, upcoming expirations for registration/insurance/inspection and driver licenses within configured alert windows, current-month total miles and fuel costs, and average MPG. * params: * options — Hook options. - enabled: If , disables the query. Defaults to . * returns: The React Query result containing a object with the aggregated fleet metrics. * example: | // Basic usage in a React componentconst data, isLoading, error = useFleetAnalytics();// Access metrics: data?.totalVehicles, data?.byStatus, data?.averageMpg, etc. * score: 4 ### hook useFleetDriverDetail * file: src/cores/fm/hooks/useFleetDriverDetail.ts:56 * kind: hook * core: fm * spec: (none) * summary: Load a fleet driver's aggregated detail (driver record, optional user profile, assigned vehicles, and up to 20 recent trips) as a React Query result. Validates inputs, fetches the driver record scoped to the provided organization (must exist and not be deleted), concurrently loads the driver's user profile (if present), assigned vehicles, and up to 20 most recent trips, and returns a composed FleetDriverDetail via React Query. * params: * options — Options for the hook - driverId: The driver ID to load (required for the query to run) - organizationId: The organization ID to scope the query (required for the query to run) - enabled: Whether the query is enabled; defaults to * returns: UseQueryResultFleetDriverDetail, unknown - The React Query result containing the composed FleetDriverDetail on success * example: | const data, isLoading, error = useFleetDriverDetail( driverId: 'driver-uuid', organizationId: 'org-uuid', enabled: true ); * score: 4 ### hook useFleetDriverMutations * file: src/cores/fm/hooks/useFleetDriverMutations.ts:31 * kind: hook * core: fm * spec: (none) * summary: Provides React Query mutations for creating, updating, toggling, and soft-deleting fleet drivers scoped to the current organization. Each mutation handles Supabase persistence, invalidates related queries on success, and shows toast notifications on success or error. * returns: An object containing React Query mutation objects: - : mutation to insert a new driver. - : mutation to update driver fields by id. - : mutation to update a driver's license-related fields by id. - : mutation to set a driver's state by id. - : mutation to soft-delete a driver by id (also unassigns the driver from vehicles). * example: | // Usage within a componentconst createDriver, updateDriver = useFleetDriverMutations();createDriver.mutate(formValues); * score: 4 ### hook useFleetDrivers * file: src/cores/fm/hooks/useFleetDrivers.ts:84 * kind: hook * core: fm * spec: (none) * summary: Retrieve a paginated, filterable list of fleet drivers for the current organization, enriched with each driver's user profile and count of assigned vehicles.Executes a Supabase-backed query applying optional filters (is\_active, has\_cdl, search, license\_expiring\_within\_days), ordering, and pagination; then loads related profiles and assigned-vehicle counts and attaches them to each driver record. * params: * options — Configuration for the retrieval. - filters?: FleetDriverListFilters — Optional filters to apply (is\_active, has\_cdl, search, license\_expiring\_within\_days). - page?: number — 1-based page number (default: 1). - pageSize?: number — Number of items per page (default: 20). - enabled?: boolean — Whether the query should be enabled (default: true). * returns: UseFleetDriversResult - An object containing: - drivers: The enriched list of fleet drivers. - totalCount: Total number of drivers matching the query. - isLoading: Loading state of the query. - isError: Error state of the query. - error: The error object if present. - refetch: Function to refetch the data. * example: | const drivers, totalCount, isLoading, refetch = useFleetDrivers( filters: is\_active: true, search: 'smith' , page: 2, pageSize: 25,); * score: 4 ### hook useFleetFuelLogs * file: src/cores/fm/hooks/useFleetFuelLogs.ts:96 * kind: hook * core: fm * spec: (none) * summary: Returns a paginated, filterable list of fleet fuel logs enriched with related vehicle and driver records and aggregated totals. * params: * options — UseFleetFuelLogsOptions object to control the query. Fields: - filters: FleetFuelLogListFilters | undefined — Optional filters (vehicle\_id, driver\_id, fuel\_type, date\_from, date\_to). - page: number | undefined — 1-based page number (default: 1). - pageSize: number | undefined — Number of items per page (default: 20). - enabled: boolean | undefined — Whether the query should run (default: true). * returns: UseFleetFuelLogsResult - An object containing: - fuelLogs: Array of fuel logs enriched with and relations. - totalCount: Total number of matching fuel logs (ignoring pagination). - totalCost: Sum of across matching logs. - totalGallons: Sum of across matching logs. - averageMpg: Average of for logs with mpg 0, rounded to one decimal place. - isLoading, isError, error, refetch: React Query state and controls. * example: | const fuelLogs, totalCount, totalCost, isLoading, refetch = useFleetFuelLogs( filters: vehicle\_id: 'veh\_123', date\_from: '2025-01-01' , page: 1, pageSize: 25, enabled: true,); * score: 4 ### hook useFleetFuelMutations * file: src/cores/fm/hooks/useFleetFuelMutations.ts:35 * kind: hook * core: fm * spec: (none) * summary: Provides React Query mutations for creating, updating, and soft-deleting fleet fuel logs. Initializes three mutations that handle inserting a fuel log (including related vehicle odometer updates and mileage log creation when an odometer reading is provided), updating an existing fuel log, and soft-deleting a fuel log. Each mutation invalidates related fleet queries and surfaces success or error toasts. * returns: An object containing three React Query mutation objects:- — mutation to insert a fuel log; resolves to the inserted fuel log.- — mutation to update a fuel log; resolves to the updated fuel log.- — mutation to soft-delete a fuel log; resolves to an object with . * example: | const createFuelLog = useFleetFuelMutations();createFuelLog.mutate( vehicle\_id: 'veh\_123', purchase\_date: '2025-01-01', gallons: 10, total\_cost: 40,); * score: 4 ### hook useFleetMaintenance * file: src/cores/fm/hooks/useFleetMaintenance.ts:138 * kind: hook * core: fm * spec: (none) * summary: Provide paginated, filterable fleet maintenance schedules enriched with vehicle details and overdue counts. Fetches maintenance schedules scoped to the current organization, applies optional filters (vehicle\_id, is\_active, trigger\_type, is\_overdue), paginates results, joins vehicle data (including current\_odometer), and computes per-schedule overdue status. Results are cached with a 5-minute stale time and 10-minute GC time. Filtering by is performed client-side after enrichment, so it may reduce the returned page size. * params: * options — Configuration for the hook. - filters: vehicle\_id?: string; is\_active?: boolean; trigger\_type?: string; is\_overdue?: boolean Optional filters to apply. - page: number Page number for pagination (1-based). Defaults to 1. - pageSize: number Number of items per page. Defaults to 20. - enabled: boolean If , disables the query. Defaults to true. * returns: UseFleetMaintenanceResult - An object containing: - : Array of schedules enriched with a nested object (or ) and flag. - : Total number of schedules matching the database query (across pages). - : Number of schedules that are overdue computed from the enriched set before any filter is applied. - , , , : Standard query lifecycle controls. * example: | const schedules, totalCount, overdueCount, refetch = useFleetMaintenance( filters: is\_active: true, trigger\_type: 'both' , page: 1, pageSize: 50,); * score: 4 ### hook useFleetMaintenanceMutations * file: src/cores/fm/hooks/useFleetMaintenanceMutations.ts:63 * kind: hook * core: fm * spec: (none) * summary: Provides React Query mutation hooks for creating, updating, toggling, soft-deleting fleet maintenance schedules and for generating FM-01 work orders from schedules. * returns: An object containing the following mutation objects:- — creates a new maintenance schedule and returns the created schedule row\.- — updates an existing maintenance schedule by id and returns the updated schedule row\.- — updates a schedule's state and returns the updated schedule and its .- — creates an FM-01 work order from a schedule, updates the schedule's last-completed and next-due fields, and returns .- — soft-deletes a schedule by setting and returns . * example: | const createSchedule, generateWorkOrder = useFleetMaintenanceMutations();createSchedule.mutate(formValues); * score: 4 ### hook useFleetMileage * file: src/cores/fm/hooks/useFleetMileage.ts:84 * kind: hook * core: fm * spec: (none) * summary: Fetches paginated fleet mileage logs for a vehicle with optional date-range filtering. Executes a Supabase-backed query to load mileage records for the provided , applies optional / filters, orders results by descending, and returns paginated results along with total count and React Query state helpers. * params: * options — Query options for fetching fleet mileage. - vehicleId: Vehicle identifier to filter mileage logs (required for query execution). - dateFrom: Inclusive lower bound for (ISO string). If omitted, no lower bound is applied. - dateTo: Inclusive upper bound for (ISO string). If omitted, no upper bound is applied. - page: Page index (1-based). Defaults to . - pageSize: Number of items per page. Defaults to . - enabled: Whether the query should be enabled. Defaults to ; the hook also requires an organization context to enable the query. * returns: The hook result containing: - : Array of mileage log records for the current page. - : Total number of matching records across all pages. - : Query loading state. - : Query error state. - : Error object when the query fails. - : Function to refetch the query. * example: | const mileageLogs, totalCount, isLoading, refetch = useFleetMileage( vehicleId: 'veh\_123', dateFrom: '2025-01-01', dateTo: '2025-01-31', page: 1, pageSize: 25, enabled: true,); * score: 4 ### hook useFleetMileageMutations * file: src/cores/fm/hooks/useFleetMileageMutations.ts:47 * kind: hook * core: fm * spec: (none) * summary: Provide React Query mutations to record and delete fleet mileage entries.Exposes two mutations:- : inserts a new mileage log for a vehicle, prevents inserting an odometer reading lower than the previous reading, computes and stores when applicable, and invalidates related queries on success.- : deletes a mileage log scoped to the current organization and invalidates related queries on success.Both mutations show success or destructive toasts and surface errors from the backend. * returns: An object containing:- — a React Query mutation for recording a mileage entry.- — a React Query mutation for deleting a mileage entry. * example: | const recordMileage, deleteMileageEntry = useFleetMileageMutations(); * score: 4 ### hook useFleetReservationMutations * file: src/cores/fm/hooks/useFleetReservationMutations.ts:16 * kind: hook * core: fm * spec: (none) * summary: Hook for managing fleet reservation mutations. * score: 1 ### hook useFleetReservations * file: src/cores/fm/hooks/useFleetReservations.ts:33 * kind: hook * core: fm * spec: FM-13-P2 * summary: Fetch fleet vehicle reservations for the current organization, enriched withvehicle and driver references and narrowed by the supplied filters. * params: * options — Filter options (see ). * returns: A React Query result resolving to reservations with details. * score: 4 ### hook useFleetTrendData * file: src/cores/fm/hooks/useFleetTrendData.ts:199 * kind: hook * core: fm * spec: (none) * summary: Provides monthly aggregated fleet metrics (mileage, fuel, MPG, trips) and a summary for the selected period and optional vehicle.Aggregates mileage logs, fuel logs, and trips from the current organization over the requested period and returns per-month data points plus overall totals and averages. * params: * options — Hook options. - period: Time range for aggregation: '30d', '90d', '6m', or '1y' (defaults to '6m'). - vehicleId: Optional vehicle ID to filter results to a single vehicle. - enabled: Whether the query is enabled (defaults to true). * returns: The hook result containing (array of monthly TrendDataPoint), (TrendSummary totals/averages), loading/error state, and a function. * example: | function MyChart() const data, summary, isLoading, isError, refetch = useFleetTrendData( period: '1y' ); // render chart with and show * score: 4 ### hook useFleetTripMutations * file: src/cores/fm/hooks/useFleetTripMutations.ts:29 * kind: hook * core: fm * spec: (none) * summary: Provides mutations to create, update, and soft-delete fleet trips while invalidating related queries and showing toast feedback.Exposes three React Query mutation objects for managing fleet trips:- : inserts a trip (optionally creates a mileage log) and invalidates related queries.- : updates a trip record, recalculates derived fields when appropriate, and invalidates related queries.- : marks a trip as deleted () and invalidates related queries. * returns: An object containing the three mutation objects . * example: | const createTrip, updateTrip, softDeleteTrip = useFleetTripMutations();createTrip.mutate(formValues); * score: 4 ### hook useFleetTrips * file: src/cores/fm/hooks/useFleetTrips.ts:74 * kind: hook * core: fm * spec: (none) * summary: Fetches a paginated, optionally filtered list of fleet trips for the current organization and enriches each trip with its related vehicle and driver details.The hook returns trips for the active organization applying provided filters (vehicle, driver, trip type, date range) and pagination (page, pageSize). Each trip is augmented with and objects when available. Query caching is applied with a short stale time. * params: * options — Configuration for the query - filters: Filter values to apply: , , (string or string\[]), , - page: 1-based page number for pagination (default: 1) - pageSize: Number of items per page (default: 20) - enabled: Whether the query should be active (default: true) * returns: UseFleetTripsResult - An object containing: - : array of fleet trips enriched with and (or if missing) - : total number of matching trips across pages - , , , for query state management * example: | // Basic usage inside a React componentconst trips, totalCount, isLoading, refetch = useFleetTrips( filters: trip\_type: \['delivery', 'pickup'], date\_from: '2025-01-01' , page: 2, pageSize: 50,); * score: 4 ### hook useFleetVehicleDetail * file: src/cores/fm/hooks/useFleetVehicleDetail.ts:41 * kind: hook * core: fm * spec: (none) * summary: Fetches a fleet vehicle and its related entities (site, assigned driver, creator/updater profiles,recent trips, fuel/mileage logs, and active maintenance schedules) and exposes the result via React Query. Runs a consolidated query for a single fleet vehicle identified by , aggregates related records, and caches the aggregated FleetVehicleDetail result. * params: * options — Configuration for the hook - vehicleId: ID of the vehicle to fetch; required for the query to run - enabled: When false, disables the query (default: true) * returns: A React Query result object containing the aggregated and query state * example: | const data, isLoading, error = useFleetVehicleDetail( vehicleId: 'abc-123' ); * score: 4 ### hook useFleetVehicleMutations * file: src/cores/fm/hooks/useFleetVehicleMutations.ts:40 * kind: hook * core: fm * spec: (none) * summary: Provides React Query mutations for creating, updating, assigning, and soft-deleting fleet vehicles.Exposes five mutations wired to Supabase and the app context:- createVehicle: insert a new vehicle record- updateVehicle: update fields of an existing vehicle- updateStatus: update a vehicle's status and optional notes- assignDriver: set or clear the assigned driver for a vehicle- softDeleteVehicle: mark a vehicle as deleted (sets )Each mutation validates the current user and organization, updates cache via the query client,and triggers user-facing toast notifications on success or error. * returns: An object containing the mutation objects:- : Mutation for creating a vehicle- : Mutation for updating a vehicle- : Mutation for updating a vehicle's status- : Mutation for assigning/unassigning a driver- : Mutation for soft-deleting a vehicle (returns the deleted vehicle id) * example: | const createVehicle, updateVehicle = useFleetVehicleMutations();createVehicle.mutate(formValues); * score: 4 ### hook useFleetVehicles * file: src/cores/fm/hooks/useFleetVehicles.ts:69 * kind: hook * core: fm * spec: (none) * summary: Loads a paginated, filterable list of fleet vehicles for the current organization and enriches each vehicle with related site and driver data. Executes a Supabase-backed query with the provided filters, pagination, and enabled flag, then fetches related sites and drivers to attach to each vehicle item. * params: * options — Query options. - filters: Filter set to apply (status, fuel\_type, site\_id, assigned\_driver\_id, search, year\_from, year\_to, registration/insurance/inspection expiring windows, etc.). - page: 1-based page number for pagination (default: 1). - pageSize: Number of items per page (default: 20). - enabled: Whether the query is enabled (default: true). * returns: UseFleetVehiclesResult - An object containing (enriched list), , loading/error state flags, , and . * example: | const vehicles, totalCount, isLoading, isError, refetch = useFleetVehicles( filters: status: \['active'], search: 'ABC123' , page: 2, pageSize: 50,); * score: 4 ### hook useFMDashboardStats * file: src/cores/fm/hooks/useFMDashboardStats.ts:34 * kind: hook * core: fm * spec: none * summary: Compute the FM module overview counts (open work orders, total assets, lowstock items, active vendors) for the current organization. * returns: A React Query result resolving to . * score: 5 ### hook useFMModuleSettings * file: src/cores/fm/hooks/useFMModuleSettings.ts:30 * kind: hook * core: fm * spec: none * summary: Reads and updates the current organization's FM module settings, scoping thequery/mutation to the active organization from context. * returns: — is the org's row (or undefined until loaded); saves changes and tracks the in-flight mutation. * score: 5 ### hook useInventoryDetail * file: src/cores/fm/hooks/useInventoryDetail.ts:51 * kind: hook * core: fm * spec: FM-02 * summary: Fetch a single inventory item with its transaction history and per-locationstock quantities, exposed as a . * params: * itemId — Inventory item id; when undefined the query does not run. * options — Query options (see ). * returns: The item and query status (see ). * score: 5 ### hook useInventoryList * file: src/cores/fm/hooks/useInventoryList.ts:55 * kind: hook * core: fm * spec: FM-02 * summary: Fetch a paginated, filterable list of inventory items scoped to the currentorganization, returning the page rows and total count. * params: * options — Filters and pagination (see ). * returns: The item page and query status (see ). * score: 5 ### hook useInventoryLocationList * file: src/cores/fm/hooks/useInventoryLocationList.ts:55 * kind: hook * core: fm * spec: FM-02 * summary: Fetch a paginated, filterable list of inventory storage locations for thecurrent organization, each joined with its parent site. * params: * options — Filters and pagination (see ). * returns: The location page and query status (see ). * score: 5 ### hook useInventoryMutations * file: src/cores/fm/hooks/useInventoryMutations.ts:36 * kind: hook * core: fm * spec: (none) * summary: Hook for managing inventory mutations. * score: 1 ### hook useInventoryStats * file: src/cores/fm/hooks/useInventoryStats.ts:52 * kind: hook * core: fm * spec: FM-02 * summary: Compute organization-scoped inventory dashboard statistics (total stockvalue plus low-stock and out-of-stock counts) for summary widgets. * params: * options — Query options (see ). * returns: The stats and query status (see ). * score: 5 ### hook useLatestMileage * file: src/cores/fm/hooks/useFleetMileage.ts:151 * kind: hook * core: fm * spec: (none) * summary: Fetches the most recent mileage log entry for a given vehicle. Returns the latest row from for , or when is not provided. * params: * vehicleId — The vehicle identifier to query mileage for; when the hook is disabled and resolves to . * returns: The React Query result whose is the latest mileage log object (record) for the vehicle, or if none or if is not provided. * example: | const data: latestMileage, isLoading = useLatestMileage('vehicle-123'); * score: 4 ### hook useLinkWorkOrderToAsset * file: src/cores/fm/hooks/useLinkWorkOrderToAsset.ts:21 * kind: hook * core: fm * spec: (none) * summary: Hook for managing link work order to asset. * score: 1 ### hook useMaintenanceCostReportData * file: src/cores/fm/hooks/useAssetReportData.ts:363 * kind: hook * core: fm * spec: FM-05 * summary: Fetch the maintenance-cost report rows for an organization, applying thegiven filters server-side. * params: * organizationId — Tenant to scope the report to; query is disabled when undefined. * filters — Maintenance-cost filter criteria (see ). * returns: A React Query result resolving to an array of . * score: 5 ### hook usePMComplianceStats * file: src/cores/fm/hooks/usePMComplianceStats.ts:52 * kind: hook * core: fm * spec: FM-04 * summary: Compute organization-scoped preventive-maintenance compliance statistics(completion and overdue rates across PM schedules). * params: * options — Query options (see ). * returns: The stats and query status (see ). * score: 5 ### hook usePMDashboardStats * file: src/cores/fm/hooks/usePMDashboardStats.ts:51 * kind: hook * core: fm * spec: FM-04 * summary: Compute organization-scoped preventive-maintenance dashboard counts (due,overdue, and upcoming PM schedules) for summary widgets. * params: * options — Query options (see ). * returns: The stats and query status (see ). * score: 5 ### hook usePMScheduleDetail * file: src/cores/fm/hooks/usePMScheduleDetail.ts:54 * kind: hook * core: fm * spec: FM-04 * summary: Fetch a single PM schedule with its template, generated work orders, andcompletion history, exposed as a . * params: * options — Query options (see ). * returns: The schedule and query status (see ). * score: 5 ### hook usePMScheduleList * file: src/cores/fm/hooks/usePMScheduleList.ts:55 * kind: hook * core: fm * spec: FM-04 * summary: Fetch a paginated, filterable list of PM schedules for the currentorganization, with overdue status computed per schedule. * params: * options — Filters and pagination (see ). * returns: The schedule page and query status (see ). * score: 5 ### hook usePMScheduleMutations * file: src/cores/fm/hooks/usePMScheduleMutations.ts:18 * kind: hook * core: fm * spec: (none) * summary: Hook for managing pmschedule mutations. * score: 1 ### hook usePMTemplateDetail * file: src/cores/fm/hooks/usePMTemplateDetail.ts:51 * kind: hook * core: fm * spec: FM-04 * summary: Fetch a single PM template with its checklist items and required materials,exposed as a . * score: 5 ### hook usePMTemplateList * file: src/cores/fm/hooks/usePMTemplateList.ts:67 * kind: hook * core: fm * spec: FM-04 * summary: Fetch a paginated, filterable list of PM templates for the currentorganization, each with rollup counts of checklist items, materials, andreferencing schedules. * score: 5 ### hook usePMTemplateMutations * file: src/cores/fm/hooks/usePMTemplateMutations.ts:26 * kind: hook * core: fm * spec: (none) * summary: Hook for managing pmtemplate mutations. * score: 1 ### hook useVehicleMaintenance * file: src/cores/fm/hooks/useFleetMaintenance.ts:261 * kind: hook * core: fm * spec: (none) * summary: Fetches active maintenance schedules for a specific vehicle, ordered by next due date. Queries the table for schedules that match the provided and , are active (), and are not deleted. Results are ordered by ascending. * params: * vehicleId — string | undefined — The ID of the vehicle to fetch maintenance schedules for; when , the hook returns an empty list and remains disabled. * organizationId — string | undefined — The ID of the organization used to scope the query; when , the hook returns an empty list and remains disabled. * returns: Array of maintenance schedule records for the vehicle, or an empty array when none are found. * example: | const data: schedules, isLoading, isError = useVehicleMaintenance('vehicle-123', 'org-456'); * score: 4 ### hook useVehicleTrips * file: src/cores/fm/hooks/useFleetTrips.ts:210 * kind: hook * core: fm * spec: (none) * summary: Retrieve recent trips for a single vehicle, each including basic driver details. Queries the table for non-deleted trips matching the provided and , ordered by descending and limited to rows. Each returned trip contains an embedded object with , , and . If or is missing, the hook returns an empty array and is disabled. * params: * vehicleId — string | undefined — The ID of the vehicle to retrieve trips for. When , the query is disabled and returns an empty array. * organizationId — string | undefined — The ID of the organization to scope the query. When , the query is disabled and returns an empty array. * limit — number — Maximum number of trips to return (default: 20). * returns: Array of trip records augmented with a object () for each trip, or an empty array when or is not provided. * example: | const data: trips, isLoading, isError = useVehicleTrips('vehicle-123', 'org-456', 10); * score: 4 ### hook useVehicleUsageStats * file: src/cores/fm/hooks/useFleetAnalytics.ts:226 * kind: hook * core: fm * spec: (none) * summary: Provide usage statistics for a vehicle over the past six months. Fetches mileage, fuel, and trip data for the given vehicle and aggregates totals, monthly breakdowns, and average MPG. * params: * vehicleId — string | undefined — The vehicle's unique identifier; if the hook returns and the query is disabled. * organizationId — string | undefined — The organization identifier used to scope data queries; if the hook returns and the query is disabled. * returns: An object with aggregated usage statistics or when or is not provided. The object contains:- : total miles driven in the last six months- : total fuel cost in the last six months- : total number of trips in the last six months- : average MPG across fuel logs (rounded to one decimal)- : number\[] of total miles for each of the last six months (oldest to newest)- : number\[] of total fuel cost for each of the last six months (oldest to newest) * example: | const data = useVehicleUsageStats('vehicle-123', 'org-456');// data?.totalMiles - total miles for vehicle-123 over the last six months * score: 4 ### hook useVendorCertificationList * file: src/cores/fm/hooks/useVendorCertificationList.ts:53 * kind: hook * core: fm * spec: FM-03 * summary: Fetch vendor certifications for a vendor or organization, annotating eachwith its computed expiration status and alert level. * score: 5 ### hook useVendorDetail * file: src/cores/fm/hooks/useVendorDetail.ts:58 * kind: hook * core: fm * spec: FM-03 * summary: Fetch a single vendor with all relations (certifications, served sites, andassociated work orders), exposed as a . * params: * options — Query options (see ). * returns: The vendor and query status (see ). * score: 5 ### hook useVendorList * file: src/cores/fm/hooks/useVendorList.ts:55 * kind: hook * core: fm * spec: FM-03 * summary: Fetch a paginated, filterable list of vendors scoped to the currentorganization, returning the page rows and total count. * params: * options — Filters and pagination (see ). * returns: The vendor page and query status (see ). * score: 5 ### hook useVendorMutations * file: src/cores/fm/hooks/useVendorMutations.ts:28 * kind: hook * core: fm * spec: (none) * summary: Hook for managing vendor mutations. * score: 1 ### hook useVendorStats * file: src/cores/fm/hooks/useVendorStats.ts:51 * kind: hook * core: fm * spec: FM-03 * summary: Compute organization-scoped vendor dashboard statistics (active vendor countand expiring-certification counts) for summary widgets. * params: * options — Query options (see ). * returns: The stats and query status (see ). * score: 5 ### hook useWorkOrderDetail * file: src/cores/fm/hooks/useWorkOrderDetail.ts:54 * kind: hook * core: fm * spec: FM-01 * summary: Fetch a single work order with all relations (site, requester/assigneeprofiles, and status history), exposed as a . * score: 5 ### hook useWorkOrderHistory * file: src/cores/fm/hooks/useWorkOrderHistory.ts:51 * kind: hook * core: fm * spec: FM-01 * summary: Fetch the audit trail (status and field changes, each with the actingprofile) for a single work order. * params: * workOrderId — Work order id; when undefined the query does not run. * options — Query options (see ). * returns: The history and query status (see ). * score: 5 ### hook useWorkOrderList * file: src/cores/fm/hooks/useWorkOrderList.ts:55 * kind: hook * core: fm * spec: FM-01 * summary: Fetch a paginated, filterable list of work orders scoped to the currentorganization, returning the page rows and total count. * params: * options — Filters and pagination (see ). * returns: The work order page and query status (see ). * score: 5 ### hook useWorkOrderMutations * file: src/cores/fm/hooks/useWorkOrderMutations.ts:26 * kind: hook * core: fm * spec: (none) * summary: Hook for managing work order mutations. * score: 1 ### hook useWorkOrderStats * file: src/cores/fm/hooks/useWorkOrderStats.ts:55 * kind: hook * core: fm * spec: FM-01 * summary: Compute organization-scoped work-order dashboard statistics (counts bystatus, priority, and category) for summary widgets. * score: 5 ## Components ### component AssetCategoryBadge * file: src/cores/fm/components/AssetCategoryBadge.tsx:23 * kind: component * core: fm * spec: FM-05 * summary: Renders an outline badge showing the human-readable label for an assetcategory (e.g. "Medical Equipment", "Vehicle"). * params: * props — Component props; is the asset category to label. * score: 5 ### component AssetDashboardWidget * file: src/cores/fm/components/dashboard/AssetDashboardWidget.tsx:29 * kind: component * core: fm * spec: FM-05 * summary: Overview dashboard card for the asset module, combining headline asset statswith a warranty-alert count and a link into the asset register. * params: * props — Component props; this widget takes no props and reads asset stats and warranty alerts for the current organization from context. * score: 5 ### component AssetDepreciationCalculateDialog * file: src/cores/fm/components/AssetDepreciationCalculateDialog.tsx:55 * kind: component * core: fm * spec: FM-05 * summary: Dialog that previews and records a month's depreciation for an asset,showing the projected book-value change before the user confirms. * params: * props — Component props; the dialog state and handler plus the target asset's id, name, and depreciation basis fields (purchase price, current book value, salvage value, method, life, rate, and last depreciation date). * score: 5 ### component AssetDepreciationSchedule * file: src/cores/fm/components/AssetDepreciationSchedule.tsx:35 * kind: component * core: fm * spec: FM-05 * summary: Renders an asset's depreciation history as a book-value line chart plus adetail table, with summary stats for total depreciation and current value. * params: * props — Component props; selects the asset whose depreciation history is loaded, and seeds the starting book value when no history exists yet. * score: 5 ### component AssetDetailPage * file: src/cores/fm/pages/AssetDetailPage.tsx:34 * kind: component * core: fm * spec: (none) * summary: Utility for asset detail page. * score: 1 ### component AssetDisposalDialog * file: src/cores/fm/components/AssetDisposalDialog.tsx:54 * kind: component * core: fm * spec: FM-05 * summary: Dialog for retiring an asset: captures disposal date, method, proceeds, andnotes, then records the disposal against the asset's lifecycle. * params: * props — Component props; the dialog state and handler plus the target asset's id, name, tag, and current book value. * score: 5 ### component AssetFormDialog * file: src/cores/fm/components/AssetFormDialog.tsx:98 * kind: component * core: fm * spec: FM-05 * summary: Modal form for creating or editing an asset (identity, category, site,acquisition, and depreciation fields). Switches to edit mode when anexisting asset is supplied. * params: * props — Component props; the dialog state and handler plus an optional to edit (omit to create a new asset). * score: 5 ### component AssetLocationHistory * file: src/cores/fm/components/AssetLocationHistory.tsx:27 * kind: component * core: fm * spec: FM-05 * summary: Renders an asset's move history as a chronological timeline of locationchanges, each with the moving user and reason; shows an empty state when nohistory exists. * params: * props — Component props; is the ordered list of location change records to display. * score: 5 ### component AssetLocationUpdateDialog * file: src/cores/fm/components/AssetLocationUpdateDialog.tsx:55 * kind: component * core: fm * spec: FM-05 * summary: Dialog for relocating an asset to a new site, building, and room, requiringa move reason that is appended to the asset's location history. * params: * props — Component props; the dialog state and handler plus the target and its current site/building/room used to pre-populate the form. * score: 5 ### component AssetMaintenanceHistoryList * file: src/cores/fm/components/AssetMaintenanceHistoryList.tsx:31 * kind: component * core: fm * spec: FM-05 * summary: Lists the maintenance and work-order history for a single asset, withloading skeletons and an error state. * params: * props — Component props; selects the asset whose maintenance history is loaded. * score: 5 ### component AssetMaintenanceSummaryWidget * file: src/cores/fm/components/AssetMaintenanceSummaryWidget.tsx:28 * kind: component * core: fm * spec: FM-05 * summary: Compact widget summarizing an asset's maintenance posture: total spend, lastand next service dates, formatted for the asset detail view. * params: * props — Component props; is the asset detail record whose maintenance summary fields are displayed. * score: 5 ### component AssetRegisterPage * file: src/cores/fm/pages/AssetRegisterPage.tsx:28 * kind: component * core: fm * spec: (none) * summary: Utility for asset register page. * score: 1 ### component AssetsPage * file: src/cores/fm/pages/AssetsPage.tsx:28 * kind: component * core: fm * spec: (none) * summary: Utility for assets page. * score: 1 ### component AssetStatusBadge * file: src/cores/fm/components/AssetStatusBadge.tsx:35 * kind: component * core: fm * spec: FM-05 * summary: Renders a semantically colored badge for an asset's lifecycle status (e.g.in service, in maintenance, disposed) using the shared status-badge config. * params: * props — Component props; is the asset status to render. * score: 5 ### component AssetTable * file: src/cores/fm/components/AssetTable.tsx:63 * kind: component * core: fm * spec: FM-05 * summary: Data table of assets with tag, name, status, location, and warranty columns;rows are clickable to open the asset detail view and warranty dates arecolor-coded by expiration urgency. * params: * props — Component props; is the list of asset rows to render and toggles the loading state. * score: 5 ### component AssetWarrantyAlertsWidget * file: src/cores/fm/components/AssetWarrantyAlertsWidget.tsx:32 * kind: component * core: fm * spec: FM-05 * summary: Dashboard card listing assets with warranties or service contracts expiringsoon, grouped by urgency, with click-through to each asset. * params: * props — Component props; scopes the warranty-alert query to a tenant. * score: 5 ### component AssignDriverDialog * file: src/cores/fm/components/fleet/AssignDriverDialog.tsx:48 * kind: component * core: fm * spec: (none) * summary: Modal dialog that lets the user assign or remove a driver for a vehicle.Renders a select listing active drivers plus an "Unassigned" option, and provides Cancel and Save actions.When opened the selection resets to the current driver; saving submits the selected driver for the given vehicle and closes the dialog on success.Accessibility: the select is labeled with a visible label and the dialog uses semantic dialog components to support keyboard and screen reader navigation. * params: * props — Component props - open: Whether the dialog is visible - onOpenChange: Callback invoked with the new open state (use to close the dialog) - vehicleId: ID of the vehicle to update - currentDriverId: ID of the currently assigned driver, or if unassigned * returns: The dialog element for assigning a driver to a vehicle * example: | AssignDriverDialog open=isDialogOpen onOpenChange=setIsDialogOpen vehicleId="vehicle\_123" currentDriverId="driver\_456"/ * score: 4 ### component ChangeVehicleStatusDialog * file: src/cores/fm/components/fleet/ChangeVehicleStatusDialog.tsx:46 * kind: component * core: fm * spec: (none) * summary: Displays a dialog that lets the user change a vehicle's status and optionally provide notes.The dialog initializes its status field from , prevents submitting when the status is unchanged, and closes on a successful update. * params: * open — Whether the dialog is visible. * onOpenChange — Callback invoked with the new open state; called with to close the dialog after a successful update or when the user cancels. * vehicleId — Identifier of the vehicle to update. * currentStatus — The vehicle's current status; used to initialize the status field and to disable submitting unchanged status. * returns: A JSX element rendering the change-status dialog. * example: | ChangeVehicleStatusDialog open=isDialogOpen onOpenChange=setIsDialogOpen vehicleId="vehicle-123" currentStatus="in\_service"/Accessibility considerations:- Form controls are labeled ( components reference the attributes on the select and textarea).- The underlying Dialog primitive should manage focus on open/close to maintain accessibility. * score: 4 ### component DepreciationReportPage * file: src/cores/fm/pages/DepreciationReportPage.tsx:38 * kind: component * core: fm * spec: (none) * summary: Utility for depreciation report page. * score: 1 ### component FleetAnalyticsPage * file: src/cores/fm/pages/FleetAnalyticsPage.tsx:55 * kind: component * core: fm * spec: (none) * summary: Fleet Analytics page displaying fleet KPIs, trend charts, and a per-vehicle comparison table.Renders a period selector to control the analytics timeframe, a row of KPI cards (total miles,total fuel cost, average MPG, cost per mile, total trips), two trend charts (mileage and fuel cost),and a vehicle comparison table populated from per-vehicle aggregated stats.The page derives organization context to drive data fetching and shows skeleton placeholders whiledata is loading. Selecting a different period refetches trend and vehicle stats.Accessibility:- Period selector is keyboard and screen-reader accessible via the Select component.- Chart and table components should include appropriate aria labels and table semantics (delegated to the respective chart/table components). * example: | FleetAnalyticsPage / * score: 5 ### component FleetDashboardPage * file: src/cores/fm/pages/FleetDashboardPage.tsx:37 * kind: component * core: fm * spec: (none) * summary: Renders the Fleet Management dashboard for the current organization, showing summary cards, expiration alerts, charts, and quick actions.The component fetches fleet analytics and organization context to populate stat cards, expiration warnings, vehicle status and fuel distribution charts, and a compact fleet summary. * example: | FleetDashboardPage /Accessibility considerations:- Action buttons include visible text labels and icons for screen readers.- Charts and data visualizations should provide accessible alternatives or descriptions (ensure chart components supply appropriate ARIA attributes or captions). * score: 5 ### component FleetDriverDetailPage * file: src/cores/fm/pages/FleetDriverDetailPage.tsx:62 * kind: component * core: fm * spec: (none) * summary: Page displaying a comprehensive detail view for a single fleet driver, including contact info,license/CDL details, assigned vehicles, recent trips, status controls, expiration alerts, notes,quick stats, and edit/delete workflows.Renders loading and error states, computes expiration alerts for license/CDL, and coordinatesmutations for toggling activity and soft-deleting the driver. Uses URL param to load the driver.Accessibility:- Interactive controls (buttons, tabs, dialogs) expose visible labels and follow expected keyboard focus/order.- Dialogs provide descriptive titles and confirmations for destructive actions. * params: * props — This component does not accept props; it reads the driver id from the current route. * returns: The React element for the Fleet Driver detail page. * example: | // Used directly in a routeRoute path="/fm/fleet/drivers/:id" element=FleetDriverDetailPage / / * score: 4 ### component FleetDriverFormDialog * file: src/cores/fm/components/FleetDriverFormDialog.tsx:85 * kind: component * core: fm * spec: (none) * summary: Renders a tabbed dialog for creating or editing a fleet driver record.Presents three tabs (Personal Info, License, CDL) with validated form inputs,optional linking to an organization user, and controls to create or update a driver. * params: * props — Component props - open: Whether the dialog is visible - onOpenChange: Callback invoked with the new open state - driver: Optional existing driver to edit; when provided the form is pre-filled * example: | FleetDriverFormDialog open=open onOpenChange=setOpen /Accessibility: form fields include labels and semantic inputs; ensure the surroundingDialog component manages focus trapping and announces the dialog when opened. * score: 4 ### component FleetFuelCostChart * file: src/cores/fm/components/analytics/FleetFuelCostChart.tsx:39 * kind: component * core: fm * spec: (none) * summary: Render a card displaying a fuel cost trend as a responsive bar chart.Shows a centered loading message when is true. When not loading,displays a placeholder if no data points have ; otherwiserenders a responsive BarChart of values over the provided s.Accessibility: chart elements include axis labels and a tooltip for value details;ensure surrounding UI provides sufficient contrast and keyboard focus handling if required. * params: * props — Component props - data: Array of data points to plot. Each point should include a (x-axis) and (numeric value). - isLoading: Optional flag to show the loading state. * returns: A Card element containing the loading state, an empty-data placeholder, or the rendered fuel-cost bar chart. * example: | FleetFuelCostChart data=\[ label: 'Jan', fuelCost: 1200 , label: 'Feb', fuelCost: 950 ] isLoading=false/ * score: 4 ### component FleetFuelLogFormDialog * file: src/cores/fm/components/FleetFuelLogFormDialog.tsx:85 * kind: component * core: fm * spec: (none) * summary: Modal dialog for logging a fleet fuel purchase with validation, live price-per-gallon calculation, and optional pre-populated fields.Renders a form that captures vehicle, driver, purchase date, fuel type, gallons, total cost, odometer reading, station info, receipt number, and notes. Calculates and displays price per gallon when both gallons and total cost are provided. Submits the validated data via the fleet fuel mutation and closes the dialog on success. - open: Whether the dialog is open. - onOpenChange: Callback invoked with the new open state when the dialog should be opened or closed. - vehicleId: Optional preselected vehicle ID; when provided the vehicle field is fixed to this value and the vehicle list is not fetched. - driverId: Optional preselected driver ID used to initialize the driver field. - fuelType: Optional preselected fuel type used to initialize and optionally disable the fuel type field. - currentOdometer: Optional current odometer value used as the initial odometer reading placeholder/value.Accessibility considerations:- All inputs include labels and validation messages.- Date, select, and numeric controls use native input types where appropriate to improve screen reader and keyboard support. * returns: The FleetFuelLogFormDialog React element. * example: | FleetFuelLogFormDialog open=isDialogOpen onOpenChange=(open) = setIsDialogOpen(open) vehicleId="vehicle-123" driverId="driver-456" fuelType="diesel" currentOdometer=45213/ * score: 5 ### component FleetFuelLogsPage * file: src/cores/fm/pages/FleetFuelLogsPage.tsx:77 * kind: component * core: fm * spec: (none) * summary: Fleet Fuel Logs page: view, filter, paginate, and add fleet fuel log records.Renders a header with actions, summary cards (total cost, gallons, avg MPG), an optional filter panel, a responsive list of fuel logs (table on desktop, cards on mobile), error and loading states, client-side pagination, and a dialog to add a new fuel log.Accessibility considerations:- Interactive controls (filters, pagination, dialog trigger) are keyboard accessible and provide visible focus states.- Tables include semantic headers; mobile cards present the same data in a stacked layout for screen readers.- Ensure aria labels are provided by consuming UI primitives where needed (e.g., dialog, tooltips, selects). * params: * props — Component props (none currently) * example: | FleetFuelLogsPage / * score: 4 ### component FleetMaintenanceFormDialog * file: src/cores/fm/components/FleetMaintenanceFormDialog.tsx:107 * kind: component * core: fm * spec: (none) * summary: Modal form to create or edit a fleet maintenance schedule.Renders a dialog with fields for vehicle selection, schedule name and description,trigger type (mileage, time, or both), conditional mileage/time settings (interval and next-due),active toggle, and notes. When creating, next-due values are auto-calculated from the providedintervals and current odometer; when editing, existing schedule values are populated and auto-calculation is disabled. - open: Whether the dialog is open - onOpenChange: Callback invoked with the new open state when the dialog should open/close - vehicleId: Optional preselected vehicle id (locks vehicle selection when provided) - schedule: Optional existing schedule to edit; presence switches the form into edit mode - currentOdometer: Optional current odometer used to auto-calculate next due odometer when creating * example: | FleetMaintenanceFormDialog open=isDialogOpen onOpenChange=(v) = setIsDialogOpen(v) vehicleId="vehicle\_123" currentOdometer=45200/Accessibility notes:- The component uses a modal Dialog component that traps focus while open and returns focus when closed.- Form fields include labels and descriptive text for screen readers; ensure the surrounding Dialog implementation exposes appropriate ARIA roles. * score: 5 ### component FleetMaintenancePage * file: src/cores/fm/pages/FleetMaintenancePage.tsx:41 * kind: component * core: fm * spec: (none) * summary: Utility for fleet maintenance page. * score: 1 ### component FleetMileageTrendChart * file: src/cores/fm/components/analytics/FleetMileageTrendChart.tsx:36 * kind: component * core: fm * spec: (none) * summary: Renders an area chart showing fleet mileage trends with loading and empty states.Displays a card titled "Mileage Trend". While loading, shows a centered loading message.If no data points have mileage 0, shows a centered "No mileage data available" message.Otherwise renders a responsive area chart with gradient fill, gridlines, formatted Y axis(values ≥ 1000 shown as "1k"), and a tooltip showing mileage formatted as "X miles". * params: * props — Component props - data: Array of trend data points; each item must include (x-axis) and (numeric y value) - isLoading: When true, the component shows a loading state instead of the chart * example: | FleetMileageTrendChart data=\[ label: 'Jan', mileage: 1200 , label: 'Feb', mileage: 900 ] /Accessibility considerations:- All user-facing states (loading, no-data, and the chart title) are rendered as text so assistive technologies receive the current state. * score: 4 ### component FleetReservationFormDialog * file: src/cores/fm/components/FleetReservationFormDialog.tsx:44 * kind: component * core: fm * spec: (none) * summary: Utility for fleet reservation form dialog. * score: 1 ### component FleetReservationsPage * file: src/cores/fm/pages/FleetReservationsPage.tsx:25 * kind: component * core: fm * spec: (none) * summary: Utility for fleet reservations page. * score: 1 ### component FleetTripFormDialog * file: src/cores/fm/components/FleetTripFormDialog.tsx:98 * kind: component * core: fm * spec: (none) * summary: Dialog form for logging a vehicle trip and computing mileage and cost from odometer readings.Presents a controlled dialog with fields for vehicle, driver, date, trip type, locations, purpose,start/end odometer, mileage rate, and notes. When both odometers are provided and valid, itdisplays calculated miles and trip cost. Submits trip data via the fleet trip mutation and closesthe dialog on success. The form can be pre-seeded with a selected vehicle, driver, and current odometer,and resets to sensible defaults each time the dialog opens. - open: Controls whether the dialog is visible. - onOpenChange: Callback invoked when the dialog open state should change (receives the new open boolean). - vehicleId: Optional preselected vehicle id; when provided the vehicle selector is disabled and shows the selected vehicle. - driverId: Optional preselected driver id. - currentOdometer: Optional current odometer value used to prefill the start odometer. * example: | FleetTripFormDialog open=isDialogOpen onOpenChange=(open) = setDialogOpen(open) vehicleId="vehicle\_123" driverId="driver\_456" currentOdometer=10234/Accessibility:- Form controls are labeled and grouped; ensure the surrounding app provides keyboard and focus management for dialogs. * score: 5 ### component FleetVehicleComparisonTable * file: src/cores/fm/components/analytics/FleetVehicleComparisonTable.tsx:131 * kind: component * core: fm * spec: (none) * summary: Renders a card-based comparison table of vehicle performance metrics with client-side sorting and row navigation.Displays miles, fuel cost, average MPG, cost per mile, and trip count for each vehicle. Supports sorting byany numeric column, highlights the best MPG and highest cost-per-mile with badges, and handles loading and empty states. * params: * props — Component props - data: Array of vehicle rows to display; each item must conform to - isLoading: When true, shows a skeleton loading state instead of the table * example: | FleetVehicleComparisonTable data=\[ id: '1', vehicleNumber: '42', make: 'Ford', model: 'F-150', year: 2020, totalMiles: 12000, totalFuelCost: 1500, avgMpg: 18.5, costPerMile: 0.125, tripCount: 85 ] isLoading=false/Accessibility:- Table headers for sortable columns are interactive and indicate the active sort field.- Each table row is an interactive element that navigates to /fm/fleet/vehicles/vehicle.id when activated. * score: 4 ### component FleetVehicleDetailPage * file: src/cores/fm/pages/FleetVehicleDetailPage.tsx:50 * kind: component * core: fm * spec: (none) * summary: Utility for fleet vehicle detail page. * score: 1 ### component FleetVehicleFormDialog * file: src/cores/fm/components/FleetVehicleFormDialog.tsx:101 * kind: component * core: fm * spec: (none) * summary: Modal dialog with a multi-tab form for creating or editing a fleet vehicle.Renders a tabbed form (Basic Info, Registration, Assignment, Other) backed by react-hook-formand validated with the vehicleFormSchema. When submitted the form calls the providedcreate or update mutation and closes the dialog on success.Accessibility notes:- Dialog uses the app's Dialog component which manages focus trapping and ARIA attributes.- Form controls include visible labels and FormMessage placeholders for validation feedback. - open: Whether the dialog is open - onOpenChange: Callback invoked with the new open state (pass false to close) - vehicle: Existing vehicle to edit; omit or pass null to open the form in create mode * example: | FleetVehicleFormDialog open=isDialogOpen onOpenChange=(open) = setIsDialogOpen(open) vehicle=selectedVehicle // or null to add a new vehicle/ * score: 5 ### component FleetVehiclesPage * file: src/cores/fm/pages/FleetVehiclesPage.tsx:44 * kind: component * core: fm * spec: (none) * summary: Utility for fleet vehicles page. * score: 1 ### component FMOverview * file: src/cores/fm/pages/FMOverview\.tsx:21 * kind: component * core: fm * spec: (none) * summary: Utility for fmoverview. * score: 1 ### component FMSettingsForm * file: src/cores/fm/components/FMSettingsForm.tsx:44 * kind: component * core: fm * spec: (none) * summary: Utility for fmsettings form. * score: 1 ### component FMSettingsPage * file: src/cores/fm/pages/FMSettingsPage.tsx:23 * kind: component * core: fm * spec: (none) * summary: Utility for fmsettings page. * score: 1 ### component FuelTypeChart * file: src/cores/fm/components/dashboard/FuelTypeChart.tsx:41 * kind: component * core: fm * spec: (none) * summary: Visualizes vehicle counts per fuel type as a vertical bar chart.The component converts the provided mapping of fuel types to counts into chart entries,omitting entries with values less than or equal to zero. When no valid entries remain,it renders a centered placeholder message instead of a chart.Accessibility: Y-axis labels expose fuel type names for screen readers and the tooltipformats numeric values with the label "Vehicles". * params: * props — Component props - data: Partial mapping from to vehicle count; entries with values less than or equal to zero are ignored * returns: A React element containing the fuel-type vertical bar chart or a centered "No fuel data available" placeholder when no data is present. * example: | FuelTypeChart data= gasoline: 12, diesel: 5, electric: 3 / * score: 4 ### component InspectionsPage * file: src/cores/fm/pages/InspectionsPage.tsx:8 * kind: component * core: fm * spec: (none) * summary: Utility for inspections page. * score: 1 ### component InventoryActionMenu * file: src/cores/fm/components/InventoryActionMenu.tsx:24 * kind: component * core: fm * spec: (none) * summary: Utility for inventory action menu. * score: 1 ### component InventoryCategoryBadge * file: src/cores/fm/components/InventoryCategoryBadge.tsx:20 * kind: component * core: fm * spec: (none) * summary: Utility for inventory category badge. * score: 1 ### component InventoryDashboardWidget * file: src/cores/fm/components/dashboard/InventoryDashboardWidget.tsx:23 * kind: component * core: fm * spec: FM-02 * summary: Overview dashboard card for the inventory module, surfacing total stockvalue plus low-stock and out-of-stock counts for the current organization. * params: * props — Component props; this widget takes no props and reads inventory stats for the current organization from context. * score: 5 ### component InventoryDetailPage * file: src/cores/fm/pages/InventoryDetailPage.tsx:35 * kind: component * core: fm * spec: (none) * summary: Utility for inventory detail page. * score: 1 ### component InventoryItemFormDialog * file: src/cores/fm/components/InventoryItemFormDialog.tsx:62 * kind: component * core: fm * spec: (none) * summary: Utility for inventory item form dialog. * score: 1 ### component InventoryItemSelector * file: src/cores/fm/components/InventoryItemSelector.tsx:24 * kind: component * core: fm * spec: (none) * summary: Utility for inventory item selector. * score: 1 ### component InventoryLocationFormDialog * file: src/cores/fm/components/InventoryLocationFormDialog.tsx:39 * kind: component * core: fm * spec: (none) * summary: Utility for inventory location form dialog. * score: 1 ### component InventoryLocationSelector * file: src/cores/fm/components/InventoryLocationSelector.tsx:25 * kind: component * core: fm * spec: (none) * summary: Utility for inventory location selector. * score: 1 ### component InventoryLocationsPage * file: src/cores/fm/pages/InventoryLocationsPage.tsx:22 * kind: component * core: fm * spec: (none) * summary: Utility for inventory locations page. * score: 1 ### component InventoryLocationTable * file: src/cores/fm/components/InventoryLocationTable.tsx:24 * kind: component * core: fm * spec: (none) * summary: Utility for inventory location table. * score: 1 ### component InventoryPage * file: src/cores/fm/pages/InventoryPage.tsx:27 * kind: component * core: fm * spec: (none) * summary: Utility for inventory page. * score: 1 ### component InventoryTable * file: src/cores/fm/components/InventoryTable.tsx:29 * kind: component * core: fm * spec: (none) * summary: Utility for inventory table. * score: 1 ### component InventoryTransactionList * file: src/cores/fm/components/InventoryTransactionList.tsx:31 * kind: component * core: fm * spec: (none) * summary: Utility for inventory transaction list. * score: 1 ### component InventoryTransactionTypeBadge * file: src/cores/fm/components/InventoryTransactionTypeBadge.tsx:15 * kind: component * core: fm * spec: (none) * summary: Utility for inventory transaction type badge. * score: 1 ### component LinkWorkOrderToAssetDialog * file: src/cores/fm/components/LinkWorkOrderToAssetDialog.tsx:32 * kind: component * core: fm * spec: (none) * summary: Utility for link work order to asset dialog. * score: 1 ### component MaintenanceCostReportPage * file: src/cores/fm/pages/MaintenanceCostReportPage.tsx:44 * kind: component * core: fm * spec: (none) * summary: Utility for maintenance cost report page. * score: 1 ### component PMAssetTypeBadge * file: src/cores/fm/components/PMAssetTypeBadge.tsx:31 * kind: component * core: fm * spec: (none) * summary: Utility for pmasset type badge. * score: 1 ### component PMChecklistItemsEditor * file: src/cores/fm/components/PMChecklistItemsEditor.tsx:36 * kind: component * core: fm * spec: (none) * summary: Utility for pmchecklist items editor. * score: 1 ### component PMCompletionHistory * file: src/cores/fm/components/PMCompletionHistory.tsx:21 * kind: component * core: fm * spec: (none) * summary: Utility for pmcompletion history. * score: 1 ### component PMComplianceDashboard * file: src/cores/fm/components/PMComplianceDashboard.tsx:17 * kind: component * core: fm * spec: (none) * summary: Utility for pmcompliance dashboard. * score: 1 ### component PMDashboardWidget * file: src/cores/fm/components/PMDashboardWidget.tsx:17 * kind: component * core: fm * spec: (none) * summary: Utility for pmdashboard widget. * score: 1 ### component PMFrequencyBadge * file: src/cores/fm/components/PMFrequencyBadge.tsx:27 * kind: component * core: fm * spec: (none) * summary: Utility for pmfrequency badge. * score: 1 ### component PMScheduleDetailPage * file: src/cores/fm/pages/PMScheduleDetailPage.tsx:25 * kind: component * core: fm * spec: (none) * summary: Utility for pmschedule detail page. * score: 1 ### component PMScheduleFormDialog * file: src/cores/fm/components/PMScheduleFormDialog.tsx:44 * kind: component * core: fm * spec: (none) * summary: Utility for pmschedule form dialog. * score: 1 ### component PMSchedulesPage * file: src/cores/fm/pages/PMSchedulesPage.tsx:21 * kind: component * core: fm * spec: (none) * summary: Utility for pmschedules page. * score: 1 ### component PMScheduleStatusBadge * file: src/cores/fm/components/PMScheduleStatusBadge.tsx:26 * kind: component * core: fm * spec: (none) * summary: Utility for pmschedule status badge. * score: 1 ### component PMScheduleTable * file: src/cores/fm/components/PMScheduleTable.tsx:23 * kind: component * core: fm * spec: (none) * summary: Utility for pmschedule table. * score: 1 ### component PMTemplateDetailPage * file: src/cores/fm/pages/PMTemplateDetailPage.tsx:23 * kind: component * core: fm * spec: (none) * summary: Utility for pmtemplate detail page. * score: 1 ### component PMTemplateFormDialog * file: src/cores/fm/components/PMTemplateFormDialog.tsx:67 * kind: component * core: fm * spec: (none) * summary: Utility for pmtemplate form dialog. * score: 1 ### component PMTemplateMaterialsEditor * file: src/cores/fm/components/PMTemplateMaterialsEditor.tsx:29 * kind: component * core: fm * spec: (none) * summary: Utility for pmtemplate materials editor. * score: 1 ### component PMTemplatesPage * file: src/cores/fm/pages/PMTemplatesPage.tsx:39 * kind: component * core: fm * spec: (none) * summary: Utility for pmtemplates page. * score: 1 ### component PMTemplateTable * file: src/cores/fm/components/PMTemplateTable.tsx:36 * kind: component * core: fm * spec: (none) * summary: Utility for pmtemplate table. * score: 1 ### component RecordAdjustmentDialog * file: src/cores/fm/components/RecordAdjustmentDialog.tsx:39 * kind: component * core: fm * spec: (none) * summary: Utility for record adjustment dialog. * score: 1 ### component RecordMileageDialog * file: src/cores/fm/components/fleet/RecordMileageDialog.tsx:48 * kind: component * core: fm * spec: (none) * summary: Modal dialog for recording a vehicle's odometer reading with optional notes.Initializes the input to , validates the new reading is greater thanor equal to the current reading, and submits the record via the fleet mileage mutation. - open: Whether the dialog is open. - onOpenChange: Callback invoked with the new open state; call with to close the dialog. - vehicleId: Identifier of the vehicle to record the reading for. - currentOdometer: Current odometer reading used to initialize and validate the input. * returns: The dialog React element for recording mileage. * example: | RecordMileageDialog open=isDialogOpen onOpenChange=(open) = setDialogOpen(open) vehicleId="vehicle-123" currentOdometer=12456/Accessibility:- Uses labeled form controls ( with / / ) to ensure proper association.- The numeric input enforces a equal to to communicate the valid range to assistive tech. * score: 5 ### component RecordPurchaseDialog * file: src/cores/fm/components/RecordPurchaseDialog.tsx:36 * kind: component * core: fm * spec: (none) * summary: Utility for record purchase dialog. * score: 1 ### component RecordTransferDialog * file: src/cores/fm/components/RecordTransferDialog.tsx:42 * kind: component * core: fm * spec: (none) * summary: Utility for record transfer dialog. * score: 1 ### component RecordUsageDialog * file: src/cores/fm/components/RecordUsageDialog.tsx:40 * kind: component * core: fm * spec: (none) * summary: Utility for record usage dialog. * score: 1 ### component VehicleStatusChart * file: src/cores/fm/components/dashboard/VehicleStatusChart.tsx:39 * kind: component * core: fm * spec: (none) * summary: Renders a donut chart showing the distribution of vehicles by status.The component converts the provided status counts into chart entries, filters outzero or missing counts, and displays a colored pie with a legend and tooltip.If no data is available it displays a centered "No vehicle data available" message.Accessibility: the chart uses standard Recharts components which render SVG elements;ensure surrounding context provides an accessible heading or label when used in a page. * params: * props — Component props - data: Partial mapping of vehicle statuses to their counts; statuses with values less than or equal to 0 are ignored * example: | VehicleStatusChart data= active: 12, maintenance: 3, retired: 0, disposed: 1 / * score: 4 ### component VendorCategoryBadge * file: src/cores/fm/components/VendorCategoryBadge.tsx:18 * kind: component * core: fm * spec: (none) * summary: Utility for vendor category badge. * score: 1 ### component VendorCertificationFormDialog * file: src/cores/fm/components/VendorCertificationFormDialog.tsx:47 * kind: component * core: fm * spec: (none) * summary: Utility for vendor certification form dialog. * score: 1 ### component VendorCertificationsList * file: src/cores/fm/components/VendorCertificationsList.tsx:26 * kind: component * core: fm * spec: (none) * summary: Utility for vendor certifications list. * score: 1 ### component VendorDashboardWidget * file: src/cores/fm/components/dashboard/VendorDashboardWidget.tsx:15 * kind: component * core: fm * spec: (none) * summary: Utility for vendor dashboard widget. * score: 1 ### component VendorDetailPage * file: src/cores/fm/pages/VendorDetailPage.tsx:29 * kind: component * core: fm * spec: (none) * summary: Utility for vendor detail page. * score: 1 ### component VendorFormDialog * file: src/cores/fm/components/VendorFormDialog.tsx:59 * kind: component * core: fm * spec: (none) * summary: Utility for vendor form dialog. * score: 1 ### component VendorPerformanceWidget * file: src/cores/fm/components/VendorPerformanceWidget.tsx:17 * kind: component * core: fm * spec: (none) * summary: Utility for vendor performance widget. * score: 1 ### component VendorSelector * file: src/cores/fm/components/VendorSelector.tsx:28 * kind: component * core: fm * spec: (none) * summary: Utility for vendor selector. * score: 1 ### component VendorsPage * file: src/cores/fm/pages/VendorsPage.tsx:21 * kind: component * core: fm * spec: (none) * summary: Utility for vendors page. * score: 1 ### component VendorStatusBadge * file: src/cores/fm/components/VendorStatusBadge.tsx:17 * kind: component * core: fm * spec: (none) * summary: Utility for vendor status badge. * score: 1 ### component VendorTable * file: src/cores/fm/components/VendorTable.tsx:36 * kind: component * core: fm * spec: (none) * summary: Utility for vendor table. * score: 1 ### component VendorWorkOrdersList * file: src/cores/fm/components/VendorWorkOrdersList.tsx:38 * kind: component * core: fm * spec: (none) * summary: Utility for vendor work orders list. * score: 1 ### component WorkOrderAssignDialog * file: src/cores/fm/components/WorkOrderAssignDialog.tsx:32 * kind: component * core: fm * spec: (none) * summary: Utility for work order assign dialog. * score: 1 ### component WorkOrderAttachmentsList * file: src/cores/fm/components/WorkOrderAttachmentsList.tsx:32 * kind: component * core: fm * spec: (none) * summary: Utility for work order attachments list. * score: 1 ### component WorkOrderCompleteDialog * file: src/cores/fm/components/WorkOrderCompleteDialog.tsx:35 * kind: component * core: fm * spec: (none) * summary: Utility for work order complete dialog. * score: 1 ### component WorkOrderDashboardWidget * file: src/cores/fm/components/dashboard/WorkOrderDashboardWidget.tsx:14 * kind: component * core: fm * spec: (none) * summary: Utility for work order dashboard widget. * score: 1 ### component WorkOrderDetailPage * file: src/cores/fm/pages/WorkOrderDetailPage.tsx:28 * kind: component * core: fm * spec: (none) * summary: Utility for work order detail page. * score: 1 ### component WorkOrderFormDialog * file: src/cores/fm/components/WorkOrderFormDialog.tsx:60 * kind: component * core: fm * spec: (none) * summary: Utility for work order form dialog. * score: 1 ### component WorkOrderMaterialsList * file: src/cores/fm/components/WorkOrderMaterialsList.tsx:20 * kind: component * core: fm * spec: (none) * summary: Utility for work order materials list. * score: 1 ### component WorkOrderPriorityBadge * file: src/cores/fm/components/WorkOrderPriorityBadge.tsx:27 * kind: component * core: fm * spec: (none) * summary: Utility for work order priority badge. * score: 1 ### component WorkOrdersPage * file: src/cores/fm/pages/WorkOrdersPage.tsx:24 * kind: component * core: fm * spec: (none) * summary: Utility for work orders page. * score: 1 ### component WorkOrderStatusBadge * file: src/cores/fm/components/WorkOrderStatusBadge.tsx:32 * kind: component * core: fm * spec: (none) * summary: Utility for work order status badge. * score: 1 ### component WorkOrderTable * file: src/cores/fm/components/WorkOrderTable.tsx:32 * kind: component * core: fm * spec: (none) * summary: Utility for work order table. * score: 1 ## Functions & utilities ### function buildInspectionReportContent * file: src/cores/fm/templates/inspection-report-content.ts:15 * kind: function * core: fm * spec: (none) * summary: Provides build inspection report content functionality. * score: 4 ### function buildWorkOrderReportContent * file: src/cores/fm/templates/work-order-report-content.ts:20 * kind: function * core: fm * spec: (none) * summary: Provides build work order report content functionality. * score: 4 ### function calculateDaysFromDue * file: src/cores/fm/utils/pmValidation.ts:146 * kind: function * core: fm * spec: (none) * summary: Calculate days until or past due * score: 4 ### function calculateNewAverageCost * file: src/cores/fm/utils/inventoryValidation.ts:145 * kind: function * core: fm * spec: (none) * summary: Calculate new average cost after a purchase * score: 4 ### function calculateNextDueDate * file: src/cores/fm/utils/pmValidation.ts:98 * kind: function * core: fm * spec: (none) * summary: Calculate next due date based on last completion and frequency * score: 4 ### function calculateTotalCost * file: src/cores/fm/utils/inventoryValidation.ts:138 * kind: function * core: fm * spec: (none) * summary: Calculate total cost from quantity and unit cost * score: 4 ### function canAssignVendorToWorkOrder * file: src/cores/fm/utils/vendorValidation.ts:153 * kind: function * core: fm * spec: (none) * summary: Check if a vendor can be assigned to a work order.Validates: active, approved, has valid certifications, serves the site. * score: 4 ### function canAssignWorkOrder * file: src/cores/fm/utils/workOrderValidation.ts:46 * kind: function * core: fm * spec: (none) * summary: Check if a work order can be assigned (not in terminal state). * score: 4 ### function canRecordUsage * file: src/cores/fm/utils/inventoryValidation.ts:117 * kind: function * core: fm * spec: (none) * summary: Check if usage can be recorded without going negative * score: 4 ### function CertificationStatusBadge * file: src/cores/fm/components/CertificationStatusBadge.tsx:28 * kind: function * core: fm * spec: FM-03 * summary: Renders a semantically colored badge for a vendor certification's status(valid, expiring soon, expired, or no expiration), showing the daysremaining when a certification is expiring soon. * params: * props — Component props; is the certification status and is the optional countdown shown for expiring certs. * score: 5 ### function comparePriorities * file: src/cores/fm/utils/workOrderValidation.ts:96 * kind: function * core: fm * spec: (none) * summary: Compare two priorities (for sorting).Returns negative if a b, positive if a b, 0 if equal. * score: 4 ### function exportAssetRegisterToCSV * file: src/cores/fm/utils/assetReportExport.ts:134 * kind: function * core: fm * spec: (none) * summary: Export Asset Register to CSV * score: 1 ### function exportAssetRegisterToExcel * file: src/cores/fm/utils/assetReportExport.ts:76 * kind: function * core: fm * spec: (none) * summary: Export Asset Register to ExcelExcelJS is dynamically imported to avoid bundling \~937KB for users who don't export. * score: 4 ### function exportDepreciationReportToCSV * file: src/cores/fm/utils/assetReportExport.ts:268 * kind: function * core: fm * spec: (none) * summary: Export Depreciation Report to CSV * score: 1 ### function exportDepreciationReportToExcel * file: src/cores/fm/utils/assetReportExport.ts:169 * kind: function * core: fm * spec: (none) * summary: Export Depreciation Report to ExcelExcelJS is dynamically imported to avoid bundling \~937KB for users who don't export. * score: 4 ### function exportMaintenanceCostToCSV * file: src/cores/fm/utils/assetReportExport.ts:303 * kind: function * core: fm * spec: (none) * summary: Export Maintenance Cost Report to CSV * score: 4 ### function exportMaintenanceCostToExcel * file: src/cores/fm/utils/assetReportExport.ts:222 * kind: function * core: fm * spec: (none) * summary: Export Maintenance Cost Report to ExcelExcelJS is dynamically imported to avoid bundling \~937KB for users who don't export. * score: 4 ### function formatDuration * file: src/cores/fm/utils/pmValidation.ts:271 * kind: function * core: fm * spec: (none) * summary: Format duration for display * score: 1 ### function formatTaxId * file: src/cores/fm/utils/vendorValidation.ts:37 * kind: function * core: fm * spec: (none) * summary: Format a tax ID with proper dashes as the user types. * score: 4 ### function formatVendorNumber * file: src/cores/fm/utils/vendorValidation.ts:203 * kind: function * core: fm * spec: (none) * summary: Format vendor number for display. * score: 4 ### function getAssetTypeOptions * file: src/cores/fm/utils/pmValidation.ts:68 * kind: function * core: fm * spec: (none) * summary: Get asset type options for select inputs * score: 4 ### function getCertificationAlertLevel * file: src/cores/fm/utils/vendorValidation.ts:103 * kind: function * core: fm * spec: (none) * summary: Get alert level for certification based on days until expiration. * score: 4 ### function getCertificationStatus * file: src/cores/fm/utils/vendorValidation.ts:90 * kind: function * core: fm * spec: (none) * summary: Get certification status label based on expiration. * params: * cert — certification view row (expiry flags + days-until-expiration) * expiringSoonDays — org-configurable "expiring soon" window in days; defaults to 90 (the historical hardcoded value). Sourced from (#1388). * score: 4 ### function getCertificationStatusLabel * file: src/cores/fm/utils/vendorValidation.ts:117 * kind: function * core: fm * spec: (none) * summary: Get human-readable status label for certification. * score: 4 ### function getComplianceTypeOptions * file: src/cores/fm/utils/pmValidation.ts:88 * kind: function * core: fm * spec: (none) * summary: Get compliance type options for select inputs * score: 4 ### function getDaysUntilDue * file: src/cores/fm/utils/workOrderValidation.ts:116 * kind: function * core: fm * spec: (none) * summary: Get days until due (negative if overdue). * score: 4 ### function getFrequencyOptions * file: src/cores/fm/utils/pmValidation.ts:58 * kind: function * core: fm * spec: (none) * summary: Get frequency options for select inputs * score: 4 ### function getNextValidStatuses * file: src/cores/fm/utils/workOrderValidation.ts:39 * kind: function * core: fm * spec: (none) * summary: Get all valid next statuses from current status. * score: 4 ### function getPriorityWeight * file: src/cores/fm/utils/workOrderValidation.ts:88 * kind: function * core: fm * spec: (none) * summary: Get priority weight for sorting. * score: 4 ### function getScheduleStatusOptions * file: src/cores/fm/utils/pmValidation.ts:78 * kind: function * core: fm * spec: (none) * summary: Get schedule status options for select inputs * score: 4 ### function getScheduleUrgency * file: src/cores/fm/utils/pmValidation.ts:159 * kind: function * core: fm * spec: (none) * summary: Get urgency level based on days until due * score: 4 ### function getUrgencyBadgeVariant * file: src/cores/fm/utils/pmValidation.ts:185 * kind: function * core: fm * spec: (none) * summary: Get urgency badge variant * score: 1 ### function getUrgencyColorClass * file: src/cores/fm/utils/pmValidation.ts:169 * kind: function * core: fm * spec: (none) * summary: Get urgency color classes * score: 1 ### function isLowStock * file: src/cores/fm/utils/inventoryValidation.ts:124 * kind: function * core: fm * spec: (none) * summary: Check if an item is low on stock * score: 4 ### function isOpenStatus * file: src/cores/fm/utils/workOrderValidation.ts:60 * kind: function * core: fm * spec: (none) * summary: Check if a work order is in an active/open state. * score: 4 ### function isOutOfStock * file: src/cores/fm/utils/inventoryValidation.ts:131 * kind: function * core: fm * spec: (none) * summary: Check if an item is out of stock * score: 4 ### function isOverdue * file: src/cores/fm/utils/workOrderValidation.ts:107 * kind: function * core: fm * spec: (none) * summary: Check if a work order is overdue. * score: 4 ### function isScheduleOverdue * file: src/cores/fm/utils/pmValidation.ts:134 * kind: function * core: fm * spec: (none) * summary: Check if a PM schedule is overdue * score: 4 ### function isTerminalStatus * file: src/cores/fm/utils/workOrderValidation.ts:53 * kind: function * core: fm * spec: (none) * summary: Check if a status is terminal (no further transitions allowed). * score: 4 ### function isValidStatusTransition * file: src/cores/fm/utils/workOrderValidation.ts:31 * kind: function * core: fm * spec: (none) * summary: Check if a status transition is valid. * score: 4 ### function LowStockIndicator * file: src/cores/fm/components/LowStockIndicator.tsx:18 * kind: function * core: fm * spec: (none) * summary: Utility for low stock indicator. * score: 1 ### function maskTaxId * file: src/cores/fm/utils/vendorValidation.ts:59 * kind: function * core: fm * spec: (none) * summary: Mask a tax ID for display (show only last 4 digits for security). * score: 4 ### function requiresAction * file: src/cores/fm/utils/workOrderValidation.ts:67 * kind: function * core: fm * spec: (none) * summary: Check if a work order requires action (submitted but not assigned). * score: 4 ### function validateAdjustment * file: src/cores/fm/utils/inventoryValidation.ts:98 * kind: function * core: fm * spec: (none) * summary: Validate adjustment transaction data * score: 4 ### function validateCertificationForm * file: src/cores/fm/utils/vendorValidation.ts:269 * kind: function * core: fm * spec: (none) * summary: Validate certification form data. * score: 4 ### function validatePMScheduleForm * file: src/cores/fm/utils/pmValidation.ts:241 * kind: function * core: fm * spec: (none) * summary: Validate PM schedule form values * score: 4 ### function validatePMTemplateForm * file: src/cores/fm/utils/pmValidation.ts:203 * kind: function * core: fm * spec: (none) * summary: Validate PM template form values * score: 4 ### function validatePurchase * file: src/cores/fm/utils/inventoryValidation.ts:33 * kind: function * core: fm * spec: (none) * summary: Validate purchase transaction data * score: 4 ### function validateTaxId * file: src/cores/fm/utils/vendorValidation.ts:18 * kind: function * core: fm * spec: (none) * summary: Validate a tax ID based on type.EIN format: XX-XXXXXXXSSN format: XXX-XX-XXXX * score: 4 ### function validateTransfer * file: src/cores/fm/utils/inventoryValidation.ts:71 * kind: function * core: fm * spec: (none) * summary: Validate transfer transaction data * score: 4 ### function validateUsage * file: src/cores/fm/utils/inventoryValidation.ts:52 * kind: function * core: fm * spec: (none) * summary: Validate usage transaction data * score: 4 ### function validateVendorForm * file: src/cores/fm/utils/vendorValidation.ts:233 * kind: function * core: fm * spec: (none) * summary: Validate vendor form data. * score: 1 ### function validateWorkOrderForm * file: src/cores/fm/utils/workOrderValidation.ts:139 * kind: function * core: fm * spec: (none) * summary: Utility for validate work order form. * score: 1 # forms — system form template reference Source: https://docs.encoreos.io/api/forms Flat per-field form template reference for AI/RAG retrieval, generated from fw_form_templates. Refresh with `npm run docs:forms:generate`. # Form Templates Reference (system defaults) ```text theme={null} form Consent for SUD Treatment Disclosure (42 CFR Part 2) compliance patient_name Patient Name text required form Consent for SUD Treatment Disclosure (42 CFR Part 2) compliance patient_dob Date of Birth date required form Consent for SUD Treatment Disclosure (42 CFR Part 2) compliance program_name Program/Facility Name text required form Consent for SUD Treatment Disclosure (42 CFR Part 2) compliance purpose_of_disclosure Purpose of Disclosure select required form Consent for SUD Treatment Disclosure (42 CFR Part 2) compliance recipient_name Information Will Be Disclosed To text required form Consent for SUD Treatment Disclosure (42 CFR Part 2) compliance recipient_address Recipient Address textarea required form Consent for SUD Treatment Disclosure (42 CFR Part 2) compliance information_to_disclose Information to be Disclosed checkbox_group required form Consent for SUD Treatment Disclosure (42 CFR Part 2) compliance disclosure_start_date Consent Effective Date date required form Consent for SUD Treatment Disclosure (42 CFR Part 2) compliance disclosure_end_date Consent Expiration Date date required form Consent for SUD Treatment Disclosure (42 CFR Part 2) compliance right_to_revoke I understand I may revoke this consent at any time checkbox required form Consent for SUD Treatment Disclosure (42 CFR Part 2) compliance prohibition_notice I understand this information is protected by federal law and cannot be re-disclosed without my consent checkbox required form Consent for SUD Treatment Disclosure (42 CFR Part 2) compliance voluntary_consent This consent is voluntary and I have not been conditioned on signing checkbox required form Consent for SUD Treatment Disclosure (42 CFR Part 2) compliance patient_signature Patient Signature signature required form Consent for SUD Treatment Disclosure (42 CFR Part 2) compliance signature_date Date Signed date required form Consent for SUD Treatment Disclosure (42 CFR Part 2) compliance witness_name Witness Name text form Consent for SUD Treatment Disclosure (42 CFR Part 2) compliance witness_signature Witness Signature signature form Phase Advancement Request Form operations resident_id Resident ID hidden required form Phase Advancement Request Form operations current_phase Current Phase select required form Phase Advancement Request Form operations requested_phase Requested Phase select required form Phase Advancement Request Form operations time_in_current_phase Weeks in Current Phase number required form Phase Advancement Request Form operations meeting_attendance Recovery Meetings Attended (last 30 days) number required form Phase Advancement Request Form operations employment_status Employment Status select required form Phase Advancement Request Form operations community_service_hours Community Service Hours (last 30 days) number form Phase Advancement Request Form operations ua_results_clean All UA results clean in current phase checkbox required form Phase Advancement Request Form operations house_duties_compliant Compliant with house duties checkbox required form Phase Advancement Request Form operations self_assessment Self-Assessment: Why I'm ready to advance textarea required form Phase Advancement Request Form operations goals_for_next_phase Goals for Next Phase textarea required form Phase Advancement Request Form operations challenges_addressed Challenges I've Addressed textarea form Phase Advancement Request Form operations house_manager_endorsement House Manager Endorses Advancement checkbox required form Phase Advancement Request Form operations house_manager_comments House Manager Comments textarea form Residential Intake Form onboarding full_name Full Legal Name text required form Residential Intake Form onboarding preferred_name Preferred Name text form Residential Intake Form onboarding date_of_birth Date of Birth date required form Residential Intake Form onboarding gender Gender Identity select required form Residential Intake Form onboarding phone Phone Number phone required form Residential Intake Form onboarding email Email Address email form Residential Intake Form onboarding emergency_contact_name Emergency Contact Name text required form Residential Intake Form onboarding emergency_contact_phone Emergency Contact Phone phone required form Residential Intake Form onboarding emergency_contact_relationship Relationship text required form Residential Intake Form onboarding referral_source How were you referred? select required form Residential Intake Form onboarding referral_contact Referral Contact Name text form Residential Intake Form onboarding insurance_provider Insurance Provider text form Residential Intake Form onboarding insurance_id Insurance ID text form Residential Intake Form onboarding ahcccs_id AHCCCS ID (if applicable) text form Residential Intake Form onboarding medical_conditions Current Medical Conditions textarea form Residential Intake Form onboarding current_medications Current Medications textarea form Residential Intake Form onboarding allergies Known Allergies textarea form Residential Intake Form onboarding substance_history Substance Use History (brief) textarea form Residential Intake Form onboarding sobriety_date Sobriety/Clean Date date form Residential Intake Form onboarding previous_treatment Previous Treatment Programs textarea form Residential Intake Form onboarding program_preference Preferred Program Level select required form Residential Intake Form onboarding move_in_date Requested Move-In Date date required form Residential Intake Form onboarding length_of_stay Anticipated Length of Stay select form Residential Intake Form onboarding house_rules_acknowledged I acknowledge and agree to house rules checkbox required form Residential Intake Form onboarding consent_to_treatment I consent to recovery support services checkbox required form Residential Intake Form onboarding financial_responsibility I understand my financial responsibilities checkbox required ``` # fw — Public API surface Source: https://docs.encoreos.io/api/fw Per-symbol API documentation for the fw area, generated from TSDoc blocks. Refresh with `npm run docs:api:generate`. # fw — Public API surface ## Types & interfaces ### type ActionNodeData * file: src/cores/fw/components/workflow/nodes/ActionNode.tsx:27 * kind: type * core: fw * spec: none * summary: Data payload for an action node on the workflow canvas: an optional displaylabel, the action type (from the DB enum), an optional configobject whose shape depends on the action type, and an optional human-readablesummary shown on the node. * score: 5 ### interface ActionTemplate * file: src/cores/fw/hooks/useActionTemplates.ts:41 * kind: interface * core: fw * spec: FW-03 * summary: A reusable automation action template: a named, pre-filled and that can be inserted into a rule. templates areplatform-provided and have a null ; org-specific templatescarry the owning for tenant isolation. * score: 5 ### type AIFormTemplateResponse * file: src/cores/fw/ai/templateGenerationSchemas.ts:104 * kind: type * core: fw * spec: FW-44 * summary: A complete AI-generated form template: name, description, category, tags,logical sections, section-mapped fields, optional conditional rules, and anoptional wizard/multi-step configuration. Inferred from. * score: 5 ### type AllowedActionType * file: src/cores/fw/ai/automationRuleSchemas.ts:108 * kind: type * core: fw * spec: FW-51 * summary: Action types the Copilot is permitted to suggest, derived from and aligned with the FW-03 DB enum so suggested actions can be persisted without remapping. * score: 5 ### type AllowedAIFieldType * file: src/cores/fw/ai/formBuildingSchemas.ts:40 * kind: type * core: fw * spec: FW-44 * summary: Field types the AI form builder is permitted to suggest, derived from. A constrained subset of the DB field-typeenum that deliberately excludes and per spec. * score: 5 ### type AllowedOperator * file: src/cores/fw/ai/automationRuleSchemas.ts:80 * kind: type * core: fw * spec: FW-51 * summary: Comparison operators the Copilot may use in a suggested condition, derivedfrom . Value-less operators (,) omit the comparison value. * score: 5 ### type AllowedTriggerType * file: src/cores/fw/ai/automationRuleSchemas.ts:53 * kind: type * core: fw * spec: FW-51 * summary: Trigger types the Automation Rule Copilot is permitted to suggest, derivedfrom and aligned with the FW-03 DB enum so AI output validates against the same constraints as hand-built rules. * score: 5 ### interface ApprovalHistoryEntry * file: src/cores/fw/hooks/useApprovalRequest.ts:82 * kind: interface * core: fw * spec: none * summary: A single timeline entry in an approval request's audit history: the eventtype, the actor (id and resolved name), the related step and assignment, anoptional comment, free-form event data, and a timestamp. * score: 5 ### type ApprovalNodeData * file: src/cores/fw/components/workflow/nodes/ApprovalNode.tsx:25 * kind: type * core: fw * spec: none * summary: Data payload for an approval node on the workflow canvas: the assignee(a specific user or a role), an optional timeout in hours with a fallbackaction when it elapses, and whether the approver must enter notes. * score: 5 ### interface ApprovalRequestWithDetails * file: src/cores/fw/hooks/useApprovalRequest.ts:105 * kind: interface * core: fw * spec: none * summary: A fully-hydrated approval request: tenant , the approval it runs through, what it approves (/),presentation fields (title, description, priority), submission and completionmetadata, the request payload, current status and step, optional expiry, and. Returned by . * see: * useApprovalRequest * score: 5 ### type ApprovalRoutingRule * file: src/cores/fw/hooks/useApprovalRoutingRules.ts:23 * kind: type * core: fw * spec: FW-54 * summary: A row from : a tenant-scoped rule that routes anentity type to a target approval chain when its conditions (or an associateddecision table) match, ordered by . Aliases the generated Supabase type so callers depend on a stable domain name. * see: * useApprovalRoutingRules * score: 5 ### interface AutomationAction * file: src/cores/fw/hooks/useAutomationActions.ts:34 * kind: interface * core: fw * spec: FW-03 * summary: A single action belonging to an automation rule: its id and parent, the action type, a type-specific , and the controlling sequencing within the rule. * score: 5 ### interface AutomationAnalytics * file: src/cores/fw/hooks/useAutomationAnalytics.ts:40 * kind: interface * core: fw * spec: FW-03 * summary: Aggregated performance analytics for one automation rule: identity andtenant/site scope, circuit-breaker and consecutive-failure health, executioncounts (total/successful/failed/partial) with a derived success-ratepercentage, and first/last execution timestamps. * score: 5 ### interface AutomationLog * file: src/cores/fw/hooks/useAutomationLogs.ts:32 * kind: interface * core: fw * spec: FW-03 * summary: A single automation execution log entry: the rule that ran (id + resolvedname), when it executed, its status, the execution result and trigger data,and the resolved actor who triggered it (id, name, email). * score: 5 ### interface AutomationRule * file: src/cores/fw/hooks/useAutomationRules.ts:42 * kind: interface * core: fw * spec: FW-03 * summary: A persisted automation rule: identity (name, description), how it fires( plus type-specific //), optional , lifecycle , andtenant/site scope with audit timestamps. Backs the FW-03 automation engine. * score: 5 ### type AutomationRuleSuggestion * file: src/cores/fw/ai/automationRuleSchemas.ts:259 * kind: type * core: fw * spec: FW-51 * summary: A complete automation-rule suggestion produced by the Copilot: a triggertype with its (optional, type-dependent) configuration, optional conditions,and at least one action. Inferred from ,whose enforces that config is present for triggers that requireit (, , , ). * score: 5 ### interface BranchCondition * file: src/cores/fw/components/workflow/ConditionBuilder.tsx:58 * kind: interface * core: fw * spec: FW-17 * summary: A single simple-mode branch condition: a stable id, the field to evaluate,a , the comparison value, and an optional identifying which branch edge this condition routes to. * score: 5 ### interface BranchNodeData * file: src/cores/fw/components/workflow/nodes/BranchNode.tsx:22 * kind: interface * core: fw * spec: none * summary: Data payload for a branch node on the workflow canvas: a display label, theordered list of s evaluated to choose an outgoingedge, and an optional default branch taken when no condition matches. * score: 5 ### interface BulkExportOptions * file: src/cores/fw/hooks/useBulkSubmissionPdfExport.ts:33 * kind: interface * core: fw * spec: none * summary: Options for a bulk submission PDF export: the submission ids to export(capped per request to avoid memory pressure), an optional shared letterhead,and toggles for including metadata and empty fields. * score: 5 ### interface BulkExportResult * file: src/cores/fw/hooks/useBulkSubmissionPdfExport.ts:61 * kind: interface * core: fw * spec: none * summary: Outcome of a bulk submission PDF export: overall success, the signed and of the generated bundle, how many PDFs weregenerated, and any per-submission errors encountered. * score: 5 ### type CaptchaProvider * file: src/cores/fw/components/portal/CaptchaWidget.tsx:20 * kind: type * core: fw * spec: FW-32 * summary: CAPTCHA provider supported by the public form portal widget. * score: 5 ### interface CaptchaWidgetRef * file: src/cores/fw/components/portal/CaptchaWidget.tsx:42 * kind: interface * core: fw * spec: FW-32 * summary: Imperative handle exposed by via ,letting a parent form trigger verification and reset the challenge. * score: 5 ### interface CaptureSignatureParams * file: src/cores/fw/hooks/useFormSignature.ts:24 * kind: interface * core: fw * spec: (none) * summary: Parameters for capturing a single signature * score: 2 ### type CategoryScore * file: src/cores/fw/ai/qualityScoringSchemas.ts:96 * kind: type * core: fw * spec: none * summary: The 0–100 score and brief summary for one quality category. Inferred from. * score: 5 ### type ChangeType * file: src/cores/fw/utils/templateVersionComparison.ts:13 * kind: type * core: fw * spec: (none) * summary: Change type for a diff entry * score: 1 ### interface CloneFormOptions * file: src/cores/fw/utils/formTemplateCloning.ts:259 * kind: interface * core: fw * spec: (none) * summary: Options for cloning a form from a template * score: 2 ### interface ClonePageOptions * file: src/cores/fw/utils/pageTemplateCloning.ts:239 * kind: interface * core: fw * spec: (none) * summary: Options for cloning a page from a template * score: 2 ### interface CloneResult * file: src/cores/fw/utils/templateCloning.ts:48 * kind: interface * core: fw * spec: (none) * summary: Result of cloning operation * score: 1 ### interface CloneTemplateParams * file: src/cores/fw/hooks/useTemplateClone.ts:22 * kind: interface * core: fw * spec: (none) * summary: Parameters for cloning a template * score: 2 ### interface CloneTemplateResult * file: src/cores/fw/hooks/useTemplateClone.ts:33 * kind: interface * core: fw * spec: (none) * summary: Result of a successful clone operation * score: 2 ### interface ConditionalRule * file: src/cores/fw/components/ConditionalLogicBuilder.tsx:34 * kind: interface * core: fw * spec: FW-01 * summary: A single conditional-logic rule in the form builder: an action(show/hide/require) applied to the current field when the field identifiedby matches against the optional . Value-lessoperators (, ) omit . * score: 5 ### type ConditionalSuggestion * file: src/cores/fw/ai/conditionalLogicSchemas.ts:46 * kind: type * core: fw * spec: none * summary: A single AI-suggested conditional-logic rule that maps directly onto the shape used by : which target fieldis shown/hidden/required, the source field and operator that drive it, anoptional comparison value, and a one-sentence rationale. Inferred from. * score: 5 ### type ConditionalSuggestionsResponse * file: src/cores/fw/ai/conditionalLogicSchemas.ts:84 * kind: type * core: fw * spec: none * summary: The full AI response for conditional-logic analysis: 1–10 suggested rulesplus a brief natural-language summary of the analysis. Inferred from. * score: 5 ### type ConditionOperator * file: src/cores/fw/components/workflow/ConditionBuilder.tsx:28 * kind: type * core: fw * spec: FW-17 * summary: Comparison operator available when building a branch/condition in theworkflow condition builder. Value-less operators (,) ignore the comparison value; treats thevalue as a regular expression. * score: 5 ### type ConflictResolution * file: src/cores/fw/services/scheduleConflictDetector.ts:14 * kind: type * core: fw * spec: (none) * summary: FW-26 (Workflow Scheduling) — Phase 1, Task T3: Schedule conflict detection.Pure, side-effect-free logic for: - time-overlap detection (schedules whose next runs fall within a tolerance), - circular-dependency detection in the rule → depends\_on\_rule chain, - resolution-strategy semantics (skip / delay / error).The edge function (added with the UI in T4) is a thinwrapper: it loads an org's active schedules and calls these functions. Keeping thealgorithm here keeps it unit-testable and reusable by the worker. * score: 2 ### type ConflictResolutionAction * file: src/cores/fw/services/scheduleConflictDetector.ts:110 * kind: type * core: fw * spec: (none) * summary: The action the worker should take for a conflicting run, derived from the schedule's strategy: skip it, delay-and-retry, or fail with a reason. * score: 2 ### interface CronBuilderParts * file: src/cores/fw/components/scheduling/cronBuilderUtils.ts:18 * kind: interface * core: fw * spec: (none) * summary: The guided builder's editable state — the subset of cron we expose with controls. * score: 2 ### type CronFrequency * file: src/cores/fw/components/scheduling/cronBuilderUtils.ts:15 * kind: type * core: fw * spec: (none) * summary: How often the guided builder fires. schedules are edited as raw cron. * score: 2 ### interface CronValidationResult * file: src/cores/fw/services/scheduleEvaluator.ts:34 * kind: interface * core: fw * spec: (none) * summary: Outcome of validating a cron expression: validity, an error reason when invalid, and a preview of upcoming run times when valid (for the schedule-builder UI). * score: 2 ### type DecisionTableDraft * file: src/cores/fw/hooks/useDraftDecisionTableFromNL.ts:97 * kind: type * core: fw * spec: (none) * summary: A reviewable decision-table draft produced from a natural-language policy. * score: 2 ### interface DecisionTableGridDraft * file: src/cores/fw/hooks/useDraftDecisionTableFromNL.ts:145 * kind: interface * core: fw * spec: (none) * summary: Editable props shaped for , derived from a draft. * score: 2 ### interface DelayNodeData * file: src/cores/fw/components/workflow/nodes/DelayNode.tsx:17 * kind: interface * core: fw * spec: none * summary: Data payload for a delay node on the workflow canvas: an optional label plusa duration and time unit that pause execution before continuing. * score: 5 ### interface DependencyResolutionStatus * file: src/cores/fw/utils/templateImportValidation.ts:32 * kind: interface * core: fw * spec: (none) * summary: Status of dependency resolution * score: 2 ### interface DependencyValidationDetail * file: src/cores/fw/utils/templateImportValidation.ts:43 * kind: interface * core: fw * spec: (none) * summary: Detail for each dependency * score: 1 ### interface DetailedVersionComparison * file: src/cores/fw/utils/templateVersionComparison.ts:49 * kind: interface * core: fw * spec: (none) * summary: Detailed comparison result between two versions * score: 2 ### interface DiffEntry * file: src/cores/fw/utils/templateVersionComparison.ts:18 * kind: interface * core: fw * spec: (none) * summary: Individual change in a comparison * score: 2 ### type DispatchAction * file: src/cores/fw/services/scheduleDispatchPlanner.ts:31 * kind: type * core: fw * spec: (none) * summary: What the dispatcher should do with one due schedule. * score: 2 ### interface DispatchCandidate * file: src/cores/fw/services/scheduleDispatchPlanner.ts:18 * kind: interface * core: fw * spec: (none) * summary: Minimal schedule shape the planner needs (subset of an fw\_workflow\_schedules row). * score: 2 ### interface DispatchPlan * file: src/cores/fw/services/scheduleDispatchPlanner.ts:34 * kind: interface * core: fw * spec: (none) * summary: Per-schedule plan the edge function applies (claim → maybe enqueue → re-arm). * score: 2 ### interface DryRunOptions * file: src/cores/fw/hooks/useAutomationDryRun.ts:22 * kind: interface * core: fw * spec: FW-03 * summary: Input for an automation dry run: the form to evaluate againstand an optional to scope the run to a single rule (omit to evaluateall matching rules). * score: 5 ### interface DryRunResult * file: src/cores/fw/hooks/useAutomationDryRun.ts:36 * kind: interface * core: fw * spec: FW-03 * summary: Result of an automation dry run: overall success, a markerconfirming no side effects were committed, the number of rules evaluated, andper-rule results listing which actions would have run (with simulatedoutcome or error). * see: * useAutomationDryRun * score: 5 ### type EndNodeData * file: src/cores/fw/components/workflow/nodes/EndNode.tsx:16 * kind: type * core: fw * spec: none * summary: Data payload for an end (terminal) node on the workflow canvas: an optionallabel and an optional terminal status indicating whether the run ended insuccess or failure. * score: 5 ### interface EntityMappingConfig * file: src/cores/fw/components/EntityMappingActionConfig.tsx:37 * kind: interface * core: fw * spec: FW-03 * summary: Configuration for a "map to entity" workflow action: the target entitytable, the write operation, an optional lookup field for update/upsert, andthe list of form-field → entity-column mappings (standard columns or JSONB keys). * score: 5 ### type ErrorClass * file: src/cores/fw/lib/fw-error-recovery-policy.ts:31 * kind: type * core: fw * spec: (none) * summary: Error classification result. * score: 1 ### interface EvaluationOptionsV2 * file: src/cores/fw/utils/expressionEvaluatorV2.ts:248 * kind: interface * core: fw * spec: (none) * summary: Evaluation options * score: 1 ### interface EventConsumer * file: src/cores/fw/hooks/useEventConsumers.ts:12 * kind: interface * core: fw * spec: (none) * summary: Minimal automation rule info for consumer listing. * score: 2 ### interface ExistingNodePosition * file: src/cores/fw/utils/workflowPositioning.ts:15 * kind: interface * core: fw * spec: (none) * summary: Minimal node shape needed for position calculation * score: 2 ### interface ExportOptions * file: src/cores/fw/hooks/useSubmissionExport.ts:35 * kind: interface * core: fw * spec: FW-02 * summary: Options for a submission export: the output (CSV or JSON) plusoptional filters narrowing which submissions are included — by ,, and a . * score: 5 ### interface ExtendedEntityAttribute * file: src/cores/fw/utils/mapFieldConfigToAttribute.ts:14 * kind: interface * core: fw * spec: (none) * summary: Extended EntityAttribute with additional metadata for PF-17 integration * score: 2 ### interface FormField * file: src/cores/fw/components/FormSubmissionExportDialog.tsx:47 * kind: interface * core: fw * spec: none * summary: A single field rendered into an exported form-submission PDF: its id, machinename, display label, field type, and submitted value (kept becausevalue shape varies by field type). * score: 5 ### type FormQualityScoreResponse * file: src/cores/fw/ai/qualityScoringSchemas.ts:130 * kind: type * core: fw * spec: none * summary: The full AI form-quality report: overall 0–100 score and letter grade,per-category scores for all five categories, severity-sortedrecommendations (up to 15), and an overall summary. Inferred from. * score: 5 ### interface FormSubmission * file: src/cores/fw/components/FormSubmissionExportDialog.tsx:73 * kind: interface * core: fw * spec: none * summary: A form submission prepared for PDF export: submission and form identity,optional description, submission timestamp and author, the flattened list of values, and an optional status. * score: 5 ### type FormSuggestionResponse * file: src/cores/fw/ai/formBuildingSchemas.ts:148 * kind: type * core: fw * spec: FW-44 * summary: The full AI form-building response: 1–20 suggested fields plus up to 5optional conditional rules. Inferred from . * score: 5 ### interface FormVersion * file: src/cores/fw/hooks/useFormVersions.ts:49 * kind: interface * core: fw * spec: FW-01 * summary: An immutable published version of a form: the monotonically increasing number, a full and captured atpublish time (enabling rollback), optional release notes, and publishmetadata (timestamp and resolved publisher identity). * score: 5 ### interface ImportValidationResult * file: src/cores/fw/utils/templateImportValidation.ts:21 * kind: interface * core: fw * spec: (none) * summary: Validation result for import operations * score: 2 ### interface LoopNodeData * file: src/cores/fw/components/workflow/nodes/LoopNode.tsx:24 * kind: interface * core: fw * spec: none * summary: Data payload for a loop node on the workflow canvas. For loops ititerates , binding each item to ; for loops it repeats until is false. caps totalpasses as a safety bound. * score: 5 ### interface MarketplaceFilters * file: src/cores/fw/hooks/useMarketplaceTemplates.ts:41 * kind: interface * core: fw * spec: FW-28 * summary: Filters narrowing a marketplace template query: by category, minimum rating,free-text search, featured flag, tags, and an toggle to hidetemplates published by the current organization. * score: 5 ### type MarketplaceSortOption * file: src/cores/fw/hooks/useMarketplaceTemplates.ts:23 * kind: type * core: fw * spec: FW-28 * summary: Sort order for marketplace template listings. * score: 5 ### interface MergedRetryPolicy * file: src/cores/fw/lib/fw-error-recovery-policy.ts:18 * kind: interface * core: fw * spec: (none) * summary: Merged retry policy combining rule defaults + node-level overrides. * score: 2 ### interface MyApprovalRequest * file: src/cores/fw/hooks/useMyApprovalRequests.ts:28 * kind: interface * core: fw * spec: none * summary: An approval request submitted by the current user, flattened for listdisplay: extends (minus the nested ) with theresolved and the chain's . * see: * useMyApprovalRequests * score: 5 ### type NewWorkflowSchedule * file: src/cores/fw/hooks/useWorkflowSchedules.ts:20 * kind: type * core: fw * spec: (none) * summary: Fields a caller supplies when creating a schedule; org + next-run are derived. * score: 2 ### interface NodeChange * file: src/cores/fw/utils/templateVersionComparison.ts:28 * kind: interface * core: fw * spec: (none) * summary: Node change in a comparison * score: 1 ### type NodeExecutionState * file: src/cores/fw/components/workflow/WorkflowCanvas.tsx:20 * kind: type * core: fw * spec: none * summary: Per-node execution state overlaid on the workflow canvas, keyed by node id:each entry carries the node's run and an optional message.Used to drive the live execution status badges on each node. * score: 5 ### interface NodePosition * file: src/cores/fw/utils/workflowPositioning.ts:9 * kind: interface * core: fw * spec: (none) * summary: Position coordinates for a node * score: 2 ### interface OptimizationMetricsInput * file: src/cores/fw/hooks/useDraftOptimizationSuggestions.ts:63 * kind: interface * core: fw * spec: (none) * summary: Aggregate, non-PHI summary of the org's automation surface. * score: 2 ### interface OptimizationRuleMetric * file: src/cores/fw/hooks/useDraftOptimizationSuggestions.ts:49 * kind: interface * core: fw * spec: (none) * summary: Non-PHI operational metadata for one automation rule. Only aggregate healthnumbers and flags — never the rule's actions, payload, or any record content. * score: 2 ### interface PageTemplateValidationError * file: src/cores/fw/utils/pageTemplateCloning.ts:164 * kind: interface * core: fw * spec: (none) * summary: Validation error for page template structure * score: 2 ### interface ParallelForkNodeData * file: src/cores/fw/components/workflow/nodes/ParallelForkNode.tsx:19 * kind: interface * core: fw * spec: none * summary: Data payload for a parallel-fork node on the workflow canvas: a label, thenumber of concurrent branches to spawn, and optional per-branch labels. * score: 5 ### interface ParallelJoinNodeData * file: src/cores/fw/components/workflow/nodes/ParallelJoinNode.tsx:16 * kind: interface * core: fw * spec: none * summary: Data payload for a parallel-join node on the workflow canvas: a label, a joinmode ( waits for every incoming branch, continues on the first),and the number of expected inbound branches. * score: 5 ### interface ParameterChange * file: src/cores/fw/utils/templateVersionComparison.ts:38 * kind: interface * core: fw * spec: (none) * summary: Parameter change in a comparison * score: 2 ### interface ParameterValidationError * file: src/cores/fw/utils/parameterSubstitution.ts:22 * kind: interface * core: fw * spec: (none) * summary: Parameter validation error * score: 1 ### interface PathSummariesResult * file: src/cores/fw/utils/pathAnalyticsComputation.ts:13 * kind: interface * core: fw * spec: (none) * summary: Computed result returned by computePathSummaries. * score: 2 ### interface PermissionGrant * file: src/cores/fw/hooks/useFormPermissions.ts:38 * kind: interface * core: fw * spec: FW-01 * summary: A single form-level permission grant: which (view/edit/submit/manage) on which , granted to either a or a specific. The / fields are display-only and notpersisted as part of the grant. * score: 5 ### type PortalConfigSchemaType * file: src/cores/fw/components/portal/portalConfigSchema.ts:56 * kind: type * core: fw * spec: FW-32 * summary: Validated configuration for a public form portal: enablement and URL slug,spam protection (CAPTCHA, rate limiting, honeypot), email verification,branding (logo, colors, header/footer), consent text and policy links, andsubmission limits. Inferred from ; see for a fully populated value. * see: * DEFAULT\_PORTAL\_CONFIG * score: 5 ### interface PortalSubmitRequest * file: src/cores/fw/hooks/usePortalSubmission.ts:26 * kind: interface * core: fw * spec: FW-32 * summary: Payload posted to the edge function from a public formportal: the target and , anti-spam signals (CAPTCHA tokenand honeypot value), consent state and text, and submitter contact details. * score: 5 ### interface PublishFormOptions * file: src/cores/fw/hooks/useFormVersions.ts:72 * kind: interface * core: fw * spec: FW-01 * summary: Input for publishing a new form version: the to publish andoptional release recorded on the resulting . * score: 5 ### type QualityCategory * file: src/cores/fw/ai/qualityScoringSchemas.ts:23 * kind: type * core: fw * spec: none * summary: The five dimensions the AI form-quality scorer evaluates, derived from: clarity, completeness, usability, accessibility,and validation. * score: 5 ### type QualityRecommendation * file: src/cores/fw/ai/qualityScoringSchemas.ts:71 * kind: type * core: fw * spec: none * summary: A single actionable quality finding: its category and severity, an optionaltarget field, and a title/description/suggestion triple. Inferred from. * score: 5 ### interface RegistryEvent * file: src/cores/fw/hooks/useEventRegistry.ts:16 * kind: interface * core: fw * spec: (none) * summary: Event with computed consumer count. * score: 2 ### interface ReplayBundle * file: src/cores/fw/hooks/useExecutionReplayBundle.ts:25 * kind: interface * core: fw * spec: FW-56 * summary: Everything the replay UI needs to reconstruct a workflow run: the executionmetadata, its ordered steps, and the workflow definition (nodes/edges/version)captured at run time. is when unavailable; flags that the latest definition was substituted becausethe original version could not be found. * see: * useExecutionReplayBundle * score: 5 ### type RequiredNodeValidationError * file: src/cores/fw/utils/validateRequiredNodes.ts:7 * kind: type * core: fw * spec: (none) * summary: FW-57: Required node validation for healthcare workflow patterns.Validates that compliance-critical nodes are not removed from workflow graphs. * score: 2 ### type RetryStrategy * file: src/cores/fw/lib/fw-error-recovery-policy.ts:15 * kind: type * core: fw * spec: (none) * summary: Retry strategy types. * score: 1 ### interface RuleNodeSummary * file: src/cores/fw/hooks/useDraftTestScenarios.ts:37 * kind: interface * core: fw * spec: (none) * summary: A node of the rule the scenarios should exercise (structure only, no payloads). * score: 2 ### interface ScheduleEvaluationInput * file: src/cores/fw/services/scheduleEvaluator.ts:23 * kind: interface * core: fw * spec: (none) * summary: Minimal subset of an fw\_workflow\_schedules row needed to evaluate timing. * score: 2 ### interface ScheduleNode * file: src/cores/fw/services/scheduleConflictDetector.ts:17 * kind: interface * core: fw * spec: (none) * summary: Minimal schedule shape needed for conflict analysis. * score: 2 ### type ScheduleType * file: src/cores/fw/services/scheduleEvaluator.ts:20 * kind: type * core: fw * spec: (none) * summary: How a schedule fires: a recurring expression, a one-time ,after another rule completes (), or -only (no timer). * score: 2 ### interface ServerEvaluationMeta * file: src/cores/fw/hooks/useServerEvaluation.ts:16 * kind: interface * core: fw * spec: (none) * summary: Server-specific metadata returned alongside the evaluation result. * score: 2 ### type SetVariableNodeData * file: src/cores/fw/components/workflow/nodes/SetVariableNode.tsx:29 * kind: type * core: fw * spec: FW-18 * summary: Data payload for a set-variable node on the workflow canvas: the targetvariable name and how its value is derived — a value, an to evaluate, or an mapping pulled from executioncontext. * score: 5 ### type SeverityLevel * file: src/cores/fw/ai/qualityScoringSchemas.ts:37 * kind: type * core: fw * spec: none * summary: Severity of a quality recommendation, derived from ;used to sort and prioritize findings ( ). * score: 5 ### interface SFTPActionConfig * file: src/cores/fw/components/automation/actions/SFTPActionConfig.tsx:33 * kind: interface * core: fw * spec: FW-19 * summary: Configuration for an SFTP workflow action: which saved API connection touse, the operation to perform, the remote path, and (for upload) the localsource plus an optional variable to capture the result. * score: 5 ### type SimilarTemplatesResponse * file: src/cores/fw/ai/schemas.ts:117 * kind: type * core: fw * spec: FW-28 * summary: AI response listing templates similar to a source template, sorted bysimilarity: each entry carries id, name, type, a 0–1 similarity score, andthe attributes shared with the source. Inferred from. * score: 5 ### type StartNodeData * file: src/cores/fw/components/workflow/nodes/StartNode.tsx:31 * kind: type * core: fw * spec: FW-16 * summary: Data payload for the workflow start node, describing how the workflow istriggered: the trigger type and its type-specific config (,, or ), plus FW-16-P2deprecation metadata (whether the trigger event is deprecated, itsreplacement, and the current schema version) surfaced as a warning banner. * score: 5 ### interface SubflowDefinitionForValidation * file: src/cores/fw/utils/subflowOrchestrationValidator.ts:41 * kind: interface * core: fw * spec: (none) * summary: Minimal subflow definition shape needed for validation.Keyed by subflow ID in the definitions map. * score: 2 ### interface SubflowNodeData * file: src/cores/fw/components/workflow/nodes/SubflowNode.tsx:23 * kind: interface * core: fw * spec: none * summary: Data payload for a subflow node on the workflow canvas: an optional label,the referenced subflow's name and id, and the input/output mappings that passvalues into and back out of the invoked subflow. * score: 5 ### interface SubflowParameter * file: src/cores/fw/components/SubflowParameterEditor.tsx:26 * kind: interface * core: fw * spec: none * summary: A declared input or output parameter for a workflow subflow: its name, valuetype, required flag, optional default, and optional human description. Editedthrough . * score: 5 ### interface SubflowViolation * file: src/cores/fw/utils/subflowOrchestrationValidator.ts:26 * kind: interface * core: fw * spec: (none) * summary: A single validation violation with actionable detail. * score: 2 ### type SubflowViolationCode * file: src/cores/fw/utils/subflowOrchestrationValidator.ts:17 * kind: type * core: fw * spec: (none) * summary: Violation codes emitted by the validator. * score: 2 ### interface SubmissionAttachment * file: src/cores/fw/hooks/useSubmissionDetail.ts:61 * kind: interface * core: fw * spec: FW-02 * summary: A file attached to a form submission: storage , original filemetadata (name, size, MIME type), the optional it was uploadedfor, and uploader identity (id, resolved name) with timestamp. * score: 5 ### interface SubmissionDetail * file: src/cores/fw/hooks/useSubmissionDetail.ts:98 * kind: interface * core: fw * spec: FW-02 * summary: The core record for a single form submission: the parent , thesubmitted , lifecycle fields (status, review/completiontimestamps and reviewer), resolved submitter identity, and an optionallinked . * score: 5 ### type SubmissionFlag * file: src/cores/fw/ai/submissionSummarySchemas.ts:54 * kind: type * core: fw * spec: none * summary: An AI-detected issue or observation about a submission (missing data,inconsistency, or notable pattern): a severity, short title, anddescription. Inferred from . * score: 5 ### type SubmissionHighlight * file: src/cores/fw/ai/submissionSummarySchemas.ts:31 * kind: type * core: fw * spec: none * summary: A single notable data point in an AI submission summary: the field label, aPII-safe paraphrase of its value (never the raw value), and an optional noteon why it is notable. Inferred from . * score: 5 ### interface SubmissionListItem * file: src/cores/fw/hooks/useSubmissionList.ts:66 * kind: interface * core: fw * spec: FW-02 * summary: A flattened row in a submissions list: the submission id, parent form (id +resolved name), the submitted , lifecycle fields (status,review/completion metadata), and resolved submitter identity for display. * score: 5 ### interface SubmissionNote * file: src/cores/fw/hooks/useSubmissionDetail.ts:30 * kind: interface * core: fw * spec: FW-02 * summary: A reviewer note attached to a form submission: the note text, audittimestamps, the authoring user id, and the resolved creator name/email fordisplay. * score: 5 ### type SubmissionSummaryResponse * file: src/cores/fw/ai/submissionSummarySchemas.ts:79 * kind: type * core: fw * spec: none * summary: The full AI submission summary shown to reviewers: a 2–4 sentence narrative,up to 8 highlights, up to 5 flags, and a 0–100 completeness percentage.Inferred from . * score: 5 ### interface SubstitutionResult * file: src/cores/fw/utils/parameterSubstitution.ts:13 * kind: interface * core: fw * spec: (none) * summary: Result of parameter substitution * score: 2 ### type SuggestedAction * file: src/cores/fw/ai/automationRuleSchemas.ts:169 * kind: type * core: fw * spec: FW-51 * summary: A single AI-suggested rule action: an allowed action type plus a free-form object whose shape depends on the action type. Inferred from. * score: 5 ### type SuggestedCondition * file: src/cores/fw/ai/automationRuleSchemas.ts:137 * kind: type * core: fw * spec: FW-51 * summary: A single AI-suggested rule condition: a field reference, a comparisonoperator, and an optional comparison value. Inferred from. * score: 5 ### type SuggestedConditional * file: src/cores/fw/ai/formBuildingSchemas.ts:123 * kind: type * core: fw * spec: FW-44 * summary: An AI-suggested conditional rule emitted alongside generated fields:shows or requires a target field when a source field matches the givenoperator/value. Inferred from . * score: 5 ### type SuggestedEdge * file: src/cores/fw/ai/workflowGenerationSchemas.ts:69 * kind: type * core: fw * spec: FW-50 * summary: A suggested connection between two workflow nodes, referenced by node label,with an optional branching condition. Inferred from; the response schema validates that both labelsreference existing nodes. * score: 5 ### type SuggestedField * file: src/cores/fw/ai/formBuildingSchemas.ts:91 * kind: type * core: fw * spec: FW-44 * summary: A single AI-suggested form field: key, label, type, required flag, andoptional placeholder, help text, validation rules, and choice options(for select/multiselect/radio/checkbox). Inferred from. * score: 5 ### type SuggestedNode * file: src/cores/fw/ai/workflowGenerationSchemas.ts:33 * kind: type * core: fw * spec: FW-50 * summary: A single AI-suggested workflow node generated from a natural-languageprompt: its node type, a human-readable label, and optional config.Inferred from . * score: 5 ### type SuggestedVariable * file: src/cores/fw/ai/workflowGenerationSchemas.ts:95 * kind: type * core: fw * spec: FW-50 * summary: A suggested workflow variable: a name, a type descriptor (,, , etc.), and an optional initial value. Inferred from. * score: 5 ### interface SwitchCase * file: src/cores/fw/components/workflow/nodes/SwitchNode.tsx:16 * kind: interface * core: fw * spec: none * summary: One case in a switch node: the value to match against the node's, the output handle to route to on a match, and an optionaldisplay label. * score: 5 ### interface SwitchNodeData * file: src/cores/fw/components/workflow/nodes/SwitchNode.tsx:38 * kind: interface * core: fw * spec: none * summary: Data payload for a switch node on the workflow canvas: a label, the fieldwhose value is matched, the ordered list of s, and adefault output handle taken when no case matches. * score: 5 ### interface TemplateData * file: src/cores/fw/utils/templateCloning.ts:35 * kind: interface * core: fw * spec: (none) * summary: Template data structure stored in fw\_workflow\_templates.template\_data * score: 2 ### type TemplateDescriptionResponse * file: src/cores/fw/ai/schemas.ts:76 * kind: type * core: fw * spec: FW-28 * summary: AI response for generating template marketing copy: a 2–3 sentencedescription, suggested discoverability tags, and key features/use cases.Inferred from . * score: 5 ### type TemplateField * file: src/cores/fw/ai/templateGenerationSchemas.ts:50 * kind: type * core: fw * spec: FW-44 * summary: A generated form field extended with a that maps it to oneof the template's sections. Extends (from FW-44) andis inferred from . * score: 5 ### interface TemplateImportOptions * file: src/cores/fw/utils/templateImport.ts:16 * kind: interface * core: fw * spec: (none) * summary: Options for import operation * score: 1 ### interface TemplateImportResult * file: src/cores/fw/utils/templateImport.ts:32 * kind: interface * core: fw * spec: (none) * summary: Result of import operation * score: 1 ### type TemplateRecommendationResponse * file: src/cores/fw/ai/schemas.ts:50 * kind: type * core: fw * spec: FW-28 * summary: AI response for context-based template recommendations: a relevance-sortedlist of templates, each with id, name, type, a 0–1 relevance score, a reason,and the matched context criteria. Inferred from. * score: 5 ### type TemplateSearchResultResponse * file: src/cores/fw/ai/schemas.ts:157 * kind: type * core: fw * spec: FW-28 * summary: AI response for semantic template search: match-score-sorted results, eachwith id, name, type, a 0–1 match score, and a brief match reason. Inferredfrom . * score: 5 ### interface TemplateValidationError * file: src/cores/fw/utils/formTemplateCloning.ts:182 * kind: interface * core: fw * spec: (none) * summary: Validation error for template structure * score: 2 ### interface TimeConflict * file: src/cores/fw/services/scheduleConflictDetector.ts:28 * kind: interface * core: fw * spec: (none) * summary: A detected overlap: two schedules whose next runs fall within the configured tolerance of each other (a candidate resource/time conflict for the UI to warn on). * score: 2 ### interface TimeoutSettings * file: src/cores/fw/hooks/settings/useTimeoutSettings.ts:28 * kind: interface * core: fw * spec: FW-49 * summary: Per-organization workflow timeout settings read from :whether timeouts are enforced, the default timeout in minutes, the warningthreshold as a percentage of the timeout, and how often the timeout checkruns. * score: 5 ### type TriggerType * file: src/cores/fw/components/conditions/AdvancedConditionBuilder.tsx:24 * kind: type * core: fw * spec: (none) * summary: Trigger types for context-aware UI * score: 2 ### interface UseAutomationLogsOptions * file: src/cores/fw/hooks/useAutomationLogs.ts:73 * kind: interface * core: fw * spec: FW-03 * summary: Filter and behavior options for : scope to a single, filter by execution , cap rows with , and toggle theunderlying query with . * score: 5 ### interface UseAutomationLogsReturn * file: src/cores/fw/hooks/useAutomationLogs.ts:87 * kind: interface * core: fw * spec: FW-03 * summary: Return shape of : the fetched list, TanStack Query loading and error state, and a trigger. * see: * useAutomationLogs * score: 5 ### interface UseDebugSessionOptions * file: src/cores/fw/hooks/useDebugSession.ts:17 * kind: interface * core: fw * spec: none * summary: Options for : the workflow to attach adebug session to, and an flag to gate the underlying queries. * score: 5 ### interface UseDebugSessionReturn * file: src/cores/fw/hooks/useDebugSession.ts:31 * kind: interface * core: fw * spec: none * summary: Return shape of : the active andquery state, the user's debug-permission status, step-debugging controls(create/end session, manage breakpoints, step forward, set the currentnode), and per-mutation pending flags. * see: * useDebugSession * score: 5 ### interface UseExecutionLogsOptions * file: src/cores/fw/hooks/useExecutionLogs.ts:17 * kind: interface * core: fw * spec: none * summary: Filter, pagination, and behavior options for : scopeby execution, log level, node, free-text search, and date range; paginatewith /; and gate the query with . * score: 5 ### interface UseExecutionLogsReturn * file: src/cores/fw/hooks/useExecutionLogs.ts:37 * kind: interface * core: fw * spec: none * summary: Return shape of : the fetched page plus for pagination, query loading/error state, a trigger, and an mutation with its pending flag. * see: * useExecutionLogs * score: 5 ### interface UseKpiDashboardOptions * file: src/cores/fw/hooks/useKpiDashboard.ts:60 * kind: interface * core: fw * spec: FW-58 * summary: Options for : the dashboard (period, range,etc.) and an optional override (defaults to the activeorganization). * score: 5 ### interface UseKpiSnapshotsOptions * file: src/cores/fw/hooks/useKpiSnapshots.ts:30 * kind: interface * core: fw * spec: FW-58 * summary: Options for : the and / ISO bounds to fetch precomputed metric snapshots for, with anoptional filter and override. * score: 5 ### interface UseMarketplaceTemplatesOptions * file: src/cores/fw/hooks/useMarketplaceTemplates.ts:64 * kind: interface * core: fw * spec: FW-28 * summary: Options for : an gate, optional, and a (defaults to). * score: 5 ### interface UsePerformanceProfileOptions * file: src/cores/fw/hooks/usePerformanceProfile.ts:15 * kind: interface * core: fw * spec: none * summary: Options for : the workflow toprofile and an flag to gate the query. * score: 5 ### interface UsePerformanceProfileReturn * file: src/cores/fw/hooks/usePerformanceProfile.ts:28 * kind: interface * core: fw * spec: none * summary: Return shape of : derived (includingbottleneck nodes), the payload stored on the execution, queryloading/error state, and a trigger. * see: * usePerformanceProfile * score: 5 ### interface UseRealtimeExecutionsOptions * file: src/cores/fw/hooks/useRealtimeExecutions.ts:26 * kind: interface * core: fw * spec: none * summary: Options for : the to scope therealtime subscription, an optional and to narrowthe stream, and an gate. * score: 5 ### interface UseRealtimeExecutionsReturn * file: src/cores/fw/hooks/useRealtimeExecutions.ts:41 * kind: interface * core: fw * spec: none * summary: Return shape of : the live list ofs, the realtime status, any ,and a that re-pulls the initial snapshot. * see: * useRealtimeExecutions * score: 5 ### interface UseSubmissionDetailOptions * file: src/cores/fw/hooks/useSubmissionDetail.ts:178 * kind: interface * core: fw * spec: FW-02 * summary: Options for : the to fetch and an flag to gate the query. * score: 5 ### interface UseSubmissionDetailReturn * file: src/cores/fw/hooks/useSubmissionDetail.ts:192 * kind: interface * core: fw * spec: FW-02 * summary: Return shape of : the andits parent , the related and collections, query loading/error state, and a trigger. * see: * useSubmissionDetail * score: 5 ### interface UseSubmissionExportReturn * file: src/cores/fw/hooks/useSubmissionExport.ts:50 * kind: interface * core: fw * spec: FW-02 * summary: Return shape of : an actionthat fetches and downloads matching submissions per ,and an flag for in-flight UI state. * see: * useSubmissionExport * score: 5 ### interface UseSubmissionListOptions * file: src/cores/fw/hooks/useSubmissionList.ts:29 * kind: interface * core: fw * spec: FW-02 * summary: Filter, pagination, and behavior options for : scopeby form, organization, site, status, submitter, date range, and free-textsearch; paginate with /; and gate the query with . * score: 5 ### interface UseSubmissionListReturn * file: src/cores/fw/hooks/useSubmissionList.ts:110 * kind: interface * core: fw * spec: FW-02 * summary: Return shape of : the current page ofs plus for pagination, queryloading/error state, and a trigger. * see: * useSubmissionList * score: 5 ### interface UseTemplateCloneOptions * file: src/cores/fw/hooks/useTemplateClone.ts:42 * kind: interface * core: fw * spec: (none) * summary: Options for the useTemplateClone hook * score: 2 ### interface UseWorkflowMachineOptions * file: src/cores/fw/machines/useWorkflowMachine.ts:117 * kind: interface * core: fw * spec: (none) * summary: Hook options * score: 1 ### interface UseWorkflowMachineReturn * file: src/cores/fw/machines/useWorkflowMachine.ts:63 * kind: interface * core: fw * spec: (none) * summary: Return type for useWorkflowMachine hook * score: 2 ### interface WorkflowContext * file: src/cores/fw/machines/workflowMachine.ts:57 * kind: interface * core: fw * spec: (none) * summary: Workflow execution context * score: 1 ### interface WorkflowEdge * file: src/cores/fw/utils/templateCloning.ts:22 * kind: interface * core: fw * spec: (none) * summary: Workflow edge structure * score: 1 ### type WorkflowEvent * file: src/cores/fw/machines/workflowMachine.ts:111 * kind: type * core: fw * spec: (none) * summary: Events that can be sent to the workflow machine * score: 2 ### interface WorkflowHistoryEntry * file: src/cores/fw/machines/workflowMachine.ts:74 * kind: interface * core: fw * spec: (none) * summary: History entry for tracking workflow execution * score: 2 ### interface WorkflowMachineConfig * file: src/cores/fw/machines/workflowMachine.ts:84 * kind: interface * core: fw * spec: (none) * summary: Workflow machine configuration * score: 2 ### interface WorkflowNode * file: src/cores/fw/utils/templateCloning.ts:12 * kind: interface * core: fw * spec: (none) * summary: Workflow node structure (from xyflow/react) * score: 2 ### interface WorkflowResult * file: src/cores/fw/machines/workflowMachine.ts:98 * kind: interface * core: fw * spec: (none) * summary: Workflow execution result * score: 1 ### interface WorkflowStep * file: src/cores/fw/machines/workflowMachine.ts:39 * kind: interface * core: fw * spec: (none) * summary: Workflow step definition * score: 1 ### type WorkflowSuggestions * file: src/cores/fw/ai/workflowGenerationSchemas.ts:167 * kind: type * core: fw * spec: FW-50 * summary: The complete AI-generated workflow structure: nodes, edges, and optionalvariables. Inferred from , whose enforces exactly one and one node, unique nodelabels, and that every edge references known nodes. * score: 5 ## Hooks ### hook useActionTemplateMutations * file: src/cores/fw/hooks/useActionTemplates.ts:93 * kind: hook * core: fw * spec: (none) * summary: Hook for managing action template mutations. * score: 1 ### hook useActionTemplates * file: src/cores/fw/hooks/useActionTemplates.ts:58 * kind: hook * core: fw * spec: (none) * summary: Hook for managing action templates. * score: 1 ### hook useActiveDelegationCount * file: src/cores/fw/hooks/useDelegations.ts:135 * kind: hook * core: fw * spec: (none) * summary: Hook for managing active delegation count. * score: 1 ### hook useAIAutomationRuleSuggestions * file: src/cores/fw/hooks/useAIAutomationRuleSuggestions.ts:27 * kind: hook * core: fw * spec: (none) * summary: Hook for generating AI automation rule suggestions. * score: 1 ### hook useAIConditionalSuggestions * file: src/cores/fw/hooks/useAIConditionalSuggestions.ts:34 * kind: hook * core: fw * spec: (none) * summary: Hook for managing aiconditional suggestions. * score: 1 ### hook useAIFormQualityScore * file: src/cores/fw/hooks/useAIFormQualityScore.ts:40 * kind: hook * core: fw * spec: (none) * summary: Hook for managing aiform quality score. * score: 1 ### hook useAIFormSuggestions * file: src/cores/fw/hooks/useAIFormSuggestions.ts:32 * kind: hook * core: fw * spec: (none) * summary: Hook for managing aiform suggestions. * score: 1 ### hook useAIFormTemplateGeneration * file: src/cores/fw/hooks/useAIFormTemplateGeneration.ts:30 * kind: hook * core: fw * spec: (none) * summary: Hook for managing aiform template generation. * score: 1 ### hook useAISubmissionSummary * file: src/cores/fw/hooks/useAISubmissionSummary.ts:38 * kind: hook * core: fw * spec: (none) * summary: Hook for managing aisubmission summary. * score: 1 ### hook useAITemplateDescription * file: src/cores/fw/ai/useAITemplateDescription.ts:22 * kind: hook * core: fw * spec: (none) * summary: Hook for generating AI-powered template descriptions, tags, and features * score: 1 ### hook useAITemplateRecommendations * file: src/cores/fw/ai/useAITemplateRecommendations.ts:36 * kind: hook * core: fw * spec: (none) * summary: Hook for getting AI-powered template recommendations based on organization context * score: 1 ### hook useAITemplateSearch * file: src/cores/fw/ai/useAITemplateSearch.ts:30 * kind: hook * core: fw * spec: (none) * summary: Hook for natural language template search using AI * score: 1 ### hook useAITemplateSimilarity * file: src/cores/fw/ai/useAITemplateSimilarity.ts:23 * kind: hook * core: fw * spec: (none) * summary: Hook for finding templates similar to a source template * score: 1 ### hook useAIWorkflowSuggestions * file: src/cores/fw/hooks/useAIWorkflowSuggestions.ts:32 * kind: hook * core: fw * spec: (none) * summary: Hook for generating AI workflow structure suggestions.Uses the Platform AI integration layer (PF-27) with module context. * score: 1 ### hook useAlertThresholds * file: src/cores/fw/hooks/useAlertThresholds.ts:20 * kind: hook * core: fw * spec: (none) * summary: Reads alert thresholds from pf\_module\_settings.custom\_fields and provides a mutation to update them. * score: 4 ### hook useApiConnectionMutation * file: src/cores/fw/hooks/useApiConnectionMutation.ts:22 * kind: hook * core: fw * spec: (none) * summary: Hook for managing api connection mutation. * score: 1 ### hook useApiConnections * file: src/cores/fw/hooks/useApiConnections.ts:22 * kind: hook * core: fw * spec: (none) * summary: Hook for managing api connections. * score: 1 ### hook useApplyAutomationRuleSuggestions * file: src/cores/fw/hooks/useApplyAutomationRuleSuggestions.ts:59 * kind: hook * core: fw * spec: (none) * summary: Hook for applying AI suggestions to an automation rule. * score: 1 ### hook useApplyConditionalSuggestion * file: src/cores/fw/hooks/useApplyConditionalSuggestion.ts:21 * kind: hook * core: fw * spec: (none) * summary: Hook for managing apply conditional suggestion. * score: 1 ### hook useApplyFormSuggestions * file: src/cores/fw/hooks/useApplyFormSuggestions.ts:70 * kind: hook * core: fw * spec: (none) * summary: Hook for managing apply form suggestions. * score: 1 ### hook useApplyPageTemplate * file: src/cores/fw/hooks/useApplyPageTemplate.ts:36 * kind: hook * core: fw * spec: (none) * summary: Hook for managing apply page template. * score: 1 ### hook useApplySuggestion * file: src/cores/fw/hooks/useApplySuggestion.ts:13 * kind: hook * core: fw * spec: (none) * summary: Apply an optimization suggestion * score: 4 ### hook useApplyWorkflowSuggestions * file: src/cores/fw/hooks/useApplyWorkflowSuggestions.ts:30 * kind: hook * core: fw * spec: (none) * summary: Hook for applying AI-generated workflow suggestions to an existing definition.Fetches the current JSONB nodes/edges, generates UUIDs and positions fornew nodes, maps edge labels to IDs, merges arrays, and performs a singleUPDATE with organization\_id filter. * score: 1 ### hook useApprovalAction * file: src/cores/fw/hooks/useApprovalAction.ts:33 * kind: hook * core: fw * spec: (none) * summary: Hook for managing approval action. * score: 1 ### hook useApprovalChain * file: src/cores/fw/hooks/useApprovalChains.ts:82 * kind: hook * core: fw * spec: (none) * summary: Hook for managing approval chain. * score: 1 ### hook useApprovalChainBuilder * file: src/cores/fw/hooks/useApprovalChainBuilder.ts:41 * kind: hook * core: fw * spec: (none) * summary: Hook for managing approval chain builder. * score: 1 ### hook useApprovalChains * file: src/cores/fw/hooks/useApprovalChains.ts:39 * kind: hook * core: fw * spec: (none) * summary: Hook for managing approval chains. * score: 1 ### hook useApprovalRequest * file: src/cores/fw/hooks/useApprovalRequest.ts:143 * kind: hook * core: fw * spec: (none) * summary: Hook for managing approval request. * score: 1 ### hook useApprovalRoutingRules * file: src/cores/fw/hooks/useApprovalRoutingRules.ts:52 * kind: hook * core: fw * spec: (none) * summary: List routing rules for an entity type. * score: 4 ### hook useAuditReportGenerate * file: src/cores/fw/hooks/useAuditReportGenerate.ts:21 * kind: hook * core: fw * spec: (none) * summary: Mutation hook that invokes the compliance report generation edge function. * returns: Mutation with result. * score: 4 ### hook useAuditTrailView * file: src/cores/fw/hooks/useAuditTrailView\.ts:26 * kind: hook * core: fw * spec: (none) * summary: Fetches rows from with optional filters. * params: * filters — Optional filter overrides (dates, source, category, etc.) * returns: Standard TanStack Query result with . * score: 4 ### hook useAuditWorkflowExport * file: src/cores/fw/hooks/useAuditWorkflowExport.ts:21 * kind: hook * core: fw * spec: (none) * summary: Mutation hook that invokes the workflow export edge function. * returns: Mutation with result. * score: 4 ### hook useAutomationActionMutations * file: src/cores/fw/hooks/useAutomationActions.ts:99 * kind: hook * core: fw * spec: (none) * summary: Hook for managing automation action mutations. * score: 1 ### hook useAutomationActions * file: src/cores/fw/hooks/useAutomationActions.ts:55 * kind: hook * core: fw * spec: (none) * summary: Hook for managing automation actions. * score: 1 ### hook useAutomationAnalytics * file: src/cores/fw/hooks/useAutomationAnalytics.ts:63 * kind: hook * core: fw * spec: (none) * summary: Hook for managing automation analytics. * score: 1 ### hook useAutomationDryRun * file: src/cores/fw/hooks/useAutomationDryRun.ts:59 * kind: hook * core: fw * spec: (none) * summary: Hook for managing automation dry run. * score: 1 ### hook useAutomationLogs * file: src/cores/fw/hooks/useAutomationLogs.ts:97 * kind: hook * core: fw * spec: (none) * summary: Hook for managing automation logs. * score: 1 ### hook useAutomationRuleMutations * file: src/cores/fw/hooks/useAutomationRules.ts:105 * kind: hook * core: fw * spec: (none) * summary: Hook for managing automation rule mutations. * score: 1 ### hook useAutomationRules * file: src/cores/fw/hooks/useAutomationRules.ts:71 * kind: hook * core: fw * spec: (none) * summary: Hook for managing automation rules. * score: 1 ### hook useAutomationStats * file: src/cores/fw/hooks/useAutomationAnalytics.ts:94 * kind: hook * core: fw * spec: (none) * summary: Hook for managing automation stats. * score: 1 ### hook useBestPractices * file: src/cores/fw/hooks/useComplianceScore.ts:33 * kind: hook * core: fw * spec: (none) * summary: Fetch all active best practices * score: 4 ### hook useBulkSubmissionPdfExport * file: src/cores/fw/hooks/useBulkSubmissionPdfExport.ts:93 * kind: hook * core: fw * spec: (none) * summary: Provides a hook to export multiple form submissions as PDFs (single PDF or a ZIP) via a batch edge function. Validates input and organization context, enforces a maximum submission limit,invokes the edge function, handles signed URL responses orbase64 payloads, reports progress and user-facing toasts, and guards against state updatesafter component unmount. * returns: An object containing: - — Function accepting and returning a describing the outcome of the export operation. - — flag indicating whether an export is currently in progress. - — progress indicator (0–100) for the current export operation. * example: | const exportSubmissions, isExporting, progress = useBulkSubmissionPdfExport();// Trigger exportawait exportSubmissions( submissionIds: \['sub1', 'sub2'], letterheadId: 'letter-123', includeMetadata: true, includeEmptyFields: false,); * score: 4 ### hook useBusinessCalendar * file: src/cores/fw/hooks/useBusinessCalendars.ts:42 * kind: hook * core: fw * spec: (none) * summary: Hook to get a single business calendar by ID. * score: 4 ### hook useBusinessCalendarMutations * file: src/cores/fw/hooks/useBusinessCalendars.ts:62 * kind: hook * core: fw * spec: (none) * summary: Hook for business calendar CRUD mutations. * score: 1 ### hook useBusinessCalendars * file: src/cores/fw/hooks/useBusinessCalendars.ts:18 * kind: hook * core: fw * spec: (none) * summary: Hook to list all business calendars for an organization. * score: 4 ### hook useCalendarHolidayMutations * file: src/cores/fw/hooks/useCalendarHolidays.ts:41 * kind: hook * core: fw * spec: (none) * summary: Hook for calendar holiday CRUD mutations. * score: 1 ### hook useCalendarHolidays * file: src/cores/fw/hooks/useCalendarHolidays.ts:16 * kind: hook * core: fw * spec: (none) * summary: Hook to list holidays for a business calendar, optionally filtered by year. * score: 4 ### hook useCaptcha * file: src/cores/fw/components/portal/useCaptcha.tsx:7 * kind: hook * core: fw * spec: (none) * summary: Hook for managing captcha. * score: 1 ### hook useCircuitBreaker * file: src/cores/fw/hooks/workflows/useCircuitBreaker.ts:22 * kind: hook * core: fw * spec: (none) * summary: Fetches circuit breaker state for a rule + node.Provides a mutation to transition open/half\_open → closed. * params: * organizationId — Organization scope * ruleId — Automation rule ID * nodeId — Workflow node ID * score: 4 ### hook useCompensationActions * file: src/cores/fw/hooks/workflows/useCompensationActions.ts:23 * kind: hook * core: fw * spec: (none) * summary: Fetches compensation actions for a rule + node, ordered by execution\_order.Provides create, delete, and reorder mutations. * params: * organizationId — Organization scope * ruleId — Automation rule ID * nodeId — Workflow node ID * score: 4 ### hook useComplianceScores * file: src/cores/fw/hooks/useComplianceScore.ts:12 * kind: hook * core: fw * spec: (none) * summary: Fetch compliance scores for a workflow * score: 4 ### hook useConditionAttributes * file: src/cores/fw/hooks/useConditionAttributes.ts:372 * kind: hook * core: fw * spec: (none) * summary: Hook for fetching and managing condition attributesIntegrates with PF-17 for real field configurationsSupports FW-16 event payload integration * score: 1 ### hook useCreateApprovalRoutingRule * file: src/cores/fw/hooks/useApprovalRoutingRules.ts:84 * kind: hook * core: fw * spec: (none) * summary: Create a new routing rule. * score: 1 ### hook useCreateFormTemplate * file: src/cores/fw/hooks/useCreateFormTemplate.ts:73 * kind: hook * core: fw * spec: (none) * summary: Create a form template from an existing form * score: 4 ### hook useCreateFormTemplateFromAI * file: src/cores/fw/hooks/useCreateFormTemplateFromAI.ts:72 * kind: hook * core: fw * spec: (none) * summary: Hook for managing create form template from ai. * score: 1 ### hook useCreateFormTemplateFromScratch * file: src/cores/fw/hooks/useCreateFormTemplate.ts:204 * kind: hook * core: fw * spec: (none) * summary: Create a form template from scratch (without source form) * score: 4 ### hook useCreateFormTemplateRating * file: src/cores/fw/hooks/useFormTemplateRatings.ts:102 * kind: hook * core: fw * spec: (none) * summary: Create a new form template ratingNote: Database trigger handles rating\_average/rating\_count updates * score: 4 ### hook useCreatePageTemplate * file: src/cores/fw/hooks/useCreatePageTemplate.ts:23 * kind: hook * core: fw * spec: (none) * summary: Hook for managing create page template. * score: 1 ### hook useCreatePrefillRule * file: src/cores/fw/hooks/usePrefillRules.ts:38 * kind: hook * core: fw * spec: (none) * summary: Creates a new prefill rule. * score: 1 ### hook useCreateRegulatoryChange * file: src/cores/fw/hooks/useHealthcarePatterns.ts:188 * kind: hook * core: fw * spec: (none) * summary: Create a regulatory change log entry * score: 4 ### hook useCreateTemplateRating * file: src/cores/fw/hooks/useTemplateRatings.ts:130 * kind: hook * core: fw * spec: (none) * summary: Create a new rating * score: 1 ### hook useCreateWorkflowTemplate * file: src/cores/fw/hooks/useWorkflowTemplates.ts:122 * kind: hook * core: fw * spec: (none) * summary: Provides create workflow template queries and mutation actions scoped to the current organization. * score: 4 ### hook useDeadLetterQueue * file: src/cores/fw/hooks/workflows/useDeadLetterQueue.ts:19 * kind: hook * core: fw * spec: (none) * summary: Fetches a paginated, filtered list of DLQ entries for the current organization. * score: 4 ### hook useDebugSession * file: src/cores/fw/hooks/useDebugSession.ts:50 * kind: hook * core: fw * spec: (none) * summary: Hook for managing debug session. * score: 1 ### hook useDecisionTable * file: src/cores/fw/hooks/useDecisionTable.ts:15 * kind: hook * core: fw * spec: (none) * summary: Fetches a single decision table by ID. * score: 4 ### hook useDecisionTableEvaluation * file: src/cores/fw/hooks/useDecisionTableEvaluation.ts:146 * kind: hook * core: fw * spec: (none) * summary: Hook for client-side decision table evaluation (test mode).Does not write audit rows. For server-side evaluation with auditing,use the edge function. * score: 1 ### hook useDecisionTableMutation * file: src/cores/fw/hooks/useDecisionTableMutation.ts:19 * kind: hook * core: fw * spec: (none) * summary: Provides create, update, delete, publish, and archive mutations for decision tables. * score: 4 ### hook useDecisionTables * file: src/cores/fw/hooks/useDecisionTables.ts:22 * kind: hook * core: fw * spec: (none) * summary: Lists decision tables for an organization with optional filters. * score: 4 ### hook useDecisionTableVersions * file: src/cores/fw/hooks/useDecisionTableVersions.ts:15 * kind: hook * core: fw * spec: (none) * summary: Lists all published versions for a decision table, newest first. * score: 4 ### hook useDelegationMutation * file: src/cores/fw/hooks/useDelegationMutation.ts:31 * kind: hook * core: fw * spec: (none) * summary: Hook for managing delegation mutation. * score: 1 ### hook useDelegations * file: src/cores/fw/hooks/useDelegations.ts:22 * kind: hook * core: fw * spec: (none) * summary: Hook for managing delegations. * score: 1 ### hook useDeleteApprovalChain * file: src/cores/fw/hooks/useApprovalChains.ts:125 * kind: hook * core: fw * spec: (none) * summary: Hook for managing delete approval chain. * score: 1 ### hook useDeleteApprovalRoutingRule * file: src/cores/fw/hooks/useApprovalRoutingRules.ts:162 * kind: hook * core: fw * spec: (none) * summary: Delete a routing rule. * score: 1 ### hook useDeleteFormTemplate * file: src/cores/fw/hooks/useCreateFormTemplate.ts:323 * kind: hook * core: fw * spec: (none) * summary: Delete a form template * score: 1 ### hook useDeleteFormTemplateRating * file: src/cores/fw/hooks/useFormTemplateRatings.ts:211 * kind: hook * core: fw * spec: (none) * summary: Delete a form template rating * score: 1 ### hook useDeletePrefillRule * file: src/cores/fw/hooks/usePrefillRules.ts:94 * kind: hook * core: fw * spec: (none) * summary: Deletes a prefill rule. * score: 1 ### hook useDeleteRegulatoryChange * file: src/cores/fw/hooks/useHealthcarePatterns.ts:251 * kind: hook * core: fw * spec: (none) * summary: Delete a regulatory change log entry * score: 4 ### hook useDeleteWorkflowTemplate * file: src/cores/fw/hooks/useWorkflowTemplates.ts:221 * kind: hook * core: fw * spec: (none) * summary: Provides delete workflow template queries and mutation actions scoped to the current organization. * score: 4 ### hook useDependencyGraph * file: src/cores/fw/hooks/useDependencyGraph.ts:13 * kind: hook * core: fw * spec: (none) * summary: Fetches dependency graph edges for the current organization. * score: 4 ### hook useDependencyImpact * file: src/cores/fw/hooks/useDependencyImpact.ts:17 * kind: hook * core: fw * spec: (none) * summary: Returns direct dependents and transitive count for a target entity.Used in the DependencyImpactDialog before delete/archive. * score: 4 ### hook useDismissSuggestion * file: src/cores/fw/hooks/useApplySuggestion.ts:44 * kind: hook * core: fw * spec: (none) * summary: Dismiss an optimization suggestion * score: 4 ### hook useDLQBulkDiscard * file: src/cores/fw/hooks/workflows/useDLQBulkDiscard.ts:21 * kind: hook * core: fw * spec: (none) * summary: Discards multiple DLQ entries with shared resolution notes. * score: 4 ### hook useDLQBulkRetry * file: src/cores/fw/hooks/workflows/useDLQBulkRetry.ts:17 * kind: hook * core: fw * spec: (none) * summary: Retries multiple DLQ entries sequentially via the RPC.Returns a summary of successes and failures. * score: 4 ### hook useDLQDiscard * file: src/cores/fw/hooks/workflows/useDLQDiscard.ts:22 * kind: hook * core: fw * spec: (none) * summary: Discards a DLQ entry by updating its status to 'discarded'with mandatory resolution notes. * score: 4 ### hook useDLQEntry * file: src/cores/fw/hooks/workflows/useDLQEntry.ts:18 * kind: hook * core: fw * spec: (none) * summary: Fetches a single DLQ entry by its ID for the current organization. * score: 4 ### hook useDLQRetry * file: src/cores/fw/hooks/workflows/useDLQRetry.ts:17 * kind: hook * core: fw * spec: (none) * summary: Retries a single DLQ entry by calling the RPC,which atomically creates a new workflow execution and marks the entry as retried. * score: 4 ### hook useDLQSettings * file: src/cores/fw/hooks/settings/useDLQSettings.ts:21 * kind: hook * core: fw * spec: (none) * summary: Reads and writes DLQ-related settings from . * score: 4 ### hook useDLQStats * file: src/cores/fw/hooks/workflows/useDLQStats.ts:18 * kind: hook * core: fw * spec: (none) * summary: Fetches aggregated DLQ statistics (counts per status) for the current organization. * score: 4 ### hook useDomainEvent * file: src/cores/fw/hooks/useDomainEvents.ts:83 * kind: hook * core: fw * spec: (none) * summary: Hook to fetch a single domain event by ID * score: 4 ### hook useDomainEvents * file: src/cores/fw/hooks/useDomainEvents.ts:20 * kind: hook * core: fw * spec: (none) * summary: Hook for managing domain events. * score: 1 ### hook useDraftDecisionTableFromNL * file: src/cores/fw/hooks/useDraftDecisionTableFromNL.ts:189 * kind: hook * core: fw * spec: (none) * summary: Hook for drafting a decision table from a natural-language policy. Wraps theplatform primitive (PF-27) with FW modulecontext and the enum-constrained . * score: 1 ### hook useDraftOptimizationSuggestions * file: src/cores/fw/hooks/useDraftOptimizationSuggestions.ts:134 * kind: hook * core: fw * spec: (none) * summary: Hook for drafting workflow-optimization suggestions with the AI gateway. * returns: resolving to an enum-constrained draft (or on failure — the primitive already surfaced a toast), plus the last , , and . * score: 1 ### hook useEventConsumers * file: src/cores/fw/hooks/useEventConsumers.ts:22 * kind: hook * core: fw * spec: (none) * summary: Hook to fetch automation rules that consume a given event name. * score: 4 ### hook useEventDeprecation * file: src/cores/fw/hooks/useEventDeprecation.ts:29 * kind: hook * core: fw * spec: (none) * summary: Hook providing deprecate and undeprecate mutations for workflow events. * score: 4 ### hook useEventRegistry * file: src/cores/fw/hooks/useEventRegistry.ts:32 * kind: hook * core: fw * spec: (none) * summary: Hook to fetch the event registry with governance data and consumer counts. * score: 4 ### hook useEventTriggerConfig * file: src/cores/fw/hooks/useEventTriggerConfig.ts:27 * kind: hook * core: fw * spec: (none) * summary: Hook for managing event trigger config. * score: 1 ### hook useExecutionDeadline * file: src/cores/fw/hooks/workflows/useExecutionDeadline.ts:17 * kind: hook * core: fw * spec: (none) * summary: Computes live deadline state, updating every second when at risk. * score: 4 ### hook useExecutionLogs * file: src/cores/fw/hooks/useExecutionLogs.ts:50 * kind: hook * core: fw * spec: (none) * summary: Hook for managing execution logs. * score: 1 ### hook useExecutionRateSnapshot * file: src/cores/fw/hooks/useExecutionRateSnapshot.ts:10 * kind: hook * core: fw * spec: (none) * summary: Fetches recent execution rate counters for org-level and per-workflow views. * score: 4 ### hook useExecutionReplayBundle * file: src/cores/fw/hooks/useExecutionReplayBundle.ts:45 * kind: hook * core: fw * spec: (none) * summary: Loads the full replay bundle for a workflow execution. * score: 4 ### hook useExecutionStepRealtime * file: src/cores/fw/hooks/workflows/useExecutionStepRealtime.ts:24 * kind: hook * core: fw * spec: (none) * summary: Subscribes to realtime updates for execution steps and invalidates the query cache. * score: 4 ### hook useExecutionSteps * file: src/cores/fw/hooks/workflows/useExecutionSteps.ts:29 * kind: hook * core: fw * spec: (none) * summary: Fetches ordered execution steps for a workflow execution. * score: 4 ### hook useExecutionTrace * file: src/cores/fw/hooks/useExecutionTrace.ts:7 * kind: hook * core: fw * spec: (none) * summary: Hook for managing execution trace. * score: 1 ### hook useExecutionVariables * file: src/cores/fw/hooks/useExecutionVariables.ts:28 * kind: hook * core: fw * spec: (none) * summary: Hook to read variable state from a workflow execution * score: 4 ### hook useExportTemplate * file: src/cores/fw/hooks/useExportTemplate.ts:25 * kind: hook * core: fw * spec: (none) * summary: Hook for exporting workflow templates * score: 1 ### hook useExpressionValidation * file: src/cores/fw/hooks/useExpressionValidation.ts:19 * kind: hook * core: fw * spec: (none) * summary: Hook for real-time expression validation with debounce * params: * expression — The expression string to validate * availableVariables — List of available variable names * debounceMs — Debounce delay in milliseconds (default: 300) * returns: Validation result or null while debouncing * score: 1 ### hook useExpressionValidationImmediate * file: src/cores/fw/hooks/useExpressionValidation.ts:58 * kind: hook * core: fw * spec: (none) * summary: Hook for immediate expression validation (no debounce) * params: * expression — The expression string to validate * availableVariables — List of available variable names * returns: Validation result * score: 1 ### hook useExtendDeadline * file: src/cores/fw/hooks/workflows/useExtendDeadline.ts:14 * kind: hook * core: fw * spec: (none) * summary: Extends the deadline of a running workflow execution. * score: 4 ### hook useFeaturedMarketplaceTemplates * file: src/cores/fw/hooks/useMarketplaceTemplates.ts:141 * kind: hook * core: fw * spec: (none) * summary: Hook for managing featured marketplace templates. * score: 1 ### hook useFeaturedTemplatesRanked * file: src/cores/fw/utils/featuredTemplates.ts:91 * kind: hook * core: fw * spec: (none) * summary: Hook to fetch and rank featured templates from the marketplaceUses React Query caching (5-minute staleTime) for performance * score: 4 ### hook useFormPermissions * file: src/cores/fw/hooks/useFormPermissions.ts:51 * kind: hook * core: fw * spec: (none) * summary: Hook for managing form permissions. * score: 1 ### hook useFormSignature * file: src/cores/fw/hooks/useFormSignature.ts:35 * kind: hook * core: fw * spec: (none) * summary: Hook for managing form signature. * score: 1 ### hook useFormSubmissionAutomation * file: src/cores/fw/hooks/useFormSubmissionAutomation.ts:14 * kind: hook * core: fw * spec: (none) * summary: FW-46: Hook for triggering form submission automation via the durable execution worker.Path A: Direct invocation of automation-executor (existing behavior).Falls back to enqueuing via RPC if the direct path fails. * score: 4 ### hook useFormTemplate * file: src/cores/fw/hooks/useFormTemplate.ts:17 * kind: hook * core: fw * spec: (none) * summary: Hook for managing form template. * score: 1 ### hook useFormTemplateClone * file: src/cores/fw/hooks/useFormTemplateClone.ts:33 * kind: hook * core: fw * spec: (none) * summary: Hook for managing form template clone. * score: 1 ### hook useFormTemplateRatings * file: src/cores/fw/hooks/useFormTemplateRatings.ts:20 * kind: hook * core: fw * spec: (none) * summary: Fetch all ratings for a form template * score: 4 ### hook useFormTemplates * file: src/cores/fw/hooks/useFormTemplates.ts:25 * kind: hook * core: fw * spec: (none) * summary: Hook for managing form templates. * score: 1 ### hook useFormVersions * file: src/cores/fw/hooks/useFormVersions.ts:80 * kind: hook * core: fw * spec: (none) * summary: Hook for managing form versions. * score: 1 ### hook useFwAuditTrailSettings * file: src/cores/fw/hooks/useFwAuditTrailSettings.ts:28 * kind: hook * core: fw * spec: (none) * summary: Hook for managing the FW-43 audit trail configuration. * returns: Query + mutation for . * score: 1 ### hook useFWDashboardStats * file: src/cores/fw/hooks/useFWDashboardStats.ts:22 * kind: hook * core: fw * spec: (none) * summary: Hook for managing fwdashboard stats. * score: 1 ### hook useFWModuleSettings * file: src/cores/fw/hooks/useFWModuleSettings.ts:21 * kind: hook * core: fw * spec: (none) * summary: Hook for managing FW module settings at the organization levelUses context for organizationId - standardized pattern * score: 1 ### hook useHealthcarePatternDetail * file: src/cores/fw/hooks/useHealthcarePatterns.ts:72 * kind: hook * core: fw * spec: (none) * summary: Fetch a single healthcare pattern template by ID * score: 4 ### hook useHealthcarePatterns * file: src/cores/fw/hooks/useHealthcarePatterns.ts:32 * kind: hook * core: fw * spec: (none) * summary: Fetch healthcare workflow templates (marketplace patterns with pattern\_category set) * score: 4 ### hook useImportTemplate * file: src/cores/fw/hooks/useImportTemplate.ts:46 * kind: hook * core: fw * spec: (none) * summary: Hook for importing workflow templates * score: 1 ### hook useInstantiatePattern * file: src/cores/fw/hooks/useHealthcarePatterns.ts:92 * kind: hook * core: fw * spec: (none) * summary: Create an org workflow from a healthcare pattern template * score: 4 ### hook useInvalidateFeaturedCache * file: src/cores/fw/utils/featuredTemplates.ts:121 * kind: hook * core: fw * spec: (none) * summary: Hook to invalidate the featured templates cache * score: 4 ### hook useKpiConfigurationMutations * file: src/cores/fw/hooks/useKpiConfigurations.ts:48 * kind: hook * core: fw * spec: (none) * summary: Returns mutations for KPI configuration CRUD. * score: 4 ### hook useKpiConfigurations * file: src/cores/fw/hooks/useKpiConfigurations.ts:22 * kind: hook * core: fw * spec: (none) * summary: Fetches active KPI configurations for the current organization. * params: * organizationId — Optional override; falls back to context org. * score: 4 ### hook useKpiDashboard * file: src/cores/fw/hooks/useKpiDashboard.ts:68 * kind: hook * core: fw * spec: (none) * summary: Composite hook that combines KPI configs and snapshots into dashboard cards. * score: 4 ### hook useKpiReportScheduleMutations * file: src/cores/fw/hooks/useKpiReportSchedules.ts:45 * kind: hook * core: fw * spec: (none) * summary: Returns mutations for KPI report schedule CRUD. * score: 4 ### hook useKpiReportSchedules * file: src/cores/fw/hooks/useKpiReportSchedules.ts:20 * kind: hook * core: fw * spec: (none) * summary: Fetches all KPI report schedules for the current organization. * score: 4 ### hook useKpiSnapshots * file: src/cores/fw/hooks/useKpiSnapshots.ts:46 * kind: hook * core: fw * spec: (none) * summary: Fetches KPI snapshots within a date range. * score: 4 ### hook useMarketplaceTemplates * file: src/cores/fw/hooks/useMarketplaceTemplates.ts:73 * kind: hook * core: fw * spec: (none) * summary: Hook for managing marketplace templates. * score: 1 ### hook useMyApprovalRequests * file: src/cores/fw/hooks/useMyApprovalRequests.ts:47 * kind: hook * core: fw * spec: (none) * summary: Hook for managing my approval requests. * score: 1 ### hook useMyFormTemplateRating * file: src/cores/fw/hooks/useFormTemplateRatings.ts:55 * kind: hook * core: fw * spec: (none) * summary: Get current user's rating for a form template * score: 4 ### hook useMyTemplateRating * file: src/cores/fw/hooks/useTemplateRatings.ts:72 * kind: hook * core: fw * spec: (none) * summary: Get current user's rating for a template * score: 4 ### hook useNodePerformanceMetrics * file: src/cores/fw/hooks/useNodePerformanceMetrics.ts:25 * kind: hook * core: fw * spec: (none) * summary: Hook for fetching node-level performance metrics (FW-23) * score: 1 ### hook useNodePerformanceTrends * file: src/cores/fw/hooks/useNodePerformanceTrends.ts:42 * kind: hook * core: fw * spec: (none) * summary: Hook for managing node performance trends. * score: 1 ### hook useObservabilityCurrent * file: src/cores/fw/hooks/useObservabilityCurrent.ts:11 * kind: hook * core: fw * spec: (none) * summary: Fetches current observability metrics by querying source tables directly. * score: 4 ### hook useObservabilityTimeseries * file: src/cores/fw/hooks/useObservabilityTimeseries.ts:25 * kind: hook * core: fw * spec: (none) * summary: Fetches workflow executions and buckets them into time-series points. * score: 4 ### hook useOptimizationSuggestions * file: src/cores/fw/hooks/useOptimizationSuggestions.ts:19 * kind: hook * core: fw * spec: (none) * summary: Fetch optimization suggestions for a workflow/organization * score: 4 ### hook useOrphanReport * file: src/cores/fw/hooks/useOrphanReport.ts:14 * kind: hook * core: fw * spec: (none) * summary: Fetches orphan candidates: entities with no inbound dependency edges.For automations/workflows, also checks status is draft/paused (not active). * score: 4 ### hook usePageTemplate * file: src/cores/fw/hooks/usePageTemplate.ts:51 * kind: hook * core: fw * spec: (none) * summary: Hook for managing page template. * score: 1 ### hook usePageTemplates * file: src/cores/fw/hooks/usePageTemplates.ts:54 * kind: hook * core: fw * spec: (none) * summary: Hook for managing page templates. * score: 1 ### hook usePathAnalytics * file: src/cores/fw/hooks/usePathAnalytics.ts:16 * kind: hook * core: fw * spec: (none) * summary: Hook for managing path analytics. * score: 1 ### hook usePerformanceProfile * file: src/cores/fw/hooks/usePerformanceProfile.ts:41 * kind: hook * core: fw * spec: (none) * summary: Hook for managing performance profile. * score: 1 ### hook usePortalConfig * file: src/cores/fw/hooks/usePortalConfig.ts:14 * kind: hook * core: fw * spec: (none) * summary: Hook for managing portal config. * score: 1 ### hook usePortalConfigMutation * file: src/cores/fw/hooks/usePortalConfigMutation.ts:20 * kind: hook * core: fw * spec: (none) * summary: Hook for managing portal config mutation. * score: 1 ### hook usePortalLogoUpload * file: src/cores/fw/hooks/usePortalLogoUpload.ts:30 * kind: hook * core: fw * spec: (none) * summary: Hook for managing portal logo upload. * score: 1 ### hook usePortalSubmission * file: src/cores/fw/hooks/usePortalSubmission.ts:49 * kind: hook * core: fw * spec: (none) * summary: Hook for managing portal submission. * score: 1 ### hook usePrefillRules * file: src/cores/fw/hooks/usePrefillRules.ts:15 * kind: hook * core: fw * spec: (none) * summary: Fetches all prefill rules for a form (active and inactive). * score: 4 ### hook usePublicPortal * file: src/cores/fw/hooks/usePublicPortal.ts:21 * kind: hook * core: fw * spec: (none) * summary: Hook for managing public portal. * score: 1 ### hook useQueryWhitelist * file: src/cores/fw/hooks/useQueryWhitelist.ts:21 * kind: hook * core: fw * spec: (none) * summary: Hook for managing query whitelist. * score: 1 ### hook useRealtimeExecution * file: src/cores/fw/hooks/useRealtimeExecutions.ts:150 * kind: hook * core: fw * spec: (none) * summary: Hook for managing realtime execution. * score: 1 ### hook useRealtimeExecutions * file: src/cores/fw/hooks/useRealtimeExecutions.ts:51 * kind: hook * core: fw * spec: (none) * summary: Hook for managing realtime executions. * score: 1 ### hook useRecoveryWorkflows * file: src/cores/fw/hooks/workflows/useRecoveryWorkflows.ts:21 * kind: hook * core: fw * spec: (none) * summary: Fetches recovery workflows for a rule. Provides create and delete mutations. * params: * organizationId — Organization scope * ruleId — Automation rule ID * score: 4 ### hook useRegulatoryChangeLog * file: src/cores/fw/hooks/useHealthcarePatterns.ts:155 * kind: hook * core: fw * spec: (none) * summary: Fetch regulatory change log entries for the current org * score: 4 ### hook useReorderApprovalRoutingRules * file: src/cores/fw/hooks/useApprovalRoutingRules.ts:195 * kind: hook * core: fw * spec: (none) * summary: Reorder routing rules by updating priorities in batch. * score: 4 ### hook useRetryConfig * file: src/cores/fw/hooks/workflows/useRetryConfig.ts:22 * kind: hook * core: fw * spec: (none) * summary: Fetches retry config for a specific rule + node, with upsert and delete mutations. * params: * organizationId — Organization scope * ruleId — Automation rule ID * nodeId — Workflow node ID * score: 4 ### hook useRetryStep * file: src/cores/fw/hooks/workflows/useRetryStep.ts:19 * kind: hook * core: fw * spec: (none) * summary: Retries a failed execution step by resetting its status to pending. * score: 4 ### hook useRuleEvaluations * file: src/cores/fw/hooks/useRuleEvaluations.ts:15 * kind: hook * core: fw * spec: (none) * summary: Lists rule evaluation audit entries for an organization with optional filters. * score: 4 ### hook useSandboxExecution * file: src/cores/fw/hooks/useSandboxExecution.ts:21 * kind: hook * core: fw * spec: (none) * summary: Hook for managing sandbox execution. * score: 1 ### hook useServerEvaluation * file: src/cores/fw/hooks/useServerEvaluation.ts:47 * kind: hook * core: fw * spec: (none) * summary: Hook for server-side decision table evaluation via the edge function. * params: * tableId — The decision table UUID to evaluate against. * score: 1 ### hook useSignedPdfGeneration * file: src/cores/fw/hooks/useSignedPdfGeneration.ts:27 * kind: hook * core: fw * spec: (none) * summary: Hook for managing signed pdf generation. * score: 1 ### hook useSubflowDefinition * file: src/cores/fw/hooks/useSubflowDefinition.ts:34 * kind: hook * core: fw * spec: (none) * summary: Hook for managing subflow definition. * score: 1 ### hook useSubflows * file: src/cores/fw/hooks/useSubflows.ts:18 * kind: hook * core: fw * spec: (none) * summary: Hook for managing subflows. * score: 1 ### hook useSubmissionDetail * file: src/cores/fw/hooks/useSubmissionDetail.ts:205 * kind: hook * core: fw * spec: (none) * summary: Hook for managing submission detail. * score: 1 ### hook useSubmissionExport * file: src/cores/fw/hooks/useSubmissionExport.ts:75 * kind: hook * core: fw * spec: (none) * summary: Hook for managing submission export. * score: 1 ### hook useSubmissionList * file: src/cores/fw/hooks/useSubmissionList.ts:121 * kind: hook * core: fw * spec: (none) * summary: Hook for managing submission list. * score: 1 ### hook useSubmissionMutation * file: src/cores/fw/hooks/useSubmissionMutation.ts:59 * kind: hook * core: fw * spec: (none) * summary: Hook for managing submission mutation. * score: 1 ### hook useTemplateClone * file: src/cores/fw/hooks/useTemplateClone.ts:74 * kind: hook * core: fw * spec: (none) * summary: Hook to clone a template and create a new workflow * score: 4 ### hook useTemplateRatings * file: src/cores/fw/hooks/useTemplateRatings.ts:41 * kind: hook * core: fw * spec: (none) * summary: Fetch all ratings for a template * score: 4 ### hook useTemplateUpdateNotifications * file: src/cores/fw/hooks/useTemplateUpdateNotifications.ts:22 * kind: hook * core: fw * spec: (none) * summary: Hook for fetching and managing template update notifications * score: 1 ### hook useTemplateUsageAnalytics * file: src/cores/fw/hooks/useTemplateUsageAnalytics.ts:85 * kind: hook * core: fw * spec: (none) * summary: Hook for managing template usage analytics. * score: 1 ### hook useTemplateVersions * file: src/cores/fw/hooks/useTemplateVersions.ts:19 * kind: hook * core: fw * spec: (none) * summary: Hook for fetching and managing template versions * score: 1 ### hook useTestCases * file: src/cores/fw/hooks/useTestCases.ts:30 * kind: hook * core: fw * spec: (none) * summary: Hook for managing test cases. * score: 1 ### hook useTestConnection * file: src/cores/fw/hooks/useTestConnection.ts:33 * kind: hook * core: fw * spec: (none) * summary: Hook for managing test connection. * score: 1 ### hook useTestCoverage * file: src/cores/fw/hooks/useTestCoverage.ts:28 * kind: hook * core: fw * spec: (none) * summary: Hook for managing test coverage. * score: 1 ### hook useTestDatasets * file: src/cores/fw/hooks/useTestDatasets.ts:17 * kind: hook * core: fw * spec: (none) * summary: Hook for managing test datasets. * score: 1 ### hook useTestScenarios * file: src/cores/fw/hooks/useTestScenarios.ts:35 * kind: hook * core: fw * spec: (none) * summary: Hook for managing test scenarios. * score: 1 ### hook useTimeoutConfig * file: src/cores/fw/hooks/workflows/useTimeoutConfig.ts:15 * kind: hook * core: fw * spec: (none) * summary: Reads and updates timeout\_config for a workflow definition. * score: 4 ### hook useTimeoutSettings * file: src/cores/fw/hooks/settings/useTimeoutSettings.ts:45 * kind: hook * core: fw * spec: (none) * summary: Read and update timeout settings from fw\_module\_settings. * score: 4 ### hook useUnreadAlertCount * file: src/cores/fw/hooks/useWorkflowAlerts.ts:223 * kind: hook * core: fw * spec: (none) * summary: Hook to get unread/new alert count for badge display. * score: 4 ### hook useUpdateApprovalRoutingRule * file: src/cores/fw/hooks/useApprovalRoutingRules.ts:126 * kind: hook * core: fw * spec: (none) * summary: Update a routing rule. * score: 1 ### hook useUpdateFormTemplate * file: src/cores/fw/hooks/useCreateFormTemplate.ts:269 * kind: hook * core: fw * spec: (none) * summary: Update an existing form template * score: 4 ### hook useUpdateFormTemplateRating * file: src/cores/fw/hooks/useFormTemplateRatings.ts:155 * kind: hook * core: fw * spec: (none) * summary: Update an existing form template rating * score: 4 ### hook useUpdatePrefillRule * file: src/cores/fw/hooks/usePrefillRules.ts:59 * kind: hook * core: fw * spec: (none) * summary: Updates an existing prefill rule. * score: 4 ### hook useUpdateRegulatoryChange * file: src/cores/fw/hooks/useHealthcarePatterns.ts:221 * kind: hook * core: fw * spec: (none) * summary: Update a regulatory change log entry * score: 4 ### hook useUpdateTemplateRating * file: src/cores/fw/hooks/useTemplateRatings.ts:187 * kind: hook * core: fw * spec: (none) * summary: Update an existing rating * score: 1 ### hook useUpdateWorkflowTemplate * file: src/cores/fw/hooks/useWorkflowTemplates.ts:170 * kind: hook * core: fw * spec: (none) * summary: Provides update workflow template queries and mutation actions scoped to the current organization. * score: 4 ### hook useVariablePreview * file: src/cores/fw/hooks/useVariablePreview\.ts:49 * kind: hook * core: fw * spec: (none) * summary: Hook for managing variable preview. * score: 1 ### hook useVersionComparison * file: src/cores/fw/hooks/useVersionComparison.ts:44 * kind: hook * core: fw * spec: (none) * summary: Hook for fetching available versions and comparing them * score: 1 ### hook useVoteFormTemplateHelpfulness * file: src/cores/fw/hooks/useFormTemplateRatings.ts:260 * kind: hook * core: fw * spec: (none) * summary: Vote on review helpfulness - uses atomic RPC to prevent race conditions * score: 4 ### hook useVoteHelpfulness * file: src/cores/fw/hooks/useTemplateRatings.ts:251 * kind: hook * core: fw * spec: (none) * summary: Vote on review helpfulness - uses atomic RPC to prevent race conditions * score: 4 ### hook useWebhookEndpoint * file: src/cores/fw/hooks/useWebhookEndpoints.ts:49 * kind: hook * core: fw * spec: (none) * summary: Fetches a single webhook endpoint by ID. * params: * endpointId — The endpoint UUID. * returns: Query result with a single . * score: 4 ### hook useWebhookEndpointMutations * file: src/cores/fw/hooks/useWebhookEndpointMutations.ts:17 * kind: hook * core: fw * spec: (none) * summary: Returns mutations for webhook endpoint CRUD + activation control. * score: 4 ### hook useWebhookEndpoints * file: src/cores/fw/hooks/useWebhookEndpoints.ts:21 * kind: hook * core: fw * spec: (none) * summary: Fetches all webhook endpoints for the current organization. * params: * organizationId — Optional override; falls back to context org. * returns: Query result with . * score: 4 ### hook useWebhookLog * file: src/cores/fw/hooks/useWebhookLogs.ts:73 * kind: hook * core: fw * spec: (none) * summary: Fetches a single webhook log entry by ID. * params: * logId — The log UUID. * returns: Query result with a single . * score: 4 ### hook useWebhookLogs * file: src/cores/fw/hooks/useWebhookLogs.ts:21 * kind: hook * core: fw * spec: (none) * summary: Fetches webhook logs with optional filters. * params: * filters — Optional filters for endpoint, status, date range, etc. * returns: Query result with . * score: 4 ### hook useWebhookSecretMutations * file: src/cores/fw/hooks/useWebhookSecrets.ts:51 * kind: hook * core: fw * spec: (none) * summary: Returns mutations for creating and deactivating webhook secrets. * score: 4 ### hook useWebhookSecrets * file: src/cores/fw/hooks/useWebhookSecrets.ts:24 * kind: hook * core: fw * spec: (none) * summary: Fetches secrets for a given webhook endpoint. * params: * endpointId — The endpoint UUID to scope secrets. * returns: Query result with . * score: 4 ### hook useWorkflow * file: src/cores/fw/machines/useWorkflowMachine.ts:262 * kind: hook * core: fw * spec: (none) * summary: Create and use a workflow machine in one hookConvenience wrapper combining createWorkflowMachine and useWorkflowMachine * params: * config — Workflow configuration. IMPORTANT: Callers must provide a stable/memoized config object to prevent unnecessary machine recreation. * options — Hook options * returns: Workflow controls and state * score: 4 ### hook useWorkflowAlertRules * file: src/cores/fw/hooks/useWorkflowAlertRules.ts:27 * kind: hook * core: fw * spec: (none) * summary: Hook for managing workflow alert rules.Alert rules can be org-wide (rule\_id = null) or specific to an automation rule. * params: * organizationId — The organization ID * ruleId — Optional automation rule ID for workflow-specific alerts * score: 1 ### hook useWorkflowAlerts * file: src/cores/fw/hooks/useWorkflowAlerts.ts:18 * kind: hook * core: fw * spec: (none) * summary: Hook for viewing and managing workflow alerts with real-time updates. * params: * organizationId — The organization ID * filters — Optional filters for alerts * page — Page number for pagination (0-indexed) * score: 1 ### hook useWorkflowApprovals * file: src/cores/fw/hooks/useWorkflowApprovals.ts:35 * kind: hook * core: fw * spec: (none) * summary: Hook for managing workflow approvals. * score: 1 ### hook useWorkflowDefinition * file: src/cores/fw/hooks/useWorkflowDefinition.ts:33 * kind: hook * core: fw * spec: (none) * summary: Hook for managing workflow definition. * score: 1 ### hook useWorkflowDefinitionRateLimits * file: src/cores/fw/hooks/useWorkflowDefinitionRateLimits.ts:15 * kind: hook * core: fw * spec: (none) * summary: Lists, creates, updates, and deletes rate limit configs for a specific workflow definition. * score: 4 ### hook useWorkflowEvent * file: src/cores/fw/hooks/useWorkflowEvents.ts:93 * kind: hook * core: fw * spec: (none) * summary: Hook to fetch a single workflow event by name * score: 4 ### hook useWorkflowEvents * file: src/cores/fw/hooks/useWorkflowEvents.ts:17 * kind: hook * core: fw * spec: (none) * summary: Hook for managing workflow events. * score: 1 ### hook useWorkflowExecution * file: src/cores/fw/hooks/useWorkflowExecution.ts:35 * kind: hook * core: fw * spec: (none) * summary: Hook for managing workflow execution. * score: 1 ### hook useWorkflowExecutionStatus * file: src/cores/fw/hooks/useWorkflowExecutionStatus.ts:10 * kind: hook * core: fw * spec: (none) * summary: FW-46: Hook for polling workflow execution status.Supports queued and retry\_pending statuses introduced by the durable worker. * score: 4 ### hook useWorkflowMachine * file: src/cores/fw/machines/useWorkflowMachine.ts:132 * kind: hook * core: fw * spec: (none) * summary: React hook for workflow state machine * params: * machineOrConfig — XState machine or config to create one * steps — Workflow steps (required if config provided) * options — Hook options * returns: Workflow controls and state * score: 4 ### hook useWorkflowNotificationPreferences * file: src/cores/fw/hooks/useWorkflowNotificationPreferences.ts:34 * kind: hook * core: fw * spec: (none) * summary: Hook for managing user's workflow notification preferences.Creates default preferences if none exist. * params: * organizationId — The organization ID * score: 1 ### hook useWorkflowNotifications * file: src/cores/fw/hooks/useWorkflowNotifications.ts:20 * kind: hook * core: fw * spec: (none) * summary: Hook for managing workflow notification rules for a specific automation rule. * params: * ruleId — The automation rule ID to fetch notification rules for * filters — Optional filters for notification rules * score: 1 ### hook useWorkflowPerformanceHistory * file: src/cores/fw/hooks/usePerformanceProfile.ts:142 * kind: hook * core: fw * spec: (none) * summary: Hook for managing workflow performance history. * score: 1 ### hook useWorkflowPerformanceMetrics * file: src/cores/fw/hooks/useWorkflowPerformanceMetrics.ts:31 * kind: hook * core: fw * spec: (none) * summary: Hook for fetching and managing workflow performance metrics (FW-23) * score: 1 ### hook useWorkflowRateLimits * file: src/cores/fw/hooks/useWorkflowRateLimits.ts:12 * kind: hook * core: fw * spec: (none) * summary: Lists, creates, updates, and deletes rate limit configs for an organization. * score: 4 ### hook useWorkflowSchedules * file: src/cores/fw/hooks/useWorkflowSchedules.ts:54 * kind: hook * core: fw * spec: (none) * summary: Manage workflow schedules for one organization. * params: * organizationId — the current user's organization (from useCurrentUser) * userId — the current user's id, stamped as created\_by on insert * score: 4 ### hook useWorkflowTemplate * file: src/cores/fw/hooks/useWorkflowTemplates.ts:82 * kind: hook * core: fw * spec: (none) * summary: Provides workflow template queries and mutation actions scoped to the current organization. * score: 4 ### hook useWorkflowTemplates * file: src/cores/fw/hooks/useWorkflowTemplates.ts:22 * kind: hook * core: fw * spec: (none) * summary: Provides workflow templates queries and mutation actions scoped to the current organization. * score: 4 ### hook useWorkflowVariables * file: src/cores/fw/hooks/useWorkflowVariables.ts:57 * kind: hook * core: fw * spec: (none) * summary: Hook to manage workflow variables * score: 4 ### hook useWorkflowVersions * file: src/cores/fw/hooks/useWorkflowVersions.ts:52 * kind: hook * core: fw * spec: (none) * summary: Hook for managing workflow versions. * score: 1 ## Components ### component ActionEditorDialog * file: src/cores/fw/components/ActionEditorDialog.tsx:86 * kind: component * core: fw * spec: (none) * summary: Utility for action editor dialog. * score: 1 ### component AdvancedConditionBuilder * file: src/cores/fw/components/conditions/AdvancedConditionBuilder.tsx:42 * kind: component * core: fw * spec: (none) * summary: Utility for advanced condition builder. * score: 1 ### component AIGenerateDescriptionButton * file: src/cores/fw/components/ai/AIGenerateDescriptionButton.tsx:41 * kind: component * core: fw * spec: (none) * summary: Utility for aigenerate description button. * score: 1 ### component AISimilarTemplates * file: src/cores/fw/components/ai/AISimilarTemplates.tsx:36 * kind: component * core: fw * spec: (none) * summary: Utility for aisimilar templates. * score: 1 ### component AITemplateRecommendations * file: src/cores/fw/components/ai/AITemplateRecommendations.tsx:38 * kind: component * core: fw * spec: (none) * summary: Utility for aitemplate recommendations. * score: 1 ### component AITemplateSearchInput * file: src/cores/fw/components/ai/AITemplateSearchInput.tsx:52 * kind: component * core: fw * spec: (none) * summary: Utility for aitemplate search input. * score: 1 ### component AlertRulesManager * file: src/cores/fw/components/notifications/AlertRulesManager.tsx:53 * kind: component * core: fw * spec: (none) * summary: Utility for alert rules manager. * score: 1 ### component AlertsDashboard * file: src/cores/fw/components/notifications/AlertsDashboard.tsx:50 * kind: component * core: fw * spec: (none) * summary: Utility for alerts dashboard. * score: 1 ### component AlertThresholdDialog * file: src/cores/fw/components/AlertThresholdDialog.tsx:31 * kind: component * core: fw * spec: (none) * summary: Dialog for configuring automation alert thresholds. Uses sm:max-w-lg sizing. * score: 2 ### component AnalyticsDateFilter * file: src/cores/fw/components/analytics/AnalyticsDateFilter.tsx:31 * kind: component * core: fw * spec: (none) * summary: Utility for analytics date filter. * score: 1 ### component APIActionConfig * file: src/cores/fw/components/automation/actions/APIActionConfig.tsx:36 * kind: component * core: fw * spec: (none) * summary: Utility for apiaction config. * score: 1 ### component APIActionConfigStandalone * file: src/cores/fw/components/automation/actions/APIActionConfigStandalone.tsx:54 * kind: component * core: fw * spec: (none) * summary: Utility for apiaction config standalone. * score: 1 ### component ApprovalChainBuilder * file: src/cores/fw/components/approvals/ApprovalChainBuilder.tsx:51 * kind: component * core: fw * spec: (none) * summary: Utility for approval chain builder. * score: 1 ### component ApprovalChainCard * file: src/cores/fw/components/approvals/ApprovalChainCard.tsx:27 * kind: component * core: fw * spec: (none) * summary: Utility for approval chain card. * score: 1 ### component ApprovalChainEditPage * file: src/cores/fw/pages/ApprovalChainEditPage.tsx:16 * kind: component * core: fw * spec: (none) * summary: Utility for approval chain edit page. * score: 1 ### component ApprovalChainEmptyState * file: src/cores/fw/components/approvals/ApprovalChainEmptyState.tsx:14 * kind: component * core: fw * spec: (none) * summary: Utility for approval chain empty state. * score: 1 ### component ApprovalChainList * file: src/cores/fw/components/approvals/ApprovalChainList.tsx:23 * kind: component * core: fw * spec: (none) * summary: Utility for approval chain list. * score: 1 ### component ApprovalChainNewPage * file: src/cores/fw/pages/ApprovalChainNewPage.tsx:13 * kind: component * core: fw * spec: (none) * summary: Utility for approval chain new page. * score: 1 ### component ApprovalChainsPage * file: src/cores/fw/pages/ApprovalChainsPage.tsx:18 * kind: component * core: fw * spec: (none) * summary: Utility for approval chains page. * score: 1 ### component ApprovalChainStepper * file: src/cores/fw/components/approvals/ApprovalChainStepper.tsx:20 * kind: component * core: fw * spec: (none) * summary: Utility for approval chain stepper. * score: 1 ### component ApprovalDecisionDialog * file: src/cores/fw/components/ApprovalDecisionDialog.tsx:21 * kind: component * core: fw * spec: (none) * summary: Utility for approval decision dialog. * score: 1 ### component ApprovalHistoryTimeline * file: src/cores/fw/components/approvals/ApprovalHistoryTimeline.tsx:28 * kind: component * core: fw * spec: (none) * summary: Utility for approval history timeline. * score: 1 ### component ApprovalInboxPage * file: src/cores/fw/pages/ApprovalInboxPage.tsx:17 * kind: component * core: fw * spec: (none) * summary: Utility for approval inbox page. * score: 1 ### component ApprovalNodeConfig * file: src/cores/fw/components/workflow/config/ApprovalNodeConfig.tsx:25 * kind: component * core: fw * spec: (none) * summary: Utility for approval node config. * score: 1 ### component ApprovalRequestCard * file: src/cores/fw/components/approvals/ApprovalRequestCard.tsx:28 * kind: component * core: fw * spec: (none) * summary: Utility for approval request card. * score: 1 ### component ApprovalRequestDetail * file: src/cores/fw/components/approvals/ApprovalRequestDetail.tsx:40 * kind: component * core: fw * spec: (none) * summary: Utility for approval request detail. * score: 1 ### component ApprovalRequestDetailPage * file: src/cores/fw/pages/ApprovalRequestDetailPage.tsx:15 * kind: component * core: fw * spec: (none) * summary: Utility for approval request detail page. * score: 1 ### component ApprovalRoutingRuleDialog * file: src/cores/fw/components/ApprovalRoutingRuleDialog.tsx:45 * kind: component * core: fw * spec: (none) * summary: Dialog for creating or editing an approval routing rule. * score: 2 ### component ApprovalRoutingRulesPage * file: src/cores/fw/pages/ApprovalRoutingRulesPage.tsx:32 * kind: component * core: fw * spec: (none) * summary: Admin page for managing approval routing rules. * score: 2 ### component ApprovalStepEditor * file: src/cores/fw/components/approvals/ApprovalStepEditor.tsx:38 * kind: component * core: fw * spec: (none) * summary: Utility for approval step editor. * score: 1 ### component ApprovalTaskCard * file: src/cores/fw/components/ApprovalTaskCard.tsx:19 * kind: component * core: fw * spec: (none) * summary: Utility for approval task card. * score: 1 ### component ApprovalTasksPage * file: src/cores/fw/pages/ApprovalTasksPage.tsx:15 * kind: component * core: fw * spec: (none) * summary: Utility for approval tasks page. * score: 1 ### component ApproveDialog * file: src/cores/fw/components/approvals/ApproveDialog.tsx:29 * kind: component * core: fw * spec: (none) * summary: Utility for approve dialog. * score: 1 ### component ApproverSelector * file: src/cores/fw/components/approvals/ApproverSelector.tsx:59 * kind: component * core: fw * spec: (none) * summary: Utility for approver selector. * score: 1 ### component AttributeBrowser * file: src/cores/fw/components/conditions/AttributeBrowser.tsx:66 * kind: component * core: fw * spec: (none) * summary: Utility for attribute browser. * score: 1 ### component AuditCompliancePage * file: src/cores/fw/pages/AuditCompliancePage.tsx:28 * kind: component * core: fw * spec: (none) * summary: Main audit & compliance page with four tabs per CONTEXT.md. * score: 2 ### component AutomationActionsBuilder * file: src/cores/fw/components/AutomationActionsBuilder.tsx:47 * kind: component * core: fw * spec: (none) * summary: Utility for automation actions builder. * score: 1 ### component AutomationAnalyticsDashboard * file: src/cores/fw/components/AutomationAnalyticsDashboard.tsx:18 * kind: component * core: fw * spec: (none) * summary: Utility for automation analytics dashboard. * score: 1 ### component AutomationDetail * file: src/cores/fw/pages/AutomationDetail.tsx:33 * kind: component * core: fw * spec: (none) * summary: Utility for automation detail. * score: 1 ### component AutomationLogViewer * file: src/cores/fw/components/AutomationLogViewer.tsx:47 * kind: component * core: fw * spec: (none) * summary: Utility for automation log viewer. * score: 1 ### component AutomationRuleBuilder * file: src/cores/fw/components/AutomationRuleBuilder.tsx:127 * kind: component * core: fw * spec: (none) * summary: Utility for automation rule builder. * score: 1 ### component AutomationRulesList * file: src/cores/fw/components/AutomationRulesList.tsx:53 * kind: component * core: fw * spec: (none) * summary: Automation rules list with deprecation badges (FW-16-P2 T10). * score: 2 ### component Automations * file: src/cores/fw/pages/Automations.tsx:27 * kind: component * core: fw * spec: (none) * summary: Utility for automations. * score: 1 ### component AutomationStatsWidget * file: src/cores/fw/components/dashboard/AutomationStatsWidget.tsx:27 * kind: component * core: fw * spec: (none) * summary: Utility for automation stats widget. * score: 1 ### component BottleneckAlerts * file: src/cores/fw/components/analytics/BottleneckAlerts.tsx:22 * kind: component * core: fw * spec: (none) * summary: Utility for bottleneck alerts. * score: 1 ### component BottleneckAlertsSkeleton * file: src/cores/fw/components/analytics/skeletons/BottleneckAlertsSkeleton.tsx:13 * kind: component * core: fw * spec: (none) * summary: Utility for bottleneck alerts skeleton. * score: 1 ### component BreakpointToggle * file: src/cores/fw/components/workflow/monitoring/BreakpointToggle.tsx:16 * kind: component * core: fw * spec: (none) * summary: Utility for breakpoint toggle. * score: 1 ### component BusinessCalendarForm * file: src/cores/fw/components/BusinessCalendarForm.tsx:69 * kind: component * core: fw * spec: (none) * summary: Business calendar create/edit dialog with business hours and holiday management. * score: 2 ### component BusinessCalendarListPage * file: src/cores/fw/pages/BusinessCalendarListPage.tsx:24 * kind: component * core: fw * spec: (none) * summary: Business Calendar management list page. * score: 2 ### component CalendarHolidayManager * file: src/cores/fw/components/CalendarHolidayManager.tsx:27 * kind: component * core: fw * spec: (none) * summary: Holiday management section within the calendar form. * score: 2 ### component CheckpointSettingsSection * file: src/cores/fw/components/settings/CheckpointSettingsSection.tsx:31 * kind: component * core: fw * spec: (none) * summary: Self-contained checkpoint settings form for the FW Settings page. * score: 2 ### component ComparisonSummary * file: src/cores/fw/components/analytics/ComparisonSummary.tsx:19 * kind: component * core: fw * spec: (none) * summary: Utility for comparison summary. * score: 1 ### component CompletionFunnel * file: src/cores/fw/components/analytics/CompletionFunnel.tsx:19 * kind: component * core: fw * spec: (none) * summary: Utility for completion funnel. * score: 1 ### component ComplianceReportsTab * file: src/cores/fw/components/audit/ComplianceReportsTab.tsx:42 * kind: component * core: fw * spec: (none) * summary: Form-first compliance report generator. * score: 2 ### component ConditionalLogicBuilder * file: src/cores/fw/components/ConditionalLogicBuilder.tsx:67 * kind: component * core: fw * spec: (none) * summary: Utility for conditional logic builder. * score: 1 ### component ConditionBuilder * file: src/cores/fw/components/workflow/ConditionBuilder.tsx:99 * kind: component * core: fw * spec: (none) * summary: Utility for condition builder. * score: 1 ### component ConditionConfigPanel * file: src/cores/fw/components/conditions/ConditionConfigPanel.tsx:46 * kind: component * core: fw * spec: (none) * summary: Utility for condition config panel. * score: 1 ### component ConditionGroupEditor * file: src/cores/fw/components/conditions/ConditionGroupEditor.tsx:41 * kind: component * core: fw * spec: (none) * summary: Utility for condition group editor. * score: 1 ### component ConditionRow * file: src/cores/fw/components/approvals/ConditionRow\.tsx:37 * kind: component * core: fw * spec: (none) * summary: Utility for condition row. * score: 1 ### component ConnectionManager * file: src/cores/fw/components/settings/ConnectionManager.tsx:58 * kind: component * core: fw * spec: (none) * summary: Utility for connection manager. * score: 1 ### component CoverageVisualization * file: src/cores/fw/components/testing/CoverageVisualization.tsx:19 * kind: component * core: fw * spec: (none) * summary: Utility for coverage visualization. * score: 1 ### component CreateDelegationDialog * file: src/cores/fw/components/approvals/CreateDelegationDialog.tsx:46 * kind: component * core: fw * spec: (none) * summary: Utility for create delegation dialog. * score: 1 ### component CreateFormTemplateDialog * file: src/cores/fw/components/templates/CreateFormTemplateDialog.tsx:48 * kind: component * core: fw * spec: (none) * summary: Utility for create form template dialog. * score: 1 ### component DateRelativeTriggerConfig * file: src/cores/fw/components/triggers/DateRelativeTriggerConfig.tsx:75 * kind: component * core: fw * spec: (none) * summary: Utility for date relative trigger config. * score: 1 ### component DeadLetterQueuePage * file: src/cores/fw/pages/DeadLetterQueuePage.tsx:40 * kind: component * core: fw * spec: (none) * summary: Admin page for managing the Dead Letter Queue. * score: 2 ### component DeadlineIndicator * file: src/cores/fw/components/workflow/monitoring/DeadlineIndicator.tsx:68 * kind: component * core: fw * spec: (none) * summary: Live deadline status indicator with countdown. * score: 2 ### component DebugControls * file: src/cores/fw/components/workflow/monitoring/DebugControls.tsx:21 * kind: component * core: fw * spec: (none) * summary: Utility for debug controls. * score: 1 ### component DecisionTableDraftCard * file: src/cores/fw/components/DecisionTableDraftCard.tsx:34 * kind: component * core: fw * spec: (none) * summary: FW clean-ops (#1629): AI natural-language → decision-table DRAFT builder.Renders only when FW AI is enabled. The builder types a plain-English policy;the AI returns a structured draft (enum-constrained to the decision-tablecolumn/operator/hit-policy enums). "Insert as draft" pre-fills the editablegrid above — it does NOT save. The human reviews/edits, then uses the normalSave action. Only the structural policy text is sent to the AI; no PHI. * score: 2 ### component DecisionTableGrid * file: src/cores/fw/components/DecisionTableGrid.tsx:56 * kind: component * core: fw * spec: (none) * summary: Spreadsheet-like grid for editing decision table rules. * score: 2 ### component DecisionTablePublishDialog * file: src/cores/fw/components/DecisionTablePublishDialog.tsx:24 * kind: component * core: fw * spec: (none) * summary: Dialog to confirm publishing a decision table version. * score: 2 ### component DecisionTableTestPanel * file: src/cores/fw/components/DecisionTableTestPanel.tsx:41 * kind: component * core: fw * spec: (none) * summary: Test panel for evaluating decision table rules with sample input. * score: 2 ### component DecisionTableVersionCompareDialog * file: src/cores/fw/components/DecisionTableVersionCompareDialog.tsx:29 * kind: component * core: fw * spec: (none) * summary: Dialog for comparing two published versions of a decision table side-by-side. * score: 2 ### component DecisionTableVersionHistory * file: src/cores/fw/components/DecisionTableVersionHistory.tsx:26 * kind: component * core: fw * spec: (none) * summary: Version history panel showing all published snapshots. * score: 2 ### component DelegationBadge * file: src/cores/fw/components/approvals/DelegationBadge.tsx:19 * kind: component * core: fw * spec: (none) * summary: Utility for delegation badge. * score: 1 ### component DelegationCard * file: src/cores/fw/components/approvals/DelegationCard.tsx:35 * kind: component * core: fw * spec: (none) * summary: Utility for delegation card. * score: 1 ### component DelegationManager * file: src/cores/fw/components/approvals/DelegationManager.tsx:21 * kind: component * core: fw * spec: (none) * summary: Utility for delegation manager. * score: 1 ### component DelegationsPage * file: src/cores/fw/pages/DelegationsPage.tsx:13 * kind: component * core: fw * spec: (none) * summary: Utility for delegations page. * score: 1 ### component DependencyGraphPage * file: src/cores/fw/pages/DependencyGraphPage.tsx:131 * kind: component * core: fw * spec: (none) * summary: Dependency graph visualization page using xyflow/react. * score: 2 ### component DependencyImpactDialog * file: src/cores/fw/components/dependency/DependencyImpactDialog.tsx:42 * kind: component * core: fw * spec: (none) * summary: Dialog that shows dependency impact analysis before a destructive action. * score: 2 ### component DeprecateEventDialog * file: src/cores/fw/components/DeprecateEventDialog.tsx:28 * kind: component * core: fw * spec: (none) * summary: Dialog to deprecate a workflow event. * score: 2 ### component DLQDetailPanel * file: src/cores/fw/components/dlq/DLQDetailPanel.tsx:15 * kind: component * core: fw * spec: (none) * summary: Shows detailed information about a DLQ entry: payload, error stack, timestamps. * score: 2 ### component DLQDiscardDialog * file: src/cores/fw/components/dlq/DLQDiscardDialog.tsx:23 * kind: component * core: fw * spec: (none) * summary: Dialog that requires resolution notes before discarding a DLQ entry. * score: 2 ### component DLQFilters * file: src/cores/fw/components/dlq/DLQFilters.tsx:43 * kind: component * core: fw * spec: (none) * summary: Filter bar with status, error classification, source type, and search. * score: 2 ### component DLQPageSkeleton * file: src/cores/fw/components/dlq/DLQPageSkeleton.tsx:19 * kind: component * core: fw * spec: FW-47 * summary: Loading-state skeleton for the Dead Letter Queue page, mirroring its layout:a four-card stats bar, a filter row, and a placeholder table. Rendered whileDLQ data is being fetched so the page never shows a blank screen. Takes noprops. * score: 5 ### component DLQRetryDialog * file: src/cores/fw/components/dlq/DLQRetryDialog.tsx:28 * kind: component * core: fw * spec: (none) * summary: Confirmation dialog shown before retrying a failed DLQ entry. * score: 2 ### component DLQSettingsSection * file: src/cores/fw/components/settings/DLQSettingsSection.tsx:27 * kind: component * core: fw * spec: (none) * summary: Self-contained DLQ settings form used inside the FW Settings page. * score: 2 ### component DLQStatsBar * file: src/cores/fw/components/dlq/DLQStatsBar.tsx:25 * kind: component * core: fw * spec: (none) * summary: Displays aggregated DLQ statistics in a responsive grid of stat cards. * score: 2 ### component DraggableFieldList * file: src/cores/fw/components/DraggableFieldList.tsx:132 * kind: component * core: fw * spec: (none) * summary: Utility for draggable field list. * score: 1 ### component DurationDistributionChart * file: src/cores/fw/components/analytics/DurationDistributionChart.tsx:18 * kind: component * core: fw * spec: (none) * summary: Utility for duration distribution chart. * score: 1 ### component EmailActionConfig * file: src/cores/fw/components/workflow/config/EmailActionConfig.tsx:29 * kind: component * core: fw * spec: (none) * summary: Utility for email action config. * score: 1 ### component EntityMappingActionConfig * file: src/cores/fw/components/EntityMappingActionConfig.tsx:68 * kind: component * core: fw * spec: (none) * summary: Utility for entity mapping action config. * score: 1 ### component ErrorDisplay * file: src/cores/fw/components/workflow/ErrorDisplay.tsx:22 * kind: component * core: fw * spec: (none) * summary: Utility for error display. * score: 1 ### component ErrorRecoverySection * file: src/cores/fw/components/workflow/ErrorRecoverySection.tsx:65 * kind: component * core: fw * spec: (none) * summary: Error recovery configuration section for the node inspector.Displays retry strategy, circuit breaker state, recovery workflows,and compensation actions. Hidden when fw\_error\_recovery\_enabled is false. * score: 2 ### component ErrorRecoverySettingsSection * file: src/cores/fw/components/settings/ErrorRecoverySettingsSection.tsx:34 * kind: component * core: fw * spec: (none) * summary: Error recovery feature toggle for the FW Settings page. * score: 2 ### component EventBrowser * file: src/cores/fw/components/triggers/EventBrowser.tsx:25 * kind: component * core: fw * spec: (none) * summary: Utility for event browser. * score: 1 ### component EventDetailSheet * file: src/cores/fw/components/EventDetailSheet.tsx:31 * kind: component * core: fw * spec: (none) * summary: Sheet displaying full event details with Schema, Consumers, and History tabs. * score: 2 ### component EventFilterBuilder * file: src/cores/fw/components/triggers/EventFilterBuilder.tsx:283 * kind: component * core: fw * spec: (none) * summary: Utility for event filter builder. * score: 1 ### component EventGovernanceSettingsSection * file: src/cores/fw/components/settings/EventGovernanceSettingsSection.tsx:20 * kind: component * core: fw * spec: (none) * summary: Event schema governance settings section. * score: 2 ### component EventPayloadConditionBuilder * file: src/cores/fw/components/triggers/EventPayloadConditionBuilder.tsx:165 * kind: component * core: fw * spec: (none) * summary: Utility for event payload condition builder. * score: 1 ### component EventRegistryPage * file: src/cores/fw/pages/EventRegistryPage.tsx:31 * kind: component * core: fw * spec: (none) * summary: Event Registry page component. * score: 2 ### component EventSchemaRenderer * file: src/cores/fw/components/EventSchemaRenderer.tsx:30 * kind: component * core: fw * spec: (none) * summary: Renders a JSON Schema as a structured property table. * score: 2 ### component EventTriggerConfig * file: src/cores/fw/components/triggers/EventTriggerConfig.tsx:24 * kind: component * core: fw * spec: (none) * summary: Utility for event trigger config. * score: 1 ### component ExecutionCompareDialog * file: src/cores/fw/components/workflow/monitoring/ExecutionCompareDialog.tsx:38 * kind: component * core: fw * spec: (none) * summary: Dialog for comparing two executions of the same workflow side-by-side. * score: 2 ### component ExecutionDashboard * file: src/cores/fw/components/workflow/monitoring/ExecutionDashboard.tsx:30 * kind: component * core: fw * spec: (none) * summary: Utility for execution dashboard. * score: 1 ### component ExecutionDetailDialog * file: src/cores/fw/components/workflow/monitoring/ExecutionDetailDialog.tsx:53 * kind: component * core: fw * spec: (none) * summary: Utility for execution detail dialog. * score: 1 ### component ExecutionFilters * file: src/cores/fw/components/workflow/monitoring/ExecutionFilters.tsx:38 * kind: component * core: fw * spec: (none) * summary: Execution filters with status, search, and correlation ID filtering. * score: 2 ### component ExecutionLogsPanel * file: src/cores/fw/components/workflow/monitoring/ExecutionLogsPanel.tsx:63 * kind: component * core: fw * spec: (none) * summary: Utility for execution logs panel. * score: 1 ### component ExecutionNodeStatus * file: src/cores/fw/components/workflow/ExecutionNodeStatus.tsx:13 * kind: component * core: fw * spec: (none) * summary: Utility for execution node status. * score: 1 ### component ExecutionRCACard * file: src/cores/fw/components/workflow/monitoring/ExecutionRCACard.tsx:21 * kind: component * core: fw * spec: (none) * summary: FW-56 clean-ops: AI root-cause-analysis copilot for a failed workflow run.Renders only for failed/errored/timed-out runs and only when FW AI is enabled.Sends only operational metadata (status, error message, failed node IDs) — noworkflow variable values. Advisory; the builder confirms before acting. * score: 2 ### component ExecutionReplay * file: src/cores/fw/components/workflow/monitoring/ExecutionReplay.tsx:23 * kind: component * core: fw * spec: (none) * summary: Utility for execution replay. * score: 1 ### component ExecutionReplayPlayer * file: src/cores/fw/components/workflow/monitoring/ExecutionReplayPlayer.tsx:55 * kind: component * core: fw * spec: (none) * summary: FW-56: Data-backed execution replay player with timeline,variable inspector, what-if fork, compare, and export. * score: 2 ### component ExecutionStatusBadge * file: src/cores/fw/components/workflow/monitoring/ExecutionStatusBadge.tsx:78 * kind: component * core: fw * spec: (none) * summary: Utility for execution status badge. * score: 1 ### component ExecutionTrace * file: src/cores/fw/components/workflow/ExecutionTrace.tsx:24 * kind: component * core: fw * spec: (none) * summary: Utility for execution trace. * score: 1 ### component ExecutionTraceEnhanced * file: src/cores/fw/components/workflow/monitoring/ExecutionTraceEnhanced.tsx:42 * kind: component * core: fw * spec: (none) * summary: Utility for execution trace enhanced. * score: 1 ### component ExpressionInput * file: src/cores/fw/components/variables/ExpressionInput.tsx:36 * kind: component * core: fw * spec: (none) * summary: Utility for expression input. * score: 1 ### component ExtendDeadlineDialog * file: src/cores/fw/components/workflow/monitoring/ExtendDeadlineDialog.tsx:25 * kind: component * core: fw * spec: (none) * summary: Dialog for extending a workflow execution's deadline. * score: 2 ### component FieldEditorDialog * file: src/cores/fw/components/FieldEditorDialog.tsx:59 * kind: component * core: fw * spec: (none) * summary: Utility for field editor dialog. * score: 1 ### component FieldPerformanceTable * file: src/cores/fw/components/analytics/FieldPerformanceTable.tsx:21 * kind: component * core: fw * spec: (none) * summary: Utility for field performance table. * score: 1 ### component FieldReferenceInput * file: src/cores/fw/components/conditions/FieldReferenceInput.tsx:40 * kind: component * core: fw * spec: (none) * summary: Utility for field reference input. * score: 1 ### component FormAnalyticsDetailPage * file: src/cores/fw/pages/FormAnalyticsDetailPage.tsx:26 * kind: component * core: fw * spec: (none) * summary: Utility for form analytics detail page. * score: 1 ### component FormAnalyticsPage * file: src/cores/fw/pages/FormAnalyticsPage.tsx:25 * kind: component * core: fw * spec: (none) * summary: Utility for form analytics page. * score: 1 ### component FormEditor * file: src/cores/fw/pages/FormEditor.tsx:73 * kind: component * core: fw * spec: (none) * summary: Renders the form editor page used to create and edit forms, exposing a builder, wizard configuration, portal integration, PDF preview and export settings, permissions, and version history.The component manages form metadata and field state, loads an existing form when an query parameter is present, and provides actions to save, publish, add/edit/delete/reorder fields, and preview the form (including a PDF preview with optional sample data).Validation: prevents save when the form name is empty, when no organization is selected, or when there are no fields; surfaces errors via toasts. * example: | Route path="/fw/forms/edit" element=FormEditor / /Accessibility considerations:- Form controls use explicit labels and sensible focus order.- Modal dialogs (field editor, publish dialog, wizard preview) manage focus and keyboard interaction.- Interactive elements include visible focus indicators and are reachable by keyboard. * score: 5 ### component FormPreview * file: src/cores/fw/components/FormPreview\.tsx:23 * kind: component * core: fw * spec: (none) * summary: Utility for form preview. * score: 1 ### component FormQualityScoringDialog * file: src/cores/fw/components/FormQualityScoringDialog.tsx:113 * kind: component * core: fw * spec: (none) * summary: Utility for form quality scoring dialog. * score: 1 ### component FormsList * file: src/cores/fw/pages/FormsList.tsx:64 * kind: component * core: fw * spec: (none) * summary: Page component that displays and manages the organization's forms list with search, status filtering, CRUD actions, and analytics navigation.Renders a header with actions, a filter panel (search + status), a table of forms with per-form stats and actions (edit, clone, analytics, archive), empty and loading states, and an archive confirmation dialog.Accessibility considerations:- Interactive controls use semantic buttons and form controls to support keyboard and screen reader navigation.- The archive confirmation is presented in an alert dialog to provide a clear, focus-trapped confirmation step. * params: * props — This component does not accept props; it derives context (organization) and data via hooks. * returns: The rendered Forms List page UI. * example: | // Render inside a routed applicationRoutes Route path="/fw/forms" element=FormsList / //Routes * score: 4 ### component FormSubmissionExportDialog * file: src/cores/fw/components/FormSubmissionExportDialog.tsx:159 * kind: component * core: fw * spec: (none) * summary: Utility for form submission export dialog. * score: 1 ### component FormTemplateCard * file: src/cores/fw/components/templates/FormTemplateCard.tsx:61 * kind: component * core: fw * spec: (none) * summary: Utility for form template card. * score: 1 ### component FormTemplateCustomizer * file: src/cores/fw/components/templates/FormTemplateCustomizer.tsx:151 * kind: component * core: fw * spec: (none) * summary: Utility for form template customizer. * score: 1 ### component FormTemplateGridSkeleton * file: src/cores/fw/components/templates/FormTemplateGridSkeleton.tsx:16 * kind: component * core: fw * spec: (none) * summary: Utility for form template grid skeleton. * score: 1 ### component FormTemplateLibraryPage * file: src/cores/fw/pages/FormTemplateLibraryPage.tsx:28 * kind: component * core: fw * spec: (none) * summary: Utility for form template library page. * score: 1 ### component FormTemplatePreview * file: src/cores/fw/components/templates/FormTemplatePreview\.tsx:43 * kind: component * core: fw * spec: (none) * summary: Utility for form template preview. * score: 1 ### component FormTemplateRatingForm * file: src/cores/fw/components/templates/FormTemplateRatingForm.tsx:24 * kind: component * core: fw * spec: (none) * summary: Utility for form template rating form. * score: 1 ### component FormTemplateReviewsList * file: src/cores/fw/components/templates/FormTemplateReviewsList.tsx:22 * kind: component * core: fw * spec: (none) * summary: Utility for form template reviews list. * score: 1 ### component FormVersionHistory * file: src/cores/fw/components/FormVersionHistory.tsx:43 * kind: component * core: fw * spec: (none) * summary: Utility for form version history. * score: 1 ### component FWOverview * file: src/cores/fw/pages/FWOverview\.tsx:36 * kind: component * core: fw * spec: (none) * summary: Utility for fwoverview. * score: 1 ### component FWSettingsForm * file: src/cores/fw/components/FWSettingsForm.tsx:62 * kind: component * core: fw * spec: (none) * summary: Utility for fwsettings form. * score: 1 ### component FWSettingsPage * file: src/cores/fw/pages/FWSettingsPage.tsx:56 * kind: component * core: fw * spec: (none) * summary: Forms & Workflow module settings. * score: 2 ### component GenerateFormTemplateDialog * file: src/cores/fw/components/GenerateFormTemplateDialog.tsx:52 * kind: component * core: fw * spec: (none) * summary: Utility for generate form template dialog. * score: 1 ### component GenerateWorkflowAIDialog * file: src/cores/fw/components/workflow/GenerateWorkflowAIDialog.tsx:50 * kind: component * core: fw * spec: (none) * summary: Dialog component for AI-assisted workflow generation. * score: 2 ### component IconSelector * file: src/cores/fw/components/IconSelector.tsx:94 * kind: component * core: fw * spec: (none) * summary: Utility for icon selector. * score: 1 ### component KpiCardGrid * file: src/cores/fw/components/kpi/KpiCardGrid.tsx:19 * kind: component * core: fw * spec: (none) * summary: Renders a responsive grid of KPI metric cards.Mobile: 1 col → sm: 2 cols → lg: 3 cols → xl: 4 cols. * score: 2 ### component KpiConfigDialog * file: src/cores/fw/components/kpi/KpiConfigDialog.tsx:31 * kind: component * core: fw * spec: (none) * summary: Dialog for creating or editing a KPI configuration. * score: 2 ### component KpiDashboardPage * file: src/cores/fw/pages/KpiDashboardPage.tsx:40 * kind: component * core: fw * spec: (none) * summary: KPI Dashboard page component. * score: 1 ### component KpiDashboardSkeleton * file: src/cores/fw/components/kpi/KpiDashboardSkeleton.tsx:31 * kind: component * core: fw * spec: (none) * summary: Full dashboard skeleton showing a toolbar and card grid. * score: 2 ### component KpiDateRangeToolbar * file: src/cores/fw/components/kpi/KpiDateRangeToolbar.tsx:34 * kind: component * core: fw * spec: (none) * summary: Toolbar with period type selector and range presets. * score: 2 ### component KpiMetricCard * file: src/cores/fw/components/kpi/KpiMetricCard.tsx:19 * kind: component * core: fw * spec: (none) * summary: Renders a single KPI metric card with sparkline and delta. * score: 2 ### component KpiMetricCardSkeleton * file: src/cores/fw/components/kpi/KpiDashboardSkeleton.tsx:13 * kind: component * core: fw * spec: (none) * summary: Skeleton for a single KPI metric card. * score: 2 ### component KpiOverviewWidget * file: src/cores/fw/components/kpi/KpiOverviewWidget.tsx:21 * kind: component * core: fw * spec: (none) * summary: Compact KPI summary widget for the FW Overview dashboard. * score: 2 ### component KpiScheduleDialog * file: src/cores/fw/components/kpi/KpiScheduleDialog.tsx:28 * kind: component * core: fw * spec: (none) * summary: Dialog for creating or editing a scheduled KPI report. * score: 2 ### component LookupConfigPanel * file: src/cores/fw/components/LookupConfigPanel.tsx:42 * kind: component * core: fw * spec: (none) * summary: Lookup configuration panel for form field builder. * score: 2 ### component MetricsDataTable * file: src/cores/fw/components/analytics/MetricsDataTable.tsx:45 * kind: component * core: fw * spec: (none) * summary: Utility for metrics data table. * score: 1 ### component MetricsSummaryCards * file: src/cores/fw/components/analytics/MetricsSummaryCards.tsx:20 * kind: component * core: fw * spec: (none) * summary: Utility for metrics summary cards. * score: 1 ### component MetricsSummarySkeleton * file: src/cores/fw/components/analytics/skeletons/MetricsSummarySkeleton.tsx:13 * kind: component * core: fw * spec: (none) * summary: Utility for metrics summary skeleton. * score: 1 ### component MigrateAutomationDialog * file: src/cores/fw/components/MigrateAutomationDialog.tsx:29 * kind: component * core: fw * spec: (none) * summary: Dialog to migrate an automation rule from a deprecated event to its replacement. * score: 2 ### component MyApprovalRequests * file: src/cores/fw/components/approvals/MyApprovalRequests.tsx:20 * kind: component * core: fw * spec: (none) * summary: Utility for my approval requests. * score: 1 ### component MyApprovalRequestsPage * file: src/cores/fw/pages/MyApprovalRequestsPage.tsx:12 * kind: component * core: fw * spec: (none) * summary: Utility for my approval requests page. * score: 1 ### component NaturalLanguageDescription * file: src/cores/fw/components/conditions/NaturalLanguageDescription.tsx:33 * kind: component * core: fw * spec: (none) * summary: Utility for natural language description. * score: 1 ### component NodeAnalyticsDashboard * file: src/cores/fw/components/analytics/NodeAnalyticsDashboard.tsx:29 * kind: component * core: fw * spec: (none) * summary: Utility for node analytics dashboard. * score: 1 ### component NodeAnalyticsSkeleton * file: src/cores/fw/components/analytics/skeletons/NodeAnalyticsSkeleton.tsx:13 * kind: component * core: fw * spec: (none) * summary: Utility for node analytics skeleton. * score: 1 ### component NodePalette * file: src/cores/fw/components/workflow/NodePalette.tsx:151 * kind: component * core: fw * spec: (none) * summary: Utility for node palette. * score: 1 ### component NodePerformanceTable * file: src/cores/fw/components/analytics/NodePerformanceTable.tsx:48 * kind: component * core: fw * spec: (none) * summary: Utility for node performance table. * score: 1 ### component NodePerformanceTrendChart * file: src/cores/fw/components/analytics/NodePerformanceTrendChart.tsx:36 * kind: component * core: fw * spec: (none) * summary: Utility for node performance trend chart. * score: 1 ### component NodePerformanceWarnings * file: src/cores/fw/components/analytics/NodePerformanceWarnings.tsx:31 * kind: component * core: fw * spec: (none) * summary: Utility for node performance warnings. * score: 1 ### component NodePropertiesPanel * file: src/cores/fw/components/workflow/NodePropertiesPanel.tsx:45 * kind: component * core: fw * spec: (none) * summary: Utility for node properties panel. * score: 1 ### component NotificationPreferencesPanel * file: src/cores/fw/components/notifications/NotificationPreferencesPanel.tsx:64 * kind: component * core: fw * spec: (none) * summary: Utility for notification preferences panel. * score: 1 ### component ObservabilityMetricCard * file: src/cores/fw/components/ObservabilityMetricCard.tsx:26 * kind: component * core: fw * spec: (none) * summary: Displays a single metric group card with loading skeleton and optional drill-down link. * score: 2 ### component ObservabilityTrendChart * file: src/cores/fw/components/ObservabilityTrendChart.tsx:17 * kind: component * core: fw * spec: (none) * summary: Renders a trend area chart within a card, with loading skeleton. * score: 2 ### component PageAccessDenied * file: src/cores/fw/components/PageAccessDenied.tsx:7 * kind: component * core: fw * spec: (none) * score: 1 ### component PageEditorDialog * file: src/cores/fw/components/PageEditorDialog.tsx:63 * kind: component * core: fw * spec: (none) * summary: Utility for page editor dialog. * score: 1 ### component PageItem * file: src/cores/fw/components/PageItem.tsx:31 * kind: component * core: fw * spec: (none) * summary: Utility for page item. * score: 1 ### component PageOrganizer * file: src/cores/fw/components/PageOrganizer.tsx:32 * kind: component * core: fw * spec: (none) * summary: Utility for page organizer. * score: 1 ### component PagePermissionSelector * file: src/cores/fw/components/PagePermissionSelector.tsx:44 * kind: component * core: fw * spec: (none) * summary: Component for selecting permissions to gate access to form pages.Shows permissions grouped by module with search functionality. * score: 2 ### component PageTemplateCard * file: src/cores/fw/components/templates/PageTemplateCard.tsx:62 * kind: component * core: fw * spec: (none) * summary: Utility for page template card. * score: 1 ### component PageTemplateLibrary * file: src/cores/fw/components/PageTemplateLibrary.tsx:33 * kind: component * core: fw * spec: (none) * summary: Utility for page template library. * score: 1 ### component PageTemplatePreview * file: src/cores/fw/components/templates/PageTemplatePreview\.tsx:61 * kind: component * core: fw * spec: (none) * summary: Utility for page template preview. * score: 1 ### component ParallelModeSelector * file: src/cores/fw/components/approvals/ParallelModeSelector.tsx:21 * kind: component * core: fw * spec: (none) * summary: Utility for parallel mode selector. * score: 1 ### component PathAnalyticsDashboard * file: src/cores/fw/components/analytics/PathAnalyticsDashboard.tsx:28 * kind: component * core: fw * spec: (none) * summary: Utility for path analytics dashboard. * score: 1 ### component PathAnalyticsSkeleton * file: src/cores/fw/components/analytics/skeletons/PathAnalyticsSkeleton.tsx:11 * kind: component * core: fw * spec: (none) * summary: Utility for path analytics skeleton. * score: 1 ### component PathChartSkeleton * file: src/cores/fw/components/analytics/skeletons/PathChartSkeleton.tsx:14 * kind: component * core: fw * spec: (none) * summary: Utility for path chart skeleton. * score: 1 ### component PathComparisonChart * file: src/cores/fw/components/analytics/PathComparisonChart.tsx:38 * kind: component * core: fw * spec: (none) * summary: Utility for path comparison chart. * score: 1 ### component PathFrequencyChart * file: src/cores/fw/components/analytics/PathFrequencyChart.tsx:17 * kind: component * core: fw * spec: (none) * summary: Utility for path frequency chart. * score: 1 ### component PathPerformanceTable * file: src/cores/fw/components/analytics/PathPerformanceTable.tsx:45 * kind: component * core: fw * spec: (none) * summary: Utility for path performance table. * score: 1 ### component PathVisualization * file: src/cores/fw/components/analytics/PathVisualization.tsx:20 * kind: component * core: fw * spec: (none) * summary: Utility for path visualization. * score: 1 ### component PdfExportSettingsPanel * file: src/cores/fw/components/PdfExportSettingsPanel.tsx:58 * kind: component * core: fw * spec: (none) * summary: Renders a settings panel for configuring PDF export defaults for a form.Presents controls to choose a default letterhead, an optional document template,page orientation, toggles for including submission metadata and empty fields,and an optional watermark text. Fetches organization letterheads and templates,shows loading skeletons while fetching, and displays a destructive alert if either fetch fails. * params: * props — Component props - value: Current PDF export settings for the form; fields include , , , , , and . - onChange: Callback invoked with an updated settings object when any control changes. - disabled: When true, all controls are disabled to prevent edits (default: ).Accessibility considerations:- All form controls use native or accessible UI primitives and provide visible labels and helper text.- Disabled state is applied to interactive controls to prevent focus/interaction when editing is not allowed. * example: | PdfExportSettingsPanel value= letterhead\_id: undefined, document\_template\_id: undefined, orientation: 'portrait', include\_metadata: true, include\_empty\_fields: false, watermark: undefined, onChange=(next) = setPdfSettings(next)/ * score: 4 ### component PerformanceDashboard * file: src/cores/fw/components/analytics/PerformanceDashboard.tsx:33 * kind: component * core: fw * spec: (none) * summary: Utility for performance dashboard. * score: 1 ### component PerformanceDashboardSkeleton * file: src/cores/fw/components/analytics/skeletons/PerformanceDashboardSkeleton.tsx:13 * kind: component * core: fw * spec: (none) * summary: Utility for performance dashboard skeleton. * score: 1 ### component PerformanceTrendChart * file: src/cores/fw/components/analytics/PerformanceTrendChart.tsx:22 * kind: component * core: fw * spec: (none) * summary: Utility for performance trend chart. * score: 1 ### component PermissionManager * file: src/cores/fw/components/PermissionManager.tsx:46 * kind: component * core: fw * spec: (none) * summary: Utility for permission manager. * score: 1 ### component PicklistConfigPanel * file: src/cores/fw/components/PicklistConfigPanel.tsx:22 * kind: component * core: fw * spec: (none) * summary: Utility for picklist config panel. * score: 1 ### component PMEventTriggerConfig * file: src/cores/fw/components/triggers/PMEventTriggerConfig.tsx:30 * kind: component * core: fw * spec: (none) * summary: Utility for pmevent trigger config. * score: 1 ### component PortalBrandingPreview * file: src/cores/fw/components/portal/PortalBrandingPreview\.tsx:25 * kind: component * core: fw * spec: (none) * summary: Utility for portal branding preview. * score: 1 ### component PortalConfigPanel * file: src/cores/fw/components/portal/PortalConfigPanel.tsx:38 * kind: component * core: fw * spec: (none) * summary: Utility for portal config panel. * score: 1 ### component PortalFormRenderer * file: src/cores/fw/components/portal/PortalFormRenderer.tsx:39 * kind: component * core: fw * spec: (none) * summary: Utility for portal form renderer. * score: 1 ### component PortalLogoUpload * file: src/cores/fw/components/portal/PortalLogoUpload.tsx:27 * kind: component * core: fw * spec: (none) * summary: Utility for portal logo upload. * score: 1 ### component PortalQrCode * file: src/cores/fw/components/portal/PortalQrCode.tsx:32 * kind: component * core: fw * spec: (none) * summary: Utility for portal qr code. * score: 1 ### component PortalQrCodeDialog * file: src/cores/fw/components/portal/PortalQrCodeDialog.tsx:34 * kind: component * core: fw * spec: (none) * summary: Utility for portal qr code dialog. * score: 1 ### component PortalUrlDisplay * file: src/cores/fw/components/portal/PortalUrlDisplay.tsx:37 * kind: component * core: fw * spec: (none) * summary: Utility for portal url display. * score: 1 ### component PortalVerifyPage * file: src/cores/fw/pages/PortalVerifyPage.tsx:161 * kind: component * core: fw * spec: (none) * summary: Utility for portal verify page. * score: 1 ### component PrefillBadge * file: src/cores/fw/components/prefill/PrefillBadge.tsx:20 * kind: component * core: fw * spec: (none) * summary: Visual indicator that a form field has active prefill rules configured. * score: 2 ### component PrefillFieldIndicator * file: src/cores/fw/components/prefill/PrefillFieldIndicator.tsx:26 * kind: component * core: fw * spec: (none) * summary: Inline indicator rendered beside a prefilled field value in the form renderer. * score: 2 ### component PrefillRuleEditor * file: src/cores/fw/components/prefill/PrefillRuleEditor.tsx:50 * kind: component * core: fw * spec: (none) * summary: Dialog for creating or editing a prefill rule on a specific field. * score: 2 ### component PrefillRulesPanel * file: src/cores/fw/components/prefill/PrefillRulesPanel.tsx:39 * kind: component * core: fw * spec: (none) * summary: Builder-side panel for viewing and managing prefill rules on a field. * score: 2 ### component PublicFormPage * file: src/cores/fw/pages/PublicFormPage.tsx:259 * kind: component * core: fw * spec: (none) * summary: Default export wraps the body with public-facing SEO metadata soeach portal form has a unique title and description instead ofinheriting site-wide defaults. * score: 2 ### component PublishToMarketplace * file: src/cores/fw/components/templates/PublishToMarketplace.tsx:53 * kind: component * core: fw * spec: (none) * summary: Utility for publish to marketplace. * score: 1 ### component QueryActionConfig * file: src/cores/fw/components/automation/actions/QueryActionConfig.tsx:45 * kind: component * core: fw * spec: (none) * summary: Utility for query action config. * score: 1 ### component QueryActionConfigStandalone * file: src/cores/fw/components/automation/actions/QueryActionConfigStandalone.tsx:53 * kind: component * core: fw * spec: (none) * summary: Utility for query action config standalone. * score: 1 ### component RateLimitDashboardPage * file: src/cores/fw/pages/RateLimitDashboardPage.tsx:15 * kind: component * core: fw * spec: (none) * summary: FW-53: Dashboard page for monitoring workflow rate limit utilization. * score: 2 ### component RateLimitDashboardWidget * file: src/cores/fw/components/rate-limiting/RateLimitDashboardWidget.tsx:63 * kind: component * core: fw * spec: (none) * summary: FW-53: Dashboard widget showing current rate limit utilization. * score: 2 ### component RateLimitsSettingsSection * file: src/cores/fw/components/settings/RateLimitsSettingsSection.tsx:48 * kind: component * core: fw * spec: (none) * summary: FW-53: Organization-level rate limit configuration panel. * score: 2 ### component RecentSubmissionsWidget * file: src/cores/fw/components/dashboard/RecentSubmissionsWidget.tsx:31 * kind: component * core: fw * spec: (none) * summary: Utility for recent submissions widget. * score: 1 ### component RecordActionConfig * file: src/cores/fw/components/workflow/config/RecordActionConfig.tsx:30 * kind: component * core: fw * spec: (none) * summary: Utility for record action config. * score: 1 ### component RegressionAlerts * file: src/cores/fw/components/analytics/RegressionAlerts.tsx:19 * kind: component * core: fw * spec: (none) * summary: Utility for regression alerts. * score: 1 ### component RejectDialog * file: src/cores/fw/components/approvals/RejectDialog.tsx:39 * kind: component * core: fw * spec: (none) * summary: Utility for reject dialog. * score: 1 ### component RelativeDateInput * file: src/cores/fw/components/conditions/RelativeDateInput.tsx:33 * kind: component * core: fw * spec: (none) * summary: Utility for relative date input. * score: 1 ### component ReplayVariablePanel * file: src/cores/fw/components/workflow/monitoring/ReplayVariablePanel.tsx:25 * kind: component * core: fw * spec: (none) * summary: Displays variables at the current replay step with change highlighting. * score: 2 ### component RequestChangesDialog * file: src/cores/fw/components/approvals/RequestChangesDialog.tsx:29 * kind: component * core: fw * spec: (none) * summary: Utility for request changes dialog. * score: 1 ### component RequestDataViewer * file: src/cores/fw/components/approvals/RequestDataViewer.tsx:18 * kind: component * core: fw * spec: (none) * summary: Utility for request data viewer. * score: 1 ### component RetentionSettingsTab * file: src/cores/fw/components/audit/RetentionSettingsTab.tsx:56 * kind: component * core: fw * spec: (none) * summary: Retention settings form for per-category audit entry retention. * score: 2 ### component RuleEvaluationsAuditLog * file: src/cores/fw/components/RuleEvaluationsAuditLog.tsx:47 * kind: component * core: fw * spec: (none) * summary: Audit log viewer for decision table rule evaluations. * score: 2 ### component SampleDataProvider * file: src/cores/fw/components/variables/SampleDataProvider.tsx:41 * kind: component * core: fw * spec: (none) * summary: Utility for sample data provider. * score: 1 ### component SandboxExecutionHistory * file: src/cores/fw/components/testing/SandboxExecutionHistory.tsx:24 * kind: component * core: fw * spec: (none) * summary: Utility for sandbox execution history. * score: 1 ### component SandboxInputEditor * file: src/cores/fw/components/testing/SandboxInputEditor.tsx:25 * kind: component * core: fw * spec: (none) * summary: Utility for sandbox input editor. * score: 1 ### component SandboxPanel * file: src/cores/fw/components/testing/SandboxPanel.tsx:44 * kind: component * core: fw * spec: (none) * summary: Utility for sandbox panel. * score: 1 ### component SandboxResultsViewer * file: src/cores/fw/components/testing/SandboxResultsViewer.tsx:28 * kind: component * core: fw * spec: (none) * summary: Utility for sandbox results viewer. * score: 1 ### component SaveAsSubflowDialog * file: src/cores/fw/components/SaveAsSubflowDialog.tsx:18 * kind: component * core: fw * spec: (none) * summary: Utility for save as subflow dialog. * score: 1 ### component ScenarioAssertionBuilder * file: src/cores/fw/components/testing/ScenarioAssertionBuilder.tsx:41 * kind: component * core: fw * spec: (none) * summary: Utility for scenario assertion builder. * score: 1 ### component ScheduledReportsTab * file: src/cores/fw/components/audit/ScheduledReportsTab.tsx:26 * kind: component * core: fw * spec: (none) * summary: Displays and manages scheduled compliance reports. * score: 2 ### component SchemaDiffDialog * file: src/cores/fw/components/SchemaDiffDialog.tsx:26 * kind: component * core: fw * spec: (none) * summary: Dialog showing schema diff between two versions. * score: 2 ### component SetVariableNodeConfig * file: src/cores/fw/components/workflow/config/SetVariableNodeConfig.tsx:27 * kind: component * core: fw * spec: (none) * summary: Utility for set variable node config. * score: 1 ### component SFTPActionConfig * file: src/cores/fw/components/automation/actions/SFTPActionConfig.tsx:62 * kind: component * core: fw * spec: (none) * summary: Utility for sftpaction config. * score: 1 ### component SignatureFieldConfig * file: src/cores/fw/components/SignatureFieldConfig.tsx:33 * kind: component * core: fw * spec: (none) * summary: Utility for signature field config. * score: 1 ### component StepCard * file: src/cores/fw/components/workflow/monitoring/StepCard.tsx:24 * kind: component * core: fw * spec: (none) * summary: Renders a single execution step with status, timing, error info, and data viewers. * score: 2 ### component StepConditionBuilder * file: src/cores/fw/components/approvals/StepConditionBuilder.tsx:21 * kind: component * core: fw * spec: (none) * summary: Utility for step condition builder. * score: 1 ### component StepDataViewer * file: src/cores/fw/components/workflow/monitoring/StepDataViewer.tsx:19 * kind: component * core: fw * spec: (none) * summary: Renders a collapsible JSON viewer for step input/output payloads. * score: 2 ### component StepEscalationConfig * file: src/cores/fw/components/approvals/StepEscalationConfig.tsx:25 * kind: component * core: fw * spec: (none) * summary: Utility for step escalation config. * score: 1 ### component StepStatusBadge * file: src/cores/fw/components/workflow/monitoring/StepStatusBadge.tsx:56 * kind: component * core: fw * spec: (none) * summary: Renders a status badge for an execution step. * score: 2 ### component StepTimeline * file: src/cores/fw/components/workflow/monitoring/StepTimeline.tsx:23 * kind: component * core: fw * spec: (none) * summary: Renders an ordered vertical timeline of execution steps with realtime updates. * score: 2 ### component StepTimelineSkeleton * file: src/cores/fw/components/workflow/monitoring/StepTimelineSkeleton.tsx:10 * kind: component * core: fw * spec: (none) * summary: Renders placeholder skeletons while step data loads. * score: 2 ### component SubflowEditor * file: src/cores/fw/pages/SubflowEditor.tsx:318 * kind: component * core: fw * spec: (none) * summary: Utility for subflow editor. * score: 1 ### component SubflowNodeConfig * file: src/cores/fw/components/workflow/config/SubflowNodeConfig.tsx:42 * kind: component * core: fw * spec: (none) * summary: FW-41: Subflow node configuration with skeleton loading and empty state. * score: 2 ### component SubflowParameterEditor * file: src/cores/fw/components/SubflowParameterEditor.tsx:43 * kind: component * core: fw * spec: (none) * summary: Utility for subflow parameter editor. * score: 1 ### component SubflowsListPage * file: src/cores/fw/pages/SubflowsListPage.tsx:22 * kind: component * core: fw * spec: (none) * summary: Utility for subflows list page. * score: 1 ### component SubmissionDetailPage * file: src/cores/fw/pages/SubmissionDetailPage.tsx:78 * kind: component * core: fw * spec: (none) * summary: Submission detail page for viewing and managing a single form submission.Displays submission fields and metadata; lets users change status, add notes,upload/download/delete attachments (drag-and-drop supported), and export thesubmission as a PDF or a signed PDF when the form contains signature fields.Accessibility considerations:- Interactive controls (buttons, selects, textareas) are standard form controls and receive keyboard focus.- The attachment dropzone is keyboard accessible via the underlying file input; ensure screen readers can reach the "Drag & drop" prompt.- Export dialog is presented as a modal (focus should be trapped while open) and uses explicit labels for form controls. * params: * props — none * example: | import SubmissionDetailPage from 'src/cores/fw/pages/SubmissionDetailPage';function App() return SubmissionDetailPage /; * score: 4 ### component SubmissionsList * file: src/cores/fw/pages/SubmissionsList.tsx:61 * kind: component * core: fw * spec: (none) * summary: Renders the submissions management UI with filtering, search, selection, export, and pagination.This component displays a pageable list of form submissions, provides controls to filter by form,status, date range and text search, and supports single/bulk PDF export plus CSV/JSON exports.Selection is limited to submissions that are exportable (status not equal to "draft"). Errors loadingthe list are surfaced via toast notifications. * params: * props — Component props (none) * returns: The rendered submissions list UI as a React element. * example: | SubmissionsList /Accessibility considerations:- Interactive controls include accessible labels (e.g., checkboxes have ).- Table rows are clickable but action buttons stop propagation to avoid accidental navigation. * score: 4 ### component SubmissionSuccess * file: src/cores/fw/components/portal/SubmissionSuccess.tsx:22 * kind: component * core: fw * spec: (none) * summary: Utility for submission success. * score: 1 ### component SubmissionSummaryCard * file: src/cores/fw/components/SubmissionSummaryCard.tsx:50 * kind: component * core: fw * spec: (none) * summary: Utility for submission summary card. * score: 1 ### component SubmissionTrendChart * file: src/cores/fw/components/analytics/SubmissionTrendChart.tsx:29 * kind: component * core: fw * spec: (none) * summary: Utility for submission trend chart. * score: 1 ### component SuggestAutomationRuleDialog * file: src/cores/fw/components/SuggestAutomationRuleDialog.tsx:33 * kind: component * core: fw * spec: (none) * summary: Dialog for generating and applying AI automation rule suggestions. * score: 2 ### component SuggestConditionalLogicDialog * file: src/cores/fw/components/SuggestConditionalLogicDialog.tsx:32 * kind: component * core: fw * spec: (none) * summary: Utility for suggest conditional logic dialog. * score: 1 ### component SuggestWithAIDialog * file: src/cores/fw/components/SuggestWithAIDialog.tsx:56 * kind: component * core: fw * spec: (none) * summary: Utility for suggest with aidialog. * score: 1 ### component TemplateAnalyticsWidget * file: src/cores/fw/components/templates/TemplateAnalyticsWidget.tsx:50 * kind: component * core: fw * spec: (none) * summary: Utility for template analytics widget. * score: 1 ### component TemplateCard * file: src/cores/fw/components/templates/TemplateCard.tsx:56 * kind: component * core: fw * spec: (none) * summary: Utility for template card. * score: 1 ### component TemplateCustomizer * file: src/cores/fw/components/templates/TemplateCustomizer.tsx:116 * kind: component * core: fw * spec: (none) * summary: Utility for template customizer. * score: 1 ### component TemplateExportButton * file: src/cores/fw/components/templates/TemplateExportButton.tsx:33 * kind: component * core: fw * spec: (none) * summary: Utility for template export button. * score: 1 ### component TemplateGridSkeleton * file: src/cores/fw/components/templates/TemplateSkeleton.tsx:51 * kind: component * core: fw * spec: (none) * summary: Utility for template grid skeleton. * score: 1 ### component TemplateImportDialog * file: src/cores/fw/components/templates/TemplateImportDialog.tsx:32 * kind: component * core: fw * spec: (none) * summary: Utility for template import dialog. * score: 1 ### component TemplateLibraryPage * file: src/cores/fw/pages/TemplateLibraryPage.tsx:30 * kind: component * core: fw * spec: (none) * summary: Utility for template library page. * score: 1 ### component TemplateMarketplacePage * file: src/cores/fw/pages/TemplateMarketplacePage.tsx:43 * kind: component * core: fw * spec: (none) * summary: Utility for template marketplace page. * score: 1 ### component TemplatePreview * file: src/cores/fw/components/templates/TemplatePreview\.tsx:44 * kind: component * core: fw * spec: (none) * summary: Utility for template preview. * score: 1 ### component TemplateRatingForm * file: src/cores/fw/components/templates/TemplateRatingForm.tsx:24 * kind: component * core: fw * spec: (none) * summary: Utility for template rating form. * score: 1 ### component TemplateReviewsList * file: src/cores/fw/components/templates/TemplateReviewsList.tsx:22 * kind: component * core: fw * spec: (none) * summary: Utility for template reviews list. * score: 1 ### component TemplateSkeleton * file: src/cores/fw/components/templates/TemplateSkeleton.tsx:11 * kind: component * core: fw * spec: (none) * summary: Utility for template skeleton. * score: 1 ### component TemplateUpdateNotificationBanner * file: src/cores/fw/components/templates/TemplateUpdateNotificationBanner.tsx:28 * kind: component * core: fw * spec: (none) * summary: Utility for template update notification banner. * score: 1 ### component TemplateUpdateNotificationList * file: src/cores/fw/components/templates/TemplateUpdateNotificationBanner.tsx:121 * kind: component * core: fw * spec: (none) * summary: Utility for template update notification list. * score: 1 ### component TemplateVersionCompare * file: src/cores/fw/components/templates/TemplateVersionCompare.tsx:104 * kind: component * core: fw * spec: (none) * summary: Utility for template version compare. * score: 1 ### component TemplateVersionHistory * file: src/cores/fw/components/templates/TemplateVersionHistory.tsx:32 * kind: component * core: fw * spec: (none) * summary: Utility for template version history. * score: 1 ### component TestCaseEditor * file: src/cores/fw/components/testing/TestCaseEditor.tsx:52 * kind: component * core: fw * spec: (none) * summary: Utility for test case editor. * score: 1 ### component TestCaseList * file: src/cores/fw/components/testing/TestCaseList.tsx:74 * kind: component * core: fw * spec: (none) * summary: Utility for test case list. * score: 1 ### component TestCaseResultsViewer * file: src/cores/fw/components/testing/TestCaseResultsViewer.tsx:24 * kind: component * core: fw * spec: (none) * summary: Utility for test case results viewer. * score: 1 ### component TestCoverageDashboard * file: src/cores/fw/components/testing/TestCoverageDashboard.tsx:25 * kind: component * core: fw * spec: (none) * summary: Utility for test coverage dashboard. * score: 1 ### component TestDatasetEditor * file: src/cores/fw/components/testing/TestDatasetEditor.tsx:29 * kind: component * core: fw * spec: (none) * summary: Utility for test dataset editor. * score: 1 ### component TestDatasetImportDialog * file: src/cores/fw/components/testing/TestDatasetImportDialog.tsx:29 * kind: component * core: fw * spec: (none) * summary: Utility for test dataset import dialog. * score: 1 ### component TestDatasetList * file: src/cores/fw/components/testing/TestDatasetList.tsx:30 * kind: component * core: fw * spec: (none) * summary: Utility for test dataset list. * score: 1 ### component TestDatasetPreview * file: src/cores/fw/components/testing/TestDatasetPreview\.tsx:22 * kind: component * core: fw * spec: (none) * summary: Utility for test dataset preview. * score: 1 ### component TestScenarioEditor * file: src/cores/fw/components/testing/TestScenarioEditor.tsx:35 * kind: component * core: fw * spec: (none) * summary: Utility for test scenario editor. * score: 1 ### component TestScenarioList * file: src/cores/fw/components/testing/TestScenarioList.tsx:35 * kind: component * core: fw * spec: (none) * summary: Utility for test scenario list. * score: 1 ### component TestScenarioResultsViewer * file: src/cores/fw/components/testing/TestScenarioResultsViewer.tsx:23 * kind: component * core: fw * spec: (none) * summary: Utility for test scenario results viewer. * score: 1 ### component TestSuitePanel * file: src/cores/fw/components/testing/TestSuitePanel.tsx:28 * kind: component * core: fw * spec: (none) * summary: Utility for test suite panel. * score: 1 ### component TimeframeInput * file: src/cores/fw/components/conditions/TimeframeInput.tsx:34 * kind: component * core: fw * spec: (none) * summary: Utility for timeframe input. * score: 1 ### component TimeoutConfigPanel * file: src/cores/fw/components/workflow/TimeoutConfigPanel.tsx:29 * kind: component * core: fw * spec: (none) * summary: Panel for configuring per-workflow timeout settings. * score: 2 ### component TimeoutSettingsSection * file: src/cores/fw/components/settings/TimeoutSettingsSection.tsx:26 * kind: component * core: fw * spec: (none) * summary: Self-contained timeout settings form used inside the FW Settings page. * score: 2 ### component TimeToCompleteChart * file: src/cores/fw/components/analytics/TimeToCompleteChart.tsx:21 * kind: component * core: fw * spec: (none) * summary: Utility for time to complete chart. * score: 1 ### component TrendChartSkeleton * file: src/cores/fw/components/analytics/skeletons/TrendChartSkeleton.tsx:13 * kind: component * core: fw * spec: (none) * summary: Utility for trend chart skeleton. * score: 1 ### component TriggerEditDialog * file: src/cores/fw/components/workflow/config/TriggerEditDialog.tsx:25 * kind: component * core: fw * spec: (none) * summary: Utility for trigger edit dialog. * score: 1 ### component TriggerNodeConfig * file: src/cores/fw/components/workflow/config/TriggerNodeConfig.tsx:30 * kind: component * core: fw * spec: (none) * summary: Utility for trigger node config. * score: 1 ### component TypeMismatchBadge * file: src/cores/fw/components/variables/TypeMismatchWarning.tsx:67 * kind: component * core: fw * spec: (none) * summary: Compact inline badge version * score: 1 ### component TypeMismatchWarning * file: src/cores/fw/components/variables/TypeMismatchWarning.tsx:23 * kind: component * core: fw * spec: (none) * summary: Utility for type mismatch warning. * score: 1 ### component UnusedEntitiesPage * file: src/cores/fw/pages/UnusedEntitiesPage.tsx:49 * kind: component * core: fw * spec: (none) * summary: Unused entities report page with filtering and bulk archive. * score: 2 ### component VariableDefinitionForm * file: src/cores/fw/components/variables/VariableDefinitionForm.tsx:58 * kind: component * core: fw * spec: (none) * summary: Utility for variable definition form. * score: 1 ### component VariableInspector * file: src/cores/fw/components/workflow/monitoring/VariableInspector.tsx:93 * kind: component * core: fw * spec: (none) * summary: Utility for variable inspector. * score: 1 ### component VariableList * file: src/cores/fw/components/variables/VariableList.tsx:41 * kind: component * core: fw * spec: (none) * summary: Utility for variable list. * score: 1 ### component VariableMappingEditor * file: src/cores/fw/components/webhooks/VariableMappingEditor.tsx:23 * kind: component * core: fw * spec: (none) * summary: Inline editor for variable mapping rows. * score: 2 ### component VariablePanel * file: src/cores/fw/components/variables/VariablePanel.tsx:34 * kind: component * core: fw * spec: (none) * summary: Utility for variable panel. * score: 1 ### component VariablePicker * file: src/cores/fw/components/variables/VariablePicker.tsx:39 * kind: component * core: fw * spec: (none) * summary: Utility for variable picker. * score: 1 ### component VariablePreview * file: src/cores/fw/components/variables/VariablePreview\.tsx:33 * kind: component * core: fw * spec: (none) * summary: Utility for variable preview. * score: 1 ### component VariablePreviewInline * file: src/cores/fw/components/variables/VariablePreview\.tsx:132 * kind: component * core: fw * spec: (none) * summary: Utility for variable preview inline. * score: 1 ### component VariablePreviewPanel * file: src/cores/fw/components/variables/VariablePreviewPanel.tsx:67 * kind: component * core: fw * spec: (none) * summary: Utility for variable preview panel. * score: 1 ### component VariableValidationPanel * file: src/cores/fw/components/variables/VariableValidationPanel.tsx:24 * kind: component * core: fw * spec: (none) * summary: Utility for variable validation panel. * score: 1 ### component VerificationPending * file: src/cores/fw/components/portal/VerificationPending.tsx:21 * kind: component * core: fw * spec: (none) * summary: Utility for verification pending. * score: 1 ### component VersionBadge * file: src/cores/fw/components/templates/VersionBadge.tsx:20 * kind: component * core: fw * spec: (none) * summary: Utility for version badge. * score: 1 ### component VersionComparisonChart * file: src/cores/fw/components/analytics/VersionComparisonChart.tsx:18 * kind: component * core: fw * spec: (none) * summary: Utility for version comparison chart. * score: 1 ### component VersionComparisonDashboard * file: src/cores/fw/components/analytics/VersionComparisonDashboard.tsx:29 * kind: component * core: fw * spec: (none) * summary: Utility for version comparison dashboard. * score: 1 ### component VersionComparisonSkeleton * file: src/cores/fw/components/analytics/skeletons/VersionComparisonSkeleton.tsx:11 * kind: component * core: fw * spec: (none) * summary: Utility for version comparison skeleton. * score: 1 ### component VersionCompatibilityAlert * file: src/cores/fw/components/templates/VersionCompatibilityAlert.tsx:60 * kind: component * core: fw * spec: (none) * summary: Utility for version compatibility alert. * score: 1 ### component VersionMetricsCard * file: src/cores/fw/components/analytics/VersionMetricsCard.tsx:23 * kind: component * core: fw * spec: (none) * summary: Utility for version metrics card. * score: 1 ### component VersionSelector * file: src/cores/fw/components/analytics/VersionSelector.tsx:22 * kind: component * core: fw * spec: (none) * summary: Utility for version selector. * score: 1 ### component WebhookActionConfig * file: src/cores/fw/components/workflow/config/WebhookActionConfig.tsx:29 * kind: component * core: fw * spec: (none) * summary: Utility for webhook action config. * score: 1 ### component WebhookEndpointDialog * file: src/cores/fw/components/webhooks/WebhookEndpointDialog.tsx:59 * kind: component * core: fw * spec: (none) * summary: Dialog for creating / editing a webhook endpoint. * score: 2 ### component WebhookEndpointUrl * file: src/cores/fw/components/webhooks/WebhookEndpointUrl.tsx:18 * kind: component * core: fw * spec: (none) * summary: Displays the webhook URL and provides a copy button. * score: 2 ### component WebhookLogDetail * file: src/cores/fw/components/webhooks/WebhookLogDetail.tsx:25 * kind: component * core: fw * spec: (none) * summary: Slide-over sheet showing webhook log detail with replay action. * score: 2 ### component WebhookLogsTable * file: src/cores/fw/components/webhooks/WebhookLogsTable.tsx:36 * kind: component * core: fw * spec: (none) * summary: Webhook logs table with endpoint and status filters. * score: 2 ### component WebhookReplayButton * file: src/cores/fw/components/webhooks/WebhookReplayButton.tsx:37 * kind: component * core: fw * spec: (none) * summary: Button with AlertDialog confirmation for replaying a webhook. * score: 2 ### component WebhookSecretRotation * file: src/cores/fw/components/webhooks/WebhookSecretRotation.tsx:26 * kind: component * core: fw * spec: (none) * summary: Secret management with rotation and one-time display. * score: 2 ### component WebhookTestPanel * file: src/cores/fw/components/webhooks/WebhookTestPanel.tsx:29 * kind: component * core: fw * spec: (none) * summary: Panel for sending test webhook payloads. * score: 2 ### component WhatIfDialog * file: src/cores/fw/components/workflow/monitoring/WhatIfDialog.tsx:42 * kind: component * core: fw * spec: (none) * summary: Dialog for creating a what-if sandbox execution from a replay fork point. * score: 2 ### component WhitelistManager * file: src/cores/fw/components/settings/WhitelistManager.tsx:54 * kind: component * core: fw * spec: (none) * summary: Utility for whitelist manager. * score: 1 ### component WizardConfigPanel * file: src/cores/fw/components/WizardConfigPanel.tsx:52 * kind: component * core: fw * spec: (none) * summary: Utility for wizard config panel. * score: 1 ### component WizardPreview * file: src/cores/fw/components/WizardPreview\.tsx:29 * kind: component * core: fw * spec: (none) * summary: Utility for wizard preview. * score: 1 ### component WizardTemplatesPage * file: src/cores/fw/pages/WizardTemplatesPage.tsx:102 * kind: component * core: fw * spec: (none) * summary: Utility for wizard templates page. * score: 1 ### component WorkerSettingsSection * file: src/cores/fw/components/settings/WorkerSettingsSection.tsx:18 * kind: component * core: fw * spec: (none) * summary: Execution Worker settings section for FW-46 durable execution worker configuration.Gated behind fw\.execution\_worker.manage permission. * score: 2 ### component WorkflowAdminHubPage * file: src/cores/fw/pages/WorkflowAdminHubPage.tsx:43 * kind: component * core: fw * spec: (none) * summary: Workflow Admin hub page. Renders the subflows, decision tables, diagrams, alerts,approval routing, audit, and rate-limit tab strip via the shared primitive. * score: 2 ### component WorkflowAlertsPage * file: src/cores/fw/pages/WorkflowAlertsPage.tsx:9 * kind: component * core: fw * spec: (none) * summary: Utility for workflow alerts page. * score: 1 ### component WorkflowCanvas * file: src/cores/fw/components/workflow/WorkflowCanvas.tsx:36 * kind: component * core: fw * spec: (none) * summary: Utility for workflow canvas. * score: 1 ### component WorkflowEditor * file: src/cores/fw/pages/WorkflowEditor.tsx:598 * kind: component * core: fw * spec: (none) * summary: Utility for workflow editor. * score: 1 ### component WorkflowExecutionExportTab * file: src/cores/fw/components/audit/WorkflowExecutionExportTab.tsx:28 * kind: component * core: fw * spec: (none) * summary: Export workflow execution data as CSV or JSON. * score: 2 ### component WorkflowNotificationRulesEditor * file: src/cores/fw/components/notifications/WorkflowNotificationRulesEditor.tsx:37 * kind: component * core: fw * spec: (none) * summary: Utility for workflow notification rules editor. * score: 1 ### component WorkflowPerformanceAnalytics * file: src/cores/fw/pages/WorkflowPerformanceAnalytics.tsx:17 * kind: component * core: fw * spec: (none) * summary: Utility for workflow performance analytics. * score: 1 ### component WorkflowRateLimitPanel * file: src/cores/fw/components/rate-limiting/WorkflowRateLimitPanel.tsx:54 * kind: component * core: fw * spec: (none) * summary: Per-workflow rate limit configuration panel for the workflow editor.Shows existing workflow-scoped limits with add/toggle/delete controls. * score: 2 ### component WorkflowTemplateFormBundle * file: src/cores/fw/components/templates/WorkflowTemplateFormBundle.tsx:79 * kind: component * core: fw * spec: (none) * summary: Utility for workflow template form bundle. * score: 1 ### component WorkflowValidation * file: src/cores/fw/components/workflow/WorkflowValidation.tsx:36 * kind: component * core: fw * spec: (none) * summary: Utility for workflow validation. * score: 1 ### component WorkflowVersionComparison * file: src/cores/fw/components/workflow/WorkflowVersionComparison.tsx:43 * kind: component * core: fw * spec: (none) * summary: Utility for workflow version comparison. * score: 1 ### component WorkflowVersionDetail * file: src/cores/fw/components/workflow/WorkflowVersionDetail.tsx:25 * kind: component * core: fw * spec: (none) * summary: Utility for workflow version detail. * score: 1 ### component WorkflowVersionHistory * file: src/cores/fw/components/workflow/WorkflowVersionHistory.tsx:27 * kind: component * core: fw * spec: (none) * summary: Utility for workflow version history. * score: 1 ### component WorkflowVersionRollback * file: src/cores/fw/components/workflow/WorkflowVersionRollback.tsx:25 * kind: component * core: fw * spec: (none) * summary: Utility for workflow version rollback. * score: 1 ## Functions & utilities ### function acceptsMultipleValues * file: src/cores/fw/utils/conditionOperators.ts:145 * kind: function * core: fw * spec: (none) * summary: Check if operator accepts multiple values * score: 4 ### function ActionNodeConfig * file: src/cores/fw/components/workflow/config/ActionNodeConfig.tsx:23 * kind: function * core: fw * spec: (none) * summary: Utility for action node config. * score: 1 ### function addNestedGroupToConditionGroup * file: src/cores/fw/utils/conditionGroupOperations.ts:128 * kind: function * core: fw * spec: (none) * summary: Add a nested group to a specific parent (defaults to current group). * score: 4 ### function analyzeSimplification * file: src/cores/fw/utils/simplificationAnalysis.ts:53 * kind: function * core: fw * spec: (none) * summary: Detect redundant/duplicate nodes and calculate simplification suggestions * score: 4 ### function applyFormTemplateParameters * file: src/cores/fw/utils/formTemplateCloning.ts:119 * kind: function * core: fw * spec: (none) * summary: Apply template parameters by substituting key placeholdersin string values throughout the data structure * score: 4 ### function applyGroupLogicalOperator * file: src/cores/fw/utils/conditionGroupOperations.ts:119 * kind: function * core: fw * spec: (none) * summary: Update logical operator using shared platform tree operations. * score: 4 ### function applyPageTemplateParameters * file: src/cores/fw/utils/pageTemplateCloning.ts:100 * kind: function * core: fw * spec: (none) * summary: Apply template parameters by substituting key placeholdersin string values throughout the data structure * score: 4 ### function applyParameterSubstitution * file: src/cores/fw/utils/parameterSubstitution.ts:241 * kind: function * core: fw * spec: (none) * summary: Apply parameter substitution to a template's workflow definition * params: * templateData — The cloned template data * parameterValues — User-provided parameter values * parameters — Parameter definitions from the template * returns: Substitution result with modified data and stats * score: 4 ### function applyRetryJitter * file: src/cores/fw/lib/fw-error-recovery-policy.ts:134 * kind: function * core: fw * spec: (none) * summary: Applies full jitter: returns a random value in \[0, computedDelay].Per CONTEXT.md: "spread retries in \[0, computedDelay]". * score: 4 ### function areRelativeDateConfigsEqual * file: src/cores/fw/utils/relativeDateUtils.ts:272 * kind: function * core: fw * spec: (none) * summary: Check if two relative date configs are equal * score: 4 ### function auditRegulatoryChangeLogPhiRejectionClient * file: src/cores/fw/lib/regulatoryChangeLogPhi.ts:28 * kind: function * core: fw * spec: (none) * summary: Fire-and-forget pf\_audit\_logs row when client-side validation rejects PHI-like content.Metadata contains only category labels, never raw field text (PF-04 / constitution). * score: 4 ### function buildAutomationRuleSuggestionPrompt * file: src/cores/fw/ai/automationRulePrompts.ts:52 * kind: function * core: fw * spec: (none) * summary: Build user prompt for rule suggestions * score: 4 ### function buildConditionalLogicPrompt * file: src/cores/fw/ai/conditionalLogicPrompts.ts:37 * kind: function * core: fw * spec: (none) * summary: Provides build conditional logic prompt functionality. * score: 4 ### function buildDecisionTableDraftPrompt * file: src/cores/fw/hooks/useDraftDecisionTableFromNL.ts:125 * kind: function * core: fw * spec: (none) * summary: Build the user prompt from a natural-language policy description. * score: 4 ### function buildForkSandboxInputData * file: src/cores/fw/utils/executionReplayUtils.ts:167 * kind: function * core: fw * spec: (none) * summary: Builds the input\_data for a what-if sandbox execution by mergingexecution variables with step output\_data up through the fork step,then applying modified variables.Algorithm (FR-3.4):1. state = shallow copy of execution.variables2. For each step where step\_index forkStep.step\_index, OR step\_index === forkStep.step\_index AND attempt\_number = forkStep.attempt\_number: shallow-merge step.output\_data into state3. Shallow-merge modifiedVariables into state4. Return state as input\_data * score: 4 ### function buildFormSuggestionPrompt * file: src/cores/fw/ai/formBuildingPrompts.ts:39 * kind: function * core: fw * spec: (none) * summary: Builds the user prompt for form field suggestion.Caps description at 500 characters. Includes existing keys to avoid duplicates. * score: 4 ### function buildOptimizationPrompt * file: src/cores/fw/hooks/useDraftOptimizationSuggestions.ts:112 * kind: function * core: fw * spec: (none) * summary: Build the user prompt from aggregate metrics only. Exported for the unit testso the no-PHI / metadata-only contract is asserted on the exact prompt text. * score: 4 ### function buildQualityScoringPrompt * file: src/cores/fw/ai/qualityScoringPrompts.ts:43 * kind: function * core: fw * spec: (none) * summary: Provides build quality scoring prompt functionality. * score: 4 ### function buildSimilarTemplatesPrompt * file: src/cores/fw/ai/prompts.ts:141 * kind: function * core: fw * spec: (none) * summary: Build a similarity analysis prompt * score: 4 ### function buildSubmissionSummaryPrompt * file: src/cores/fw/ai/submissionSummaryPrompts.ts:40 * kind: function * core: fw * spec: (none) * summary: Provides build submission summary prompt functionality. * score: 4 ### function buildTemplateDescriptionPrompt * file: src/cores/fw/ai/prompts.ts:117 * kind: function * core: fw * spec: (none) * summary: Build a description generation prompt * score: 4 ### function buildTemplateGenerationPrompt * file: src/cores/fw/ai/templateGenerationPrompts.ts:43 * kind: function * core: fw * spec: (none) * summary: Builds the user prompt for template generation.Caps description at 500 characters. * score: 4 ### function buildTemplateRecommendationPrompt * file: src/cores/fw/ai/prompts.ts:73 * kind: function * core: fw * spec: (none) * summary: Build a recommendation prompt with context and available templates * score: 4 ### function buildTemplateSearchPrompt * file: src/cores/fw/ai/prompts.ts:183 * kind: function * core: fw * spec: (none) * summary: Build a search prompt * score: 1 ### function buildTraceExportPayload * file: src/cores/fw/utils/executionReplayUtils.ts:202 * kind: function * core: fw * spec: (none) * summary: Builds a sanitized trace export payload for JSON/PDF export.All error\_message fields are run through sanitizeErrorMessage. * score: 4 ### function buildWorkflowGenerationPrompt * file: src/cores/fw/ai/workflowGenerationPrompts.ts:36 * kind: function * core: fw * spec: (none) * summary: Build a user prompt for workflow generation from name and description.Only sends name + description — no PHI. * score: 4 ### function bundleDependencies * file: src/cores/fw/utils/templateExport.ts:143 * kind: function * core: fw * spec: (none) * summary: Bundle all dependencies for export * score: 4 ### function calcDeltaPercent * file: src/cores/fw/hooks/useKpiDashboard.ts:22 * kind: function * core: fw * spec: (none) * summary: Calculates percentage change between two values. * score: 4 ### function calculateComplexity * file: src/cores/fw/utils/simplificationAnalysis.ts:13 * kind: function * core: fw * spec: (none) * summary: Calculate cyclomatic complexity of a workflow graphM = E - N + 2P where E=edges, N=nodes, P=connected components * score: 4 ### function calculateFeaturedScore * file: src/cores/fw/utils/featuredTemplates.ts:28 * kind: function * core: fw * spec: (none) * summary: Calculate the featured score for a templateFormula: avg\_rating \* log(usage\_count + 1)This balances quality (ratings) with popularity (usage),with diminishing returns on usage to prevent runaway popularity. * score: 4 ### function calculateNextExecution * file: src/cores/fw/services/scheduleEvaluator.ts:85 * kind: function * core: fw * spec: (none) * summary: Compute the next execution time for a schedule relative to .Returns when the schedule is not time-driven (dependency/manual) or aone-time datetime schedule has already elapsed. * score: 4 ### function calculateNodePositions * file: src/cores/fw/utils/workflowPositioning.ts:34 * kind: function * core: fw * spec: (none) * summary: Calculate grid positions for new workflow nodes.If existing nodes are present, new nodes start below the bottommostexisting node (offset by GRID\_VERTICAL\_SPACING). Otherwise starts at(CANVAS\_ORIGIN\_X, CANVAS\_ORIGIN\_Y).Nodes are laid out left-to-right in rows of 3 columns. * score: 4 ### function calculateProgress * file: src/cores/fw/machines/workflowMachine.ts:480 * kind: function * core: fw * spec: (none) * summary: Calculate workflow progress percentage * score: 4 ### function calculateRelativeDate * file: src/cores/fw/utils/relativeDateUtils.ts:58 * kind: function * core: fw * spec: (none) * summary: Calculate a date from a relative date configuration * score: 4 ### function canProceedWithImport * file: src/cores/fw/utils/templateVersionCompatibility.ts:261 * kind: function * core: fw * spec: (none) * summary: Check if a compatibility result allows proceeding * score: 4 ### function canReachStep * file: src/cores/fw/machines/workflowMachine.ts:472 * kind: function * core: fw * spec: (none) * summary: Check if a step can be reached from current state * score: 4 ### function checkCircularDependencies * file: src/cores/fw/utils/workflowVariableValidator.ts:99 * kind: function * core: fw * spec: (none) * summary: Build dependency graph and detect circular dependencies * score: 4 ### function checkCompliance * file: src/cores/fw/utils/complianceChecking.ts:11 * kind: function * core: fw * spec: (none) * summary: Check a workflow against best practices and calculate compliance score * score: 4 ### function checkDependencyCompatibility * file: src/cores/fw/utils/templateVersionCompatibility.ts:145 * kind: function * core: fw * spec: (none) * summary: Check if template dependencies can be resolved * score: 4 ### function checkNodeTypeCompatibility * file: src/cores/fw/utils/templateVersionCompatibility.ts:93 * kind: function * core: fw * spec: (none) * summary: Check if all node types in the template are supported * score: 4 ### function checkRequiredVariables * file: src/cores/fw/utils/workflowVariableValidator.ts:258 * kind: function * core: fw * spec: (none) * summary: Check that required variables have values or expressions * score: 4 ### function checkSystemCompatibility * file: src/cores/fw/utils/templateVersionCompatibility.ts:59 * kind: function * core: fw * spec: (none) * summary: Check if a version is compatible with the system * score: 4 ### function checkTypeMismatches * file: src/cores/fw/utils/workflowVariableValidator.ts:224 * kind: function * core: fw * spec: (none) * summary: Check for type mismatches between variable declaration and expression result * score: 4 ### function checkUndefinedReferences * file: src/cores/fw/utils/workflowVariableValidator.ts:68 * kind: function * core: fw * spec: (none) * summary: Check for undefined variable references * score: 4 ### function checkVersionCompatibility * file: src/cores/fw/utils/templateVersionCompatibility.ts:210 * kind: function * core: fw * spec: (none) * summary: Main compatibility check function * score: 4 ### function classifyError * file: src/cores/fw/lib/fw-error-recovery-policy.ts:180 * kind: function * core: fw * spec: (none) * summary: Classifies an error as transient, permanent, or unknown.Classification order:1. Policy allowlists/denylists checked first2. HTTP status code heuristics3. Error message pattern matching4. Falls back to 'unknown' * params: * err — The error to classify * policy — The merged retry policy (for allowlist/denylist checks) * score: 4 ### function cloneFormFromTemplate * file: src/cores/fw/utils/formTemplateCloning.ts:272 * kind: function * core: fw * spec: (none) * summary: Clone a form template into form-ready dataMain entry point for template cloning * score: 4 ### function cloneFormTemplateData * file: src/cores/fw/utils/formTemplateCloning.ts:88 * kind: function * core: fw * spec: (none) * summary: Clone the entire template\_data structureClones all fields first, then sections with updated references * score: 4 ### function cloneFormTemplateField * file: src/cores/fw/utils/formTemplateCloning.ts:43 * kind: function * core: fw * spec: (none) * summary: Clone a single form field with a new IDUpdates the idMap for reference tracking * score: 4 ### function cloneFormTemplateSection * file: src/cores/fw/utils/formTemplateCloning.ts:61 * kind: function * core: fw * spec: (none) * summary: Clone a form section with updated field referencesMust be called after fields are cloned so idMap is populated * score: 4 ### function clonePageFromTemplate * file: src/cores/fw/utils/pageTemplateCloning.ts:252 * kind: function * core: fw * spec: (none) * summary: Clone a page template into page-ready dataMain entry point for template cloning * score: 4 ### function clonePageTemplateData * file: src/cores/fw/utils/pageTemplateCloning.ts:55 * kind: function * core: fw * spec: (none) * summary: Clone page template data with new field IDs * score: 4 ### function clonePageTemplateField * file: src/cores/fw/utils/pageTemplateCloning.ts:38 * kind: function * core: fw * spec: (none) * summary: Clone a single form field with a new IDUpdates the idMap for reference tracking * score: 4 ### function cloneWorkflowDefinition * file: src/cores/fw/utils/templateCloning.ts:156 * kind: function * core: fw * spec: (none) * summary: Clone a complete workflow definition with new unique IDs * params: * templateData — The template's workflow definition * returns: Clone result with new IDs and ID mapping * score: 4 ### function coerceToType * file: src/cores/fw/utils/expressionEvaluator.ts:257 * kind: function * core: fw * spec: (none) * summary: Coerce a value to a specific type * score: 4 ### function coerceToTypeV2 * file: src/cores/fw/utils/expressionEvaluatorV2.ts:480 * kind: function * core: fw * spec: (none) * summary: Coerce value to specific type * score: 1 ### function compactWeekdays * file: src/cores/fw/components/scheduling/cronBuilderUtils.ts:54 * kind: function * core: fw * spec: (none) * summary: Collapse a set of weekday numbers into a compact cron day-of-week field.Contiguous runs of 3+ become ranges (); shorter runs and singletonsare comma-listed (). Output uses names for readability. * score: 4 ### function compareTemplateVersions * file: src/cores/fw/utils/templateVersionComparison.ts:322 * kind: function * core: fw * spec: (none) * summary: Compare two template versions and return detailed comparison * score: 4 ### function compareVersions * file: src/cores/fw/utils/templateVersionCompatibility.ts:35 * kind: function * core: fw * spec: (none) * summary: Compare two semantic versionsReturns: -1 if v1 v2, 0 if v1 === v2, 1 if v1 v2 * score: 4 ### function composeCron * file: src/cores/fw/components/scheduling/cronBuilderUtils.ts:121 * kind: function * core: fw * spec: (none) * summary: Compose a 5-field cron string from the guided builder's selection. * score: 4 ### function computePathSummaries * file: src/cores/fw/utils/pathAnalyticsComputation.ts:31 * kind: function * core: fw * spec: (none) * summary: Transforms raw path analytics database records into derived summariesincluding frequency, success rate, bottleneck detection, and sorted views. * params: * paths — Raw rows as returned from the database. * returns: A containing the transformed summaries and pre-computed views (topPaths, slowPaths, rarelyUsedPaths) along with aggregate statistics. * score: 4 ### function computeRetryDelayMs * file: src/cores/fw/lib/fw-error-recovery-policy.ts:92 * kind: function * core: fw * spec: (none) * summary: Computes the raw retry delay (before jitter) for a given attempt index. * params: * policy — Merged retry policy * attemptIndex — Zero-based attempt index (0 = first retry) * returns: Delay in milliseconds, capped at * score: 4 ### function computeTransitiveDependentCount * file: src/cores/fw/utils/dependencyScanners.ts:196 * kind: function * core: fw * spec: (none) * summary: Computes transitive dependent count via BFS from a target entity.Vertices are (entity\_type, entity\_id) pairs per NFR-5.Caps at maxVertices (default 500) and returns isTruncated flag. * score: 4 ### function convertToCSV * file: src/cores/fw/utils/submissionCsvExport.ts:21 * kind: function * core: fw * spec: (none) * summary: Converts an array of flat-ish records to a CSV string.- Headers are derived from the union of all keys across rows.- / values become empty fields.- Nested objects/arrays are JSON-stringified.- Fields containing commas, double-quotes, or newlines are quoted.- Values starting with , , , or are prefixed with to neutralize CSV formula injection attacks. * params: * data — Array of records to convert; each record maps column names to values. * returns: A CSV-formatted string, or an empty string when is empty. * score: 4 ### function createDefaultRelativeDateConfig * file: src/cores/fw/utils/relativeDateUtils.ts:260 * kind: function * core: fw * spec: (none) * summary: Create a default relative date config * score: 4 ### function createEmptyContext * file: src/cores/fw/utils/expressionEvaluator.ts:346 * kind: function * core: fw * spec: (none) * summary: Create an empty variable context * score: 4 ### function createVariableValue * file: src/cores/fw/utils/expressionEvaluator.ts:334 * kind: function * core: fw * spec: (none) * summary: Create a VariableValue from a raw value * score: 4 ### function createWorkflowMachine * file: src/cores/fw/machines/workflowMachine.ts:148 * kind: function * core: fw * spec: (none) * summary: Create a workflow state machine * params: * config — Workflow configuration * returns: XState machine * score: 4 ### function decomposeCron * file: src/cores/fw/components/scheduling/cronBuilderUtils.ts:146 * kind: function * core: fw * spec: (none) * summary: Decompose a cron string back into guided-builder parts, or null when it usesfeatures the builder can't represent (steps, multi-field ranges, lists in theminute/hour fields). Null tells the UI to open the raw advanced editor instead. * score: 4 ### function deduplicateEdges * file: src/cores/fw/utils/dependencyScanners.ts:181 * kind: function * core: fw * spec: (none) * summary: Deduplicates edges by their composite key (source\_type + source\_id + target\_type + target\_id + dependency\_type). * score: 4 ### variable deleteOldLogs * file: src/cores/fw/services/executionLogService.ts:227 * kind: variable * core: fw * spec: (none) * summary: Delete logs older than a specified date * score: 2 ### function deserializeWorkflowContext * file: src/cores/fw/machines/workflowMachine.ts:523 * kind: function * core: fw * spec: (none) * summary: Deserialize workflow context from storage * score: 4 ### function detectBottlenecks * file: src/cores/fw/utils/bottleneckAnalysis.ts:18 * kind: function * core: fw * spec: (none) * summary: Identify bottleneck nodes based on execution duration * score: 4 ### function detectCircularDependencies * file: src/cores/fw/services/scheduleConflictDetector.ts:71 * kind: function * core: fw * spec: (none) * summary: Detect circular dependencies in the graph.Returns each cycle as an ordered list of rule\_ids (the cycle's members). Aself-dependency (rule depends on itself) is reported as a 1-element cycle. * score: 4 ### function detectDeadCode * file: src/cores/fw/utils/deadCodeDetection.ts:10 * kind: function * core: fw * spec: (none) * summary: Detect dead nodes and unused paths in a workflow graph * score: 4 ### function detectSlowNodes * file: src/cores/fw/utils/performanceAnalysis.ts:37 * kind: function * core: fw * spec: (none) * summary: Detect slow-running nodes based on performance metrics * score: 4 ### function detectSlowPaths * file: src/cores/fw/utils/performanceAnalysis.ts:81 * kind: function * core: fw * spec: (none) * summary: Detect slow paths (sequences of nodes with cumulative high latency) * score: 4 ### function detectTimeOverlaps * file: src/cores/fw/services/scheduleConflictDetector.ts:44 * kind: function * core: fw * spec: (none) * summary: Detect pairs of schedules whose fall within .Schedules without a next run (dependency/manual/inactive) are ignored. * score: 4 ### function diffObjects * file: src/cores/fw/utils/templateVersionComparison.ts:70 * kind: function * core: fw * spec: (none) * summary: Deep diff two objects and return array of differences * score: 4 ### function downloadTemplateExport * file: src/cores/fw/utils/templateExport.ts:281 * kind: function * core: fw * spec: (none) * summary: Trigger browser download of exported template * score: 4 ### function downloadTraceJson * file: src/cores/fw/utils/executionTraceExport.ts:14 * kind: function * core: fw * spec: (none) * summary: Downloads the execution trace as a JSON file. * score: 4 ### function downloadTracePdf * file: src/cores/fw/utils/executionTraceExport.ts:34 * kind: function * core: fw * spec: (none) * summary: Downloads the execution trace as a PDF file.Uses dynamic import of jsPDF to match vendor chunk pattern. * score: 4 ### function draftToGridProps * file: src/cores/fw/hooks/useDraftDecisionTableFromNL.ts:157 * kind: function * core: fw * spec: (none) * summary: Convert an AI into editable props. Rule IDs are generated client-side (drafts have none); rules areenabled and ordered by their suggested priority. Nothing is persisted — thebuilder edits these in the grid, then saves via . * score: 4 ### function EscalationIndicator * file: src/cores/fw/components/approvals/EscalationIndicator.tsx:23 * kind: function * core: fw * spec: (none) * summary: Utility for escalation indicator. * score: 1 ### function evaluateExpression * file: src/cores/fw/utils/expressionEvaluator.ts:209 * kind: function * core: fw * spec: (none) * summary: Evaluate an expression string with context * score: 4 ### function evaluateExpressionV2 * file: src/cores/fw/utils/expressionEvaluatorV2.ts:306 * kind: function * core: fw * spec: (none) * summary: Evaluate an expression safely using mathjs * params: * expression — Expression string to evaluate * context — Variable context * options — Evaluation options * returns: Evaluation result * score: 4 ### variable exportLogs * file: src/cores/fw/services/executionLogService.ts:100 * kind: variable * core: fw * spec: (none) * summary: Export logs in CSV or JSON format * score: 2 ### function exportTemplate * file: src/cores/fw/utils/templateExport.ts:192 * kind: function * core: fw * spec: (none) * summary: Export a template to a portable JSON package * score: 4 ### function extractAllDependencies * file: src/cores/fw/utils/templateExport.ts:99 * kind: function * core: fw * spec: (none) * summary: Extract all dependencies from a template * score: 4 ### function extractFailedNodeIds * file: src/cores/fw/components/workflow/monitoring/executionRcaUtils.ts:11 * kind: function * core: fw * spec: (none) * summary: Derive the IDs of nodes that failed, from a workflow execution's node\_statesmap. Only node KEYS are returned — never node values/payloads (which cancontain PHI). * score: 4 ### function extractFormDependencies * file: src/cores/fw/utils/templateExport.ts:25 * kind: function * core: fw * spec: (none) * summary: Extract form IDs referenced in workflow nodes * score: 4 ### function extractNodeChanges * file: src/cores/fw/utils/templateVersionComparison.ts:140 * kind: function * core: fw * spec: (none) * summary: Extract node changes between two snapshots * score: 4 ### function extractParameterChanges * file: src/cores/fw/utils/templateVersionComparison.ts:212 * kind: function * core: fw * spec: (none) * summary: Extract parameter changes between two versions * score: 4 ### function extractParameters * file: src/cores/fw/utils/parameterSubstitution.ts:33 * kind: function * core: fw * spec: (none) * summary: Extract all parameter references from a template * score: 4 ### function extractSubflowDependencies * file: src/cores/fw/utils/templateExport.ts:69 * kind: function * core: fw * spec: (none) * summary: Extract subflow IDs referenced in workflow nodes * score: 4 ### function extractVariableReferences * file: src/cores/fw/utils/expressionParser.ts:288 * kind: function * core: fw * spec: (none) * summary: Extract all variable references from an expression * score: 4 ### function extractVariableReferences * file: src/cores/fw/utils/workflowVariableValidator.ts:31 * kind: function * core: fw * spec: (none) * summary: Extract variable references from an expression string * score: 4 ### function findFirstDivergenceStep * file: src/cores/fw/utils/executionReplayUtils.ts:93 * kind: function * core: fw * spec: (none) * summary: Finds the first step index where two ordered step lists diverge.Steps are aligned by step\_index. * score: 4 ### function formatCalculatedDate * file: src/cores/fw/utils/relativeDateUtils.ts:119 * kind: function * core: fw * spec: (none) * summary: Format the calculated date for display * score: 4 ### function formatFieldReference * file: src/cores/fw/utils/conditionNaturalLanguage.ts:97 * kind: function * core: fw * spec: (none) * summary: Format a field reference for display * score: 4 ### function formatRelativeDate * file: src/cores/fw/utils/conditionNaturalLanguage.ts:90 * kind: function * core: fw * spec: (none) * summary: Format a relative date configuration for display * score: 4 ### function formatRelativeDatePreview * file: src/cores/fw/utils/relativeDateUtils.ts:96 * kind: function * core: fw * spec: (none) * summary: Format a relative date configuration for display preview * score: 4 ### function formatValue * file: src/cores/fw/utils/conditionNaturalLanguage.ts:46 * kind: function * core: fw * spec: (none) * summary: Format a value based on its field type for display * score: 4 ### function formatVariableValue * file: src/cores/fw/hooks/useExecutionVariables.ts:75 * kind: function * core: fw * spec: (none) * summary: Format a variable value for display * score: 4 ### function generateComparisonSummary * file: src/cores/fw/utils/templateVersionComparison.ts:283 * kind: function * core: fw * spec: (none) * summary: Generate a human-readable summary of changes * score: 4 ### function generateConditionDescription * file: src/cores/fw/utils/conditionNaturalLanguage.ts:151 * kind: function * core: fw * spec: (none) * summary: Generate a human-readable description for a single condition * score: 4 ### function generateConditionSummary * file: src/cores/fw/utils/conditionNaturalLanguage.ts:236 * kind: function * core: fw * spec: (none) * summary: Generate a short summary for a condition (for list views) * score: 4 ### function generateExportFilename * file: src/cores/fw/utils/templateExport.ts:178 * kind: function * core: fw * spec: (none) * summary: Generate a safe filename for the export * score: 4 ### function generateGroupDescription * file: src/cores/fw/utils/conditionNaturalLanguage.ts:175 * kind: function * core: fw * spec: (none) * summary: Generate a human-readable description for a condition group * score: 4 ### function generateGroupSummary * file: src/cores/fw/utils/conditionNaturalLanguage.ts:244 * kind: function * core: fw * spec: (none) * summary: Generate a short summary for a group (for list views) * score: 4 ### function generateMigrationSteps * file: src/cores/fw/utils/templateVersionCompatibility.ts:176 * kind: function * core: fw * spec: (none) * summary: Generate migration steps for upgrading from one version to another * score: 4 ### function generateNewFieldId * file: src/cores/fw/utils/formTemplateCloning.ts:24 * kind: function * core: fw * spec: (none) * summary: Generate a new UUID for cloned elements * score: 4 ### function generateNewFieldId * file: src/cores/fw/utils/pageTemplateCloning.ts:19 * kind: function * core: fw * spec: (none) * summary: Generate a new UUID for cloned elements * score: 4 ### function generateRootConditionDescription * file: src/cores/fw/utils/conditionNaturalLanguage.ts:220 * kind: function * core: fw * spec: (none) * summary: Generate a description for a root condition * score: 4 ### function getAllowedFunctions * file: src/cores/fw/utils/expressionParser.ts:394 * kind: function * core: fw * spec: (none) * summary: Get list of all allowed function names * score: 4 ### function getAllStandardFieldsAsAttributes * file: src/cores/fw/utils/mapFieldConfigToAttribute.ts:203 * kind: function * core: fw * spec: (none) * summary: Gets all standard fields for multiple entity types * score: 4 ### function getAvailableFunctions * file: src/cores/fw/utils/expressionEvaluatorV2.ts:421 * kind: function * core: fw * spec: (none) * summary: Get list of available custom functions * score: 4 ### function getFunction * file: src/cores/fw/utils/expressionFunctions.ts:335 * kind: function * core: fw * spec: (none) * summary: Get a function by name * score: 1 ### variable getLogStats * file: src/cores/fw/services/executionLogService.ts:157 * kind: variable * core: fw * spec: (none) * summary: Get log statistics for an execution * score: 2 ### function getOperatorLabel * file: src/cores/fw/utils/conditionOperators.ts:124 * kind: function * core: fw * spec: (none) * summary: Get human-readable label for an operator * score: 4 ### function getOperatorOptions * file: src/cores/fw/utils/conditionOperators.ts:152 * kind: function * core: fw * spec: (none) * summary: Get operator options for a select dropdown * score: 4 ### function getOperatorsForType * file: src/cores/fw/utils/conditionOperators.ts:117 * kind: function * core: fw * spec: (none) * summary: Get available operators for a field type * score: 4 ### function getPortalUrl * file: src/cores/fw/hooks/usePortalConfig.ts:125 * kind: function * core: fw * spec: (none) * summary: Generate the public portal URL for a form * score: 4 ### function getRelativeDateFullPreview * file: src/cores/fw/utils/relativeDateUtils.ts:127 * kind: function * core: fw * spec: (none) * summary: Get a preview string showing both the relative description and calculated date * score: 4 ### function getRemainingSteps * file: src/cores/fw/machines/workflowMachine.ts:489 * kind: function * core: fw * spec: (none) * summary: Get remaining steps in workflow * score: 4 ### function getSampleValueForFieldType * file: src/cores/fw/lib/pdf-samples.ts:16 * kind: function * core: fw * spec: (none) * summary: Provide a human-readable sample value for a form field type.Used by the PDF preview to populate example responses when sample data is enabled. * params: * fieldType — Field type identifier (e.g., "text", "email", "date") used to select an appropriate sample string. * returns: A sample string appropriate for the provided . * score: 4 ### function getStandardFieldsAsAttributes * file: src/cores/fw/utils/mapFieldConfigToAttribute.ts:192 * kind: function * core: fw * spec: (none) * summary: Gets all standard fields as ExtendedEntityAttributes for an entity typeUsed as fallback when PF-17 configs are not available * score: 4 ### function hasFunction * file: src/cores/fw/utils/expressionFunctions.ts:342 * kind: function * core: fw * spec: (none) * summary: Check if a function exists * score: 4 ### function identifyMissingDependencies * file: src/cores/fw/utils/templateImportValidation.ts:213 * kind: function * core: fw * spec: (none) * summary: Check dependency resolution status * score: 4 ### function importTemplate * file: src/cores/fw/utils/templateImport.ts:235 * kind: function * core: fw * spec: (none) * summary: Main import function * score: 1 ### function inferExpressionType * file: src/cores/fw/utils/workflowVariableValidator.ts:159 * kind: function * core: fw * spec: (none) * summary: Expected output type based on expression patterns * score: 4 ### variable insertLog * file: src/cores/fw/services/executionLogService.ts:37 * kind: variable * core: fw * spec: (none) * summary: Insert a new execution log entry * score: 2 ### variable insertLogsBatch * file: src/cores/fw/services/executionLogService.ts:199 * kind: variable * core: fw * spec: (none) * summary: Batch insert multiple log entries * score: 2 ### function isAllowedFunction * file: src/cores/fw/utils/expressionParser.ts:387 * kind: function * core: fw * spec: (none) * summary: Check if a function name is allowed * score: 4 ### function isDatetimeInPast * file: src/cores/fw/services/scheduleEvaluator.ts:124 * kind: function * core: fw * spec: (none) * summary: Whether a one-time ('datetime') schedule lies in the past relative to .Used to reject backdated schedules at the UI/service layer (AC-4). * score: 4 ### function isValidOperatorForType * file: src/cores/fw/utils/conditionOperators.ts:163 * kind: function * core: fw * spec: (none) * summary: Validate if an operator is valid for a field type * score: 4 ### function mapFieldConfigToAttribute * file: src/cores/fw/utils/mapFieldConfigToAttribute.ts:89 * kind: function * core: fw * spec: (none) * summary: Maps a single PF-17 EntityFieldConfigWithDefinition to ExtendedEntityAttribute * score: 4 ### function mapFieldType * file: src/cores/fw/utils/mapFieldConfigToAttribute.ts:24 * kind: function * core: fw * spec: (none) * summary: Maps PF-17 field type to FW-17 condition field type * score: 4 ### function mapStandardFieldToAttribute * file: src/cores/fw/utils/mapFieldConfigToAttribute.ts:122 * kind: function * core: fw * spec: (none) * summary: Maps a StandardFieldDefinition to ExtendedEntityAttribute * score: 4 ### function meetsFeaturedThresholds * file: src/cores/fw/utils/featuredTemplates.ts:39 * kind: function * core: fw * spec: (none) * summary: Check if a template meets the minimum thresholds for featured eligibility * score: 4 ### function mergeContexts * file: src/cores/fw/utils/expressionEvaluator.ts:353 * kind: function * core: fw * spec: (none) * summary: Merge two variable contexts * score: 1 ### function mergeFieldConfigsWithStandards * file: src/cores/fw/utils/mapFieldConfigToAttribute.ts:142 * kind: function * core: fw * spec: (none) * summary: Merges PF-17 field configs with standard field definitionsReturns ExtendedEntityAttribute array suitable for condition builder * score: 4 ### function mergeRetryPolicy * file: src/cores/fw/lib/fw-error-recovery-policy.ts:57 * kind: function * core: fw * spec: (none) * summary: Merges rule-level defaults with node-level overrides.Node values take precedence; missing fields fall back to rule, then DB defaults. * score: 4 ### function parseExpression * file: src/cores/fw/utils/expressionParser.ts:251 * kind: function * core: fw * spec: (none) * summary: Parse a template string into an AST * score: 4 ### function parseImportJson * file: src/cores/fw/utils/templateImportValidation.ts:75 * kind: function * core: fw * spec: (none) * summary: Parse JSON string into package object * score: 4 ### function parseRelativeDateString * file: src/cores/fw/utils/relativeDateUtils.ts:185 * kind: function * core: fw * spec: (none) * summary: Parse a natural language relative date stringSupports formats like "7 days from now", "2 weeks ago", "1 month from now" * score: 4 ### function parseSemanticVersion * file: src/cores/fw/utils/templateVersionCompatibility.ts:19 * kind: function * core: fw * spec: (none) * summary: Parse a semantic version string (e.g., "1.2.0") * score: 4 ### function parseWeekdayField * file: src/cores/fw/components/scheduling/cronBuilderUtils.ts:102 * kind: function * core: fw * spec: (none) * summary: Expand a cron day-of-week field (, , ) into day numbers.Returns null if any token is unrecognized or a malformed range (so the callerfalls back to advanced mode rather than silently dropping days). * score: 4 ### function planDispatch * file: src/cores/fw/services/scheduleDispatchPlanner.ts:78 * kind: function * core: fw * spec: (none) * summary: Plan how to handle a batch of due schedules.Conflicts: schedules whose due times fall within the detector's tolerance arean overlap; the earliest dispatches and each later one honors its own — / re-arm without running, postponesby (default 5 min). Without a persisted attempt counter, re-postpones each conflicting tick rather than escalating to error. * params: * candidates — due schedules (active, next run at or before now) * now — dispatch tick time * score: 4 ### function rankFeaturedTemplates * file: src/cores/fw/utils/featuredTemplates.ts:62 * kind: function * core: fw * spec: (none) * summary: Filter templates that meet featured thresholds and sort by score * score: 4 ### function readFileAsText * file: src/cores/fw/utils/templateImport.ts:310 * kind: function * core: fw * spec: (none) * summary: Read file as text for import * score: 1 ### function reconstructVariablesAtStep * file: src/cores/fw/utils/executionReplayUtils.ts:238 * kind: function * core: fw * spec: (none) * summary: Reconstructs accumulated variable state at a given step indexby merging execution.variables with all step output\_data up to that index. * score: 4 ### function removeConditionFromConditionGroup * file: src/cores/fw/utils/conditionGroupOperations.ts:191 * kind: function * core: fw * spec: (none) * summary: Remove a condition recursively by id. * score: 4 ### function removeNestedGroupFromConditionGroup * file: src/cores/fw/utils/conditionGroupOperations.ts:166 * kind: function * core: fw * spec: (none) * summary: Remove nested group by id. * score: 1 ### function replaceNestedGroupInConditionGroup * file: src/cores/fw/utils/conditionGroupOperations.ts:143 * kind: function * core: fw * spec: (none) * summary: Replace a nested group by id while preserving shared tree semantics. * score: 4 ### function requiresDualValue * file: src/cores/fw/utils/conditionOperators.ts:138 * kind: function * core: fw * spec: (none) * summary: Check if operator requires dual values (start and end) * score: 4 ### function requiresValueInput * file: src/cores/fw/utils/conditionOperators.ts:131 * kind: function * core: fw * spec: (none) * summary: Check if operator requires a value input * score: 4 ### function resolveConflict * file: src/cores/fw/services/scheduleConflictDetector.ts:125 * kind: function * core: fw * spec: (none) * summary: Resolve a detected conflict according to the schedule's strategy.- → skip this run, proceed to the next scheduled time.- → delay by (default 5 min), up to (default 3); beyond that, escalate to an error.- → fail immediately (caller alerts; no retry). * params: * strategy — the schedule's * attempt — 1-based retry attempt for * score: 4 ### function resolveFieldKeyConflicts * file: src/cores/fw/hooks/useApplyFormSuggestions.ts:24 * kind: function * core: fw * spec: (none) * summary: Resolves field\_key conflicts by appending \_1, \_2, etc. * score: 4 ### function resolveTemplate * file: src/cores/fw/utils/expressionEvaluator.ts:243 * kind: function * core: fw * spec: (none) * summary: Resolve a template string, replacing all variables with values * score: 4 ### function resolveTemplateV2 * file: src/cores/fw/utils/expressionEvaluatorV2.ts:366 * kind: function * core: fw * spec: (none) * summary: Resolve template string with variable placeholders * params: * template — Template string with variable placeholders * context — Variable context * returns: Resolved string * score: 4 ### function scanAutomationRule * file: src/cores/fw/utils/dependencyScanners.ts:70 * kind: function * core: fw * spec: (none) * summary: Scans an automation rule for dependency edges.Detects: form\_submitted triggers, field references, event subscriptions, decision table routing. * score: 4 ### function scanFormFields * file: src/cores/fw/utils/dependencyScanners.ts:157 * kind: function * core: fw * spec: (none) * summary: Scans form fields for lookup config references (FW-15). * score: 4 ### function scanWorkflowDefinition * file: src/cores/fw/utils/dependencyScanners.ts:14 * kind: function * core: fw * spec: (none) * summary: Scans a workflow definition JSON for dependency edges.Detects: form references in nodes, decision table references, child workflows. * score: 4 ### variable searchLogs * file: src/cores/fw/services/executionLogService.ts:66 * kind: variable * core: fw * spec: (none) * summary: Search logs with full-text search in messages * score: 2 ### function serializeWorkflowContext * file: src/cores/fw/machines/workflowMachine.ts:497 * kind: function * core: fw * spec: (none) * summary: Serialize workflow context for persistence * score: 4 ### function shallowVariableDiff * file: src/cores/fw/utils/executionReplayUtils.ts:128 * kind: function * core: fw * spec: (none) * summary: Computes a shallow diff of top-level keys between two variable objects. * score: 4 ### function sortByFeaturedScore * file: src/cores/fw/utils/featuredTemplates.ts:46 * kind: function * core: fw * spec: (none) * summary: Sort templates by featured score (descending) * score: 4 ### function toBaseEntityAttribute * file: src/cores/fw/utils/mapFieldConfigToAttribute.ts:221 * kind: function * core: fw * spec: (none) * summary: Converts ExtendedEntityAttribute back to base EntityAttributefor compatibility with existing condition builder components * score: 4 ### function tokenize * file: src/cores/fw/utils/expressionParser.ts:67 * kind: function * core: fw * spec: (none) * summary: Tokenize a template string into tokens * score: 4 ### function upsertConditionInConditionGroup * file: src/cores/fw/utils/conditionGroupOperations.ts:176 * kind: function * core: fw * spec: (none) * summary: Update an existing condition recursively, or append to the root group ifit doesn't exist yet. * score: 4 ### function validateChecksum * file: src/cores/fw/utils/templateImportValidation.ts:325 * kind: function * core: fw * spec: (none) * summary: Synchronous checksum validation (legacy compatibility)NOTE: Prefer validateChecksumAsync for SHA-256 support * score: 4 ### function validateChecksumAsync * file: src/cores/fw/utils/templateImportValidation.ts:290 * kind: function * core: fw * spec: (none) * summary: Validate checksum if presentSupports both legacy simple hash and SHA-256 * score: 4 ### function validateClonedWorkflow * file: src/cores/fw/utils/templateCloning.ts:191 * kind: function * core: fw * spec: (none) * summary: Validate that a cloned workflow has valid structure * score: 4 ### function validateCronExpression * file: src/cores/fw/services/scheduleEvaluator.ts:54 * kind: function * core: fw * spec: (none) * summary: Validate a cron expression and optionally preview its next runs. * params: * expression — standard 5-field cron (minute hour day-of-month month day-of-week) * score: 4 ### function validateExpression * file: src/cores/fw/utils/expressionEvaluatorV2.ts:388 * kind: function * core: fw * spec: (none) * summary: Validate an expression without evaluating * params: * expression — Expression to validate * returns: Validation result * score: 4 ### function validateExpression * file: src/cores/fw/utils/expressionParser.ts:327 * kind: function * core: fw * spec: (none) * summary: Validate an expression without executing it * score: 4 ### function validateExpression * file: src/cores/fw/utils/workflowVariableValidator.ts:312 * kind: function * core: fw * spec: (none) * summary: Validate a single expression string * score: 4 ### function validateFormTemplateStructure * file: src/cores/fw/utils/formTemplateCloning.ts:191 * kind: function * core: fw * spec: (none) * summary: Validate that a cloned form template has valid structure * score: 4 ### function validateImportPackage * file: src/cores/fw/utils/templateImportValidation.ts:352 * kind: function * core: fw * spec: (none) * summary: Main validation function for import packages * score: 4 ### function validateImportPackageStructure * file: src/cores/fw/utils/templateImportValidation.ts:94 * kind: function * core: fw * spec: (none) * summary: Validate package has required structure * score: 4 ### function validateNodeTypes * file: src/cores/fw/utils/templateImportValidation.ts:186 * kind: function * core: fw * spec: (none) * summary: Validate node types are recognized * score: 4 ### function validatePageTemplateStructure * file: src/cores/fw/utils/pageTemplateCloning.ts:173 * kind: function * core: fw * spec: (none) * summary: Validate that a cloned page template has valid structure * score: 4 ### function validateParameterValues * file: src/cores/fw/utils/parameterSubstitution.ts:56 * kind: function * core: fw * spec: (none) * summary: Validate parameter values against parameter definitions * score: 4 ### function validateRegulatoryChangeLogPayloadOrAuditAndThrow * file: src/cores/fw/lib/regulatoryChangeLogPhi.ts:49 * kind: function * core: fw * spec: (none) * summary: Validates payload; on failure audits then rethrows (for create/update handlers). * score: 4 ### function validateRelativeDateConfig * file: src/cores/fw/utils/relativeDateUtils.ts:136 * kind: function * core: fw * spec: (none) * summary: Validate a relative date configuration * score: 4 ### function validateRequiredNodes * file: src/cores/fw/utils/validateRequiredNodes.ts:21 * kind: function * core: fw * spec: (none) * summary: Validates that all required node IDs exist in the current workflow definition.Used both client-side (preview) and should be mirrored server-side for enforcement. * score: 4 ### function validateSubflowOrchestration * file: src/cores/fw/utils/subflowOrchestrationValidator.ts:333 * kind: function * core: fw * spec: (none) * summary: Validate subflow orchestration for a workflow's nodes and edges.Checks:1. Missing subflow selections2. Cycle detection (DFS across subflow references)3. Maximum nesting depth (2 levels)4. Input/output mapping key validity + parent variable existence * params: * nodes — The workflow's nodes (from the editor). * \_edges — The workflow's edges (reserved for future use). * subflowDefinitions — Map of subflowId → definition for all referenced subflows. * rootWorkflowId — Optional synthetic ID for the root workflow (defaults to '**root**'). * parentVariableNames — Optional list of parent workflow variable names for mapping validation. * returns: Array of violations (empty = valid). * score: 4 ### function validateVersionCompatibility * file: src/cores/fw/utils/templateImportValidation.ts:135 * kind: function * core: fw * spec: (none) * summary: Validate version compatibility * score: 1 ### function validateWorkflowStructure * file: src/cores/fw/utils/templateImportValidation.ts:160 * kind: function * core: fw * spec: (none) * summary: Validate workflow definition structure * score: 4 ### function validateWorkflowVariables * file: src/cores/fw/utils/workflowVariableValidator.ts:286 * kind: function * core: fw * spec: (none) * summary: Main validation function - runs all checks * score: 4 # gr — Public API surface Source: https://docs.encoreos.io/api/gr Per-symbol API documentation for the gr area, generated from TSDoc blocks. Refresh with `npm run docs:api:generate`. # gr — Public API surface ## Types & interfaces ### interface ActionNodeData * file: src/cores/gr/components/procedures/nodes/ActionNode.tsx:29 * kind: interface * core: gr * spec: GR-11 * summary: Data payload for a procedure-flow action node (a standard step).Carried on the React Flow node and rendered by . is thestep name; the optional fields describe instructions, the responsible role,and an estimated duration in minutes. * see: * ActionNode * score: 5 ### type AIGeneratedProcedure * file: src/cores/gr/ai/procedureSchemas.ts:89 * kind: type * core: gr * spec: GR-11 * summary: A complete AI-generated procedure draft returned by the proceduregeneration assistant.Inferred from . Wraps an ordered list of along with categorization, an optional suggestedreview cadence, and a score (0–100) the reviewer uses to gaugehow much editing the draft needs before publishing. * score: 5 ### type AIProcedureStep * file: src/cores/gr/ai/procedureSchemas.ts:50 * kind: type * core: gr * spec: GR-11 * summary: A single step within an AI-generated procedure draft.Inferred from . drives whichworkflow node the step becomes (action, decision, reference, verification,or system); optional fields (, , etc.)are populated only when relevant to the step type. * score: 5 ### type AuditPrep * file: src/cores/gr/ai/schemas.ts:136 * kind: type * core: gr * spec: GR-06 * summary: AI-generated audit-readiness assessment.Inferred from . Combines an overall (0–100) with a narrative assessment, prioritized gap areas, potentialfindings, and a per-item checklist whose flags whether each item is, , or . * score: 5 ### type AuditSeverity * file: src/cores/gr/components/AuditSeverityBadge.tsx:16 * kind: type * core: gr * spec: GR-04 * summary: Severity level of an audit finding, ordered low to critical.Drives the color variant rendered by . * see: * AuditSeverityBadge * score: 5 ### interface AuditStats * file: src/cores/gr/hooks/useAuditStats.ts:33 * kind: interface * core: gr * spec: GR-04 * summary: Audit summary statistics for the GR overview dashboard.Aggregates counts across audits, findings, and corrective actions: auditlifecycle counts (total / active / upcoming-30-day / completed), open andcritical findings, and open vs overdue corrective actions. * see: * useAuditStats * score: 5 ### interface BoardMinutes * file: src/cores/gr/hooks/useBoardMinutes.ts:44 * kind: interface * core: gr * spec: GR-15 * summary: A board meeting minutes record ( row).Org-scoped via (RLS-enforced). Carries the meeting date,type, title, attendees, free-text content, approval audit fields, and a bag for org-defined extensions. * see: * useBoardMinutesList * score: 5 ### interface BoardResolution * file: src/cores/gr/hooks/useBoardResolutions.ts:47 * kind: interface * core: gr * spec: GR-15 * summary: A board resolution record ( row).Org-scoped via (RLS-enforced) and optionally linked to theminutes it was passed under (). Tracks the resolution number,motion/second attribution, for/against/abstain vote tallies, , anda bag for org-defined extensions. * see: * useBoardResolutionsList * score: 5 ### type CapStatus * file: src/cores/gr/lib/cap-state-machine.ts:9 * kind: type * core: gr * spec: (none) * summary: Valid CAP statuses * score: 1 ### interface CoiAttestation * file: src/cores/gr/hooks/useCoiAttestations.ts:42 * kind: interface * core: gr * spec: GR-15 * summary: A conflict-of-interest attestation record ( row).Org-scoped via (RLS-enforced) and tied to a profile for agiven . Records the person's role at attestation time,status, whether a conflict was disclosed and its description, submission andacknowledgment audit fields, a bag, and an optional joined summary. * see: * useCoiAttestations * score: 5 ### interface CoiAttestationCycleWizardDialogProps * file: src/cores/gr/wizards/coi-cycle/CoiAttestationCycleWizardDialog.tsx:26 * kind: interface * core: gr * spec: GR-15 * summary: Props for .Standard controlled-dialog props: toggles visibility and reports the requested open state. * see: * CoiAttestationCycleWizardDialog * score: 5 ### interface CoiCycleReminderConfig * file: src/cores/gr/hooks/useCoiMutations.ts:14 * kind: interface * core: gr * spec: (none) * summary: Optional wizard metadata persisted on each new row (). * score: 2 ### interface CoiRosterProfile * file: src/cores/gr/wizards/coi-cycle/hooks/useCoiRoster.ts:26 * kind: interface * core: gr * spec: GR-UX-09 * summary: A selectable roster member for the COI attestation cycle wizard.A minimal profile projection (id, name, email) sourced from PF shared tablesonly, used to pick cycle participants without importing the HR core. * see: * useCoiRoster * score: 5 ### interface CoiRosterStepProps * file: src/cores/gr/wizards/coi-cycle/steps/CoiRosterStep.tsx:44 * kind: interface * core: gr * spec: GR-UX-09 * summary: Props for the COI cycle wizard's roster-selection step.Receives the eligible and current selection state(, ), reports edits through , andsurfaces validation via . drives the loadingpresentation. * see: * CoiRosterStep * score: 5 ### interface CoiStats * file: src/cores/gr/hooks/useCoiStats.ts:32 * kind: interface * core: gr * spec: GR-15 * summary: Completion statistics for a COI attestation cycle.Rolls up attestation counts by status (pending / submitted / acknowledged),the number with a disclosed conflict ( / ), and a percentage. * see: * useCoiStats * score: 5 ### interface ComplianceStats * file: src/cores/gr/hooks/useComplianceStats.ts:32 * kind: interface * core: gr * spec: GR-03 * summary: Compliance summary statistics for the GR overview dashboard.Reports requirement counts (total / compliant / non-compliant), a derived percentage, and outstanding work: overdue compliancechecks plus open and overdue remediations. * see: * useComplianceStats * score: 5 ### interface ContributeTemplateInput * file: src/cores/gr/hooks/useContributeTemplate.ts:39 * kind: interface * core: gr * spec: GR-12 * summary: Input for saving an approved procedure as a reusable procedure template.Identifies the source procedure () and the template metadata topersist: title, optional description, category, tags, the workflow graph( / ), optional regulatory-body links, and anoptional suggested policy category. * see: * useContributeTemplate * score: 5 ### interface CreateTemplateValues * file: src/cores/gr/hooks/useProcedureTemplateMutation.ts:36 * kind: interface * core: gr * spec: GR-12 * summary: Values for creating a new procedure template.Carries the template metadata, optional regulatory-body links and tags, andthe workflow graph. A null requests a platform-shared(global) template, which is restricted to platform admins. * see: * useProcedureTemplateMutation * score: 5 ### interface CycleConfigStepProps * file: src/cores/gr/wizards/coi-cycle/steps/CycleConfigStep.tsx:35 * kind: interface * core: gr * spec: GR-UX-09 * summary: Props for the COI cycle wizard's configuration step.Holds the cycle's and with their changecallbacks, the selectable , per-field validation messages(), and to indicate an in-flight checkfor an existing cycle in the chosen year. * see: * CycleConfigStep * score: 5 ### interface DecisionNodeData * file: src/cores/gr/components/procedures/nodes/DecisionNode.tsx:31 * kind: interface * core: gr * spec: GR-11 * summary: Data payload for a procedure-flow decision node (a branch point).Carried on the React Flow node and rendered by . Each entry in becomes a labeled output branch optionally wired to atarget node; when omitted the renderer defaults to Yes/No branches. * see: * DecisionNode * score: 5 ### interface DocumentExportDialogProps * file: src/cores/gr/components/DocumentExportDialog.tsx:38 * kind: interface * core: gr * spec: none * summary: Props for , generic over the source documenttype .The dialog is document-agnostic: callers supply the object, a extractor that maps it to , and a used to filter the available document templates. * see: * DocumentExportDialog * score: 5 ### interface EvidenceCoverageByCategory * file: src/cores/gr/hooks/useComplianceEvidenceCoverage.ts:18 * kind: interface * core: gr * spec: (none) * summary: Per-category evidence coverage ratio. * score: 2 ### interface EvidenceGap * file: src/cores/gr/hooks/useComplianceEvidenceCoverage.ts:26 * kind: interface * core: gr * spec: (none) * summary: A regulatory requirement that has no compliance evidence yet. * score: 2 ### type ExportFormat * file: src/cores/gr/utils/qiReportExport.ts:22 * kind: type * core: gr * spec: GR-07 * summary: Output format selected when exporting a QI report. * score: 5 ### type GapAnalysis * file: src/cores/gr/ai/schemas.ts:93 * kind: type * core: gr * spec: GR-06 * summary: AI-identified compliance gaps with remediation guidance.Inferred from . Each gap is classified by (evidence, check, training, or policy), assigned a risk-based priority, andpaired with a recommendation plus concrete for closing it. * score: 5 ### interface GapAnalysisItem * file: src/cores/gr/hooks/useAccreditationGapAnalysis.ts:36 * kind: interface * core: gr * spec: GR-16 * summary: Per-standard gap analysis result for an accreditation.Each item reports a standard's evidence counts ( /), whether a gap exists (), and human-readable (e.g. no evidence, no verified evidence, some unverified). * see: * useAccreditationGapAnalysis * score: 5 ### interface GapAnalysisSummary * file: src/cores/gr/hooks/useAccreditationGapAnalysis.ts:68 * kind: interface * core: gr * spec: GR-16 * summary: Aggregated accreditation gap-analysis summary.Wraps the per-standard list with category rollups( keyed by category, each with total/gaps/coverage) plusorganization-wide totals and an percentage. * see: * useAccreditationGapAnalysis * score: 5 ### interface GrPicklistOption * file: src/cores/gr/hooks/useGrPicklist.ts:32 * kind: interface * core: gr * spec: (none) * summary: A selectable GR picklist option for dropdowns and filters. * score: 2 ### interface ImprovementChecklistItem * file: src/cores/gr/hooks/useQITemplates.ts:60 * kind: interface * core: gr * spec: GR-07 * summary: A checklist item to seed on a QI project created from a template. schedules the item relative to project start, and sets its default priority. * see: * QIProjectTemplate * score: 5 ### interface InServiceMatrixFilterValue * file: src/cores/gr/components/inservice/InServiceMatrixFilters.tsx:47 * kind: interface * core: gr * spec: GR-19 * summary: Combined filter state for the in-service compliance matrix. selects the mutually-exclusive server-side scope (site ordepartment); only the matching id ( or ) is populated. and apply client-side, where may be aspecific or . * see: * InServiceMatrixFilters * score: 5 ### type InServiceMatrixScopeMode * file: src/cores/gr/components/inservice/InServiceMatrixFilters.tsx:24 * kind: type * core: gr * spec: (none) * summary: Mutually-exclusive scope used to drive server-side filtering. * score: 2 ### interface InstantiateTemplateInput * file: src/cores/gr/hooks/useInstantiateTemplate.ts:40 * kind: interface * core: gr * spec: GR-12 * summary: Input for instantiating a procedure template into a new procedure.Identifies the source and the new procedure's metadata (title,description, category, optional site and owner) plus the workflow graph toseed. When is provided, the transactional RPC alsocreates a procedure-to-policy link. * see: * useInstantiateTemplate * score: 5 ### interface LaunchCoiCycleParams * file: src/cores/gr/hooks/useCoiMutations.ts:42 * kind: interface * core: gr * spec: GR-15 * summary: Parameters for launching a new COI attestation cycle.Names the and the (profile + role) to seedpending attestations for. The optional , , and are persisted into each row's until GR-15 promotes them to dedicated columns; overrides thedefault success message. * see: * useCoiMutations * score: 5 ### interface MetricMeasurement * file: src/cores/gr/hooks/useMetricMeasurements.ts:37 * kind: interface * core: gr * spec: GR-07 * summary: A single recorded QI metric measurement ( row).Org-scoped via (RLS-enforced) and tied to a metric by. Captures the on a given ,optional notes, a bag, and creation audit fields. * see: * useMetricMeasurements * score: 5 ### interface MetricMeasurement * file: src/cores/gr/utils/qiReportExport.ts:41 * kind: interface * core: gr * spec: GR-07 * summary: Minimal metric measurement shape consumed by the QI report exporters.A trimmed view of a measurement (id, metric, value, date, optional notes)sufficient to render metric trend rows in exported PDF/CSV/Excel reports. * score: 5 ### interface MetricMeasurementInsert * file: src/cores/gr/hooks/useMetricMeasurements.ts:66 * kind: interface * core: gr * spec: GR-07 * summary: Payload for inserting a new QI metric measurement.The caller supplies only the metric, value, date, and optional notes; and audit fields are filled in server-side. * see: * useMetricMeasurements * score: 5 ### interface MetricTemplate * file: src/cores/gr/hooks/useQITemplates.ts:34 * kind: interface * core: gr * spec: GR-07 * summary: Definition of a metric to seed when a QI project template is instantiated.Names the metric and how it is measured (method, frequency, unit); only and are required. * see: * QIProjectTemplate * score: 5 ### interface MetricTrendData * file: src/cores/gr/hooks/useMetricMeasurements.ts:86 * kind: interface * core: gr * spec: GR-07 * summary: A point in a metric's trend series, shaped for charting.Flattens a to the / pair (plusoptional notes) consumed by trend charts. * see: * useMetricMeasurements * score: 5 ### interface PDSACycleTemplate * file: src/cores/gr/hooks/useQITemplates.ts:83 * kind: interface * core: gr * spec: GR-07 * summary: A PDSA cycle to seed on a QI project created from a template.Carries the cycle name and an optional Plan-phase description and activitylist. * see: * QIProjectTemplate * score: 5 ### type PDSAPhase * file: src/cores/gr/components/PDSAPhaseBadge.tsx:15 * kind: type * core: gr * spec: GR-07 * summary: Phase of a PDSA (Plan-Do-Study-Act) quality-improvement cycle.Drives the badge variant rendered by . * see: * PDSAPhaseBadge * score: 5 ### interface PolicyCategoryOption * file: src/cores/gr/hooks/usePolicyCategories.ts:46 * kind: interface * core: gr * spec: GR-01-EN-01 * summary: A selectable policy-category option for dropdowns and filters. is the stored category key and is the human-readable,title-cased display text. * see: * usePolicyCategories * score: 5 ### interface PolicySuggestion * file: src/cores/gr/hooks/usePolicySuggestion.ts:33 * kind: interface * core: gr * spec: GR-12 * summary: A lightweight policy candidate offered for procedure-to-policy linkage.A trimmed projection of a row (id, title, status, category)used to populate the policy-linkage dropdown during template instantiation. * see: * usePolicySuggestion * score: 5 ### interface ProcedurePdfStep * file: src/cores/gr/lib/procedure-pdf-steps.ts:15 * kind: interface * core: gr * spec: (none) * summary: Minimal step shape required to render the PDF steps body.Compatible with (from ). * score: 2 ### interface ProcedureTemplateDetail * file: src/cores/gr/hooks/useProcedureTemplateDetail.ts:55 * kind: interface * core: gr * spec: GR-12 * summary: Full detail of a procedure template, including its workflow graph.Flattens the template row plus its regulatory-body links: holds display names and the linked ids. A null indicates a platform-shared template. Includes the / graph, source procedure reference,suggested policy category, , and audit fields. * see: * useProcedureTemplateDetail * score: 5 ### interface ProcedureTemplateListFilters * file: src/cores/gr/hooks/useProcedureTemplateList.ts:29 * kind: interface * core: gr * spec: GR-12 * summary: Filter criteria for the procedure-template list query.All fields are optional and combine; matches title/description, and narrow by classification, and restricts to templates carrying the given tags. * see: * useProcedureTemplateList * score: 5 ### interface ProcedureTemplateListItem * file: src/cores/gr/hooks/useProcedureTemplateList.ts:74 * kind: interface * core: gr * spec: GR-12 * summary: A procedure template as shown in the templates-library list.A list-row projection covering classification, regulatory-body displaynames/ids, tags, version, active flag, and the workflow graph. A null marks a platform-shared (global) template versus anorg-specific one. * see: * useProcedureTemplateList * score: 5 ### interface QIOverviewStats * file: src/cores/gr/hooks/useQIStats.ts:31 * kind: interface * core: gr * spec: GR-07 * summary: Quality-improvement summary statistics for the GR overview dashboard.Reports active vs completed QI projects, active PDSA cycles, overdueimprovement actions, and how many tracked metrics are trending up() versus down (). * see: * useQIStats * score: 5 ### interface QIProjectTemplate * file: src/cores/gr/hooks/useQITemplates.ts:124 * kind: interface * core: gr * spec: GR-07 * summary: A reusable quality-improvement project template( row).Org-scoped via (RLS-enforced). Bundles project defaults(objective, scope, duration) with the metric, checklist, and PDSA-cycleblueprints (, ,) that seed a new project on instantiation, plus a bag and audit fields. * see: * useQITemplateList * score: 5 ### interface QITemplateFormValues * file: src/cores/gr/hooks/useQITemplates.ts:165 * kind: interface * core: gr * spec: GR-07 * summary: Form values for creating or editing a QI project template.The editable subset of — project defaults plus themetric, checklist, and PDSA-cycle blueprints — excluding server-managedfields like id, org, active flag, and audit columns. * see: * useQITemplateMutations * score: 5 ### interface QITemplateListFilters * file: src/cores/gr/hooks/useQITemplates.ts:190 * kind: interface * core: gr * spec: GR-07 * summary: Filter criteria for the QI project template list query.All fields are optional and combine; and narrow theset and matches the template name/description. * see: * useQITemplateList * score: 5 ### interface ReadinessInput * file: src/cores/gr/lib/readiness-score.ts:13 * kind: interface * core: gr * spec: (none) * summary: GR-16: Accreditation Readiness Score ComputationWeighted formula:- Evidence coverage: 40%- Policy currency: 25%- CAP closure rate: 20%- Incident rate (inverse): 15%Each component is 0–100; final score is 0–100. * score: 2 ### interface ReadinessResult * file: src/cores/gr/lib/readiness-score.ts:52 * kind: interface * core: gr * spec: GR-16 * summary: Result of an accreditation readiness-score computation. is the weighted blend (evidence 40%, policy 25%, CAP 20%,incident 15%); the remaining fields expose each underlying component score(all 0–100) so the UI can break down what drives the total. * see: * computeReadinessScore * score: 5 ### interface ReferenceNodeData * file: src/cores/gr/components/procedures/nodes/ReferenceNode.tsx:28 * kind: interface * core: gr * spec: GR-11 * summary: Data payload for a procedure-flow reference node.Carried on the React Flow node and rendered by . Links thestep to supporting documents, forms, and/or other procedures by id anddisplay name. * see: * ReferenceNode * score: 5 ### type RegulatoryAuditAction * file: src/cores/gr/utils/regulatoryAudit.ts:12 * kind: type * core: gr * spec: (none) * summary: Valid audit actions for regulatory report status transitions. * score: 2 ### interface RegulatoryAuditParams * file: src/cores/gr/utils/regulatoryAudit.ts:15 * kind: interface * core: gr * spec: (none) * summary: Parameters for logging a regulatory report audit event. * score: 2 ### type RequirementSuggestion * file: src/cores/gr/ai/schemas.ts:51 * kind: type * core: gr * spec: GR-06 * summary: AI-suggested compliance requirements returned by the advisor.Inferred from . Each suggestion names aregulatory body (CARF, Joint Commission, State, CMS, SAMHSA, HIPAA), apriority reflecting compliance risk, and a score (0–100) so thereviewer can triage which suggestions to adopt. * score: 5 ### type RiskAssessment * file: src/cores/gr/ai/schemas.ts:176 * kind: type * core: gr * spec: GR-05 * summary: AI-generated risk assessment for a single risk register entry.Inferred from . Scores and on a 1–5 scale, derives a (likelihood × impact, 1–25) and anoverall , then recommends a mitigation (avoid, reduce, transfer, or accept) with concrete actions and a confidencescore. * score: 5 ### type RiskRating * file: src/cores/gr/components/RiskRatingBadge.tsx:16 * kind: type * core: gr * spec: GR-05 * summary: Overall risk rating for a risk-register entry, ordered critical to low\.Drives the badge variant rendered by . * see: * RiskRatingBadge * score: 5 ### interface SystemNodeData * file: src/cores/gr/components/procedures/nodes/SystemNode.tsx:27 * kind: interface * core: gr * spec: GR-11 * summary: Data payload for a procedure-flow system node (an automated action).Carried on the React Flow node and rendered by . names the automated operation the step represents. * see: * SystemNode * score: 5 ### interface TrainingLinkContext * file: src/cores/gr/wizards/training-course/mapper.ts:9 * kind: interface * core: gr * spec: (none) * summary: GR-UX-13: Pure builders for the training-course link rows.Extracted so policy- and requirement-link row shapes are unit-testable withouta DB. keys the requirement column as (not ). * score: 2 ### interface TrainingStats * file: src/cores/gr/hooks/useTrainingStats.ts:28 * kind: interface * core: gr * spec: GR-02 * summary: Training summary statistics for the GR overview dashboard.Reports course counts (total / active), enrollment counts by state(completed / overdue / in-progress), a derived percentage,and total CEU credits earned. * see: * useTrainingStats * score: 5 ### interface UpdateTemplateValues * file: src/cores/gr/hooks/useProcedureTemplateMutation.ts:64 * kind: interface * core: gr * spec: GR-12 * summary: Partial values for updating an existing procedure template.All fields are optional; only supplied fields are changed. Setting replaces all of the template's regulatory-body links.Core-field changes trigger a DB-side version auto-increment. * see: * useProcedureTemplateMutation * score: 5 ### interface UseInServiceMatrixOptions * file: src/cores/gr/hooks/useInServiceMatrix.ts:18 * kind: interface * core: gr * spec: (none) * summary: Options accepted by . Server filters (org/site/role)are forwarded to the RPC; client filters(, , ) are applied in-memory afterthe JSONB matrix is returned to keep the RPC contract narrow\.Server-side filters: (), ( → ), and (legacy substring match on ,retained for back-compat). * score: 2 ### interface UsePolicyAcknowledgmentFormResult * file: src/cores/gr/hooks/usePolicyAcknowledgmentForm.ts:44 * kind: interface * core: gr * spec: GR-01-EN-02 * summary: Result returned by . is the resolved acknowledgment — either aconfigurable PF-08 form or the code-first default — and distinguishes the two so consumers can pick the right renderer. and track the underlying configurable-form fetch. * see: * usePolicyAcknowledgmentForm * score: 5 ### interface VerificationNodeData * file: src/cores/gr/components/procedures/nodes/VerificationNode.tsx:30 * kind: interface * core: gr * spec: GR-11 * summary: Data payload for a procedure-flow verification node (a sign-off step).Carried on the React Flow node and rendered by . Capturesthe responsible role, whether a signature is required, and the criteria thatmust be met to verify the step. * see: * VerificationNode * score: 5 ### interface WhistleblowerReport * file: src/cores/gr/hooks/useWhistleblowerReports.ts:37 * kind: interface * core: gr * spec: GR-15 * summary: A whistleblower report as seen in the compliance-officer list view\.Org-scoped via (RLS-enforced). Deliberately omitssensitive columns (report token, free-text description, reporter profile,creator) so list rendering never exposes them; carries only category,status, assignment, resolution notes, and audit timestamps. flags reporter-anonymous submissions. * see: * useWhistleblowerReports * score: 5 ## Hooks ### hook useAccreditationCaps * file: src/cores/gr/hooks/useAccreditationCaps.ts:21 * kind: hook * core: gr * spec: (none) * summary: Fetches CAPs for a given accreditation, scoped to the current organization. * score: 4 ### hook useAccreditationDashboard * file: src/cores/gr/hooks/useAccreditationDashboard.ts:9 * kind: hook * core: gr * spec: (none) * summary: Hook for managing accreditation dashboard. * score: 1 ### hook useAccreditationDetail * file: src/cores/gr/hooks/useAccreditationDetail.ts:79 * kind: hook * core: gr * spec: (none) * summary: Hook for managing accreditation detail. * score: 1 ### hook useAccreditationEvidenceByStandard * file: src/cores/gr/hooks/useAccreditationEvidence.ts:68 * kind: hook * core: gr * spec: (none) * summary: Provides accreditation evidence by standard queries and mutation actions scoped to the current organization. * score: 4 ### hook useAccreditationEvidenceBySurvey * file: src/cores/gr/hooks/useAccreditationEvidence.ts:100 * kind: hook * core: gr * spec: (none) * summary: Provides accreditation evidence by survey queries and mutation actions scoped to the current organization. * score: 4 ### hook useAccreditationEvidenceList * file: src/cores/gr/hooks/useAccreditationEvidence.ts:22 * kind: hook * core: gr * spec: (none) * summary: Provides accreditation evidence list queries and mutation actions scoped to the current organization. * score: 4 ### hook useAccreditationEvidenceMutation * file: src/cores/gr/hooks/useAccreditationEvidence.ts:132 * kind: hook * core: gr * spec: (none) * summary: Provides accreditation evidence mutation queries and mutation actions scoped to the current organization. * score: 4 ### hook useAccreditationGapAnalysis * file: src/cores/gr/hooks/useAccreditationGapAnalysis.ts:84 * kind: hook * core: gr * spec: (none) * summary: Computes gap analysis for an accreditation by checking each standard's evidence. * score: 4 ### hook useAccreditationList * file: src/cores/gr/hooks/useAccreditationList.ts:16 * kind: hook * core: gr * spec: (none) * summary: Provides accreditation list queries and mutation actions scoped to the current organization. * score: 4 ### hook useAccreditationList * file: src/cores/gr/wizards/tracer-pack/hooks/useAccreditationList.ts:11 * kind: hook * core: gr * spec: (none) * summary: Fetches the list of active accreditations for the current organization.Used in the tracer pack wizard's accreditation selection step. * returns: TanStack Query result with active accreditations array * score: 4 ### hook useAccreditationMutation * file: src/cores/gr/hooks/useAccreditationMutation.ts:11 * kind: hook * core: gr * spec: (none) * summary: Hook for managing accreditation mutation. * score: 1 ### hook useAccreditationNotifications * file: src/cores/gr/hooks/useAccreditationNotifications.ts:24 * kind: hook * core: gr * spec: (none) * summary: Hook for managing accreditation notifications. * score: 1 ### hook useAccreditationReadinessScore * file: src/cores/gr/hooks/useAccreditationReadinessScore.ts:22 * kind: hook * core: gr * spec: (none) * summary: Computes the live readiness score for a given accreditation. * score: 4 ### hook useAccreditationsByBody * file: src/cores/gr/hooks/useAccreditationList.ts:151 * kind: hook * core: gr * spec: (none) * summary: Provides accreditations by body queries and mutation actions scoped to the current organization. * score: 4 ### hook useAccreditationsByStatus * file: src/cores/gr/hooks/useAccreditationList.ts:120 * kind: hook * core: gr * spec: (none) * summary: Provides accreditations by status queries and mutation actions scoped to the current organization. * score: 4 ### hook useAccreditationStandardDetail * file: src/cores/gr/hooks/useAccreditationStandard.ts:81 * kind: hook * core: gr * spec: (none) * summary: Hook for managing accreditation standard detail. * score: 1 ### hook useAccreditationStandardList * file: src/cores/gr/hooks/useAccreditationStandard.ts:23 * kind: hook * core: gr * spec: (none) * summary: Hook for managing accreditation standard list. * score: 1 ### hook useAccreditationStandardMutation * file: src/cores/gr/hooks/useAccreditationStandard.ts:113 * kind: hook * core: gr * spec: (none) * summary: Hook for managing accreditation standard mutation. * score: 1 ### hook useAccreditationStatusReport * file: src/cores/gr/hooks/useAccreditationReports.ts:19 * kind: hook * core: gr * spec: (none) * summary: Hook for managing accreditation status report. * score: 1 ### hook useAccreditationSurveyDetail * file: src/cores/gr/hooks/useAccreditationSurvey.ts:75 * kind: hook * core: gr * spec: (none) * summary: Provides accreditation survey detail queries and mutation actions scoped to the current organization. * score: 4 ### hook useAccreditationSurveyList * file: src/cores/gr/hooks/useAccreditationSurvey.ts:23 * kind: hook * core: gr * spec: (none) * summary: Provides accreditation survey list queries and mutation actions scoped to the current organization. * score: 4 ### hook useAccreditationSurveyMutation * file: src/cores/gr/hooks/useAccreditationSurvey.ts:146 * kind: hook * core: gr * spec: (none) * summary: Provides accreditation survey mutation queries and mutation actions scoped to the current organization. * score: 4 ### hook useAccreditationTracerPacks * file: src/cores/gr/hooks/useAccreditationTracerPacks.ts:22 * kind: hook * core: gr * spec: (none) * summary: Fetches tracer packs for a given accreditation. * score: 4 ### hook useAcknowledgeRegulatoryReport * file: src/cores/gr/hooks/useIncidentRegulatoryReports.ts:158 * kind: hook * core: gr * spec: (none) * summary: Mutation: Record acknowledgment receipt for a regulatory report. * score: 4 ### hook useActiveContracts * file: src/cores/gr/hooks/useContractList.ts:95 * kind: hook * core: gr * spec: (none) * summary: Provides active contracts queries and mutation actions scoped to the current organization. * score: 4 ### hook useActiveMetrics * file: src/cores/gr/hooks/useQIMetric.ts:90 * kind: hook * core: gr * spec: (none) * summary: Provides active metrics queries and mutation actions scoped to the current organization. * score: 4 ### hook useActivePDSACycles * file: src/cores/gr/hooks/usePDSACycle.ts:112 * kind: hook * core: gr * spec: (none) * summary: Provides active pdsacycles queries and mutation actions scoped to the current organization. * score: 4 ### hook useActiveQIProjects * file: src/cores/gr/hooks/useQIProjectList.ts:85 * kind: hook * core: gr * spec: (none) * summary: Hook for managing active qiprojects. * score: 1 ### hook useActiveRisks * file: src/cores/gr/hooks/useRiskList.ts:85 * kind: hook * core: gr * spec: (none) * summary: Provides active risks queries and mutation actions scoped to the current organization. * score: 4 ### hook useAIAuditPreparation * file: src/cores/gr/ai/useAIAuditPreparation.ts:45 * kind: hook * core: gr * spec: (none) * summary: AI-powered audit preparation assistance * score: 4 ### hook useAIAuditPrepList * file: src/cores/gr/ai/useAIAuditPrepList.ts:34 * kind: hook * core: gr * spec: (none) * summary: Query hook for AI audit preparation data * score: 4 ### hook useAIAuditPrepMutation * file: src/cores/gr/ai/useAIAuditPrepMutation.ts:36 * kind: hook * core: gr * spec: (none) * summary: Mutation hook for AI audit preparation data * score: 4 ### hook useAIComplianceChat * file: src/cores/gr/ai/useAIComplianceChat.ts:37 * kind: hook * core: gr * spec: (none) * summary: AI-powered compliance chat assistant * score: 4 ### hook useAIComplianceEnabled * file: src/cores/gr/hooks/useAIComplianceEnabled.ts:20 * kind: hook * core: gr * spec: (none) * summary: Hook for managing aicompliance enabled. * score: 1 ### hook useAIGapAnalysesList * file: src/cores/gr/ai/useAIGapAnalysesList.ts:36 * kind: hook * core: gr * spec: (none) * summary: Query hook for AI gap analyses * score: 4 ### hook useAIGapAnalysesMutation * file: src/cores/gr/ai/useAIGapAnalysesMutation.ts:36 * kind: hook * core: gr * spec: (none) * summary: Mutation hook for AI gap analyses * score: 4 ### hook useAIGapAnalysis * file: src/cores/gr/ai/useAIGapAnalysis.ts:40 * kind: hook * core: gr * spec: (none) * summary: AI-powered compliance gap analysis * score: 4 ### hook useAIProcedureGeneration * file: src/cores/gr/ai/useAIProcedureGeneration.ts:151 * kind: hook * core: gr * spec: (none) * summary: Creates a React hook that generates structured procedures (workflow nodes and edges) from policy content using an AI service. * params: * options — Configuration for procedure generation: - organizationType: Optional organization type to include in AI context - accreditations: Optional list of accreditations to include in AI context - defaultCategory: Optional default procedure category to include in AI context * returns: An object with: - generateFromPolicy: async function that accepts policy input and returns a GeneratedProcedureResult or when no AI result is produced - data: the latest raw AI output (if any) - isLoading: boolean indicating whether an AI request is in progress - error: any error returned by the underlying AI hook * score: 4 ### hook useAIRequirementIdentification * file: src/cores/gr/ai/useAIRequirementIdentification.ts:41 * kind: hook * core: gr * spec: (none) * summary: AI-powered regulatory requirement identification * score: 4 ### hook useAIRiskAssessment * file: src/cores/gr/ai/useAIRiskAssessment.ts:39 * kind: hook * core: gr * spec: (none) * summary: AI-powered risk assessment assistance * score: 4 ### hook useAIRiskAssessmentsList * file: src/cores/gr/ai/useAIRiskAssessmentsList.ts:34 * kind: hook * core: gr * spec: (none) * summary: Query hook for AI risk assessments * score: 4 ### hook useAIRiskAssessmentsMutation * file: src/cores/gr/ai/useAIRiskAssessmentsMutation.ts:38 * kind: hook * core: gr * spec: (none) * summary: Mutation hook for AI risk assessments * score: 4 ### hook useAISuggestionsList * file: src/cores/gr/ai/useAISuggestionsList.ts:36 * kind: hook * core: gr * spec: (none) * summary: Query hook for AI compliance suggestions * score: 4 ### hook useAISuggestionsMutation * file: src/cores/gr/ai/useAISuggestionsMutation.ts:37 * kind: hook * core: gr * spec: (none) * summary: Mutation hook for AI compliance suggestions * score: 4 ### hook useAmendmentsByContract * file: src/cores/gr/hooks/useContractAmendments.ts:87 * kind: hook * core: gr * spec: (none) * summary: Hook for managing amendments by contract. * score: 1 ### hook useAssignIncident * file: src/cores/gr/hooks/useIncidentMutation.ts:105 * kind: hook * core: gr * spec: (none) * summary: Assigns an incident to a user for review. * score: 4 ### hook useAuditChecklist * file: src/cores/gr/hooks/useAuditChecklist.ts:11 * kind: hook * core: gr * spec: (none) * summary: Hook for managing audit checklist. * score: 1 ### hook useAuditChecklistMutation * file: src/cores/gr/hooks/useAuditChecklist.ts:43 * kind: hook * core: gr * spec: (none) * summary: Hook for managing audit checklist mutation. * score: 1 ### hook useAuditCorrectiveActionMutation * file: src/cores/gr/hooks/useAuditCorrectiveAction.ts:102 * kind: hook * core: gr * spec: (none) * summary: Hook for managing audit corrective action mutation. * score: 1 ### hook useAuditDashboard * file: src/cores/gr/hooks/useAuditReadiness.ts:133 * kind: hook * core: gr * spec: (none) * summary: Hook for managing audit dashboard. * score: 1 ### hook useAuditDetail * file: src/cores/gr/hooks/useAuditDetail.ts:9 * kind: hook * core: gr * spec: (none) * summary: Hook for managing audit detail. * score: 1 ### hook useAuditEvidence * file: src/cores/gr/hooks/useAuditEvidence.ts:11 * kind: hook * core: gr * spec: (none) * summary: Hook for managing audit evidence. * score: 1 ### hook useAuditEvidenceMutation * file: src/cores/gr/hooks/useAuditEvidence.ts:75 * kind: hook * core: gr * spec: (none) * summary: Hook for managing audit evidence mutation. * score: 1 ### hook useAuditFindingDetail * file: src/cores/gr/hooks/useAuditFinding.ts:119 * kind: hook * core: gr * spec: (none) * summary: Hook for managing audit finding detail. * score: 1 ### hook useAuditFindingList * file: src/cores/gr/hooks/useAuditFinding.ts:19 * kind: hook * core: gr * spec: (none) * summary: Hook for managing audit finding list. * score: 1 ### hook useAuditFindingMutation * file: src/cores/gr/hooks/useAuditFinding.ts:152 * kind: hook * core: gr * spec: (none) * summary: Hook for managing audit finding mutation. * score: 1 ### hook useAuditLinkMutation * file: src/cores/gr/hooks/useAccreditationAuditLink.ts:204 * kind: hook * core: gr * spec: (none) * summary: Aggregates accreditation-link mutations into one API with per-action pending flags. * score: 4 ### hook useAuditList * file: src/cores/gr/hooks/useAuditList.ts:16 * kind: hook * core: gr * spec: (none) * summary: Hook for managing audit list. * score: 1 ### hook useAuditMutation * file: src/cores/gr/hooks/useAuditMutation.ts:11 * kind: hook * core: gr * spec: (none) * summary: Hook for managing audit mutation. * score: 1 ### hook useAuditReadiness * file: src/cores/gr/hooks/useAuditReadiness.ts:16 * kind: hook * core: gr * spec: (none) * summary: Hook for managing audit readiness. * score: 1 ### hook useAuditsByStatus * file: src/cores/gr/hooks/useAuditList.ts:129 * kind: hook * core: gr * spec: (none) * summary: Hook for managing audits by status. * score: 1 ### hook useAuditStats * file: src/cores/gr/hooks/useAuditStats.ts:47 * kind: hook * core: gr * spec: (none) * summary: Hook for managing audit stats. * score: 1 ### hook useAuditTeam * file: src/cores/gr/hooks/useAuditTeam.ts:11 * kind: hook * core: gr * spec: (none) * summary: Hook for managing audit team. * score: 1 ### hook useAuditTeamMutation * file: src/cores/gr/hooks/useAuditTeam.ts:44 * kind: hook * core: gr * spec: (none) * summary: Hook for managing audit team mutation. * score: 1 ### hook useBenchmarkingAggregates * file: src/cores/gr/hooks/useBenchmarkingAggregates.ts:31 * kind: hook * core: gr * spec: (none) * summary: Fetches benchmarking aggregate rows. Optional filters narrow byregulatory body type, procedure category, and metric. * params: * params — Optional filters; all are passed as clauses. * returns: React Query result with . * score: 4 ### hook useBenchmarkingConsent * file: src/cores/gr/hooks/useBenchmarkingConsent.ts:28 * kind: hook * core: gr * spec: (none) * summary: Fetches the active (non-revoked) benchmarking consent record for thecurrent organization and exposes opt-in / opt-out mutations. * returns: Active consent (or null), loading state, and mutation handlers. * score: 4 ### hook useBoardMinutesList * file: src/cores/gr/hooks/useBoardMinutes.ts:74 * kind: hook * core: gr * spec: GR-15 * summary: Lists board meeting minutes for the current organization, newest meetingfirst.Wraps ; the query is org-scoped and disabled until an organizationis selected. Uses a 5-minute and 10-minute . * returns: A TanStack Query result whose is a array, plus , , and the usual query state. * score: 5 ### hook useBoardMinutesMutations * file: src/cores/gr/hooks/useBoardMinutes.ts:108 * kind: hook * core: gr * spec: GR-15 * summary: Provides create, update, and approve mutations for board meeting minutes.All mutations are org- and user-scoped, stamp audit fields, surface successand sanitized-error toasts, and invalidate the board-minutes query cache onsuccess. Takes no arguments. * returns: An object of TanStack mutations: (insert a new record), (patch title/content/status/attendees), and (mark approved with audit stamps). * score: 5 ### hook useBoardResolutionMutations * file: src/cores/gr/hooks/useBoardResolutions.ts:111 * kind: hook * core: gr * spec: GR-15 * summary: Provides create and update mutations for board resolutions.Both mutations are org- and user-scoped, stamp audit fields, surface successand sanitized-error toasts, and invalidate the board-resolutions query cacheon success. generates a sequential resolution number viathe RPC. Takes no arguments. * returns: An object with and TanStack mutations. * score: 5 ### hook useBoardResolutionsList * file: src/cores/gr/hooks/useBoardResolutions.ts:78 * kind: hook * core: gr * spec: GR-15 * summary: Lists board resolutions for the current organization, newest first.Wraps ; the query is org-scoped and disabled until an organizationis selected. Uses a 5-minute and 10-minute . * returns: A TanStack Query result whose is a array, plus , , and the usual query state. * score: 5 ### hook useCapMutations * file: src/cores/gr/hooks/useCapMutations.ts:24 * kind: hook * core: gr * spec: (none) * summary: Provides CAP create, update, and status transition mutations. * score: 4 ### hook useCEUCreditList * file: src/cores/gr/hooks/useCEUCreditList.ts:17 * kind: hook * core: gr * spec: (none) * summary: Hook for managing ceucredit list. * score: 1 ### hook useCEUTranscript * file: src/cores/gr/hooks/useCEUTranscript.ts:17 * kind: hook * core: gr * spec: (none) * summary: Hook for managing ceutranscript. * score: 1 ### hook useCloseIncident * file: src/cores/gr/hooks/useIncidentMutation.ts:182 * kind: hook * core: gr * spec: (none) * summary: Closes a resolved incident. * score: 1 ### hook useCoiAttestations * file: src/cores/gr/hooks/useCoiAttestations.ts:74 * kind: hook * core: gr * spec: GR-15 * summary: Lists COI attestations for the current organization and a given year,joining each attester's profile summary.Wraps ; the query is org-scoped and disabled until an organizationis selected. Uses a 5-minute and 10-minute . * params: * year — Attestation year to load; defaults to the current calendar year. * returns: A TanStack Query result whose is a array, plus , , and the usual query state. * score: 5 ### hook useCoiCycleWizard * file: src/cores/gr/wizards/coi-cycle/hooks/useCoiCycleWizard.ts:40 * kind: hook * core: gr * spec: (none) * summary: Wizard state for the COI cycle launch dialog. * score: 4 ### hook useCoiMutations * file: src/cores/gr/hooks/useCoiMutations.ts:98 * kind: hook * core: gr * spec: GR-15 * summary: Provides mutations for the COI attestation lifecycle.All mutations are org- and user-scoped, surface success and sanitized-errortoasts, and invalidate the COI attestation, my-attestation, and stats querycaches on success. Takes no arguments. * returns: An object of TanStack mutations: (seed pending attestations from ), (record a person's conflict disclosure), and (compliance officer sign-off). * score: 5 ### hook useCoiRoster * file: src/cores/gr/wizards/coi-cycle/hooks/useCoiRoster.ts:35 * kind: hook * core: gr * spec: (none) * summary: Loads org member profiles via → (no HR core imports). * score: 4 ### hook useCoiStats * file: src/cores/gr/hooks/useCoiStats.ts:51 * kind: hook * core: gr * spec: GR-15 * summary: Computes completion stats from COI attestations for a given year. * params: * year — Attestation year (defaults to current year) * returns: — is the computed summary for the year; / propagate from the underlying attestation query. * score: 5 ### hook useCompletionDetail * file: src/cores/gr/hooks/useTrainingCompletion.ts:222 * kind: hook * core: gr * spec: (none) * summary: Hook for managing completion detail. * score: 1 ### hook useComplianceCheckList * file: src/cores/gr/hooks/useComplianceCheck.ts:24 * kind: hook * core: gr * spec: (none) * summary: Hook for managing compliance check list. * score: 1 ### hook useComplianceCheckMutation * file: src/cores/gr/hooks/useComplianceCheck.ts:125 * kind: hook * core: gr * spec: (none) * summary: Hook for managing compliance check mutation. * score: 1 ### hook useComplianceChecksByRequirement * file: src/cores/gr/hooks/useComplianceCheck.ts:93 * kind: hook * core: gr * spec: (none) * summary: Hook for managing compliance checks by requirement. * score: 1 ### hook useComplianceDashboard * file: src/cores/gr/hooks/useComplianceDashboard.ts:15 * kind: hook * core: gr * spec: (none) * summary: Hook for managing compliance dashboard. * score: 1 ### hook useComplianceEffectivenessScore * file: src/cores/gr/hooks/useComplianceEffectivenessScore.ts:26 * kind: hook * core: gr * spec: (none) * summary: Computes compliance effectiveness scores per procedure category (domain).Groups procedures by category and calculates a weighted effectivenessscore based on coverage (procedures linked to policies) and completion rates. * returns: React Query result with ComplianceEffectivenessScore array. * score: 4 ### hook useComplianceEvidenceByRequirement * file: src/cores/gr/hooks/useComplianceEvidence.ts:74 * kind: hook * core: gr * spec: (none) * summary: Hook for managing compliance evidence by requirement. * score: 1 ### hook useComplianceEvidenceCoverage * file: src/cores/gr/hooks/useComplianceEvidenceCoverage.ts:46 * kind: hook * core: gr * spec: (none) * summary: Hook returning evidence coverage metrics and the gap list for the current org. * score: 4 ### hook useComplianceEvidenceList * file: src/cores/gr/hooks/useComplianceEvidence.ts:34 * kind: hook * core: gr * spec: (none) * summary: Hook for managing compliance evidence list. * score: 1 ### hook useComplianceEvidenceMutation * file: src/cores/gr/hooks/useComplianceEvidence.ts:107 * kind: hook * core: gr * spec: (none) * summary: Hook for managing compliance evidence mutation. * score: 1 ### hook useComplianceHeatmap * file: src/cores/gr/hooks/useComplianceExecutive.ts:43 * kind: hook * core: gr * spec: (none) * summary: Fetches the live compliance-posture heatmap for the current org. * params: * asOf — Optional "as of" date (ISO yyyy-MM-dd); defaults to today server-side. * score: 4 ### hook useComplianceLinkMutation * file: src/cores/gr/hooks/useAccreditationComplianceLink.ts:127 * kind: hook * core: gr * spec: (none) * summary: Hook for managing compliance link mutation. * score: 1 ### hook useComplianceNotifications * file: src/cores/gr/hooks/useComplianceNotifications.ts:29 * kind: hook * core: gr * spec: (none) * summary: Hook for managing compliance notifications. * score: 1 ### hook useCompliancePostureTrend * file: src/cores/gr/hooks/useComplianceExecutive.ts:70 * kind: hook * core: gr * spec: (none) * summary: Fetches the dated compliance-score trend series within a date range. * params: * start — Range start (ISO yyyy-MM-dd). * end — Range end (ISO yyyy-MM-dd). * score: 4 ### hook useComplianceRemediationByRequirement * file: src/cores/gr/hooks/useComplianceRemediation.ts:88 * kind: hook * core: gr * spec: (none) * summary: Hook for managing compliance remediation by requirement. * score: 1 ### hook useComplianceRemediationList * file: src/cores/gr/hooks/useComplianceRemediation.ts:25 * kind: hook * core: gr * spec: (none) * summary: Hook for managing compliance remediation list. * score: 1 ### hook useComplianceRemediationMutation * file: src/cores/gr/hooks/useComplianceRemediation.ts:120 * kind: hook * core: gr * spec: (none) * summary: Hook for managing compliance remediation mutation. * score: 1 ### hook useComplianceScoreTrend * file: src/cores/gr/hooks/useComplianceScoreTrend.ts:25 * kind: hook * core: gr * spec: (none) * summary: Fetches compliance-score snapshots for a trailing window and reshapes theminto per-category time series for chart consumption. * params: * windowDays — Trailing window in days (30, 90, or 365). * returns: React Query result with (per-category arrays), , and for trend-delta indicators. * score: 4 ### hook useComplianceStats * file: src/cores/gr/hooks/useComplianceStats.ts:45 * kind: hook * core: gr * spec: (none) * summary: Hook for managing compliance stats. * score: 1 ### hook useComplianceSubmissionList * file: src/cores/gr/hooks/useComplianceSubmission.ts:24 * kind: hook * core: gr * spec: (none) * summary: Hook for managing compliance submission list. * score: 1 ### hook useComplianceSubmissionMutation * file: src/cores/gr/hooks/useComplianceSubmission.ts:82 * kind: hook * core: gr * spec: (none) * summary: Hook for managing compliance submission mutation. * score: 1 ### hook useComplianceThresholds * file: src/cores/gr/hooks/useComplianceExecutive.ts:93 * kind: hook * core: gr * spec: (none) * summary: Reads the org's compliance banding thresholds from gr\_module\_settings. * score: 4 ### hook useContractAmendmentMutation * file: src/cores/gr/hooks/useContractAmendments.ts:97 * kind: hook * core: gr * spec: (none) * summary: Hook for managing contract amendment mutation. * score: 1 ### hook useContractAmendments * file: src/cores/gr/hooks/useContractAmendments.ts:28 * kind: hook * core: gr * spec: (none) * summary: Hook for managing contract amendments. * score: 1 ### hook useContractDashboard * file: src/cores/gr/hooks/useContractStats.ts:187 * kind: hook * core: gr * spec: (none) * summary: Hook for managing contract dashboard. * score: 1 ### hook useContractDetail * file: src/cores/gr/hooks/useContractDetail.ts:20 * kind: hook * core: gr * spec: (none) * summary: Hook for managing contract detail. * score: 1 ### hook useContractList * file: src/cores/gr/hooks/useContractList.ts:22 * kind: hook * core: gr * spec: (none) * summary: Provides contract list queries and mutation actions scoped to the current organization. * score: 4 ### hook useContractMilestoneMutation * file: src/cores/gr/hooks/useContractMilestones.ts:96 * kind: hook * core: gr * spec: (none) * summary: Hook for managing contract milestone mutation. * score: 1 ### hook useContractMilestones * file: src/cores/gr/hooks/useContractMilestones.ts:28 * kind: hook * core: gr * spec: (none) * summary: Hook for managing contract milestones. * score: 1 ### hook useContractMutation * file: src/cores/gr/hooks/useContractMutation.ts:18 * kind: hook * core: gr * spec: (none) * summary: Hook for managing contract mutation. * score: 1 ### hook useContractObligationMutation * file: src/cores/gr/hooks/useContractObligations.ts:122 * kind: hook * core: gr * spec: (none) * summary: Provides contract obligation mutation queries and mutation actions scoped to the current organization. * score: 4 ### hook useContractObligations * file: src/cores/gr/hooks/useContractObligations.ts:28 * kind: hook * core: gr * spec: (none) * summary: Provides contract obligations queries and mutation actions scoped to the current organization. * score: 4 ### hook useContractObligationStats * file: src/cores/gr/hooks/useContractStats.ts:103 * kind: hook * core: gr * spec: (none) * summary: Hook for managing contract obligation stats. * score: 1 ### hook useContractsByStatus * file: src/cores/gr/hooks/useContractList.ts:115 * kind: hook * core: gr * spec: (none) * summary: Provides contracts by status queries and mutation actions scoped to the current organization. * score: 4 ### hook useContractStats * file: src/cores/gr/hooks/useContractStats.ts:16 * kind: hook * core: gr * spec: (none) * summary: Hook for managing contract stats. * score: 1 ### hook useContractTypeMutation * file: src/cores/gr/hooks/useContractTypes.ts:60 * kind: hook * core: gr * spec: (none) * summary: Hook for managing contract type mutation. * score: 1 ### hook useContractTypes * file: src/cores/gr/hooks/useContractTypes.ts:23 * kind: hook * core: gr * spec: (none) * summary: Hook for managing contract types. * score: 1 ### hook useContributeTemplate * file: src/cores/gr/hooks/useContributeTemplate.ts:56 * kind: hook * core: gr * spec: (none) * summary: Contributes (saves) an approved procedure as a new procedure template. * score: 4 ### hook useCorrectiveActionList * file: src/cores/gr/hooks/useAuditCorrectiveAction.ts:53 * kind: hook * core: gr * spec: (none) * summary: Hook for managing corrective action list. * score: 1 ### hook useCorrectiveActionsByFinding * file: src/cores/gr/hooks/useAuditCorrectiveAction.ts:16 * kind: hook * core: gr * spec: (none) * summary: Hook for managing corrective actions by finding. * score: 1 ### hook useCreateAuditFromSurvey * file: src/cores/gr/hooks/useAccreditationAuditLink.ts:130 * kind: hook * core: gr * spec: (none) * summary: Creates a new audit from survey metadata, then links that audit to the survey in a second step.If either step fails, the mutation rejects and surfaces a sanitized error toast. * score: 4 ### hook useCreateCorrectiveAction * file: src/cores/gr/hooks/useIncidentMutation.ts:318 * kind: hook * core: gr * spec: (none) * summary: Creates a corrective action for an incident. * score: 4 ### hook useCreateFinding * file: src/cores/gr/hooks/useIncidentMutation.ts:275 * kind: hook * core: gr * spec: (none) * summary: Adds a finding to an investigation. * score: 4 ### hook useCreateImpact * file: src/cores/gr/hooks/useRegulatoryImpactMutation.ts:35 * kind: hook * core: gr * spec: GR-17 * summary: Mutation that adds an impact record to a regulatory change event.Org- and user-scoped; inserts a row (impacttype, optional target, assignee, status, notes), then invalidates the parentevent's detail cache and toasts on success/error. Takes no arguments. * returns: A TanStack result whose / accepts . * score: 5 ### hook useCreateIncident * file: src/cores/gr/hooks/useIncidentMutation.ts:27 * kind: hook * core: gr * spec: (none) * summary: Creates a new incident report. * score: 4 ### hook useCreateInvestigation * file: src/cores/gr/hooks/useIncidentMutation.ts:225 * kind: hook * core: gr * spec: (none) * summary: Creates a new investigation for an incident. * score: 4 ### hook useCreateMockSurvey * file: src/cores/gr/hooks/useMockSurveys.ts:55 * kind: hook * core: gr * spec: (none) * summary: Record a new mock survey result. * score: 4 ### hook useCreateProjectFromTemplate * file: src/cores/gr/hooks/useQITemplates.ts:463 * kind: hook * core: gr * spec: (none) * summary: Provides create project from template queries and mutation actions scoped to the current organization. * score: 4 ### hook useCreateRegulationAccreditationMap * file: src/cores/gr/hooks/useRegulationAccreditationMap.ts:72 * kind: hook * core: gr * spec: GR-14-EN-01 * summary: Creates an org-scoped regulation → accreditation-body mapping. * returns: A TanStack mutation accepting a . * score: 4 ### hook useCreateRegulationRequirementMap * file: src/cores/gr/hooks/useRegulationRequirementMap.ts:73 * kind: hook * core: gr * spec: GR-14-EN-01 * summary: Creates an org-scoped regulation → requirement mapping. * returns: A TanStack mutation accepting a . * score: 4 ### hook useCreateRegulatorySource * file: src/cores/gr/hooks/useRegulatorySourceMutation.ts:27 * kind: hook * core: gr * spec: GR-17 * summary: Mutation that registers a new monitored regulatory source.Org- and user-scoped; inserts a row, defaulting to true and to 1440, then invalidates thesource list cache and toasts on success/error. Takes no arguments. * returns: A TanStack result whose / accepts a . * score: 5 ### hook useDeleteRegulationAccreditationMap * file: src/cores/gr/hooks/useRegulationAccreditationMap.ts:153 * kind: hook * core: gr * spec: GR-14-EN-01 * summary: Deletes an org-scoped regulation → accreditation-body mapping. * returns: A TanStack mutation accepting . * score: 4 ### hook useDeleteRegulationRequirementMap * file: src/cores/gr/hooks/useRegulationRequirementMap.ts:154 * kind: hook * core: gr * spec: GR-14-EN-01 * summary: Deletes an org-scoped regulation → requirement mapping. * returns: A TanStack mutation accepting . * score: 4 ### hook useDeleteRegulatorySource * file: src/cores/gr/hooks/useRegulatorySourceMutation.ts:163 * kind: hook * core: gr * spec: GR-17 * summary: Mutation that permanently deletes a regulatory source.Org- and user-scoped; removes the row, theninvalidates the source list cache and toasts on success/error. Takes noarguments. * returns: A TanStack result whose / accepts and resolves to . * score: 5 ### hook useDomainCoverage * file: src/cores/gr/wizards/tracer-pack/hooks/useDomainCoverage.ts:12 * kind: hook * core: gr * spec: (none) * summary: Computes domain (category) coverage statistics for a given accreditation.Returns the number of standards per domain and how many have verified evidence. * params: * accreditationId — The accreditation ID to compute coverage for * returns: TanStack Query result with domain coverage array * score: 4 ### hook useDuplicateYearCheck * file: src/cores/gr/wizards/coi-cycle/hooks/useDuplicateYearCheck.ts:12 * kind: hook * core: gr * spec: (none) * summary: Returns true when at least one row exists for the org + year. * score: 4 ### hook useEmployeeCEUCredits * file: src/cores/gr/hooks/useCEUCreditList.ts:114 * kind: hook * core: gr * spec: (none) * summary: Hook for managing employee ceucredits. * score: 1 ### hook useEmployeeCompletions * file: src/cores/gr/hooks/useTrainingCompletion.ts:249 * kind: hook * core: gr * spec: (none) * summary: Hook for managing employee completions. * score: 1 ### hook useEmployeeEnrollments * file: src/cores/gr/hooks/useTrainingEnrollmentList.ts:120 * kind: hook * core: gr * spec: (none) * summary: Hook for managing employee enrollments. * score: 1 ### hook useEvidenceByFinding * file: src/cores/gr/hooks/useAuditEvidence.ts:43 * kind: hook * core: gr * spec: (none) * summary: Hook for managing evidence by finding. * score: 1 ### hook useEvidenceForDomain * file: src/cores/gr/wizards/tracer-pack/hooks/useEvidenceForDomain.ts:13 * kind: hook * core: gr * spec: (none) * summary: Fetches evidence items for a specific accreditation domain (category).Used in the tracer pack wizard's evidence selection step. * params: * accreditationId — The accreditation ID * domain — The domain/category to filter evidence by * returns: TanStack Query result with evidence items array * score: 4 ### hook useExpiringContracts * file: src/cores/gr/hooks/useContractList.ts:105 * kind: hook * core: gr * spec: (none) * summary: Provides expiring contracts queries and mutation actions scoped to the current organization. * score: 4 ### hook useFindingsByAudit * file: src/cores/gr/hooks/useAuditFinding.ts:87 * kind: hook * core: gr * spec: (none) * summary: Hook for managing findings by audit. * score: 1 ### hook useGenerateRegulatoryReport * file: src/cores/gr/hooks/useIncidentRegulatoryReports.ts:213 * kind: hook * core: gr * spec: (none) * summary: Mutation: Generate a regulatory report package via edge function. * score: 4 ### hook useGenerateTracerPack * file: src/cores/gr/hooks/useAccreditationTracerPacks.ts:52 * kind: hook * core: gr * spec: (none) * summary: Generate a tracer pack for a given domain/category. * score: 4 ### hook useGrantNomRollup * file: src/cores/gr/hooks/useGrantNomRollup.ts:93 * kind: hook * core: gr * spec: (none) * summary: Reads the server-side RPC for the current organization.The RPC applies PF-96 small-cell suppression before returning rows.Powers the "SAMHSA Grants" tab of the GR-28-EN-01 Program Reporting page. * score: 4 ### hook useGRModuleSettings * file: src/cores/gr/hooks/useGRModuleSettings.ts:18 * kind: hook * core: gr * spec: (none) * summary: Hook for managing GR module settings at the organization levelUses context for organizationId - standardized pattern * score: 1 ### hook useGrPicklist * file: src/cores/gr/hooks/useGrPicklist.ts:52 * kind: hook * core: gr * spec: (none) * summary: Hook returning a GR picklist's options plus a label resolver thatgracefully handles values no longer present in the active picklist. * params: * picklistName — Dotted picklist name (e.g. ). * organizationId — Optional org override; defaults to the current org. * score: 4 ### hook useHighRisks * file: src/cores/gr/hooks/useRiskList.ts:116 * kind: hook * core: gr * spec: (none) * summary: Provides high risks queries and mutation actions scoped to the current organization. * score: 4 ### hook useIncidentDetail * file: src/cores/gr/hooks/useIncidentDetail.ts:26 * kind: hook * core: gr * spec: (none) * summary: Fetches a single incident with all related entities. * params: * incidentId — The incident UUID to fetch * returns: Query result with full incident detail * score: 4 ### hook useIncidentList * file: src/cores/gr/hooks/useIncidentList.ts:20 * kind: hook * core: gr * spec: (none) * summary: Fetches a filtered list of incidents for the current organization. * params: * filters — Optional filters (category, severity, status, site, date range, search) * returns: Query result with incident list items * score: 4 ### hook useIncidentRegulatoryReports * file: src/cores/gr/hooks/useIncidentRegulatoryReports.ts:24 * kind: hook * core: gr * spec: (none) * summary: Fetches regulatory reporting obligations for a given incident.Uses the which includes a computed column. * score: 4 ### hook useIncidentStats * file: src/cores/gr/hooks/useIncidentStats.ts:17 * kind: hook * core: gr * spec: (none) * summary: Fetches aggregate incident statistics for the current organization. * returns: Stats: total, open, critical, under\_investigation, overdue\_actions * score: 4 ### hook useInServiceCompliancePct * file: src/cores/gr/hooks/useInServiceMatrix.ts:141 * kind: hook * core: gr * spec: (none) * summary: GR-19: Weighted organization (or site) in-service compliance percentage.Returns a numeric 0–100 value (or when no employees / courses). * score: 4 ### hook useInServiceMatrix * file: src/cores/gr/hooks/useInServiceMatrix.ts:85 * kind: hook * core: gr * spec: (none) * summary: GR-19: In-Service Compliance Matrix.Calls the SECURITY DEFINER RPC and returns theemployee × course compliance grid scoped to the active organization.Results are cached for 5 minutes (,) per AGENTS.md rule 4.Re-exported from so non-GR cores never import GRdirectly. * score: 4 ### hook useInstantiateTemplate * file: src/cores/gr/hooks/useInstantiateTemplate.ts:56 * kind: hook * core: gr * spec: (none) * summary: Instantiates a procedure template into a new gr\_procedures record. * score: 4 ### hook useLatestAssessment * file: src/cores/gr/hooks/useRiskAssessment.ts:63 * kind: hook * core: gr * spec: (none) * summary: Hook for managing latest assessment. * score: 1 ### hook useLinkedAudits * file: src/cores/gr/hooks/useAccreditationAuditLink.ts:16 * kind: hook * core: gr * spec: (none) * summary: Returns audits linked to a survey, including joined audit/site context for display. * score: 4 ### hook useLinkedComplianceRequirements * file: src/cores/gr/hooks/useAccreditationComplianceLink.ts:16 * kind: hook * core: gr * spec: (none) * summary: Hook for managing linked compliance requirements. * score: 1 ### hook useLinkStandardToCompliance * file: src/cores/gr/hooks/useAccreditationComplianceLink.ts:48 * kind: hook * core: gr * spec: (none) * summary: Hook for managing link standard to compliance. * score: 1 ### hook useLinkSurveyToAudit * file: src/cores/gr/hooks/useAccreditationAuditLink.ts:49 * kind: hook * core: gr * spec: (none) * summary: Links an existing audit to a survey and invalidates related survey/audit dashboards. * score: 4 ### hook useMetricComparison * file: src/cores/gr/hooks/useMetricMeasurements.ts:307 * kind: hook * core: gr * spec: (none) * summary: Provides metric comparison queries and mutation actions scoped to the current organization. * score: 4 ### hook useMetricMeasurementMutation * file: src/cores/gr/hooks/useMetricMeasurements.ts:210 * kind: hook * core: gr * spec: (none) * summary: Provides metric measurement mutation queries and mutation actions scoped to the current organization. * score: 4 ### hook useMetricMeasurements * file: src/cores/gr/hooks/useMetricMeasurements.ts:107 * kind: hook * core: gr * spec: (none) * summary: Provides metric measurements queries and mutation actions scoped to the current organization. * score: 4 ### hook useMetricsByTrend * file: src/cores/gr/hooks/useQIMetric.ts:121 * kind: hook * core: gr * spec: (none) * summary: Provides metrics by trend queries and mutation actions scoped to the current organization. * score: 4 ### hook useMetricTrendData * file: src/cores/gr/hooks/useMetricMeasurements.ts:148 * kind: hook * core: gr * spec: (none) * summary: Provides metric trend data queries and mutation actions scoped to the current organization. * score: 4 ### hook useMilestonesByContract * file: src/cores/gr/hooks/useContractMilestones.ts:86 * kind: hook * core: gr * spec: (none) * summary: Hook for managing milestones by contract. * score: 1 ### hook useMockSurveys * file: src/cores/gr/hooks/useMockSurveys.ts:25 * kind: hook * core: gr * spec: (none) * summary: Fetches mock surveys for a given accreditation. * score: 4 ### hook useMyCEUCredits * file: src/cores/gr/hooks/useCEUCreditList.ts:60 * kind: hook * core: gr * spec: (none) * summary: Hook for managing my ceucredits. * score: 1 ### hook useMyCEUTranscript * file: src/cores/gr/hooks/useCEUTranscript.ts:100 * kind: hook * core: gr * spec: (none) * summary: Hook for managing my ceutranscript. * score: 1 ### hook useMyCoiAttestation * file: src/cores/gr/hooks/useMyCoiAttestation.ts:18 * kind: hook * core: gr * spec: (none) * summary: Fetches the current user's COI attestation for a given year. * params: * year — Attestation year (defaults to current year) * score: 4 ### hook useMyEnrollments * file: src/cores/gr/hooks/useTrainingEnrollmentList.ts:62 * kind: hook * core: gr * spec: (none) * summary: Hook for managing my enrollments. * score: 1 ### hook useMyImprovements * file: src/cores/gr/hooks/useQIImprovement.ts:165 * kind: hook * core: gr * spec: (none) * summary: Provides my improvements queries and mutation actions scoped to the current organization. * score: 4 ### hook useMyPDSACycles * file: src/cores/gr/hooks/useMyPDSACycles.ts:12 * kind: hook * core: gr * spec: (none) * summary: Fetch PDSA cycles where the current user is participating:- Created by the user, OR- Project owner is the user * score: 4 ### hook useMyProcedureExecutions * file: src/cores/gr/hooks/useProcedureExecution.ts:103 * kind: hook * core: gr * spec: (none) * summary: Fetches procedure executions executed by the current user within the current organization. * params: * filters — Optional filters to narrow results (e.g., , ). * returns: A React Query whose is an array of ; will be an empty array when there is no current user. * example: | const data, isLoading = useMyProcedureExecutions( status: 'in\_progress' ); * score: 4 ### hook useMyQIProjects * file: src/cores/gr/hooks/useMyQIProjects.ts:10 * kind: hook * core: gr * spec: (none) * summary: Fetch QI projects where the current user is the owner * score: 4 ### hook useObligationsByContract * file: src/cores/gr/hooks/useContractObligations.ts:102 * kind: hook * core: gr * spec: (none) * summary: Provides obligations by contract queries and mutation actions scoped to the current organization. * score: 4 ### hook useOverdueImprovements * file: src/cores/gr/hooks/useQIImprovement.ts:131 * kind: hook * core: gr * spec: (none) * summary: Provides overdue improvements queries and mutation actions scoped to the current organization. * score: 4 ### hook useOverdueMitigations * file: src/cores/gr/hooks/useRiskMitigation.ts:44 * kind: hook * core: gr * spec: (none) * summary: Hook for managing overdue mitigations. * score: 1 ### hook useOverdueObligations * file: src/cores/gr/hooks/useContractObligations.ts:112 * kind: hook * core: gr * spec: (none) * summary: Provides overdue obligations queries and mutation actions scoped to the current organization. * score: 4 ### hook useOverrideChangeSeverity * file: src/cores/gr/hooks/useRegulatoryChangeMutation.ts:29 * kind: hook * core: gr * spec: GR-17 * summary: Mutation that manually overrides a regulatory change event's severity.Org- and user-scoped; sets and records the overridereason and updater, then invalidates the list and detail caches and toastson success/error. Takes no arguments. * returns: A TanStack result whose / accepts . * score: 5 ### hook usePDSACycleDetail * file: src/cores/gr/hooks/usePDSACycle.ts:83 * kind: hook * core: gr * spec: (none) * summary: Provides pdsacycle detail queries and mutation actions scoped to the current organization. * score: 4 ### hook usePDSACycleList * file: src/cores/gr/hooks/usePDSACycle.ts:14 * kind: hook * core: gr * spec: (none) * summary: Provides pdsacycle list queries and mutation actions scoped to the current organization. * score: 4 ### hook usePDSACycleMutation * file: src/cores/gr/hooks/usePDSACycleMutation.ts:14 * kind: hook * core: gr * spec: (none) * summary: Hook for managing pdsacycle mutation. * score: 1 ### hook usePDSACyclesByProject * file: src/cores/gr/hooks/usePDSACycle.ts:56 * kind: hook * core: gr * spec: (none) * summary: Provides pdsacycles by project queries and mutation actions scoped to the current organization. * score: 4 ### hook usePolicyAcknowledgmentForm * file: src/cores/gr/hooks/usePolicyAcknowledgmentForm.ts:114 * kind: hook * core: gr * spec: (none) * summary: Hook that resolves the acknowledgment form for a policy. * params: * acknowledgmentFormId — (FK to ). When /, the default form is returned. * score: 4 ### hook usePolicyAcknowledgmentList * file: src/cores/gr/hooks/usePolicyAcknowledgmentList.ts:17 * kind: hook * core: gr * spec: (none) * summary: Hook for managing policy acknowledgment list. * score: 1 ### hook usePolicyAcknowledgmentMutation * file: src/cores/gr/hooks/usePolicyAcknowledgmentMutation.ts:10 * kind: hook * core: gr * spec: (none) * summary: Hook for managing policy acknowledgment mutation. * score: 1 ### hook usePolicyAssignmentList * file: src/cores/gr/hooks/usePolicyAssignment.ts:11 * kind: hook * core: gr * spec: (none) * summary: Hook for managing policy assignment list. * score: 1 ### hook usePolicyAssignmentMutation * file: src/cores/gr/hooks/usePolicyAssignment.ts:58 * kind: hook * core: gr * spec: (none) * summary: Hook for managing policy assignment mutation. * score: 1 ### hook usePolicyCategories * file: src/cores/gr/hooks/usePolicyCategories.ts:63 * kind: hook * core: gr * spec: (none) * summary: Hook returning policy category picklist data plus a label resolverthat gracefully handles values no longer present in the active picklist. * score: 4 ### hook usePolicyCoverageHeatmap * file: src/cores/gr/hooks/usePolicyCoverageHeatmap.ts:22 * kind: hook * core: gr * spec: (none) * summary: Fetches policy coverage data by joining policies with linked proceduresand their execution summaries. * returns: React Query result with PolicyCoverageRow array. * score: 4 ### hook usePolicyCreationWizard * file: src/cores/gr/wizards/policy-creation/hooks/usePolicyCreationWizard.ts:14 * kind: hook * core: gr * spec: (none) * summary: Persists a new draft policy with initial version and optional regulatory links. * score: 4 ### hook usePolicyCustomFields * file: src/cores/gr/hooks/usePolicyCustomFields.ts:24 * kind: hook * core: gr * spec: (none) * summary: Hook for fetching active custom field definitions for . * returns: TanStack Query result with . * score: 1 ### hook usePolicyDetail * file: src/cores/gr/hooks/usePolicyDetail.ts:9 * kind: hook * core: gr * spec: (none) * summary: Hook for managing policy detail. * score: 1 ### hook usePolicyList * file: src/cores/gr/hooks/usePolicyList.ts:16 * kind: hook * core: gr * spec: (none) * summary: Hook for managing policy list. * score: 1 ### hook usePolicyMutation * file: src/cores/gr/hooks/usePolicyMutation.ts:11 * kind: hook * core: gr * spec: (none) * summary: Hook for managing policy mutation. * score: 1 ### hook usePolicyNotificationMutation * file: src/cores/gr/hooks/usePolicyNotifications.ts:27 * kind: hook * core: gr * spec: (none) * summary: Hook for managing policy notification mutation. * score: 1 ### hook usePolicyStats * file: src/cores/gr/hooks/usePolicyStats.ts:9 * kind: hook * core: gr * spec: (none) * summary: Hook for managing policy stats. * score: 1 ### hook usePolicySuggestion * file: src/cores/gr/hooks/usePolicySuggestion.ts:46 * kind: hook * core: gr * spec: (none) * summary: Fetches active policies matching an optional category for policy linkage dropdowns. * params: * category — Optional category to filter policies by. * returns: React Query result with matching policies. * score: 4 ### hook usePolicyVersionMutation * file: src/cores/gr/hooks/usePolicyVersion.ts:46 * kind: hook * core: gr * spec: (none) * summary: Hook for managing policy version mutation. * score: 1 ### hook usePolicyVersions * file: src/cores/gr/hooks/usePolicyVersion.ts:11 * kind: hook * core: gr * spec: (none) * summary: Hook for managing policy versions. * score: 1 ### hook useProcedureAnalytics * file: src/cores/gr/hooks/useProcedureAnalytics.ts:26 * kind: hook * core: gr * spec: (none) * summary: Fetches procedure execution analytics via the SECURITY DEFINER RPC. * params: * filters — Optional category/search filters applied client-side. * returns: React Query result with data, KPIs, and standard loading/error states. * score: 4 ### hook useProcedureDetail * file: src/cores/gr/hooks/useProcedureDetail.ts:34 * kind: hook * core: gr * spec: (none) * summary: Fetches full procedure details (including versions, steps, profiles, policy and site relations) scoped to the current organization.Provides a React Query hook that returns the procedure detail identified by , or if the procedure is not found. The query is isolated by the current organization to ensure cache separation. * params: * procedureId — The procedure's ID to fetch, or to disable the query. * returns: The React Query result containing . * example: | const data: procedure, isLoading, error = useProcedureDetail(procedureId); * score: 4 ### hook useProcedureExecutionDetail * file: src/cores/gr/hooks/useProcedureExecution.ts:156 * kind: hook * core: gr * spec: (none) * summary: Return the procedure execution record for the given execution ID within the current organization. Fetches a single procedure execution (with related procedure, executing profile, and version) scoped to the current organization and user. If is not provided or the row is not found, the hook resolves to . * params: * executionId — The ID of the procedure execution to fetch; may be to disable the query. * returns: The matching or if not found or is not provided. * example: | const data: execution, isLoading = useProcedureExecutionDetail('execution-uuid'); * score: 4 ### hook useProcedureExecutionMutation * file: src/cores/gr/hooks/useProcedureExecution.ts:219 * kind: hook * core: gr * spec: (none) * summary: Provides mutation hooks to start, update progress, complete, and cancel GR procedure executions. Returns an object with four react-query mutations scoped to the current user and organization. Each mutation performs the corresponding database operation on , invalidates related query caches on success, and surfaces user-facing toasts for success and error states. * returns: An object with the following mutations:- : mutation to create a new procedure execution.- : mutation to update and optionally for an execution.- : mutation to mark an execution and set .- : mutation to mark an execution and optionally set a cancellation reason. * example: | const startExecution, updateStepProgress, completeExecution, cancelExecution = useProcedureExecutionMutation();// StartstartExecution.mutate( procedureId: 'proc\_123', procedureVersionId: 'v1' );// Update progressupdateStepProgress.mutate( executionId: 'exec\_123', stepProgress: step1: 'done' );// CompletecompleteExecution.mutate( executionId: 'exec\_123' );// CancelcancelExecution.mutate( executionId: 'exec\_123', reason: 'No longer needed' ); * score: 4 ### hook useProcedureExecutions * file: src/cores/gr/hooks/useProcedureExecution.ts:45 * kind: hook * core: gr * spec: (none) * summary: Fetches procedure execution list for a given procedure scoped to the current organization and user. Performs a paged query (via React Query) against and includes related , , and fields. The query is disabled when , the current user, or the current organization is not available. * params: * procedureId — The ID of the procedure to fetch executions for. If undefined, the hook returns an empty list and the query is disabled. * filters — Optional filters to apply: , , , and to restrict results by status, executor, or started\_at range. * returns: UseQueryResultProcedureExecutionListItem\[], unknown - React Query result that resolves to an array of . * example: | const data, isLoading = useProcedureExecutions('procedure-123', status: 'in\_progress' ); * score: 4 ### hook useProcedureList * file: src/cores/gr/hooks/useProcedureList.ts:36 * kind: hook * core: gr * spec: (none) * summary: Fetches a list of procedures for the current organization, applying optional filters, joined relations (owner, policy, site), and search/review\_due logic. * params: * filters — Optional filters to restrict the returned procedures (category, status, policy\_id, site\_id, owner\_id, search, review\_due). * returns: A React Query result whose is an array of (available when the query succeeds). The query is enabled only when a current user and organization are present. * example: | // Get all proceduresconst data, isLoading, error = useProcedureList(); // Filter by category and statusconst data = useProcedureList( category: 'clinical', status: 'approved' ); * score: 4 ### hook useProcedureMutation * file: src/cores/gr/hooks/useProcedureMutation.ts:43 * kind: hook * core: gr * spec: (none) * summary: Provides mutations for managing GR procedures with organization-scoped defense-in-depth filtering. Returns a set of React Query mutations that perform CRUD and workflow actions against the table while enforcing organization\_id constraints to ensure operations are scoped to the current organization. Each mutation shows success or error toast notifications and invalidates the relevant procedure queries on success. * returns: An object with the following mutation properties:- — mutation to create a procedure.- — mutation to update a procedure by id.- — mutation to delete a procedure by id.- — mutation to approve a procedure by id.- — mutation to set a procedure's status to review by id.- — mutation to create a version snapshot for a procedure. * example: | const createProcedure, updateProcedure, deleteProcedure = useProcedureMutation();// CreatecreateProcedure.mutate( title: 'New SOP', category: 'clinical' );// UpdateupdateProcedure.mutate( id: 'uuid', data: title: 'Updated Title' );// DeletedeleteProcedure.mutate( id: 'uuid' ); * score: 4 ### hook useProcedureStepAnalytics * file: src/cores/gr/hooks/useProcedureStepAnalytics.ts:22 * kind: hook * core: gr * spec: (none) * summary: Fetches step-level execution analytics for a single procedure. * params: * procedureId — The procedure to load step analytics for. Hook is disabled when undefined. * returns: React Query result with step rows ordered by . * score: 4 ### hook useProcedureTemplateDetail * file: src/cores/gr/hooks/useProcedureTemplateDetail.ts:97 * kind: hook * core: gr * spec: (none) * summary: Fetches a single procedure template by ID. * params: * templateId — The template ID, or undefined to disable. * returns: React Query result with template detail or null. * score: 4 ### hook useProcedureTemplateList * file: src/cores/gr/hooks/useProcedureTemplateList.ts:125 * kind: hook * core: gr * spec: (none) * summary: Fetches procedure templates visible to the current user (global + org-specific). * params: * filters — Optional filters for search, category, regulatory body, and tags. * returns: React Query result with template list data. * score: 4 ### hook useProcedureTemplateMutation * file: src/cores/gr/hooks/useProcedureTemplateMutation.ts:80 * kind: hook * core: gr * spec: (none) * summary: Provides create, update, and deactivate mutations for procedure templates. * score: 4 ### hook useQIDashboard * file: src/cores/gr/hooks/useQIDashboard.ts:9 * kind: hook * core: gr * spec: (none) * summary: Hook for managing qidashboard. * score: 1 ### hook useQIEnabled * file: src/cores/gr/hooks/useQIEnabled.ts:6 * kind: hook * core: gr * spec: (none) * summary: Check if QI (Quality Improvement) feature is enabled for the current organization * score: 4 ### hook useQIImprovementList * file: src/cores/gr/hooks/useQIImprovement.ts:15 * kind: hook * core: gr * spec: (none) * summary: Provides qiimprovement list queries and mutation actions scoped to the current organization. * score: 4 ### hook useQIImprovementMutation * file: src/cores/gr/hooks/useQIImprovementMutation.ts:11 * kind: hook * core: gr * spec: (none) * summary: Hook for managing qiimprovement mutation. * score: 1 ### hook useQIImprovementsByPDSACycle * file: src/cores/gr/hooks/useQIImprovement.ts:103 * kind: hook * core: gr * spec: (none) * summary: Provides qiimprovements by pdsacycle queries and mutation actions scoped to the current organization. * score: 4 ### hook useQIImprovementsByProject * file: src/cores/gr/hooks/useQIImprovement.ts:74 * kind: hook * core: gr * spec: (none) * summary: Provides qiimprovements by project queries and mutation actions scoped to the current organization. * score: 4 ### hook useQIMetricList * file: src/cores/gr/hooks/useQIMetric.ts:14 * kind: hook * core: gr * spec: (none) * summary: Provides qimetric list queries and mutation actions scoped to the current organization. * score: 4 ### hook useQIMetricMutation * file: src/cores/gr/hooks/useQIMetricMutation.ts:11 * kind: hook * core: gr * spec: (none) * summary: Hook for managing qimetric mutation. * score: 1 ### hook useQIMetricsByProject * file: src/cores/gr/hooks/useQIMetric.ts:59 * kind: hook * core: gr * spec: (none) * summary: Provides qimetrics by project queries and mutation actions scoped to the current organization. * score: 4 ### hook useQINotifications * file: src/cores/gr/hooks/useQINotifications.ts:23 * kind: hook * core: gr * spec: (none) * summary: Hook for managing qinotifications. * score: 1 ### hook useQIProjectDetail * file: src/cores/gr/hooks/useQIProjectDetail.ts:9 * kind: hook * core: gr * spec: (none) * summary: Hook for managing qiproject detail. * score: 1 ### hook useQIProjectList * file: src/cores/gr/hooks/useQIProjectList.ts:16 * kind: hook * core: gr * spec: (none) * summary: Hook for managing qiproject list. * score: 1 ### hook useQIProjectMutation * file: src/cores/gr/hooks/useQIProjectMutation.ts:11 * kind: hook * core: gr * spec: (none) * summary: Hook for managing qiproject mutation. * score: 1 ### hook useQIProjectsByCategory * file: src/cores/gr/hooks/useQIProjectList.ts:116 * kind: hook * core: gr * spec: (none) * summary: Hook for managing qiprojects by category. * score: 1 ### hook useQIStats * file: src/cores/gr/hooks/useQIStats.ts:43 * kind: hook * core: gr * spec: (none) * summary: Hook for managing qistats. * score: 1 ### hook useQITemplateDetail * file: src/cores/gr/hooks/useQITemplates.ts:254 * kind: hook * core: gr * spec: (none) * summary: Provides qitemplate detail queries and mutation actions scoped to the current organization. * score: 4 ### hook useQITemplateList * file: src/cores/gr/hooks/useQITemplates.ts:203 * kind: hook * core: gr * spec: (none) * summary: Provides qitemplate list queries and mutation actions scoped to the current organization. * score: 4 ### hook useQITemplateMutation * file: src/cores/gr/hooks/useQITemplates.ts:295 * kind: hook * core: gr * spec: (none) * summary: Provides qitemplate mutation queries and mutation actions scoped to the current organization. * score: 4 ### hook useRecordKbRefreshAttempt * file: src/cores/gr/hooks/useRegulatoryImpactMutation.ts:134 * kind: hook * core: gr * spec: (none) * summary: Records a manual KB refresh attempt for a impact.Appends to JSONB and updates the status fields.The actual PF-61 ingestion call is deferred until the upstream contractis finalized; this hook captures the operator-initiated attempt log sothe UI can show retry history. * score: 4 ### hook useRegulationAccreditationMapList * file: src/cores/gr/hooks/useRegulationAccreditationMap.ts:35 * kind: hook * core: gr * spec: GR-14-EN-01 * summary: Lists regulation → accreditation-body mappings visible to the currentorganization (org overrides + platform defaults, platform last). * returns: A TanStack Query result whose is a . * score: 4 ### hook useRegulationRequirementMapList * file: src/cores/gr/hooks/useRegulationRequirementMap.ts:29 * kind: hook * core: gr * spec: GR-14-EN-01 * summary: Lists regulation → requirement mappings visible to the current organization:org-scoped overrides plus platform defaults (organization\_id NULL), withplatform defaults ordered last and the joined requirement title surfaced. * returns: A TanStack Query result whose is a . * score: 4 ### hook useRegulatoryBodyList * file: src/cores/gr/hooks/useRegulatoryBody.ts:17 * kind: hook * core: gr * spec: (none) * summary: Hook for managing regulatory body list. * score: 1 ### hook useRegulatoryBodyMutation * file: src/cores/gr/hooks/useRegulatoryBody.ts:60 * kind: hook * core: gr * spec: (none) * summary: Hook for managing regulatory body mutation. * score: 1 ### hook useRegulatoryChangeEvent * file: src/cores/gr/hooks/useRegulatoryChangeEvents.ts:83 * kind: hook * core: gr * spec: GR-17 * summary: Loads a single regulatory change event with its full source, impacts, andsnapshot history.Wraps ; the query is org-scoped and disabled until both anorganization and are present. Fetches the event, its impacts, and itssnapshots in parallel and composes them into one detail object. Resolves to when the id is missing or no matching event exists. Uses a 5-minute and 10-minute . * params: * id — The regulatory change event id to load, or undefined to disable the query. * returns: A TanStack Query result whose is a (with and ) or , plus , , and the usual query state. * score: 5 ### hook useRegulatoryChangeEvents * file: src/cores/gr/hooks/useRegulatoryChangeEvents.ts:33 * kind: hook * core: gr * spec: GR-17 * summary: Lists regulatory change events for the current organization, newest detectedfirst, with each event's source summary joined.Wraps ; the query is org-scoped and disabled until an organizationis selected. Optional narrow by source, status, severity, detecteddate range, and a title/summary text search. Uses a 5-minute and10-minute . * params: * filters — Optional filters applied server-side to the change-event query. * returns: A TanStack Query result whose is a array, plus , , and the usual query state. * score: 5 ### hook useRegulatoryComplianceStats * file: src/cores/gr/hooks/useRegulatoryComplianceStats.ts:15 * kind: hook * core: gr * spec: (none) * summary: Fetches org-wide regulatory reporting obligation statistics. * score: 4 ### hook useRegulatoryReportById * file: src/cores/gr/hooks/useIncidentRegulatoryReports.ts:61 * kind: hook * core: gr * spec: (none) * summary: GR-14-EN-01: Loads a single regulatory report by its id (org-scoped).Backs the click-through target for the on auto-created compliance evidence: the badge links to theoriginating report, and this hook resolves that report (incl. its parent) so the detail page can render it and link back to the incident. * params: * reportId — , or undefined to disable. * returns: A TanStack Query result whose is a or . * score: 4 ### hook useRegulatoryRequirementDetail * file: src/cores/gr/hooks/useRegulatoryRequirement.ts:102 * kind: hook * core: gr * spec: (none) * summary: Hook for managing regulatory requirement detail. * score: 1 ### hook useRegulatoryRequirementList * file: src/cores/gr/hooks/useRegulatoryRequirement.ts:16 * kind: hook * core: gr * spec: (none) * summary: Hook for managing regulatory requirement list. * score: 1 ### hook useRegulatoryRequirementMutation * file: src/cores/gr/hooks/useRegulatoryRequirementMutation.ts:11 * kind: hook * core: gr * spec: (none) * summary: Hook for managing regulatory requirement mutation. * score: 1 ### hook useRegulatorySource * file: src/cores/gr/hooks/useRegulatorySources.ts:72 * kind: hook * core: gr * spec: GR-17 * summary: Loads a single regulatory source by id for the current organization.Wraps ; the query is org-scoped and disabled until both anorganization and are present, and resolves to when the id ismissing or no matching source exists. Uses a 5-minute and10-minute . * params: * id — The regulatory source id to load, or undefined to disable the query. * returns: A TanStack Query result whose is a or , plus , , and the usual query state. * score: 5 ### hook useRegulatorySourceList * file: src/cores/gr/hooks/useRegulatorySources.ts:27 * kind: hook * core: gr * spec: GR-17 * summary: Lists monitored regulatory sources for the current organization, ordered byname.Wraps ; the query is org-scoped and disabled until an organizationis selected. Optional narrow by active flag, source type,jurisdiction, and a name/URL text search. Uses a 5-minute and10-minute . * params: * filters — Optional filters applied server-side to the source query. * returns: A TanStack Query result whose is a array, plus , , and the usual query state. * score: 5 ### hook useRemediationSummary * file: src/cores/gr/hooks/useComplianceDashboard.ts:191 * kind: hook * core: gr * spec: (none) * summary: Hook for managing remediation summary. * score: 1 ### hook useRenewalTrackingReport * file: src/cores/gr/hooks/useAccreditationReports.ts:219 * kind: hook * core: gr * spec: (none) * summary: Hook for managing renewal tracking report. * score: 1 ### hook useResolveIncident * file: src/cores/gr/hooks/useIncidentMutation.ts:140 * kind: hook * core: gr * spec: (none) * summary: Resolves an incident with a resolution summary. * score: 4 ### hook useReviewRegulatoryChange * file: src/cores/gr/hooks/useRegulatoryChangeMutation.ts:78 * kind: hook * core: gr * spec: GR-17 * summary: Mutation that records a review decision (approve or dismiss) on a regulatorychange event.Org- and user-scoped; sets the new status, optional review notes, andreviewer audit fields, then invalidates the list and detail caches andtoasts the outcome. Takes no arguments. * returns: A TanStack result whose / accepts . * score: 5 ### hook useRiskAssessmentMutation * file: src/cores/gr/hooks/useRiskAssessment.ts:96 * kind: hook * core: gr * spec: (none) * summary: Hook for managing risk assessment mutation. * score: 1 ### hook useRiskAssessments * file: src/cores/gr/hooks/useRiskAssessment.ts:32 * kind: hook * core: gr * spec: (none) * summary: Hook for managing risk assessments. * score: 1 ### hook useRiskAssessmentWizard * file: src/cores/gr/wizards/risk-assessment/useRiskAssessmentWizard.ts:93 * kind: hook * core: gr * spec: (none) * summary: Orchestrates the GR Risk Assessment wizard (GR-UX-04). * score: 4 ### hook useRiskDashboard * file: src/cores/gr/hooks/useRiskDashboard.ts:14 * kind: hook * core: gr * spec: (none) * summary: Hook for managing risk dashboard. * score: 1 ### hook useRiskDetail * file: src/cores/gr/hooks/useRiskDetail.ts:9 * kind: hook * core: gr * spec: (none) * summary: Hook for managing risk detail. * score: 1 ### hook useRiskHeatmap * file: src/cores/gr/hooks/useRiskDashboard.ts:116 * kind: hook * core: gr * spec: (none) * summary: Hook for managing risk heatmap. * score: 1 ### hook useRiskLinkMutation * file: src/cores/gr/hooks/useRiskLink.ts:44 * kind: hook * core: gr * spec: (none) * summary: Hook for managing risk link mutation. * score: 1 ### hook useRiskLinks * file: src/cores/gr/hooks/useRiskLink.ts:11 * kind: hook * core: gr * spec: (none) * summary: Hook for managing risk links. * score: 1 ### hook useRiskList * file: src/cores/gr/hooks/useRiskList.ts:16 * kind: hook * core: gr * spec: (none) * summary: Provides risk list queries and mutation actions scoped to the current organization. * score: 4 ### hook useRiskMitigationMutation * file: src/cores/gr/hooks/useRiskMitigation.ts:77 * kind: hook * core: gr * spec: (none) * summary: Hook for managing risk mitigation mutation. * score: 1 ### hook useRiskMitigations * file: src/cores/gr/hooks/useRiskMitigation.ts:12 * kind: hook * core: gr * spec: (none) * summary: Hook for managing risk mitigations. * score: 1 ### hook useRiskMutation * file: src/cores/gr/hooks/useRiskMutation.ts:11 * kind: hook * core: gr * spec: (none) * summary: Hook for managing risk mutation. * score: 1 ### hook useRiskNotifications * file: src/cores/gr/hooks/useRiskNotifications.ts:27 * kind: hook * core: gr * spec: (none) * summary: Hook for managing risk notifications. * score: 1 ### hook useRisksByCategory * file: src/cores/gr/hooks/useRiskList.ts:148 * kind: hook * core: gr * spec: (none) * summary: Provides risks by category queries and mutation actions scoped to the current organization. * score: 4 ### hook useRisksByFinding * file: src/cores/gr/hooks/useLinkedRisks.ts:35 * kind: hook * core: gr * spec: (none) * summary: Hook for managing risks by finding. * score: 1 ### hook useRisksByPolicy * file: src/cores/gr/hooks/useLinkedRisks.ts:103 * kind: hook * core: gr * spec: (none) * summary: Hook for managing risks by policy. * score: 1 ### hook useRisksByRequirement * file: src/cores/gr/hooks/useLinkedRisks.ts:69 * kind: hook * core: gr * spec: (none) * summary: Hook for managing risks by requirement. * score: 1 ### hook useRiskStats * file: src/cores/gr/hooks/useRiskStats.ts:14 * kind: hook * core: gr * spec: (none) * summary: Hook for managing risk stats. * score: 1 ### hook useStandardComplianceReport * file: src/cores/gr/hooks/useAccreditationReports.ts:90 * kind: hook * core: gr * spec: (none) * summary: Hook for managing standard compliance report. * score: 1 ### hook useStartChangeReview * file: src/cores/gr/hooks/useRegulatoryChangeMutation.ts:127 * kind: hook * core: gr * spec: GR-17 * summary: Mutation that moves a regulatory change event into the status.Org- and user-scoped; updates the status and updater, then invalidates thelist and detail caches and toasts on error. Takes no arguments. * returns: A TanStack result whose / accepts . * score: 5 ### hook useStateComplianceChat * file: src/cores/gr/hooks/useStateComplianceChat.ts:37 * kind: hook * core: gr * spec: (none) * summary: Returns a chat interface for state-aware GR compliance Q\&A.The resolved jurisdiction profile is attached to under the key. Skills can read this in their system prompttemplate. While the profile is loading, the chat still mounts but thejurisdiction context is — the skill should fall back to afederal-baseline-only response in that case. * score: 4 ### hook useSubmitRegulatoryReport * file: src/cores/gr/hooks/useIncidentRegulatoryReports.ts:89 * kind: hook * core: gr * spec: (none) * summary: Mutation: Mark a regulatory report as submitted. * score: 4 ### hook useSurveyPreparationReport * file: src/cores/gr/hooks/useAccreditationReports.ts:150 * kind: hook * core: gr * spec: (none) * summary: Hook for managing survey preparation report. * score: 1 ### hook useToggleRegulatorySource * file: src/cores/gr/hooks/useRegulatorySourceMutation.ts:120 * kind: hook * core: gr * spec: GR-17 * summary: Mutation that pauses or resumes polling of a regulatory source.Org- and user-scoped; flips the source's flag, then invalidatesthe source list and detail caches and toasts "resumed"/"paused" accordingly.Takes no arguments. * returns: A TanStack result whose / accepts . * score: 5 ### hook useTrainingCompletion * file: src/cores/gr/hooks/useTrainingCompletion.ts:21 * kind: hook * core: gr * spec: (none) * summary: Hook for managing training completion. * score: 1 ### hook useTrainingCourseDetail * file: src/cores/gr/hooks/useTrainingCourseList.ts:82 * kind: hook * core: gr * spec: (none) * summary: Hook for managing training course detail. * score: 1 ### hook useTrainingCourseList * file: src/cores/gr/hooks/useTrainingCourseList.ts:16 * kind: hook * core: gr * spec: (none) * summary: Hook for managing training course list. * score: 1 ### hook useTrainingCourseMutation * file: src/cores/gr/hooks/useTrainingCourseMutation.ts:15 * kind: hook * core: gr * spec: (none) * summary: Hook for managing training course mutation. * score: 1 ### hook useTrainingCourseWizard * file: src/cores/gr/wizards/training-course/useTrainingCourseWizard.ts:20 * kind: hook * core: gr * spec: (none) * summary: Manages wizard navigation, validation, and draft persistence. * score: 4 ### hook useTrainingEnrollmentList * file: src/cores/gr/hooks/useTrainingEnrollmentList.ts:17 * kind: hook * core: gr * spec: (none) * summary: Hook for managing training enrollment list. * score: 1 ### hook useTrainingEnrollmentMutation * file: src/cores/gr/hooks/useTrainingEnrollmentMutation.ts:15 * kind: hook * core: gr * spec: (none) * summary: Hook for managing training enrollment mutation. * score: 1 ### hook useTrainingNotificationMutation * file: src/cores/gr/hooks/useTrainingNotifications.ts:27 * kind: hook * core: gr * spec: (none) * summary: Hook for managing training notification mutation. * score: 1 ### hook useTrainingStats * file: src/cores/gr/hooks/useTrainingStats.ts:42 * kind: hook * core: gr * spec: (none) * summary: Hook for managing training stats. * score: 1 ### hook useUnlinkStandardFromCompliance * file: src/cores/gr/hooks/useAccreditationComplianceLink.ts:98 * kind: hook * core: gr * spec: (none) * summary: Hook for managing unlink standard from compliance. * score: 1 ### hook useUnlinkSurveyFromAudit * file: src/cores/gr/hooks/useAccreditationAuditLink.ts:93 * kind: hook * core: gr * spec: (none) * summary: Removes an audit-to-survey link and refreshes affected survey/audit query data. * score: 4 ### hook useUpcomingAudits * file: src/cores/gr/hooks/useAuditList.ts:91 * kind: hook * core: gr * spec: (none) * summary: Hook for managing upcoming audits. * score: 1 ### hook useUpcomingDeadlines * file: src/cores/gr/hooks/useComplianceDashboard.ts:148 * kind: hook * core: gr * spec: (none) * summary: Hook for managing upcoming deadlines. * score: 1 ### hook useUpcomingRenewals * file: src/cores/gr/hooks/useAccreditationList.ts:82 * kind: hook * core: gr * spec: (none) * summary: Provides upcoming renewals queries and mutation actions scoped to the current organization. * score: 4 ### hook useUpcomingSurveys * file: src/cores/gr/hooks/useAccreditationSurvey.ts:108 * kind: hook * core: gr * spec: (none) * summary: Provides upcoming surveys queries and mutation actions scoped to the current organization. * score: 4 ### hook useUpdateComplianceThresholds * file: src/cores/gr/hooks/useComplianceExecutive.ts:126 * kind: hook * core: gr * spec: (none) * summary: Updates the org's banding thresholds and invalidates heatmap/threshold caches. * score: 4 ### hook useUpdateCorrectiveAction * file: src/cores/gr/hooks/useIncidentMutation.ts:373 * kind: hook * core: gr * spec: (none) * summary: Updates a corrective action (status, completion). * score: 4 ### hook useUpdateImpact * file: src/cores/gr/hooks/useRegulatoryImpactMutation.ts:87 * kind: hook * core: gr * spec: GR-17 * summary: Mutation that updates a regulatory change impact's assignment, status, ornotes.Org- and user-scoped; patches the supplied fields plus the updater, theninvalidates the parent event's detail cache and toasts on success/error.Takes no arguments. * returns: A TanStack result whose / accepts . * score: 5 ### hook useUpdateIncident * file: src/cores/gr/hooks/useIncidentMutation.ts:67 * kind: hook * core: gr * spec: (none) * summary: Updates an existing incident. * score: 1 ### hook useUpdateRegulationAccreditationMap * file: src/cores/gr/hooks/useRegulationAccreditationMap.ts:114 * kind: hook * core: gr * spec: GR-14-EN-01 * summary: Updates an org-scoped regulation → accreditation-body mapping. * returns: A TanStack mutation accepting . * score: 4 ### hook useUpdateRegulationRequirementMap * file: src/cores/gr/hooks/useRegulationRequirementMap.ts:115 * kind: hook * core: gr * spec: GR-14-EN-01 * summary: Updates an org-scoped regulation → requirement mapping. * returns: A TanStack mutation accepting . * score: 4 ### hook useUpdateRegulatorySource * file: src/cores/gr/hooks/useRegulatorySourceMutation.ts:75 * kind: hook * core: gr * spec: GR-17 * summary: Mutation that updates an existing regulatory source's configuration.Org- and user-scoped; applies the supplied partial fields (defensivelydropping any client-sent ) plus the updater, theninvalidates the source list and detail caches and toasts on success/error.Takes no arguments. * returns: A TanStack result whose / accepts . * score: 5 ### hook useWhistleblowerMutations * file: src/cores/gr/hooks/useWhistleblowerMutations.ts:31 * kind: hook * core: gr * spec: GR-15 * summary: Provides the status-transition mutation for whistleblower reports.Org- and user-scoped; updates a report's status (and optional resolutionnotes / assignee), writes a fire-and-forget entry, surfacessuccess and sanitized-error toasts, and invalidates the whistleblower-reportsquery cache on success. Takes no arguments. * returns: An object with the TanStack mutation, whose / accepts . * score: 5 ### hook useWhistleblowerReports * file: src/cores/gr/hooks/useWhistleblowerReports.ts:65 * kind: hook * core: gr * spec: GR-15 * summary: Lists whistleblower reports for the current organization (compliance-officerview), newest first.Wraps ; the query is org- and user-scoped, gated additionally on, and selects an explicit safe column subset. Records afire-and-forget access entry when results are returned. Usesa 5-minute and 10-minute . * params: * hasPermission — When false, disables the query (the caller's permission check); defaults to true. * returns: A TanStack Query result whose is a array, plus , , and the usual query state. * score: 5 ## Components ### component AccreditationBodyBadge * file: src/cores/gr/components/AccreditationBodyBadge.tsx:39 * kind: component * core: gr * spec: (none) * summary: Renders a styled badge for an accreditation body. * score: 2 ### component AccreditationCard * file: src/cores/gr/components/AccreditationCard.tsx:22 * kind: component * core: gr * spec: (none) * summary: Utility for accreditation card. * score: 1 ### component AccreditationDashboard * file: src/cores/gr/pages/AccreditationDashboard.tsx:39 * kind: component * core: gr * spec: (none) * summary: Utility for accreditation dashboard. * score: 1 ### component AccreditationDetail * file: src/cores/gr/pages/AccreditationDetail.tsx:47 * kind: component * core: gr * spec: (none) * summary: Utility for accreditation detail. * score: 1 ### component AccreditationFormDialog * file: src/cores/gr/components/AccreditationFormDialog.tsx:47 * kind: component * core: gr * spec: (none) * summary: Utility for accreditation form dialog. * score: 1 ### component AccreditationList * file: src/cores/gr/pages/AccreditationList.tsx:26 * kind: component * core: gr * spec: (none) * summary: Utility for accreditation list. * score: 1 ### component AccreditationReports * file: src/cores/gr/pages/AccreditationReports.tsx:23 * kind: component * core: gr * spec: (none) * summary: Utility for accreditation reports. * score: 1 ### component AccreditationStandardCard * file: src/cores/gr/components/AccreditationStandardCard.tsx:25 * kind: component * core: gr * spec: (none) * summary: Utility for accreditation standard card. * score: 1 ### component AccreditationStandardFormDialog * file: src/cores/gr/components/AccreditationStandardFormDialog.tsx:40 * kind: component * core: gr * spec: (none) * summary: Utility for accreditation standard form dialog. * score: 1 ### component AccreditationStatusBadge * file: src/cores/gr/components/AccreditationStatusBadge.tsx:27 * kind: component * core: gr * spec: (none) * summary: Utility for accreditation status badge. * score: 1 ### component AccreditationSurveyCard * file: src/cores/gr/components/AccreditationSurveyCard.tsx:25 * kind: component * core: gr * spec: (none) * summary: Utility for accreditation survey card. * score: 1 ### component AccreditationSurveyFormDialog * file: src/cores/gr/components/AccreditationSurveyFormDialog.tsx:41 * kind: component * core: gr * spec: (none) * summary: Utility for accreditation survey form dialog. * score: 1 ### component AcknowledgeRegulatoryReportDialog * file: src/cores/gr/components/incidents/AcknowledgeRegulatoryReportDialog.tsx:32 * kind: component * core: gr * spec: (none) * summary: Dialog for recording agency acknowledgment of a submitted report. * score: 2 ### component AddCorrectiveActionDialog * file: src/cores/gr/components/incidents/AddCorrectiveActionDialog.tsx:33 * kind: component * core: gr * spec: (none) * summary: Dialog for creating a corrective action. * score: 2 ### component AddFindingDialog * file: src/cores/gr/components/incidents/AddFindingDialog.tsx:33 * kind: component * core: gr * spec: (none) * summary: Dialog for adding a finding to an investigation. * score: 2 ### component AIAuditPrep * file: src/cores/gr/pages/AIAuditPrep.tsx:27 * kind: component * core: gr * spec: (none) * summary: Utility for aiaudit prep. * score: 1 ### component AIAuditPrepSkeleton * file: src/cores/gr/components/ai/skeletons/AIAuditPrepSkeleton.tsx:11 * kind: component * core: gr * spec: (none) * summary: Utility for aiaudit prep skeleton. * score: 1 ### component AIComplianceChatPanel * file: src/cores/gr/components/ai/AIComplianceChatPanel.tsx:45 * kind: component * core: gr * spec: (none) * summary: Utility for aicompliance chat panel. * score: 1 ### component AIComplianceQuickActions * file: src/cores/gr/components/ai/AIComplianceQuickActions.tsx:44 * kind: component * core: gr * spec: (none) * summary: Utility for aicompliance quick actions. * score: 1 ### component AIGapAnalysis * file: src/cores/gr/pages/AIGapAnalysis.tsx:26 * kind: component * core: gr * spec: (none) * summary: Utility for aigap analysis. * score: 1 ### component AIGapAnalysisSkeleton * file: src/cores/gr/components/ai/skeletons/AIGapAnalysisSkeleton.tsx:11 * kind: component * core: gr * spec: (none) * summary: Utility for aigap analysis skeleton. * score: 1 ### component AIProcedureGenerator * file: src/cores/gr/components/procedures/AIProcedureGenerator.tsx:78 * kind: component * core: gr * spec: (none) * summary: Renders a modal UI that generates a procedure from a selected policy using AI and lets the user apply the generated procedure.Provides a dialog-driven workflow: select a policy, optionally add context, request AI generation, review the generated procedure summary (title, category, steps, confidence, notes), and apply the result to the caller via the callback. While AI enablement is being checked the component shows a loading trigger; if AI is disabled the component renders nothing. * params: * props — Component props. - onGenerated: Callback invoked with the generated procedure payload when the user applies a generated procedure. The payload includes , , , , , optional , and optional . - trigger: Optional custom trigger element to open the generator dialog. If omitted, a default "Generate with AI" button is rendered. - disabled: When true, disables the trigger UI so the dialog cannot be opened. * example: | AIProcedureGenerator onGenerated=(procedure) = // create or update a procedure with the returned data /Accessibility:- Uses a modal dialog pattern (focus is managed by the Dialog component). Ensure the provided is keyboard-accessible if supplied.- Form controls include labels and ARIA-friendly structure via the underlying UI primitives. * score: 4 ### component AiQuestionSimulatorSheet * file: src/cores/gr/components/accreditation/tracer/AiQuestionSimulatorSheet.tsx:70 * kind: component * core: gr * spec: (none) * summary: AI-powered surveyor question simulator for accreditation readiness. * score: 2 ### component AIRiskAssessment * file: src/cores/gr/pages/AIRiskAssessment.tsx:26 * kind: component * core: gr * spec: (none) * summary: Utility for airisk assessment. * score: 1 ### component AIRiskAssessmentSkeleton * file: src/cores/gr/components/ai/skeletons/AIRiskAssessmentSkeleton.tsx:11 * kind: component * core: gr * spec: (none) * summary: Utility for airisk assessment skeleton. * score: 1 ### component AISuggestionsDashboard * file: src/cores/gr/pages/AISuggestionsDashboard.tsx:31 * kind: component * core: gr * spec: (none) * summary: Utility for aisuggestions dashboard. * score: 1 ### component AISuggestionsDashboardSkeleton * file: src/cores/gr/components/ai/skeletons/AISuggestionsDashboardSkeleton.tsx:11 * kind: component * core: gr * spec: (none) * summary: Utility for aisuggestions dashboard skeleton. * score: 1 ### component AISuggestionsList * file: src/cores/gr/components/ai/AISuggestionsList.tsx:33 * kind: component * core: gr * spec: (none) * summary: Utility for aisuggestions list. * score: 1 ### component AmendmentFormDialog * file: src/cores/gr/components/contracts/AmendmentFormDialog.tsx:42 * kind: component * core: gr * spec: (none) * summary: Utility for amendment form dialog. * score: 1 ### component AmendmentList * file: src/cores/gr/components/contracts/AmendmentList.tsx:24 * kind: component * core: gr * spec: (none) * summary: Utility for amendment list. * score: 1 ### component AuditCard * file: src/cores/gr/components/AuditCard.tsx:22 * kind: component * core: gr * spec: (none) * summary: Utility for audit card. * score: 1 ### component AuditChecklistStep * file: src/cores/gr/wizards/audit-setup/steps/AuditChecklistStep.tsx:32 * kind: component * core: gr * spec: (none) * summary: Audit checklist preparation — seeds from regulatory requirements, allows add/remove/edit. * score: 2 ### component AuditCorrectiveActionFormDialog * file: src/cores/gr/components/AuditCorrectiveActionFormDialog.tsx:38 * kind: component * core: gr * spec: (none) * summary: Utility for audit corrective action form dialog. * score: 1 ### component AuditDetail * file: src/cores/gr/pages/AuditDetail.tsx:38 * kind: component * core: gr * spec: (none) * summary: Utility for audit detail. * score: 1 ### component AuditFindingFormDialog * file: src/cores/gr/components/AuditFindingFormDialog.tsx:41 * kind: component * core: gr * spec: (none) * summary: Utility for audit finding form dialog. * score: 1 ### component AuditFindingList * file: src/cores/gr/pages/AuditFindingList.tsx:22 * kind: component * core: gr * spec: (none) * summary: Utility for audit finding list. * score: 1 ### component AuditFindingStatusBadge * file: src/cores/gr/components/AuditFindingStatusBadge.tsx:27 * kind: component * core: gr * spec: (none) * summary: Utility for audit finding status badge. * score: 1 ### component AuditFormDialog * file: src/cores/gr/components/AuditFormDialog.tsx:41 * kind: component * core: gr * spec: (none) * summary: Utility for audit form dialog. * score: 1 ### component AuditLinkDialog * file: src/cores/gr/components/AuditLinkDialog.tsx:33 * kind: component * core: gr * spec: (none) * summary: Utility for audit link dialog. * score: 1 ### component AuditList * file: src/cores/gr/pages/AuditList.tsx:27 * kind: component * core: gr * spec: (none) * summary: Utility for audit list. * score: 1 ### component AuditReadiness * file: src/cores/gr/pages/AuditReadiness.tsx:24 * kind: component * core: gr * spec: (none) * summary: Utility for audit readiness. * score: 1 ### component AuditSetupWizardPage * file: src/cores/gr/wizards/audit-setup/AuditSetupWizardPage.tsx:22 * kind: component * core: gr * spec: (none) * summary: Full-page GR Audit Setup wizard powered by PF-41 ModuleWizardRenderer.Creates gr\_audits, gr\_audit\_team\_assignments, and gr\_audit\_checklists. * score: 2 ### component AuditSeverityBadge * file: src/cores/gr/components/AuditSeverityBadge.tsx:39 * kind: component * core: gr * spec: (none) * summary: Utility for audit severity badge. * score: 1 ### component AuditStatusBadge * file: src/cores/gr/components/AuditStatusBadge.tsx:27 * kind: component * core: gr * spec: (none) * summary: Utility for audit status badge. * score: 1 ### component AuditTeamStep * file: src/cores/gr/wizards/audit-setup/steps/AuditTeamStep.tsx:33 * kind: component * core: gr * spec: (none) * summary: Audit team assignment step — lead auditor required, optional members with roles. * score: 2 ### component AuditTypeBadge * file: src/cores/gr/components/AuditTypeBadge.tsx:28 * kind: component * core: gr * spec: (none) * summary: Utility for audit type badge. * score: 1 ### component BenchmarkingOptInDialog * file: src/cores/gr/components/analytics/BenchmarkingOptInDialog.tsx:28 * kind: component * core: gr * spec: (none) * summary: Modal dialog presenting the benchmarking policy and capturing typed consent. * score: 2 ### component BenchmarkingPanel * file: src/cores/gr/components/analytics/BenchmarkingPanel.tsx:28 * kind: component * core: gr * spec: (none) * summary: Panel rendering benchmarking opt-in state and cross-org aggregate bands. * score: 2 ### component BoardMinutesFormDialog * file: src/cores/gr/components/governance/BoardMinutesFormDialog.tsx:37 * kind: component * core: gr * spec: GR-15 * summary: Modal dialog for creating a board meeting minutes record.Captures the meeting title, date, type (regular, special, annual, oremergency), and optional content, then persists it via. Resets its fields and closes on success. * params: * props — Component props. - open: Whether the dialog is open. - onOpenChange: Callback invoked with the new open state. * score: 5 ### component BoardMinutesTab * file: src/cores/gr/components/governance/BoardMinutesTab.tsx:38 * kind: component * core: gr * spec: GR-15 * summary: Tab listing board meeting minutes with create and approval actions.Loads minutes via , renders them in a status-badgedtable, and lets permitted users open to add arecord or approve a draft via . Shows skeletonswhile loading and a sanitized error state on failure. Takes no props. * score: 5 ### component BoardResolutionFormDialog * file: src/cores/gr/components/governance/BoardResolutionFormDialog.tsx:37 * kind: component * core: gr * spec: GR-15 * summary: Modal dialog for recording a board resolution and its vote tally.Captures the resolution title, optional description, outcome (pending,passed, failed, or tabled), and for/against/abstain vote counts, thenpersists it via . Closes on success. * params: * props — Component props. - open: Whether the dialog is open. - onOpenChange: Callback invoked with the new open state. * score: 5 ### component BoardResolutionsTab * file: src/cores/gr/components/governance/BoardResolutionsTab.tsx:38 * kind: component * core: gr * spec: GR-15 * summary: Tab listing board resolutions with their vote outcomes.Loads resolutions via , renders them in anoutcome-badged table, and lets permitted users open to record a new resolution. Showsskeletons while loading and a sanitized error state on failure. Takes noprops. * score: 5 ### component CapDetailSheet * file: src/cores/gr/components/accreditation/tracer/CapDetailSheet.tsx:24 * kind: component * core: gr * spec: (none) * summary: Slide-over sheet showing CAP details and status actions. * score: 2 ### component CapsTab * file: src/cores/gr/components/accreditation/tracer/CapsTab.tsx:24 * kind: component * core: gr * spec: (none) * summary: CAPs list tab content. * score: 1 ### component CapStatusBadge * file: src/cores/gr/components/accreditation/tracer/CapStatusBadge.tsx:23 * kind: component * core: gr * spec: (none) * summary: Renders a semantic badge for a CAP status. * score: 2 ### component CEUTranscript * file: src/cores/gr/pages/CEUTranscript.tsx:20 * kind: component * core: gr * spec: (none) * summary: Utility for ceutranscript. * score: 1 ### component CEUTranscriptExportDialog * file: src/cores/gr/components/CEUTranscriptExportDialog.tsx:41 * kind: component * core: gr * spec: (none) * summary: Dialog that lets users export a CEU transcript as a PDF.Renders an export dialog preconfigured for the CEU transcript document and forwards open state and callbacks.The transcript is given a synthetic (the employee id) to satisfy the shared dialog's source constraint. * params: * props — Component props - open: Whether the dialog is open - onOpenChange: Callback invoked with the new open state when the dialog is opened or closed - transcript: The CEU transcript to export; used to populate the document title, metadata, and content * returns: The configured export dialog element * example: | CEUTranscriptExportDialog open=isOpen onOpenChange=setIsOpen transcript=transcript/Accessibility:- Ensure is controlled by a visible trigger and that focus is managed when the dialog opens and closes. * score: 4 ### component CoiAcknowledgmentDialog * file: src/cores/gr/components/governance/CoiAcknowledgmentDialog.tsx:23 * kind: component * core: gr * spec: (none) * summary: Dialog for compliance officer to acknowledge a submitted COI attestation. * score: 2 ### component CoiAttestationCycleWizardDialog * file: src/cores/gr/wizards/coi-cycle/CoiAttestationCycleWizardDialog.tsx:34 * kind: component * core: gr * spec: (none) * summary: Four-step wizard to launch an annual COI attestation cycle (). * score: 2 ### component CoiAttestationForm * file: src/cores/gr/components/governance/CoiAttestationForm.tsx:39 * kind: component * core: gr * spec: (none) * summary: Dialog for submitting a COI attestation. * score: 2 ### component CoiAttestationsTab * file: src/cores/gr/components/governance/CoiAttestationsTab.tsx:31 * kind: component * core: gr * spec: (none) * summary: Renders the COI attestation list with filters and action dialogs. * score: 2 ### component CoiDashboardStats * file: src/cores/gr/components/governance/CoiDashboardStats.tsx:16 * kind: component * core: gr * spec: (none) * summary: COI completion stats cards. * score: 1 ### component CoiRosterStep * file: src/cores/gr/wizards/coi-cycle/steps/CoiRosterStep.tsx:56 * kind: component * core: gr * spec: (none) * summary: Searchable roster with per-row role and multi-select. * score: 2 ### component CoiRosterStepAdapter * file: src/cores/gr/wizards/coi-cycle/steps/CoiRosterStepAdapter.tsx:31 * kind: component * core: gr * spec: GR-UX-09 * summary: Registry adapter that bridges to the PF-41 wizardstep contract.Reads the roster inputs (profiles, loading flag, selection, roles, error)out of the generic wizard bag and writes the user's rosterselection back through under the and keys. * params: * props — PF-41 . - values: The wizard's accumulated value bag (roster inputs are read from here). - onChange: Callback to write a wizard field by key. * score: 5 ### component ComplianceCategoryBadge * file: src/cores/gr/components/ComplianceCategoryBadge.tsx:42 * kind: component * core: gr * spec: (none) * summary: Utility for compliance category badge. * score: 1 ### component ComplianceCheckDialog * file: src/cores/gr/components/ComplianceCheckDialog.tsx:48 * kind: component * core: gr * spec: (none) * summary: Utility for compliance check dialog. * score: 1 ### component ComplianceCheckTable * file: src/cores/gr/components/ComplianceCheckTable.tsx:47 * kind: component * core: gr * spec: (none) * summary: Utility for compliance check table. * score: 1 ### component ComplianceDashboard * file: src/cores/gr/pages/ComplianceDashboard.tsx:35 * kind: component * core: gr * spec: (none) * summary: Utility for compliance dashboard. * score: 1 ### component ComplianceDrillDownSheet * file: src/cores/gr/components/compliance-dashboard/ComplianceDrillDownSheet.tsx:54 * kind: component * core: gr * spec: (none) * summary: Drill-down sheet for a selected heatmap cell. * score: 2 ### component ComplianceExecutiveDashboard * file: src/cores/gr/pages/ComplianceExecutiveDashboard.tsx:29 * kind: component * core: gr * spec: (none) * summary: GR-21 executive compliance dashboard. * score: 2 ### component ComplianceHeatmap * file: src/cores/gr/components/compliance-dashboard/ComplianceHeatmap.tsx:35 * kind: component * core: gr * spec: (none) * summary: Executive compliance-posture heatmap grid. * score: 2 ### component ComplianceLinkDialog * file: src/cores/gr/components/ComplianceLinkDialog.tsx:29 * kind: component * core: gr * spec: (none) * summary: Utility for compliance link dialog. * score: 1 ### component CompliancePriorityBadge * file: src/cores/gr/components/CompliancePriorityBadge.tsx:24 * kind: component * core: gr * spec: (none) * summary: Utility for compliance priority badge. * score: 1 ### component ComplianceRequirementWizardPage * file: src/cores/gr/wizards/compliance-requirement/ComplianceRequirementWizardPage.tsx:30 * kind: component * core: gr * spec: (none) * summary: GR-UX-05: Full-page Compliance Requirement Setup wizard powered by PF-41. Aligns with GR-UX-06/07/08 precedent.- Authoritative insert via .- Ancillary inserts to (initial scheduled check) and (document requirements) are non-fatal: failures surface a warning toast and do not roll back the requirement.- Telemetry: PHI-free (IDs, step indices, timing only). * score: 2 ### component ComplianceScoreCards * file: src/cores/gr/components/analytics/ComplianceScoreCards.tsx:24 * kind: component * core: gr * spec: (none) * summary: GR-13: Compliance effectiveness score cards per domain. * score: 2 ### component ComplianceScoreTrendCard * file: src/cores/gr/components/analytics/ComplianceScoreTrendCard.tsx:30 * kind: component * core: gr * spec: (none) * summary: Card displaying per-category compliance score trend over the selected window. * score: 2 ### component ComplianceStatusBadge * file: src/cores/gr/components/ComplianceStatusBadge.tsx:27 * kind: component * core: gr * spec: (none) * summary: Utility for compliance status badge. * score: 1 ### component ComplianceThresholdDialog * file: src/cores/gr/components/compliance-dashboard/ComplianceThresholdDialog.tsx:25 * kind: component * core: gr * spec: (none) * summary: Threshold configuration dialog. The form is a child mounted only while open, so its inputs seed from the loaded thresholds via the useState initializer (a fresh mount per open) — no setState-in-effect. * score: 2 ### component ComplianceTrendChart * file: src/cores/gr/components/compliance-dashboard/ComplianceTrendChart.tsx:22 * kind: component * core: gr * spec: (none) * summary: Org-wide compliance-score trend line. * score: 2 ### component ContractAmendmentCard * file: src/cores/gr/components/contracts/ContractAmendmentCard.tsx:34 * kind: component * core: gr * spec: (none) * summary: Utility for contract amendment card. * score: 1 ### component ContractCard * file: src/cores/gr/components/contracts/ContractCard.tsx:24 * kind: component * core: gr * spec: (none) * summary: Utility for contract card. * score: 1 ### component ContractCreationWizardPage * file: src/cores/gr/wizards/contract-creation/ContractCreationWizardPage.tsx:23 * kind: component * core: gr * spec: (none) * summary: Full-page GR contract creation flow powered by PF-41 ModuleWizardRenderer. * score: 2 ### component ContractDashboard * file: src/cores/gr/pages/ContractDashboard.tsx:25 * kind: component * core: gr * spec: (none) * summary: Utility for contract dashboard. * score: 1 ### component ContractDetailPage * file: src/cores/gr/pages/ContractDetailPage.tsx:42 * kind: component * core: gr * spec: (none) * summary: Utility for contract detail page. * score: 1 ### component ContractDocumentsStep * file: src/cores/gr/wizards/contract-creation/steps/ContractDocumentsStep.tsx:21 * kind: component * core: gr * spec: (none) * summary: GR-UX-10 custom wizard step for primary contract document selection. * score: 2 ### component ContractExpirationWidget * file: src/cores/gr/components/contracts/ContractExpirationWidget.tsx:30 * kind: component * core: gr * spec: (none) * summary: Utility for contract expiration widget. * score: 1 ### component ContractFormDialog * file: src/cores/gr/components/contracts/ContractFormDialog.tsx:124 * kind: component * core: gr * spec: (none) * summary: Utility for contract form dialog. * score: 1 ### component ContractListPage * file: src/cores/gr/pages/ContractListPage.tsx:49 * kind: component * core: gr * spec: (none) * summary: Utility for contract list page. * score: 1 ### component ContractMilestoneCard * file: src/cores/gr/components/contracts/ContractMilestoneCard.tsx:23 * kind: component * core: gr * spec: (none) * summary: Utility for contract milestone card. * score: 1 ### component ContractObligationCard * file: src/cores/gr/components/contracts/ContractObligationCard.tsx:23 * kind: component * core: gr * spec: (none) * summary: Utility for contract obligation card. * score: 1 ### component ContractStatsWidget * file: src/cores/gr/components/contracts/ContractStatsWidget.tsx:31 * kind: component * core: gr * spec: (none) * summary: Utility for contract stats widget. * score: 1 ### component ContractStatusBadge * file: src/cores/gr/components/contracts/ContractStatusBadge.tsx:31 * kind: component * core: gr * spec: (none) * summary: Utility for contract status badge. * score: 1 ### component ContractTable * file: src/cores/gr/components/contracts/ContractTable.tsx:60 * kind: component * core: gr * spec: (none) * summary: Utility for contract table. * score: 1 ### component ContractTypeBadge * file: src/cores/gr/components/contracts/ContractTypeBadge.tsx:29 * kind: component * core: gr * spec: (none) * summary: Utility for contract type badge. * score: 1 ### component CorrectiveActionList * file: src/cores/gr/pages/CorrectiveActionList.tsx:27 * kind: component * core: gr * spec: (none) * summary: Utility for corrective action list. * score: 1 ### component CorrectiveActionsTab * file: src/cores/gr/components/incidents/CorrectiveActionsTab.tsx:35 * kind: component * core: gr * spec: (none) * summary: Tab content displaying corrective actions with overdue highlighting. * score: 2 ### component CourseDetailsStep * file: src/cores/gr/wizards/training-course/steps/CourseDetailsStep.tsx:22 * kind: component * core: gr * spec: (none) * summary: Course details step: title, description, category, delivery method, course code, required flag. * score: 2 ### component CreateCapDialog * file: src/cores/gr/components/accreditation/tracer/CreateCapDialog.tsx:31 * kind: component * core: gr * spec: (none) * summary: Dialog to create a new CAP. * score: 1 ### component CreateProjectFromTemplateDialog * file: src/cores/gr/components/templates/CreateProjectFromTemplateDialog.tsx:41 * kind: component * core: gr * spec: (none) * summary: Utility for create project from template dialog. * score: 1 ### component CreateQIFromFindingDialog * file: src/cores/gr/components/CreateQIFromFindingDialog.tsx:42 * kind: component * core: gr * spec: (none) * summary: Utility for create qifrom finding dialog. * score: 1 ### component CreateQIFromRequirementDialog * file: src/cores/gr/components/CreateQIFromRequirementDialog.tsx:38 * kind: component * core: gr * spec: (none) * summary: Utility for create qifrom requirement dialog. * score: 1 ### component CreditsDurationStep * file: src/cores/gr/wizards/training-course/steps/CreditsDurationStep.tsx:20 * kind: component * core: gr * spec: (none) * summary: Credits and duration step: duration, passing score, CEU credits/category, validity, recurrence, content URL. * score: 2 ### component CycleConfigStep * file: src/cores/gr/wizards/coi-cycle/steps/CycleConfigStep.tsx:48 * kind: component * core: gr * spec: (none) * summary: Attestation year and due date with inline validation messaging. * score: 2 ### component DocumentationStep * file: src/cores/gr/wizards/compliance-requirement/steps/DocumentationStep.tsx:45 * kind: component * core: gr * spec: (none) * summary: Documentation step — define evidence requirements for compliance. * score: 2 ### component DocumentExportDialog * file: src/cores/gr/components/DocumentExportDialog.tsx:91 * kind: component * core: gr * spec: (none) * summary: Modal dialog for configuring and export a source document as a PDF.Presents controls to choose a document template and a letterhead, toggle an approvalsignature block, preview the composed document, and generate a templated PDF that opensin a new tab when created. Handles loading and generation states and surfaces successand error toasts. * params: * props — Component props - - Whether the dialog is open. - - Callback invoked with the new open state. - - The source document object (must include an ). - - Dialog title text. - - Short label used in error messages (e.g., "Invoice"). - - Template type used to filter available templates. - - Function that extracts exportable content from (should return ). - - Human-readable name shown in the dialog description. * example: | DocumentExportDialog open=open onOpenChange=setOpen source=invoice title="Export Invoice" sourceLabel="Invoice" templateType="invoice" getContent=(src) = extractExportContent(src) documentName=invoice.number/Accessibility:- All form controls are labelled ( components with associated s).- Dialog wrapper is semantic and traps focus while open. * score: 4 ### component DocumentRetentionTab * file: src/cores/gr/components/governance/DocumentRetentionTab.tsx:29 * kind: component * core: gr * spec: GR-15 * summary: Tab surfacing data-retention policies and active legal holds for governancerecords.Reads retention policies and legal holds from the platform layer, filters policies to GR governance entitytypes (COI attestations, whistleblower reports, board minutes, boardresolutions), and lists currently active holds. Gated behind the permission. Takes no props. * score: 5 ### component EvidenceDocumentSelector * file: src/cores/gr/components/EvidenceDocumentSelector.tsx:30 * kind: component * core: gr * spec: (none) * summary: Utility for evidence document selector. * score: 1 ### component EvidenceLinkerDialog * file: src/cores/gr/components/EvidenceLinkerDialog.tsx:43 * kind: component * core: gr * spec: (none) * summary: Utility for evidence linker dialog. * score: 1 ### component ExecutiveComplianceReport * file: src/cores/gr/components/compliance-dashboard/ExecutiveComplianceReport.tsx:40 * kind: component * core: gr * spec: (none) * summary: Board-ready executive compliance report with branded PDF export. * score: 2 ### component ExportToQISheet * file: src/cores/gr/components/analytics/ExportToQISheet.tsx:32 * kind: component * core: gr * spec: (none) * summary: GR-13: Export to QI pre-fill sheet. * score: 2 ### component FormsReportsHubPage * file: src/cores/gr/pages/FormsReportsHubPage.tsx:36 * kind: component * core: gr * spec: (none) * summary: Forms & Reports hub page. Renders the governance forms and reports tabstrip via the shared primitive. * score: 2 ### component GapAnalysisTab * file: src/cores/gr/components/accreditation/tracer/GapAnalysisTab.tsx:23 * kind: component * core: gr * spec: (none) * summary: Gap analysis tab showing standards coverage and gaps by category. * score: 2 ### component GenerateTracerPackDialog * file: src/cores/gr/components/accreditation/tracer/GenerateTracerPackDialog.tsx:28 * kind: component * core: gr * spec: (none) * summary: Dialog to generate a new tracer pack. * score: 2 ### component GovernanceControlsPage * file: src/cores/gr/pages/GovernanceControlsPage.tsx:25 * kind: component * core: gr * spec: (none) * summary: Main governance controls page with URL-synced tabs. * score: 2 ### component GRFormsPage * file: src/cores/gr/pages/GRFormsPage.tsx:22 * kind: component * core: gr * spec: none * summary: Route page listing the Governance core's configurable forms.Delegates to the shared PF-08 , scoped to GR(), wiring the "create form" path and the FWforms-create permission. Takes no props. * score: 5 ### component GROverview * file: src/cores/gr/pages/GROverview\.tsx:36 * kind: component * core: gr * spec: (none) * summary: Utility for groverview. * score: 1 ### component GRReportsHubPage * file: src/cores/gr/pages/GRReportsHubPage.tsx:47 * kind: component * core: gr * spec: (none) * summary: Landing page for GR “Reports” nav — deep-links to existing report surfaces behind permission gates. * score: 2 ### component GRSettingsForm * file: src/cores/gr/components/GRSettingsForm.tsx:57 * kind: component * core: gr * spec: (none) * summary: Utility for grsettings form. * score: 1 ### component GRSettingsPage * file: src/cores/gr/pages/GRSettingsPage.tsx:23 * kind: component * core: gr * spec: (none) * summary: Utility for grsettings page. * score: 1 ### component IncidentDashboardWidget * file: src/cores/gr/components/incidents/IncidentDashboardWidget.tsx:16 * kind: component * core: gr * spec: (none) * summary: Dashboard widget showing incident overview stats. * score: 2 ### component IncidentDetailPage * file: src/cores/gr/pages/IncidentDetailPage.tsx:34 * kind: component * core: gr * spec: (none) * summary: Incident detail page with tabbed layout. * score: 2 ### component IncidentListPage * file: src/cores/gr/pages/IncidentListPage.tsx:31 * kind: component * core: gr * spec: (none) * summary: Main incident list page with stats, filters, and table. * score: 2 ### component IncidentReportingWizardPage * file: src/cores/gr/wizards/incident-reporting/IncidentReportingWizardPage.tsx:27 * kind: component * core: gr * spec: (none) * summary: GR-UX-06: Full-page Incident Reporting wizard powered by PF-41 ModuleWizardRenderer.Inserts a single row. Regulatory reports are createdautomatically by the existing trigger pipeline(which invokes ). The wizarddoes NOT insert into directly. * score: 2 ### component InServiceCompliancePage * file: src/cores/gr/pages/InServiceCompliancePage.tsx:38 * kind: component * core: gr * spec: (none) * summary: Mandatory In-Service Compliance Monitor page. * score: 2 ### component InServiceMatrixFilters * file: src/cores/gr/components/inservice/InServiceMatrixFilters.tsx:79 * kind: component * core: gr * spec: GR-19 * summary: Filter bar for the in-service compliance matrix.Renders a scope toggle (Site vs Department), an employee search box, thescope-specific site/department selector, and a status selector, plus a Clearfilters action. Switching scope clears the inactive scope's id to keep theserver-side filter mutually exclusive. Department options are loadedorg-scoped from . Emits the full to on every change. * params: * props — Component props. - value: Current filter state. - onChange: Callback invoked with the next filter state. * score: 5 ### component InServiceMatrixStatCards * file: src/cores/gr/components/inservice/InServiceMatrixStatCards.tsx:65 * kind: component * core: gr * spec: GR-19 * summary: Scorecard tiles summarizing in-service compliance for the matrix.Derives KPI tiles from the supplied matrix: the count of employees, pluscell counts for compliant, due-soon, and overdue statuses, alongside aweighted compliance percentage whose tone shifts (success / warning /destructive) based on the value. Renders skeleton tiles while loading. * params: * props — Component props. - matrix: The computed in-service matrix, or undefined while loading. - compliancePct: Weighted compliance percentage, or null/undefined when unavailable. - isLoading: Whether to render loading skeletons. * score: 5 ### component InServiceMatrixTable * file: src/cores/gr/components/inservice/InServiceMatrixTable.tsx:65 * kind: component * core: gr * spec: GR-19 * summary: Responsive grid of in-service training compliance by employee and course.On desktop renders a sticky-header table with employees as rows and coursesas columns, each cell showing an with a tooltipdetailing status, last-completed, due date, and verification method. Onmobile (under 768px) it collapses to a per-employee accordion. Showsskeletons while loading and an empty state when there are no rows or courses. * params: * props — Component props. - matrix: The computed in-service matrix, or undefined while loading. - isLoading: Whether to render loading skeletons. * score: 5 ### component InServiceStatusBadge * file: src/cores/gr/components/inservice/InServiceStatusBadge.tsx:36 * kind: component * core: gr * spec: GR-19 * summary: Accessible badge for an in-service compliance cell status.Pairs color (badge variant) with an icon and glyph so the matrix stayslegible for color-blind users. The variant renders an icon-onlybadge with an for use inside dense matrix cells. * params: * props — Component props. - status: The cell status to display. - className: Optional additional CSS classes. - compact: When true, render a compact icon-only badge. * score: 5 ### component InvestigationTab * file: src/cores/gr/components/incidents/InvestigationTab.tsx:33 * kind: component * core: gr * spec: (none) * summary: Tab content displaying investigation details and findings. * score: 2 ### component JurisdictionBadge * file: src/cores/gr/components/ai/JurisdictionBadge.tsx:35 * kind: component * core: gr * spec: (none) * summary: Visual indicator of the active PF-96 jurisdiction profile for AI compliance chat. * score: 2 ### component LinkedQISection * file: src/cores/gr/components/LinkedQISection.tsx:29 * kind: component * core: gr * spec: (none) * summary: Utility for linked qisection. * score: 1 ### component LinkedRisksSection * file: src/cores/gr/components/LinkedRisksSection.tsx:36 * kind: component * core: gr * spec: (none) * summary: Utility for linked risks section. * score: 1 ### component MetricComparisonChart * file: src/cores/gr/components/charts/MetricComparisonChart.tsx:28 * kind: component * core: gr * spec: (none) * summary: Utility for metric comparison chart. * score: 1 ### component MetricGoalProgressChart * file: src/cores/gr/components/charts/MetricGoalProgressChart.tsx:27 * kind: component * core: gr * spec: (none) * summary: Utility for metric goal progress chart. * score: 1 ### component MetricTrendChart * file: src/cores/gr/components/charts/MetricTrendChart.tsx:38 * kind: component * core: gr * spec: (none) * summary: Utility for metric trend chart. * score: 1 ### component MilestoneFormDialog * file: src/cores/gr/components/contracts/MilestoneFormDialog.tsx:39 * kind: component * core: gr * spec: (none) * summary: Utility for milestone form dialog. * score: 1 ### component MilestoneList * file: src/cores/gr/components/contracts/MilestoneList.tsx:26 * kind: component * core: gr * spec: (none) * summary: Utility for milestone list. * score: 1 ### component MilestoneStatusBadge * file: src/cores/gr/components/contracts/MilestoneStatusBadge.tsx:30 * kind: component * core: gr * spec: (none) * summary: Utility for milestone status badge. * score: 1 ### component MitigationStatusBadge * file: src/cores/gr/components/MitigationStatusBadge.tsx:26 * kind: component * core: gr * spec: (none) * summary: Utility for mitigation status badge. * score: 1 ### component MockSurveysTab * file: src/cores/gr/components/accreditation/tracer/MockSurveysTab.tsx:23 * kind: component * core: gr * spec: (none) * summary: Mock surveys listing with trend data. * score: 2 ### component MyGovernanceHubPage * file: src/cores/gr/pages/MyGovernanceHubPage.tsx:37 * kind: component * core: gr * spec: (none) * summary: My Governance hub page. Renders the personal acknowledgments, training,and CEU transcript tab strip via the shared primitive. * score: 2 ### component MyPolicyAcknowledgments * file: src/cores/gr/pages/MyPolicyAcknowledgments.tsx:23 * kind: component * core: gr * spec: (none) * summary: Utility for my policy acknowledgments. * score: 1 ### component MyQIDashboard * file: src/cores/gr/pages/MyQIDashboard.tsx:25 * kind: component * core: gr * spec: (none) * summary: Utility for my qidashboard. * score: 1 ### component MyTraining * file: src/cores/gr/pages/MyTraining.tsx:23 * kind: component * core: gr * spec: (none) * summary: Utility for my training. * score: 1 ### component ObligationFormDialog * file: src/cores/gr/components/contracts/ObligationFormDialog.tsx:65 * kind: component * core: gr * spec: (none) * summary: Utility for obligation form dialog. * score: 1 ### component ObligationList * file: src/cores/gr/components/contracts/ObligationList.tsx:26 * kind: component * core: gr * spec: (none) * summary: Utility for obligation list. * score: 1 ### component ObligationStatusBadge * file: src/cores/gr/components/contracts/ObligationStatusBadge.tsx:31 * kind: component * core: gr * spec: (none) * summary: Utility for obligation status badge. * score: 1 ### component PDSAActPhaseForm * file: src/cores/gr/components/PDSAActPhaseForm.tsx:28 * kind: component * core: gr * spec: (none) * summary: Utility for pdsaact phase form. * score: 1 ### component PDSACycleCard * file: src/cores/gr/components/PDSACycleCard.tsx:28 * kind: component * core: gr * spec: (none) * summary: Utility for pdsacycle card. * score: 1 ### component PDSACycleDetail * file: src/cores/gr/components/PDSACycleDetail.tsx:26 * kind: component * core: gr * spec: (none) * summary: Utility for pdsacycle detail. * score: 1 ### component PDSACycleFormDialog * file: src/cores/gr/components/PDSACycleFormDialog.tsx:30 * kind: component * core: gr * spec: (none) * summary: Utility for pdsacycle form dialog. * score: 1 ### component PDSACycleStatusBadge * file: src/cores/gr/components/PDSACycleStatusBadge.tsx:25 * kind: component * core: gr * spec: (none) * summary: Utility for pdsacycle status badge. * score: 1 ### component PDSADoPhaseForm * file: src/cores/gr/components/PDSADoPhaseForm.tsx:27 * kind: component * core: gr * spec: (none) * summary: Utility for pdsado phase form. * score: 1 ### component PDSAPhaseBadge * file: src/cores/gr/components/PDSAPhaseBadge.tsx:45 * kind: component * core: gr * spec: (none) * summary: Displays a PDSA (Plan-Do-Study-Act) cycle phase badge with appropriate styling. * params: * phase — The PDSA phase value. Accepted values: 'plan' | 'do' | 'study' | 'act' * className — Optional additional CSS classes to apply to the badge * returns: A React element rendering the phase badge with variant styling based on the phaseFallback behavior: If an unrecognized phase value is passed to the internal factory,it will render with the default outline variant. * score: 2 ### component PDSAPlanPhaseForm * file: src/cores/gr/components/PDSAPlanPhaseForm.tsx:28 * kind: component * core: gr * spec: (none) * summary: Utility for pdsaplan phase form. * score: 1 ### component PDSAStudyPhaseForm * file: src/cores/gr/components/PDSAStudyPhaseForm.tsx:27 * kind: component * core: gr * spec: (none) * summary: Utility for pdsastudy phase form. * score: 1 ### component PolicyAcknowledgmentDialog * file: src/cores/gr/components/PolicyAcknowledgmentDialog.tsx:35 * kind: component * core: gr * spec: (none) * summary: Utility for policy acknowledgment dialog.GR-01-EN-02: When the acknowledgment row carries an (FK to ), the configurable PF-08 form isrendered via and its submitted values are persisted to. Otherwise the built-in defaultread-confirmation checkbox is shown and a payload is recorded. * score: 1 ### component PolicyAcknowledgmentFormsPage * file: src/cores/gr/pages/settings/PolicyAcknowledgmentFormsPage.tsx:30 * kind: component * core: gr * spec: GR-01-EN-02 * summary: Settings page listing the GR-owned forms that can serve as a policy'sacknowledgment form.Renders an explanatory alert plus the shared PF-08 scopedto with a policy-acknowledgment create path. Formslisted here can be attached to a policy via. Takes no props. * score: 5 ### component PolicyAcknowledgmentTable * file: src/cores/gr/components/PolicyAcknowledgmentTable.tsx:32 * kind: component * core: gr * spec: (none) * summary: Utility for policy acknowledgment table. * score: 1 ### component PolicyAcknowledgmentTracker * file: src/cores/gr/pages/PolicyAcknowledgmentTracker.tsx:22 * kind: component * core: gr * spec: (none) * summary: Utility for policy acknowledgment tracker. * score: 1 ### component PolicyAssignmentDialog * file: src/cores/gr/components/PolicyAssignmentDialog.tsx:54 * kind: component * core: gr * spec: (none) * summary: Utility for policy assignment dialog. * score: 1 ### component PolicyAssignmentList * file: src/cores/gr/components/PolicyAssignmentList.tsx:25 * kind: component * core: gr * spec: (none) * summary: Utility for policy assignment list. * score: 1 ### component PolicyCard * file: src/cores/gr/components/PolicyCard.tsx:22 * kind: component * core: gr * spec: (none) * summary: Utility for policy card. * score: 1 ### component PolicyCategoryBadge * file: src/cores/gr/components/PolicyCategoryBadge.tsx:27 * kind: component * core: gr * spec: (none) * summary: Utility for policy category badge. * score: 1 ### component PolicyCoverageTable * file: src/cores/gr/components/analytics/PolicyCoverageTable.tsx:21 * kind: component * core: gr * spec: (none) * summary: GR-13: Policy coverage heatmap table with tier badges. * score: 2 ### component PolicyCreationWizardDialog * file: src/cores/gr/wizards/policy-creation/PolicyCreationWizardDialog.tsx:58 * kind: component * core: gr * spec: (none) * summary: GR-UX-12: four-step dialog wizard for creating draft policies. * score: 2 ### component PolicyCustomFieldsPage * file: src/cores/gr/pages/settings/PolicyCustomFieldsPage.tsx:51 * kind: component * core: gr * spec: GR-01-EN-02 * summary: Settings page for managing custom field definitions on policies.Loads and mutates custom-field definitions via the platformcustom-fields hooks, presenting them in a table with create, edit, anddelete actions. Fields defined here populate the bag onpolicy records. Takes no props. * score: 5 ### component PolicyDetail * file: src/cores/gr/pages/PolicyDetail.tsx:39 * kind: component * core: gr * spec: (none) * summary: Utility for policy detail. * score: 1 ### component PolicyDocumentStep * file: src/cores/gr/wizards/policy-creation/steps/PolicyDocumentStep.tsx:25 * kind: component * core: gr * spec: (none) * summary: Step 2: attach optional policy document via PF-11 upload hook. * params: * props — Component props - data: Current wizard form data - onDataChange: Callback to update wizard form data * returns: React component for policy document upload step * score: 2 ### component PolicyExportDialog * file: src/cores/gr/components/PolicyExportDialog.tsx:90 * kind: component * core: gr * spec: (none) * summary: Renders a configured DocumentExportDialog that exports the given policy to a PDF.The dialog is labeled "Export Policy to PDF" and uses the policy data to build PDF content via . * params: * props — Component props - open: Whether the export dialog is open - onOpenChange: Callback invoked when the dialog open state should change - policy: The policy object to export * returns: The rendered export dialog element configured for the provided policy * example: | PolicyExportDialog open=isDialogOpen onOpenChange=setDialogOpen policy=selectedPolicy/Accessibility: the dialog is labeled for assistive technologies as "Export Policy to PDF"; ensure the provided manages focus when opening/closing for keyboard and screen-reader users. * score: 4 ### component PolicyFormDialog * file: src/cores/gr/components/PolicyFormDialog.tsx:49 * kind: component * core: gr * spec: (none) * summary: Utility for policy form dialog. * score: 1 ### component PolicyLibrary * file: src/cores/gr/pages/PolicyLibrary.tsx:92 * kind: component * core: gr * spec: (none) * summary: Utility for policy library. * score: 1 ### component PolicyReviewDashboard * file: src/cores/gr/pages/PolicyReviewDashboard.tsx:32 * kind: component * core: gr * spec: (none) * summary: Utility for policy review dashboard. * score: 1 ### component PolicyReviewStep * file: src/cores/gr/wizards/policy-creation/steps/PolicyReviewStep.tsx:27 * kind: component * core: gr * spec: (none) * summary: Step 4: read-only summary with per-section edit navigation. * params: * props — Component props - data: Complete wizard form data to review - onEditStep: Callback to navigate back to a specific step for editing * returns: React component for policy review step * score: 2 ### component PolicySelector * file: src/cores/gr/components/procedures/PolicySelector.tsx:42 * kind: component * core: gr * spec: (none) * summary: A dropdown popover that lets users choose an approved policy from a searchable list.Renders a button showing the currently selected policy title (or a placeholder) and apopover containing a searchable list of approved policies. Selecting an item invokes with the policy's id, title, and available content, then closes the popover.Accessibility:- The trigger button uses and exposes to reflect open state.- Ensure keyboard focus and screen-reader access are preserved when integrating this component. - value: The id of the currently selected policy (optional). - onSelect: Callback invoked when a policy is selected. Receives an object with , , and . - disabled: If true, disables the selector control. * returns: The rendered PolicySelector component. * example: | PolicySelector value="policy-123" onSelect=(policy) = console.log('selected', policy)/ * score: 5 ### component PolicyStatusBadge * file: src/cores/gr/components/PolicyStatusBadge.tsx:24 * kind: component * core: gr * spec: (none) * summary: Utility for policy status badge. * score: 1 ### component PolicyVersionDialog * file: src/cores/gr/components/PolicyVersionDialog.tsx:28 * kind: component * core: gr * spec: (none) * summary: Utility for policy version dialog. * score: 1 ### component PolicyVersionHistory * file: src/cores/gr/components/PolicyVersionHistory.tsx:24 * kind: component * core: gr * spec: (none) * summary: Utility for policy version history. * score: 1 ### component ProcedureAnalyticsDashboardPage * file: src/cores/gr/pages/ProcedureAnalyticsDashboardPage.tsx:47 * kind: component * core: gr * spec: (none) * summary: GR-13: Procedure Analytics Dashboard page component. * score: 2 ### component ProcedureAnalyticsTable * file: src/cores/gr/components/analytics/ProcedureAnalyticsTable.tsx:35 * kind: component * core: gr * spec: (none) * summary: GR-13: Sortable analytics table with Export to QI action. * score: 2 ### component ProcedureCanvas * file: src/cores/gr/components/procedures/ProcedureCanvas.tsx:45 * kind: component * core: gr * spec: (none) * summary: Renders a procedure workflow canvas with edit and read-only modes, and automatically forces read-only on small screens. * params: * props — Component props. - nodes: Procedure workflow nodes to display. - edges: Procedure workflow edges to display. - readOnly: If true, forces the canvas into read-only mode; defaults to false. - onNodesChange: Called with the updated node array when nodes change. - onEdgesChange: Called with the updated edge array when edges change. - onNodeClick: Called when a node is clicked. - className: Optional container CSS class names. * returns: The procedure workflow canvas wrapped with a React Flow provider. * example: | ProcedureCanvas nodes=nodes edges=edges onNodesChange=setNodes onEdgesChange=setEdges/Accessibility: container uses role="application" and an aria-label that indicates whether the canvas is in "viewer" (read-only) or "editor" mode. * score: 4 ### component ProcedureCard * file: src/cores/gr/components/procedures/ProcedureCard.tsx:42 * kind: component * core: gr * spec: (none) * summary: Renders a compact, accessible card that displays a procedure's title, status, category, and optional metadata.The card shows procedure number, site, truncated description, owner, step count, effective date, and review date(with an overdue indicator when the review date is in the past). The card supports click activation and keyboardactivation via Enter or Space.Accessibility: the card exposes role="button", tabIndex=0, an aria-label with the procedure title, and keyboardhandling for Enter/Space to activate the provided onClick handler. * params: * props — Component props - procedure: The procedure data to render (title, status, category, optional procedure\_number, site, description, owner, workflow\_nodes, effective\_date, and review\_date). - onClick: Optional click handler invoked when the card is activated via mouse or keyboard. * returns: The rendered card element representing the provided procedure. * example: | ProcedureCard procedure=procedureItem onClick=() = navigateToProcedure(procedureItem.id)/ * score: 4 ### component ProcedureCategoryBadge * file: src/cores/gr/components/procedures/ProcedureCategoryBadge.tsx:52 * kind: component * core: gr * spec: (none) * summary: Renders a color-coded badge for a procedure category.Looks up a display label and Tailwind color classes for known categories and falls backto a capitalized label and a default color when the category is unknown. - category: The procedure category key (e.g., "clinical", "imaging"). If the key is not found in the internal mappings, the component will display the category string with the first character capitalized. - className: Optional additional CSS classes to apply to the Badge container.Accessibility: The badge's content is plain text and exposed to assistive technologies as rendered; ensure provided category strings are meaningful and localized when needed. * returns: A JSX element rendering an outlined Badge styled for the specified category. * example: | ProcedureCategoryBadge category="clinical" / * score: 5 ### component ProcedureDetailPage * file: src/cores/gr/pages/ProcedureDetailPage.tsx:35 * kind: component * core: gr * spec: (none) * summary: Display a detailed view of a single procedure with header, permission-based actions, and tabs for Overview, Steps, Versions, and Executions. * score: 2 ### component ProcedureEditPage * file: src/cores/gr/pages/ProcedureEditPage.tsx:49 * kind: component * core: gr * spec: (none) * summary: Page component that provides a full editor for creating or editing a procedure, including a metadata form and a visual workflow canvas. * score: 2 ### component ProcedureExportDialog * file: src/cores/gr/components/ProcedureExportDialog.tsx:90 * kind: component * core: gr * spec: (none) * summary: Dialog that lets users export a Procedure as a PDF.Renders an export dialog preconfigured for procedure documents and forwards open state and callbacks. * params: * props — Component props - open: Whether the dialog is open - onOpenChange: Callback invoked with the new open state when the dialog is opened or closed - procedure: The procedure to export; used to populate the document title, metadata, and content * returns: The configured export dialog element * example: | ProcedureExportDialog open=isOpen onOpenChange=(next) = setIsOpen(next) procedure=procedure/Accessibility:- Ensure is controlled by a visible trigger and that focus is managed when the dialog opens and closes. * score: 4 ### component ProcedureListPage * file: src/cores/gr/pages/ProcedureListPage.tsx:55 * kind: component * core: gr * spec: (none) * summary: Renders the Procedures list page with search, category/status filters, grid/list view toggle, and navigation for creating or opening procedures.The page fetches procedures using current filters and a deferred search term, shows loading skeletons while fetching, an empty state with CTA when no procedures exist, and an error alert if loading fails. The "Add Procedure" action is shown only when the current user has the permission.Accessibility:- Search input and filter triggers include descriptive attributes.- View mode buttons include for screen-reader clarity. * params: * props — This component accepts no props; it is self-contained and uses in-module hooks for data, state, and navigation. * example: | ProcedureListPage / * score: 4 ### component ProcedureStatusBadge * file: src/cores/gr/components/procedures/ProcedureStatusBadge.tsx:39 * kind: component * core: gr * spec: (none) * summary: Renders a colored status badge for a procedure based on the provided status key.The component looks up a label and visual variant from the internal mapand falls back to showing the raw string with the variant for unknown keys. * params: * props — Component props - status: Procedure status key used to determine the badge label and variant (e.g., , ). If the key is not recognized, the raw string is used as the label. - className: Optional additional CSS class names to apply to the badge container. * returns: A Badge element displaying the status label with the configured visual variant. * example: | ProcedureStatusBadge status="approved" /The badge provides a visible textual label for screen readers; ensure color is not the only means of conveying important status information. * score: 4 ### component ProcedureStepDrilldownDialog * file: src/cores/gr/components/analytics/ProcedureStepDrilldownDialog.tsx:39 * kind: component * core: gr * spec: (none) * summary: Dialog showing step-level execution analytics for a single procedure. * params: * procedureId — Procedure to load. Hook is disabled until provided. * procedureTitle — Title shown in the dialog header. * open — Controlled open state. * onOpenChange — Open-state change handler. * score: 2 ### component ProcedureTemplateCard * file: src/cores/gr/components/ProcedureTemplateCard.tsx:33 * kind: component * core: gr * spec: (none) * summary: Renders a single procedure template as a card with metadata and actions. * score: 2 ### component ProcedureTemplateContributeDialog * file: src/cores/gr/components/ProcedureTemplateContributeDialog.tsx:43 * kind: component * core: gr * spec: (none) * summary: Dialog for contributing (saving) a procedure as a template. * score: 2 ### component ProcedureTemplateFilters * file: src/cores/gr/components/ProcedureTemplateFilters.tsx:35 * kind: component * core: gr * spec: (none) * summary: Renders filter controls for the procedure template library. * score: 2 ### component ProcedureTemplateGrid * file: src/cores/gr/components/ProcedureTemplateGrid.tsx:47 * kind: component * core: gr * spec: (none) * summary: Renders a responsive grid of procedure template cards. * score: 2 ### component ProcedureTemplateInstantiateDialog * file: src/cores/gr/components/ProcedureTemplateInstantiateDialog.tsx:51 * kind: component * core: gr * spec: (none) * summary: Dialog for instantiating a procedure template into a new procedure. * score: 2 ### component ProcedureTemplatePreviewDialog * file: src/cores/gr/components/ProcedureTemplatePreviewDialog.tsx:26 * kind: component * core: gr * spec: (none) * summary: Displays a read-only preview of a procedure template with workflow canvas. * score: 2 ### component ProcedureTemplatesPage * file: src/cores/gr/pages/ProcedureTemplatesPage.tsx:27 * kind: component * core: gr * spec: (none) * summary: Procedure Templates Library browse page. * score: 2 ### component QIDashboard * file: src/cores/gr/pages/QIDashboard.tsx:41 * kind: component * core: gr * spec: (none) * summary: Utility for qidashboard. * score: 1 ### component QIImprovementCard * file: src/cores/gr/components/QIImprovementCard.tsx:20 * kind: component * core: gr * spec: (none) * summary: Utility for qiimprovement card. * score: 1 ### component QIImprovementFormDialog * file: src/cores/gr/components/QIImprovementFormDialog.tsx:38 * kind: component * core: gr * spec: (none) * summary: Utility for qiimprovement form dialog. * score: 1 ### component QIImprovementStatusBadge * file: src/cores/gr/components/QIImprovementStatusBadge.tsx:25 * kind: component * core: gr * spec: (none) * summary: Utility for qiimprovement status badge. * score: 1 ### component QIMetricCard * file: src/cores/gr/components/QIMetricCard.tsx:28 * kind: component * core: gr * spec: (none) * summary: Utility for qimetric card. * score: 1 ### component QIMetricFormDialog * file: src/cores/gr/components/QIMetricFormDialog.tsx:54 * kind: component * core: gr * spec: (none) * summary: Utility for qimetric form dialog. * score: 1 ### component QIMetricMeasurementDialog * file: src/cores/gr/components/QIMetricMeasurementDialog.tsx:21 * kind: component * core: gr * spec: (none) * summary: Utility for qimetric measurement dialog. * score: 1 ### component QiMetricsStep * file: src/cores/gr/wizards/qi-project/steps/QiMetricsStep.tsx:58 * kind: component * core: gr * spec: (none) * summary: Custom step for defining quality metrics in the QI project wizard. * score: 2 ### component QIMetricTrendBadge * file: src/cores/gr/components/QIMetricTrendBadge.tsx:30 * kind: component * core: gr * spec: (none) * summary: Utility for qimetric trend badge. * score: 1 ### component QIProjectCard * file: src/cores/gr/components/QIProjectCard.tsx:21 * kind: component * core: gr * spec: (none) * summary: Utility for qiproject card. * score: 1 ### component QIProjectCategoryBadge * file: src/cores/gr/components/QIProjectCategoryBadge.tsx:24 * kind: component * core: gr * spec: (none) * summary: Utility for qiproject category badge. * score: 1 ### component QIProjectDetail * file: src/cores/gr/pages/QIProjectDetail.tsx:37 * kind: component * core: gr * spec: (none) * summary: Utility for qiproject detail. * score: 1 ### component QIProjectFormDialog * file: src/cores/gr/components/QIProjectFormDialog.tsx:41 * kind: component * core: gr * spec: (none) * summary: Utility for qiproject form dialog. * score: 1 ### component QIProjectList * file: src/cores/gr/pages/QIProjectList.tsx:43 * kind: component * core: gr * spec: (none) * summary: Utility for qiproject list. * score: 1 ### component QIProjectSourceBadge * file: src/cores/gr/components/QIProjectSourceBadge.tsx:16 * kind: component * core: gr * spec: (none) * summary: Renders a "Source: GR-13 procedure gap" badge when the projectwas created by the procedure-gap consumer. Returns null otherwise. * score: 2 ### component QIProjectStatusBadge * file: src/cores/gr/components/QIProjectStatusBadge.tsx:26 * kind: component * core: gr * spec: (none) * summary: Utility for qiproject status badge. * score: 1 ### component QiProjectWizardPage * file: src/cores/gr/wizards/qi-project/QiProjectWizardPage.tsx:21 * kind: component * core: gr * spec: (none) * summary: Full-page GR QI Project creation flow powered by PF-41 ModuleWizardRenderer. * score: 2 ### component QIReports * file: src/cores/gr/pages/QIReports.tsx:36 * kind: component * core: gr * spec: (none) * summary: Utility for qireports. * score: 1 ### component QITemplateFormDialog * file: src/cores/gr/components/templates/QITemplateFormDialog.tsx:31 * kind: component * core: gr * spec: (none) * summary: Utility for qitemplate form dialog. * score: 1 ### component QITemplates * file: src/cores/gr/pages/QITemplates.tsx:23 * kind: component * core: gr * spec: (none) * summary: Utility for qitemplates. * score: 1 ### component QITrendAnalysisPanel * file: src/cores/gr/components/charts/QITrendAnalysisPanel.tsx:27 * kind: component * core: gr * spec: (none) * summary: Utility for qitrend analysis panel. * score: 1 ### component ReadinessScoreTab * file: src/cores/gr/components/accreditation/tracer/ReadinessScoreTab.tsx:25 * kind: component * core: gr * spec: (none) * summary: Readiness score overview with component breakdown. * score: 2 ### component RecordMockSurveyDialog * file: src/cores/gr/components/accreditation/tracer/RecordMockSurveyDialog.tsx:31 * kind: component * core: gr * spec: (none) * summary: Dialog to record a mock survey result. * score: 2 ### component RegulationAccreditationMapDialog * file: src/cores/gr/components/RegulationAccreditationMapDialog.tsx:54 * kind: component * core: gr * spec: GR-14-EN-01 * summary: Modal dialog for adding or editing a regulation → accreditation-body mapping.Operates in create or edit mode depending on whether is supplied,seeding fields from the row when editing. Captures the regulation citation,the accreditation body (from the fixed body vocabulary), and optional notes,persisting via the create/update mapping mutations. * params: * props — Dialog props: , , and the optional row to edit (omit or pass null to create). * score: 4 ### component RegulationAccreditationMapPage * file: src/cores/gr/pages/RegulationAccreditationMapPage.tsx:48 * kind: component * core: gr * spec: GR-14-EN-01 * summary: Route page listing and managing regulation → accreditation-body mappings.Loads mappings via ; admins with can add, edit, and delete org rows.Platform-default rows (organization\_id NULL) render read-only with a"Platform default" badge. Takes no props. * score: 5 ### component RegulationRequirementMapDialog * file: src/cores/gr/components/RegulationRequirementMapDialog.tsx:55 * kind: component * core: gr * spec: GR-14-EN-01 * summary: Modal dialog for adding or editing a regulation → requirement mapping.Operates in create or edit mode depending on whether is supplied,seeding fields from the row when editing. Captures the regulation citation,the target requirement (selected from the org's regulatory requirements), andoptional notes, persisting via the create/update mapping mutations. * params: * props — Dialog props: , , and the optional row to edit (omit or pass null to create). * score: 4 ### component RegulationRequirementMapPage * file: src/cores/gr/pages/RegulationRequirementMapPage.tsx:48 * kind: component * core: gr * spec: GR-14-EN-01 * summary: Route page listing and managing regulation → requirement mappings.Loads mappings via ; admins with can add, edit, and delete org rows.Platform-default rows (organization\_id NULL) render read-only with a"Platform default" badge. Takes no props. * score: 5 ### component RegulatoryBodyStep * file: src/cores/gr/wizards/compliance-requirement/steps/RegulatoryBodyStep.tsx:22 * kind: component * core: gr * spec: (none) * summary: Custom step: pick a regulatory body for the requirement. * score: 2 ### component RegulatoryChangeDetailPage * file: src/cores/gr/pages/RegulatoryChangeDetailPage.tsx:43 * kind: component * core: gr * spec: GR-17 * summary: Route page showing the full detail of a single regulatory change event.Reads the event id from the route params, loads it via, and renders its summary, impacts, andsnapshot history. Permitted users () can open thereview sheet to approve or dismiss the change. Takes no props. * score: 5 ### component RegulatoryChangeReviewSheet * file: src/cores/gr/components/RegulatoryChangeReviewSheet.tsx:50 * kind: component * core: gr * spec: GR-17 * summary: Confirmation sheet for approving or dismissing a regulatory change event.The prop selects the action: moves the change to theapproved queue, any other value dismisses it. Lets the reviewer add optionalnotes, then submits via and closes on success.Renders as a right-side sheet on desktop and full-screen on mobile. * params: * props — Component props. - open: Whether the sheet is open. - onOpenChange: Callback invoked with the new open state. - changeEventId: Identifier of the regulatory change event being reviewed. - decision: The review decision to apply (e.g. or ). - changeTitle: Optional change title shown in the sheet header. * score: 5 ### component RegulatoryChangeSeverityBadge * file: src/cores/gr/components/RegulatoryChangeSeverityBadge.tsx:43 * kind: component * core: gr * spec: GR-17 * summary: Badge displaying a regulatory change's severity with an icon, label, andcolor (icon + label so color is not the sole indicator per WCAG 1.4.1).When is true, appends a "(manual)" marker to signal theseverity was set by a human rather than the automated classifier. * params: * props — Component props. - severity: The regulatory change severity (low, medium, high, critical). - overridden: When true, marks the severity as manually overridden. - className: Optional additional CSS classes. * score: 5 ### component RegulatoryChangesPage * file: src/cores/gr/pages/RegulatoryChangesPage.tsx:63 * kind: component * core: gr * spec: GR-17 * summary: Route page listing regulatory change events with status-tab filtering.Drives a URL-synced status tab (all / detected / under-review / approved /dismissed) and loads the filtered set plus an unfiltered set (for tabcounts) via . Rows navigate to the changedetail page. Takes no props. * score: 5 ### component RegulatoryChangeStatusBadge * file: src/cores/gr/components/RegulatoryChangeStatusBadge.tsx:35 * kind: component * core: gr * spec: GR-17 * summary: Badge showing a regulatory change event's lifecycle status.Maps each status (detected, under\_review, approved, dismissed) to a labeled variant. * params: * props — Component props. - status: The regulatory change event status to display. - className: Optional additional CSS classes. * score: 5 ### component RegulatoryComplianceDashboardWidget * file: src/cores/gr/components/incidents/RegulatoryComplianceDashboardWidget.tsx:17 * kind: component * core: gr * spec: (none) * summary: Dashboard widget showing regulatory reporting obligation stats. * score: 2 ### component RegulatoryReportDetailPage * file: src/cores/gr/pages/RegulatoryReportDetailPage.tsx:41 * kind: component * core: gr * spec: GR-14-EN-01 * summary: Route page rendering one regulatory report and a link to its incident.Reads the report id from the route params, loads the report via, and offers a "View incident" action thatnavigates to the parent incident-detail surface (where the fullregulatory-reports tab lives). Takes no props. * score: 5 ### component RegulatoryReportsTab * file: src/cores/gr/components/incidents/RegulatoryReportsTab.tsx:37 * kind: component * core: gr * spec: (none) * summary: Renders the regulatory reporting obligations tab content. * score: 2 ### component RegulatorySourceDetailPage * file: src/cores/gr/pages/RegulatorySourceDetailPage.tsx:33 * kind: component * core: gr * spec: GR-17 * summary: Route page showing a monitored regulatory source and its detected changes.Reads the source id from the route params, loads the source via, and lists the change events originating from itvia filtered by . Takes noprops. * score: 5 ### component RegulatorySourceFormDialog * file: src/cores/gr/components/RegulatorySourceFormDialog.tsx:59 * kind: component * core: gr * spec: GR-17 * summary: Modal dialog for registering or editing a monitored regulatory source.Operates in create or edit mode depending on whether is supplied,seeding its fields from the source when editing. Captures the source name,URL, type (RSS, HTTP, sitemap, or manual), regulatory body, jurisdiction,poll interval, and active flag, then persists via or . * params: * props — Component props. - open: Whether the dialog is open. - onOpenChange: Callback invoked with the new open state. - source: Existing source to edit; omit or pass null to create a new one. * score: 5 ### component RegulatorySourcesPage * file: src/cores/gr/pages/RegulatorySourcesPage.tsx:44 * kind: component * core: gr * spec: GR-17 * summary: Route page listing and managing monitored regulatory sources.Loads sources via with a name/URL search box.Admin users () can register, edit (via), pause/resume, and delete sources using thetoggle and delete mutations. Takes no props. * score: 5 ### component RegulatorySourceStatusBadge * file: src/cores/gr/components/RegulatorySourceStatusBadge.tsx:41 * kind: component * core: gr * spec: GR-17 * summary: Badge conveying a monitored regulatory source's health.Derives a health state from the two flags: inactive renders "Paused",active-with-error renders "Errored", and active-without-error renders"Healthy". * params: * props — Component props. - isActive: Whether the source is actively polled. - hasError: Whether the source's last poll recorded an error. - className: Optional additional CSS classes. * score: 5 ### component RemediationCard * file: src/cores/gr/components/RemediationCard.tsx:20 * kind: component * core: gr * spec: (none) * summary: Utility for remediation card. * score: 1 ### component RemediationFormDialog * file: src/cores/gr/components/RemediationFormDialog.tsx:37 * kind: component * core: gr * spec: (none) * summary: Utility for remediation form dialog. * score: 1 ### component RemediationStatusBadge * file: src/cores/gr/components/RemediationStatusBadge.tsx:26 * kind: component * core: gr * spec: (none) * summary: Utility for remediation status badge. * score: 1 ### component RemediationTracker * file: src/cores/gr/pages/RemediationTracker.tsx:34 * kind: component * core: gr * spec: (none) * summary: Utility for remediation tracker. * score: 1 ### component ReminderScheduleStep * file: src/cores/gr/wizards/coi-cycle/steps/ReminderScheduleStep.tsx:24 * kind: component * core: gr * spec: (none) * summary: Displays computed reminder dates; optional toggles when settings exist. * score: 2 ### component ReportIncidentDialog * file: src/cores/gr/components/incidents/ReportIncidentDialog.tsx:39 * kind: component * core: gr * spec: (none) * summary: Dialog for reporting a new incident. * score: 2 ### component RequirementCard * file: src/cores/gr/components/RequirementCard.tsx:23 * kind: component * core: gr * spec: (none) * summary: Utility for requirement card. * score: 1 ### component RequirementDetail * file: src/cores/gr/pages/RequirementDetail.tsx:47 * kind: component * core: gr * spec: (none) * summary: Utility for requirement detail. * score: 1 ### component RequirementFormDialog * file: src/cores/gr/components/RequirementFormDialog.tsx:81 * kind: component * core: gr * spec: (none) * summary: Utility for requirement form dialog. * score: 1 ### component RequirementLibrary * file: src/cores/gr/pages/RequirementLibrary.tsx:89 * kind: component * core: gr * spec: (none) * summary: Utility for requirement library. * score: 1 ### component ReviewActivateStep * file: src/cores/gr/wizards/training-course/steps/ReviewActivateStep.tsx:32 * kind: component * core: gr * spec: (none) * summary: Review step: summary of all wizard data with activate toggle. * score: 2 ### component ReviewLaunchStep * file: src/cores/gr/wizards/coi-cycle/steps/ReviewLaunchStep.tsx:28 * kind: component * core: gr * spec: (none) * summary: Read-only summary of wizard inputs with jump-back actions. * score: 2 ### component ReviewStep * file: src/cores/gr/wizards/compliance-requirement/steps/ReviewStep.tsx:21 * kind: component * core: gr * spec: (none) * summary: Review step — summary of all wizard data before submission. * score: 2 ### component RiskAssessmentFormDialog * file: src/cores/gr/components/RiskAssessmentFormDialog.tsx:52 * kind: component * core: gr * spec: (none) * summary: Utility for risk assessment form dialog. * score: 1 ### component RiskAssessmentWizardPage * file: src/cores/gr/wizards/risk-assessment/RiskAssessmentWizardPage.tsx:36 * kind: component * core: gr * spec: (none) * summary: Risk Assessment Wizard page. * score: 1 ### component RiskCard * file: src/cores/gr/components/RiskCard.tsx:22 * kind: component * core: gr * spec: (none) * summary: Utility for risk card. * score: 1 ### component RiskCategoryBadge * file: src/cores/gr/components/RiskCategoryBadge.tsx:31 * kind: component * core: gr * spec: (none) * summary: Utility for risk category badge. * score: 1 ### component RiskDetail * file: src/cores/gr/pages/RiskDetail.tsx:36 * kind: component * core: gr * spec: (none) * summary: Utility for risk detail. * score: 1 ### component RiskFormDialog * file: src/cores/gr/components/RiskFormDialog.tsx:48 * kind: component * core: gr * spec: (none) * summary: Utility for risk form dialog. * score: 1 ### component RiskLinkManager * file: src/cores/gr/components/RiskLinkManager.tsx:32 * kind: component * core: gr * spec: (none) * summary: Utility for risk link manager. * score: 1 ### component RiskList * file: src/cores/gr/pages/RiskList.tsx:55 * kind: component * core: gr * spec: (none) * summary: Utility for risk list. * score: 1 ### component RiskMitigationCard * file: src/cores/gr/components/RiskMitigationCard.tsx:23 * kind: component * core: gr * spec: (none) * summary: Utility for risk mitigation card. * score: 1 ### component RiskMitigationFormDialog * file: src/cores/gr/components/RiskMitigationFormDialog.tsx:44 * kind: component * core: gr * spec: (none) * summary: Utility for risk mitigation form dialog. * score: 1 ### component RiskRatingBadge * file: src/cores/gr/components/RiskRatingBadge.tsx:39 * kind: component * core: gr * spec: (none) * summary: Utility for risk rating badge. * score: 1 ### component RiskStatusBadge * file: src/cores/gr/components/RiskStatusBadge.tsx:26 * kind: component * core: gr * spec: (none) * summary: Utility for risk status badge. * score: 1 ### component RiskStrategyBadge * file: src/cores/gr/components/RiskStrategyBadge.tsx:29 * kind: component * core: gr * spec: (none) * summary: Utility for risk strategy badge. * score: 1 ### component ScheduleStep * file: src/cores/gr/wizards/compliance-requirement/steps/ScheduleStep.tsx:33 * kind: component * core: gr * spec: (none) * summary: Schedule step — frequency, deadlines, and optional custom recurrence. * score: 2 ### component SeverityBadge * file: src/cores/gr/components/incidents/SeverityBadge.tsx:33 * kind: component * core: gr * spec: (none) * summary: Renders a severity badge with semantic color coding per CONTEXT.md.Accepts arbitrary strings (defensive against late-bound enumvalues from the database) — falls back to a variant with the raw string as the label when the key is missing. * score: 2 ### component StandardComplianceBadge * file: src/cores/gr/components/StandardComplianceBadge.tsx:25 * kind: component * core: gr * spec: (none) * summary: Utility for standard compliance badge. * score: 1 ### component StatusBadge * file: src/cores/gr/components/incidents/StatusBadge.tsx:26 * kind: component * core: gr * spec: (none) * summary: Renders an incident status badge with semantic color coding. * score: 2 ### component SubmitRegulatoryReportDialog * file: src/cores/gr/components/incidents/SubmitRegulatoryReportDialog.tsx:35 * kind: component * core: gr * spec: (none) * summary: Dialog for submitting a regulatory report to an agency. * score: 2 ### component SurveyStatusBadge * file: src/cores/gr/components/SurveyStatusBadge.tsx:27 * kind: component * core: gr * spec: (none) * summary: Utility for survey status badge. * score: 1 ### component TracerEvidenceStep * file: src/cores/gr/wizards/tracer-pack/steps/TracerEvidenceStep.tsx:56 * kind: component * core: gr * spec: (none) * summary: Tracer pack wizard step for reviewing and selecting evidence items.Displays evidence for the selected domain with verification status indicators. * params: * props — Component props - accreditationId: Selected accreditation ID - domain: Selected domain/category - evidenceUpdates: Map of evidence ID to verification status updates - onEvidenceUpdatesChange: Callback to update evidence verification statuses * returns: React component for evidence selection step * score: 2 ### component TracerPacksTab * file: src/cores/gr/components/accreditation/tracer/TracerPacksTab.tsx:22 * kind: component * core: gr * spec: (none) * summary: Tracer packs listing and generation. * score: 2 ### component TracerReadinessHub * file: src/cores/gr/components/accreditation/TracerReadinessHub.tsx:21 * kind: component * core: gr * spec: (none) * summary: Hub container for all GR-16 tracer readiness sub-tabs. * score: 2 ### component TrainingCategoryBadge * file: src/cores/gr/components/TrainingCategoryBadge.tsx:27 * kind: component * core: gr * spec: (none) * summary: Utility for training category badge. * score: 1 ### component TrainingCompletionDialog * file: src/cores/gr/components/TrainingCompletionDialog.tsx:43 * kind: component * core: gr * spec: (none) * summary: Utility for training completion dialog. * score: 1 ### component TrainingContentStep * file: src/cores/gr/wizards/training-course/steps/TrainingContentStep.tsx:24 * kind: component * core: gr * spec: (none) * summary: Content step: select policies to link and prerequisite courses. * score: 2 ### component TrainingCourseCard * file: src/cores/gr/components/TrainingCourseCard.tsx:21 * kind: component * core: gr * spec: (none) * summary: Utility for training course card. * score: 1 ### component TrainingCourseFormDialog * file: src/cores/gr/components/TrainingCourseFormDialog.tsx:46 * kind: component * core: gr * spec: (none) * summary: Utility for training course form dialog. * score: 1 ### component TrainingCourseWizardDialog * file: src/cores/gr/wizards/training-course/TrainingCourseWizardDialog.tsx:32 * kind: component * core: gr * spec: (none) * summary: Training Course Setup Wizard dialog. * score: 2 ### component TrainingDetail * file: src/cores/gr/pages/TrainingDetail.tsx:27 * kind: component * core: gr * spec: (none) * summary: Utility for training detail. * score: 1 ### component TrainingEnrollmentDialog * file: src/cores/gr/components/TrainingEnrollmentDialog.tsx:37 * kind: component * core: gr * spec: (none) * summary: Utility for training enrollment dialog. * score: 1 ### component TrainingEnrollmentTable * file: src/cores/gr/components/TrainingEnrollmentTable.tsx:28 * kind: component * core: gr * spec: (none) * summary: Utility for training enrollment table. * score: 1 ### component TrainingLibrary * file: src/cores/gr/pages/TrainingLibrary.tsx:40 * kind: component * core: gr * spec: (none) * summary: Utility for training library. * score: 1 ### component TrainingStatusBadge * file: src/cores/gr/components/TrainingStatusBadge.tsx:28 * kind: component * core: gr * spec: (none) * summary: Utility for training status badge. * score: 1 ### component WhistleblowerIntakePage * file: src/cores/gr/pages/WhistleblowerIntakePage.tsx:62 * kind: component * core: gr * spec: (none) * summary: Public anonymous whistleblower intake form. * score: 2 ### component WhistleblowerReportsTab * file: src/cores/gr/components/governance/WhistleblowerReportsTab.tsx:40 * kind: component * core: gr * spec: GR-15 * summary: Compliance-officer tab listing whistleblower reports and their investigationstatus.Gated on the permission, which also drives whether is enabled. Renders reports in a status-badgedtable and lets an officer open to advance areport through its lifecycle (received → acknowledged → investigating →resolved → closed). Shows skeletons while loading and a sanitized errorstate on failure. Takes no props. * score: 5 ### component WhistleblowerStatusDialog * file: src/cores/gr/components/governance/WhistleblowerStatusDialog.tsx:51 * kind: component * core: gr * spec: GR-15 * summary: Modal dialog for transitioning a whistleblower report's investigationstatus.Lets a compliance officer pick a new status (received, acknowledged,investigating, resolved, closed), record resolution notes, and acknowledge anon-retaliation attestation, then persists the change via. Re-syncs its fields whenever the selected reportchanges. Closes on success. * params: * props — Component props. - reportId: Identifier of the whistleblower report being updated. - currentStatus: Current status used to seed the selector. - currentNotes: Existing resolution notes used to seed the field. - open: Whether the dialog is open. - onOpenChange: Callback invoked with the new open state. * score: 5 ## Functions & utilities ### function applyInServiceMatrixClientFilters * file: src/cores/gr/hooks/useInServiceMatrix.ts:42 * kind: function * core: gr * spec: (none) * summary: Pure helper exported for unit testing. Applies client-side / / filters to a server-returnedmatrix without touching the network. * score: 4 ### function bandCellStatus * file: src/cores/gr/lib/complianceBanding.ts:29 * kind: function * core: gr * spec: (none) * summary: Band a compliance score into a cell status using the org's thresholds.Mirrors the SQL: a score = compliantPct (or a cell with no countablerequirements, signaled by score === 100 with total 0) is ;= atRiskPct is ; otherwise . * params: * score — Compliance score percentage (0–100). * thresholds — Compliant/at-risk percent cutoffs. * returns: The derived cell status. * score: 4 ### function buildAuditReportContent * file: src/cores/gr/templates/audit-report-content.ts:25 * kind: function * core: gr * spec: (none) * summary: Provides build audit report content functionality. * score: 4 ### function buildCEUTranscriptContent * file: src/cores/gr/templates/ceu-transcript-content.ts:11 * kind: function * core: gr * spec: (none) * summary: Provides build CEU transcript content functionality. * score: 4 ### function buildComplianceContext * file: src/cores/gr/ai/prompts.ts:146 * kind: function * core: gr * spec: (none) * summary: Build context string for AI prompts * score: 4 ### function buildEvidenceRows * file: src/cores/gr/wizards/compliance-requirement/mapper.ts:96 * kind: function * core: gr * spec: (none) * summary: Build one evidence row per document requirement (empty array when none). * score: 4 ### function buildInitialComplianceCheckRow * file: src/cores/gr/wizards/compliance-requirement/mapper.ts:54 * kind: function * core: gr * spec: (none) * summary: Build the initial scheduled compliance check, or when no schedule datewas provided. // are required NOT-NULL columns;an open scheduled check is modeled as . * score: 4 ### function buildPolicyLinkRows * file: src/cores/gr/wizards/training-course/mapper.ts:31 * kind: function * core: gr * spec: (none) * summary: One row per selected policy (empty array when none). * score: 4 ### function buildProcedureGenerationContext * file: src/cores/gr/ai/procedurePrompts.ts:53 * kind: function * core: gr * spec: (none) * summary: Build a concise context header for procedure generation from policy metadata. Constructs a newline-separated string containing any provided policy metadata fields (policy title, category, organization type, and accreditations) in a readable "Key: Value" format. Fields that are omitted or empty are skipped. * params: * params — The input metadata object - policyTitle: Optional policy title to include - policyContent: Optional full policy content (not included in the returned context) - category: Optional category to include - organizationType: Optional organization type to include - accreditations: Optional list of accreditations; when present and non-empty, they are joined with commas * returns: A newline-separated string of included metadata entries (e.g., ), or an empty string if no fields are provided * score: 4 ### function buildProcedureGenerationUserPrompt * file: src/cores/gr/ai/procedurePrompts.ts:94 * kind: function * core: gr * spec: (none) * summary: Constructs the user-facing prompt used to generate a step-by-step procedure from a policy. Builds a formatted prompt containing the policy title, policy content, and optional additional context, plus explicit instructions for producing a comprehensive procedure (title, purpose, ordered steps with types, responsible roles, time estimates, verification points, and decision branches). * params: * params — The parameters for prompt construction - policyTitle: The policy's title - policyContent: The full text of the policy to be converted into a procedure - additionalContext: Optional supplemental context to include in the prompt * returns: The complete prompt string ready to be supplied to the procedure generation system * example: | const prompt = buildProcedureGenerationUserPrompt( policyTitle: "Medication Administration", policyContent: "All medications must be administered according to provider orders...", additionalContext: "Facility: Sunrise Care; Accreditation: HIPAA"); * score: 4 ### function buildProcedureStepsText * file: src/cores/gr/lib/procedure-pdf-steps.ts:39 * kind: function * core: gr * spec: (none) * summary: Build the "Procedure Steps" body text for the procedure PDF export.Steps are ordered by . Each step renders as a numbered block: followed by an indented instructions line when present. Forsteps whose is OR whose is, a signature/date placeholder line is appended (AC-8 then-clause). * params: * steps — Procedure steps to render (e.g. rows). * returns: A single newline-delimited string suitable for the PDF "Procedure Steps" section. * score: 4 ### function buildRequirementCustomFields * file: src/cores/gr/wizards/compliance-requirement/mapper.ts:13 * kind: function * core: gr * spec: (none) * summary: Wizard-only fields that have no column on . * score: 4 ### function buildRequirementLinkRows * file: src/cores/gr/wizards/training-course/mapper.ts:44 * kind: function * core: gr * spec: (none) * summary: One row per selected regulatory requirement(empty array when none) — GR-UX-13 AC-5. * score: 4 ### function buildRiskAssessmentContent * file: src/cores/gr/templates/risk-assessment-content.ts:20 * kind: function * core: gr * spec: (none) * summary: Provides build risk assessment content functionality. * score: 4 ### function buildTrainingCertificateContent * file: src/cores/gr/templates/training-certificate-content.ts:10 * kind: function * core: gr * spec: (none) * summary: Provides build training certificate content functionality. * score: 4 ### function calculateRiskScoreAndRating * file: src/cores/gr/hooks/useRiskAssessment.ts:12 * kind: function * core: gr * spec: (none) * summary: Calculate risk score and rating from likelihood and impactMatches database trigger logic * score: 4 ### function canAdvanceFromDocumentsStep * file: src/cores/gr/wizards/contract-creation/hooks/useContractWizardValidation.ts:105 * kind: function * core: gr * spec: (none) * summary: Validates whether user can advance from the documents step.Missing primary document generates a warning (not an error). * params: * primaryDocumentId — ID of the uploaded primary document * returns: Validation result with warning if no document attached * score: 4 ### function cellStatusClasses * file: src/cores/gr/lib/complianceBanding.ts:54 * kind: function * core: gr * spec: (none) * summary: Semantic token classes for a heatmap cell by status. Returns full literalclass strings (never interpolated) so Tailwind's static scanner keeps them. * score: 4 ### function cellStatusLabel * file: src/cores/gr/lib/complianceBanding.ts:39 * kind: function * core: gr * spec: (none) * summary: Human-readable label for a cell status (text-not-color, WCAG 2.2 AA). * score: 4 ### function computeCompletionRate * file: src/cores/gr/lib/stepAnalyticsFormulas.ts:17 * kind: function * core: gr * spec: (none) * summary: Compute completion rate (%) given completed and total executions.Returns 0 when total is 0 (no division-by-zero). * params: * completed — Number of completed step executions. * total — Total number of step executions. * returns: Rate rounded to one decimal place. * score: 4 ### function computeReadinessScore * file: src/cores/gr/lib/readiness-score.ts:72 * kind: function * core: gr * spec: (none) * summary: Compute the accreditation readiness score. * score: 4 ### function computeReminderDates * file: src/cores/gr/wizards/coi-cycle/utils/reminderDates.ts:47 * kind: function * core: gr * spec: (none) * summary: Computes D-30, D-14, D-7, D-1 reminder dates from an ISO date string (). * score: 4 ### function computeSkipRate * file: src/cores/gr/lib/stepAnalyticsFormulas.ts:30 * kind: function * core: gr * spec: (none) * summary: Compute skip rate (%) given skipped and total executions.Returns 0 when total is 0. * params: * skipped — Number of skipped step executions. * total — Total number of step executions. * returns: Rate rounded to one decimal place. * score: 4 ### function convertStepsToWorkflow * file: src/cores/gr/ai/useAIProcedureGeneration.ts:61 * kind: function * core: gr * spec: (none) * summary: Transform an array of AI-generated procedure steps into React Flow-compatible nodes and edges. Produces positioned workflow nodes and connecting edges from each , creating one node per step and edges that connect consecutive steps. For steps of type with multiple , a separate outgoing edge is created per option (all edges currently target the next step). * params: * steps — Array of AI-generated procedure steps; each step must include fields such as , , , and optional . * returns: An object with (an array of ) and (an array of ) ready for rendering in React Flow. * example: | // const nodes, edges = convertStepsToWorkflow(aiSteps); * score: 4 ### function exportImprovementReport * file: src/cores/gr/utils/qiReportExport.ts:406 * kind: function * core: gr * spec: (none) * summary: Implements export improvement report behavior. * score: 4 ### function exportInServiceMatrixToCsv * file: src/cores/gr/utils/exportInServiceMatrixCsv.ts:35 * kind: function * core: gr * spec: (none) * summary: Build CSV content for the in-service matrix and trigger a browser download.One row per employee × course pair. * score: 4 ### function exportMetricHistoryReport * file: src/cores/gr/utils/qiReportExport.ts:312 * kind: function * core: gr * spec: (none) * summary: Implements export metric history report behavior. * score: 4 ### function exportPDSACycleReport * file: src/cores/gr/utils/qiReportExport.ts:231 * kind: function * core: gr * spec: (none) * summary: Implements export pdsacycle report behavior. * score: 4 ### function exportQIProjectReport * file: src/cores/gr/utils/qiReportExport.ts:159 * kind: function * core: gr * spec: (none) * summary: Implements export qiproject report behavior. * score: 4 ### function formatAvgTimeOnStep * file: src/cores/gr/lib/stepAnalyticsFormulas.ts:45 * kind: function * core: gr * spec: (none) * summary: Format average seconds-on-step into a compact human label.- / → - second → - seconds → - otherwise → * params: * seconds — Average seconds spent on the step (may be null). * returns: Display string. * score: 4 ### function getInServiceStatusMeta * file: src/cores/gr/components/inservice/inServiceStatusMeta.ts:36 * kind: function * core: gr * spec: GR-19 * summary: Resolves the display metadata (label, icon, badge variant, and glyph) for anin-service compliance cell status.Falls back to the metadata when the status has no mapping, socallers always receive a renderable result. * params: * status — The in-service matrix cell status to look up. * returns: The describing how to render the status. * score: 5 ### function getNextCapStatuses * file: src/cores/gr/lib/cap-state-machine.ts:37 * kind: function * core: gr * spec: (none) * summary: Get the list of valid next statuses from a given status. * score: 4 ### function getReadinessLevel * file: src/cores/gr/lib/readiness-score.ts:122 * kind: function * core: gr * spec: (none) * summary: Get a human-readable readiness level from a score. * score: 4 ### function getSkipRateTier * file: src/cores/gr/lib/stepAnalyticsFormulas.ts:61 * kind: function * core: gr * spec: (none) * summary: Determine skip-rate severity tier for icon + label rendering.Never use color alone — UI pairs this with an icon and text label. * params: * skipRatePct — Skip rate percentage (0–100). * returns: 'low' (10%), 'moderate' (10–25%), or 'high' (25%). * score: 4 ### function getSubmitButtonLabel * file: src/cores/gr/wizards/contract-creation/hooks/useContractWizardValidation.ts:122 * kind: function * core: gr * spec: (none) * summary: Returns appropriate submit button label based on target contract status. * params: * targetStatus — The target status for the contract ('draft' or 'pending\_approval') * returns: Button label string * score: 4 ### function hasRiskAssessmentDraft * file: src/cores/gr/wizards/risk-assessment/useRiskAssessmentWizard.ts:500 * kind: function * core: gr * spec: (none) * summary: Convenience: check whether a draft exists without instantiating the hook. * score: 4 ### function isPrerequisiteSafe * file: src/cores/gr/wizards/training-course/validation.ts:45 * kind: function * core: gr * spec: (none) * summary: Detects cycles in prerequisite graph.Returns true if adding as a prerequisite of the new coursewould NOT create a cycle (i.e., it's safe). * score: 4 ### function isValidCapTransition * file: src/cores/gr/lib/cap-state-machine.ts:30 * kind: function * core: gr * spec: (none) * summary: Check if a transition from one status to another is valid. * score: 4 ### function loadAccreditationEvidence * file: src/cores/gr/hooks/useAccreditationDetail.ts:38 * kind: function * core: gr * spec: (none) * summary: Load all evidence for an accreditation. rows arelinked EITHER to a standard () OR a survey () — thetable CHECK enforces exactly one. Survey-linked auto-evidence (attached by theGR-14-EN-01 regulatory-report consumer) was previously dropped because the readfiltered on only (#1375). This loads both link types and merges +de-dupes by id (newest first) so survey-linked evidence surfaces in the Evidencetab. Both reads are explicitly org-scoped (defense in depth atop RLS).Exported (with an injectable client) so the merge/scoping can be exerciseddirectly in integration tests without mounting the full hook (react-query +OrganizationContext). * score: 4 ### function logRegulatoryReportAudit * file: src/cores/gr/utils/regulatoryAudit.ts:29 * kind: function * core: gr * spec: (none) * summary: Logs a regulatory report status transition to pf\_audit\_logs.Non-fatal — errors are silently caught and reported to Sentryso they never block the submit/acknowledge flow. * score: 4 ### function mapWizardDataToPayload * file: src/cores/gr/wizards/contract-creation/mapper.ts:36 * kind: function * core: gr * spec: (none) * summary: Maps wizard form data to a contract creation payload.Field names mirror the seeded template (the source of truth). The single column carries the entered value; defaults to USD; is the DB enum ( is theoptional FK, resolved by the page when a matching lookuprow exists). only accepts the DB enum values (//); the wizard never offers . * params: * data — Complete wizard form data from all steps * contractTypeId — Optional resolved FK for the selected enum * returns: CreateContractPayload ready for submission to useContractMutation.createContract * score: 4 ### function registerGRWizardSteps * file: src/cores/gr/wizards/registerGRWizardSteps.ts:12 * kind: function * core: gr * spec: (none) * summary: Registers GR-specific custom wizard step components during module bootstrap.Currently registers , ,and via the PF-41 API. * see: * registerWizardStep * score: 4 ### function registerTrainingCourseWizardSteps * file: src/cores/gr/wizards/training-course/registerTrainingCourseWizardSteps.ts:12 * kind: function * core: gr * spec: (none) * summary: Registers GR training course wizard custom step components. * score: 4 ### function requiresFinancialFields * file: src/cores/gr/wizards/contract-creation/hooks/useContractWizardValidation.ts:53 * kind: function * core: gr * spec: (none) * summary: Determines if financial fields are required for the selected contract type.Prefers an explicit flag on the matching row, then falls back to the enum-based heuristic ( / ). * params: * context — Selected contract-type enum and the contract-types lookup list * returns: true if financial fields are required, false otherwise * score: 4 ### function resolveReminderOffsetsFromSettings * file: src/cores/gr/wizards/coi-cycle/utils/reminderDates.ts:25 * kind: function * core: gr * spec: (none) * summary: Reads reminder offsets from .Falls back to default offsets when missing or invalid. * score: 4 ### function validateCapTransition * file: src/cores/gr/lib/cap-state-machine.ts:46 * kind: function * core: gr * spec: (none) * summary: Validate that a transition to 'verified\_closed' includes closure evidence. * returns: Error message or null if valid. * score: 4 ### function validateDateOrdering * file: src/cores/gr/wizards/contract-creation/hooks/useContractWizardValidation.ts:74 * kind: function * core: gr * spec: (none) * summary: Validates that the expiration date is on or after the effective date. * params: * effectiveDate — Effective (start) date string (YYYY-MM-DD) * expirationDate — Expiration (end) date string (YYYY-MM-DD) * returns: Validation result with errors if expiration effective * score: 4 ### function validateFinalSubmit * file: src/cores/gr/wizards/contract-creation/hooks/useContractWizardValidation.ts:133 * kind: function * core: gr * spec: (none) * summary: Validates the wizard data before final submission.Checks for missing required fields and financial fields when required by contract type. * params: * data — Partial wizard form data * context — Contract type context for financial requirements * returns: Validation result with errors for missing required fields * score: 4 # hr — Public API surface Source: https://docs.encoreos.io/api/hr Per-symbol API documentation for the hr area, generated from TSDoc blocks. Refresh with `npm run docs:api:generate`. # hr — Public API surface ## Types & interfaces ### interface AdvanceStatusDialogProps * file: src/cores/hr/components/internal-mobility/AdvanceStatusDialog.tsx:21 * kind: interface * core: hr * spec: HR-35 * summary: Props for : dialog open state and the internalapplication whose status is being advanced. * score: 3 ### interface ApplyInternalPositionDialogProps * file: src/cores/hr/components/internal-mobility/ApplyInternalPositionDialog.tsx:17 * kind: interface * core: hr * spec: HR-35 * summary: Props for : dialog open state plus thetarget position's ID and title shown in the apply form. * score: 3 ### interface BenefitsGuide * file: src/cores/hr/benefits/hooks/useBenefitsGuides.ts:15 * kind: interface * core: hr * spec: (none) * summary: Row shape returned from hr\_benefits\_guides. * score: 2 ### interface BuildCompensationStatementOptions * file: src/cores/hr/templates/compensation-statement-content.ts:56 * kind: interface * core: hr * spec: (none) * summary: Options for buildCompensationStatementContent * score: 2 ### interface BuildPunchInsertArgs * file: src/cores/hr/lib/time/buildPunchInsert.ts:10 * kind: interface * core: hr * spec: (none) * summary: HR-05 Phase 0 — build the insert payload. is intentionally NOT set here. The DB trigger (migration 20260623120100) resolves thetimezone from the punch's (or the employee's ),making it authoritative for every source — clock, manual backfill, and import —so a client cannot spoof or skew the bucketing timezone. * score: 2 ### interface BundlePolicyPickerValue * file: src/cores/hr/components/handbook/BundlePolicyPicker.tsx:15 * kind: interface * core: hr * spec: none * summary: A single selected policy within a handbook bundle: the policy reference, itsdisplay order within the bundle, and whether acknowledgement is mandatory. * score: 3 ### type CaseDocumentEntityType * file: src/cores/hr/employee-relations/hooks/useCaseDocuments.ts:13 * kind: type * core: hr * spec: HR-14 * summary: The kind of employee-relations case a document is attached to — an incident,investigation, grievance, or disciplinary record. * score: 3 ### interface CaseDocumentRecord * file: src/cores/hr/employee-relations/hooks/useCaseDocuments.ts:22 * kind: interface * core: hr * spec: HR-14 * summary: Metadata for a file uploaded to an employee-relations case: storage location,size and content type, classification, optional description, and uploadprovenance. * score: 3 ### interface CodeMappingSuggestion * file: src/cores/hr/components/proliant/ProliantCodeMappingConfig.tsx:22 * kind: interface * core: hr * spec: (none) * summary: An AI-suggested Encore value for a single code-mapping row (HR-44-EN-02). * score: 2 ### interface ColumnDef * file: src/cores/hr/components/data-import/HRCsvImportDialog.tsx:27 * kind: interface * core: hr * spec: (none) * summary: Column definition for CSV parsing * score: 2 ### interface ColumnMapping * file: src/cores/hr/hooks/useAIImportAssist.ts:17 * kind: interface * core: hr * spec: (none) * summary: AI-suggested column mapping * score: 1 ### interface ColumnMappingResult * file: src/cores/hr/hooks/useAIImportAssist.ts:24 * kind: interface * core: hr * spec: (none) * summary: Column mapping result from AI * score: 1 ### type CommunicationType * file: src/cores/hr/hooks/ats/useCandidateCommunications.ts:37 * kind: type * core: hr * spec: HR-09 * summary: The channel a candidate communication is sent through — email or SMS. * score: 3 ### interface CommunicationWithCandidate * file: src/cores/hr/hooks/ats/useCandidateCommunications.ts:54 * kind: interface * core: hr * spec: HR-09 * summary: A candidate communication joined with its candidate and (optionally) thetemplate it was generated from, for display in communication history views. * score: 3 ### interface CompensationSummary * file: src/cores/hr/compensation/hooks/useCompensationSummary.ts:23 * kind: interface * core: hr * spec: HR-15 * summary: Aggregated compensation metrics for the dashboard summary widget: totalsalary cost, pending increase volume and value, the average compa-ratio, thenumber of employees at band maximum, the salaried headcount, the activesalary-band count, the number of generated total-compensation statements, andthe planned merit budget (sum of increase amounts not yet applied). * score: 3 ### interface CompensationWarning * file: src/cores/hr/templates/compensation-statement-content.ts:50 * kind: interface * core: hr * spec: (none) * summary: Warning metadata for compensation statement generation * score: 2 ### type CompetencyRating * file: src/cores/hr/constants/performance.ts:159 * kind: type * core: hr * spec: HR-10 * summary: A per-competency assessment rating value, derived from the options (e.g. meets, developing, not demonstrated,not assessed). * score: 3 ### interface CompletenessInput * file: src/cores/hr/services/eeo1/completeness.ts:11 * kind: interface * core: hr * spec: (none) * summary: HR-42 EEO-1 — completeness scoring + filing gate (pure, no I/O).An active employee is "complete" for EEO-1 iff they have a job-category mappingAND a non-declined gender AND a non-declined ethnicity. The federal filing shouldnot proceed below the org's configured completeness threshold(, default 95) unless the filerexplicitly acknowledges the gap. (HR-42 AC-2.) * score: 2 ### type ComplianceStatus * file: src/cores/hr/self-service/utils/oversightUtils.ts:8 * kind: type * core: hr * spec: (none) * summary: HR-19: Clinical Oversight Utility FunctionsPure utility functions for clinical oversight widgets.Extracted to avoid recreation on each render. * score: 2 ### interface Contractor1099ExportRow * file: src/cores/hr/hooks/contractors/useContractor1099Export.ts:10 * kind: interface * core: hr * spec: (none) * summary: Export-oriented row for 1099-NEC reporting.Includes contractor details alongside payment aggregates. * score: 2 ### interface CreateBenefitsGuideInput * file: src/cores/hr/benefits/hooks/useBenefitsGuides.ts:77 * kind: interface * core: hr * spec: (none) * summary: Input for creating a benefits guide. * score: 2 ### interface CredentialsValue * file: src/cores/hr/components/proliant/setup-steps/CredentialsStep.tsx:25 * kind: interface * core: hr * spec: HR-UX-13 * summary: Values collected on Step 1 of the Proliant setup wizard (Credentials & Environment).Passed as the controlled prop to .- selects sandbox vs production endpoint.- / are write-only (stored in Vault; never read back).- overrides the default UAT endpoint in sandbox mode.- must be before activating a production integration. * see: * CredentialsStep * score: 5 ### interface CsvDownloadPayload * file: src/cores/hr/lib/time/triggerCsvDownload.ts:12 * kind: interface * core: hr * spec: (none) * summary: The CSV payload + suggested filename extracted from an invoke result. * score: 2 ### interface CurrentEnrollmentInfo * file: src/cores/hr/benefits/hooks/useCurrentEnrollments.ts:17 * kind: interface * core: hr * spec: (none) * summary: Simplified enrollment info for comparison display * score: 2 ### interface CurrentSalaryResult * file: src/cores/hr/compensation/hooks/useCurrentSalary.ts:23 * kind: interface * core: hr * spec: HR-15 * summary: Resolved current salary for an employee, including the pay type, effectivedate, and which source (active pay rate vs. employee base salary) the valuewas derived from. * score: 3 ### type DeliveryChannel * file: src/cores/hr/benefits/hooks/useEnrollmentReminders.ts:50 * kind: type * core: hr * spec: HR-11 * summary: Channel(s) through which an enrollment reminder is delivered — in-appnotification, email, or both. * score: 3 ### type DeliveryStatus * file: src/cores/hr/hooks/ats/useCandidateCommunications.ts:46 * kind: type * core: hr * spec: HR-09 * summary: Delivery lifecycle state of a candidate communication, progressing from/ through / and engagement(/) to failure terminals (/). * score: 3 ### interface DisciplinaryActionExportDialogProps * file: src/cores/hr/components/documents/DisciplinaryActionExportDialog.tsx:40 * kind: interface * core: hr * spec: HR-14 * summary: Props for : dialog open state and thedisciplinary action record to render into the exported document. * score: 3 ### type DisciplinaryFormInput * file: src/cores/hr/employee-relations/lib/disciplinaryPayload.ts:23 * kind: type * core: hr * spec: HR-14 * summary: Raw form values captured for a disciplinary action before normalization intoa Supabase insert/update payload (blank date and uuid strings are latercoerced to undefined). * score: 3 ### type DisciplinaryFormValues * file: src/cores/hr/employee-relations/components/DisciplinaryActionForm.tsx:76 * kind: type * core: hr * spec: HR-14 * summary: Validated field values for the disciplinary action form, inferred from the (which enforces, among other rules, that any end datefalls after the effective date). * score: 3 ### interface DLQEntry * file: src/cores/hr/hooks/ats/useBackgroundCheckDLQ.ts:34 * kind: interface * core: hr * spec: HR-09 * summary: A background-check webhook dead-letter row enriched with a flagindicating whether a retry is currently permitted for the entry. * score: 3 ### type DLQStatus * file: src/cores/hr/hooks/ats/useBackgroundCheckDLQ.ts:26 * kind: type * core: hr * spec: HR-09 * summary: Processing state of a background-check webhook dead-letter entry: awaiting aretry (), currently , successfully , or given upon (). * score: 3 ### interface EmployeeMatchResult * file: src/cores/hr/utils/employeeNameMatcher.ts:20 * kind: interface * core: hr * spec: (none) * summary: Result of a successful match * score: 1 ### interface EmployeeOvertimeItem * file: src/cores/hr/hooks/time/useOvertimeTracking.ts:8 * kind: interface * core: hr * spec: (none) * summary: One employee's weekly scheduled hours and overtime flags for the Capacity Dashboard. * score: 2 ### interface EmployeePersonnelDocument * file: src/cores/hr/hooks/employees/useEmployeePersonnelDocuments.ts:22 * kind: interface * core: hr * spec: (none) * summary: A single employee personnel-file document as surfaced on the employeeprofile: storage location (/), displaymetadata, and the resolved . * score: 2 ### interface EmploymentVerificationExportDialogProps * file: src/cores/hr/components/documents/EmploymentVerificationExportDialog.tsx:40 * kind: interface * core: hr * spec: HR-01 * summary: Props for : dialog open state, theemployee being verified, and the issuing company/verifier identity renderedinto the verification letter. * score: 3 ### interface EncoreValueCellProps * file: src/cores/hr/components/proliant/ProliantCodeMappingConfig.tsx:440 * kind: interface * core: hr * spec: (none) * summary: Props for — the constrained Encore-value picker for asingle Proliant code-mapping row. * score: 2 ### interface EngagementTrendPoint * file: src/cores/hr/engagement/hooks/useEngagementTrends.ts:18 * kind: interface * core: hr * spec: HR-17 * summary: One historical engagement data point used for trend charts: the periodwindow, that period's overall engagement score and response rate, the priorperiod's score, and the computed trend direction. * score: 3 ### interface EnrollmentDraft * file: src/cores/hr/benefits/utils/enrollmentDraft.ts:16 * kind: interface * core: hr * spec: (none) * summary: Draft with metadata * score: 1 ### interface EnrollmentProgressData * file: src/cores/hr/benefits/hooks/useEnrollmentProgress.ts:39 * kind: interface * core: hr * spec: HR-11 * summary: Aggregate enrollment progress for an open enrollment period: eligible andenrolled counts, the resulting completion percentage, and the roster ofemployees still outstanding. * score: 3 ### interface ExitInterviewAnalytics * file: src/cores/hr/engagement/hooks/useExitInterviewAnalytics.ts:18 * kind: interface * core: hr * spec: HR-17 * summary: Aggregated exit-interview metrics for a reporting window: interview volumeand completion, the breakdown of reasons for leaving, recommendation andrehire-eligibility rates, average turnaround time, and the covered period. * score: 3 ### interface ExitInterviewAnalyticsFilters * file: src/cores/hr/engagement/hooks/useExitInterviewAnalytics.ts:42 * kind: interface * core: hr * spec: HR-17 * summary: Filters narrowing the exit-interview analytics query by completion daterange, interview type, and/or department. * score: 3 ### interface FinalizeW2sInput * file: src/cores/hr/hooks/tax-forms/useTaxFormRunMutation.ts:335 * kind: interface * core: hr * spec: (none) * summary: Provides finalize and distribute w2s queries and mutation actions scoped to the current organization. * score: 2 ### type GapSeverity * file: src/cores/hr/components/skills/SkillGapIndicator.tsx:16 * kind: type * core: hr * spec: HR-13 * summary: Severity of a skill gap between an employee's proficiency and the requiredlevel, ordered from (no gap) through and to. * score: 3 ### interface GeofenceCheckResult * file: src/cores/hr/utils/geofence-utils.ts:27 * kind: interface * core: hr * spec: (none) * summary: Result of a geofence check. * score: 1 ### interface GrievanceAssignee * file: src/cores/hr/employee-relations/hooks/useGrievanceAssignees.ts:13 * kind: interface * core: hr * spec: HR-14 * summary: An HR staff member currently assigned to a grievance, identified byassignment ID, profile, and contact details. * score: 3 ### interface GrievanceAssigneeCandidate * file: src/cores/hr/employee-relations/hooks/useHrGrievanceAssigneeCandidates.ts:12 * kind: interface * core: hr * spec: HR-14 * summary: A user eligible to be assigned to a grievance — an HR or system admin —surfaced with display details and a human-readable role label for selection. * score: 3 ### type GrievanceFormInput * file: src/cores/hr/employee-relations/lib/grievancePayload.ts:17 * kind: type * core: hr * spec: HR-14 * summary: Raw form values captured for a grievance before normalization into a Supabaseinsert/update payload (blank date strings are later coerced to undefined). * score: 3 ### interface HeadcountDrilldownTableProps * file: src/cores/hr/components/headcount/HeadcountDrilldownTable.tsx:11 * kind: interface * core: hr * spec: HR-08 * summary: Props for : the section title, the per-groupheadcount buckets to tabulate, and an optional map for humanizing group keys. * score: 3 ### interface HeadcountStatusChartProps * file: src/cores/hr/components/headcount/HeadcountStatusChart.tsx:12 * kind: interface * core: hr * spec: HR-08 * summary: Props for : the headcount summary to chart and aloading flag that renders a skeleton placeholder. * score: 3 ### interface HeadcountSummaryCardsProps * file: src/cores/hr/components/headcount/HeadcountSummaryCards.tsx:12 * kind: interface * core: hr * spec: HR-08 * summary: Props for : the headcount summary to surface anda loading flag that renders skeleton cards. * score: 3 ### interface HRBackgroundCheckWithFCRA * file: src/cores/hr/hooks/ats/useFCRAWorkflow\.ts:26 * kind: interface * core: hr * spec: (none) * summary: Extended HRBackgroundCheck with FCRA-specific fieldsfor type-safe access in compliance workflows.Uses null instead of undefined to match DB types. * score: 2 ### type HRCandidateCommunication * file: src/cores/hr/hooks/ats/useCandidateCommunications.ts:22 * kind: type * core: hr * spec: HR-09 * summary: A persisted candidate communication record (a sent email or SMS) as stored in. * score: 3 ### type HRCandidateCommunicationInsert * file: src/cores/hr/hooks/ats/useCandidateCommunications.ts:30 * kind: type * core: hr * spec: HR-09 * summary: The insert shape for creating a new candidate communication record in. * score: 3 ### interface HRDocumentExportDialogProps * file: src/cores/hr/components/documents/HRDocumentExportDialog.tsx:25 * kind: interface * core: hr * spec: HR-01 * summary: Props for , the shared export dialog used acrossHR document types: dialog open state, display copy, the in-flight generationflag, the export callback (parameterized by letterhead and approval-blocktoggle), and options controlling the approval-block checkbox. * score: 3 ### interface HrisDetectionResult * file: src/cores/hr/utils/hrisTemplateDetector.ts:14 * kind: interface * core: hr * spec: (none) * summary: Detected HRIS format result * score: 1 ### type HRProliantCodeMapping * file: src/cores/hr/hooks/proliant/useProliantIntegration.ts:759 * kind: type * core: hr * spec: HR-44 * summary: Row type for the table, auto-generated fromthe Supabase schema. Represents a single earning, deduction, or accrualcode synced from Proliant alongside its mapped Encore value. * score: 3 ### interface InternalApplicantsTableProps * file: src/cores/hr/components/internal-mobility/InternalApplicantsTable.tsx:20 * kind: interface * core: hr * spec: HR-35 * summary: Props for : optional filters narrowing theroster to a specific position and/or application status. * score: 3 ### interface IssueManualCheckInput * file: src/cores/hr/hooks/proliant/useProliantManualCheck.ts:76 * kind: interface * core: hr * spec: (none) * summary: Input for . * score: 1 ### interface LeaveRequest * file: src/cores/hr/utils/pto-normalization.ts:9 * kind: interface * core: hr * spec: (none) * summary: HR-08: Workload Drivers & Staffing NeedsTime-off normalization service for staffing adjustmentsCalculates expected PTO rates and applies adjustments to base staffingto account for anticipated time-off. * score: 2 ### interface LifeEventBannerProps * file: src/cores/hr/benefits/components/employee/LifeEventBanner.tsx:24 * kind: interface * core: hr * spec: HR-11 * summary: Configures the life-event banner: a callback fired when the employee choosesto report a life event, and a flag to suppress the banner entirely. * ## see: * score: 5 ### interface LifeEventRequestDialogProps * file: src/cores/hr/benefits/components/employee/LifeEventRequestDialog.tsx:51 * kind: interface * core: hr * spec: HR-11 * summary: Configures the life-event request dialog: its open state, an open/closechange handler, and an optional success callback fired after submission. * ## see: * score: 5 ### interface ManualCheckLineItem * file: src/cores/hr/hooks/proliant/useProliantManualCheck.ts:68 * kind: interface * core: hr * spec: (none) * summary: One earning line on the manual check (mirrors the edge-fn input shape). * score: 2 ### interface ManualCheckResult * file: src/cores/hr/hooks/proliant/useProliantManualCheck.ts:92 * kind: interface * core: hr * spec: (none) * summary: Response envelope from the edge function. * score: 2 ### interface MatchableEmployee * file: src/cores/hr/utils/employeeNameMatcher.ts:12 * kind: interface * core: hr * spec: (none) * summary: Minimal employee profile for matching * score: 2 ### interface NotEnrolledEmployee * file: src/cores/hr/benefits/hooks/useEnrollmentProgress.ts:23 * kind: interface * core: hr * spec: HR-11 * summary: A benefits-eligible employee who has not yet submitted an enrollment for theopen enrollment period being tracked. * score: 3 ### interface NotificationTemplate * file: src/cores/hr/constants/interviewNotificationTemplates.ts:5 * kind: interface * core: hr * spec: (none) * summary: HR-09 Phase 2.3: Interview Notification Templates * score: 2 ### interface NotificationTemplate * file: src/cores/hr/constants/offerNotificationTemplates.ts:5 * kind: interface * core: hr * spec: (none) * summary: HR-09 Phase 3.2: Offer Notification Templates * score: 2 ### type OfferInsertPayload * file: src/cores/hr/hooks/ats/useOfferMutation.ts:17 * kind: type * core: hr * spec: (none) * summary: Payload for creating an HR-09 offer. Omits server-derived fields(, ) and makes the recipient flexible: an offermay target an application, a standalone candidate, or an existing employee(internal promotion/transfer), so those id fields are optional. * score: 2 ### interface OnboardingPushOutcome * file: src/cores/hr/services/proliantOnboardingPushService.ts:10 * kind: interface * core: hr * spec: (none) * summary: Outcome of a completion-triggered onboarding push attempt. * score: 2 ### interface OpenEnrollmentGateResult * file: src/cores/hr/benefits/hooks/useOpenEnrollmentGate.ts:32 * kind: interface * core: hr * spec: HR-11 * summary: Result of : whether the employee is blockedpending enrollment action, the period driving that requirement, theemployee's ID for mutations, and the loading flag. * score: 3 ### interface OversightRelationshipCardProps * file: src/cores/hr/components/oversight/OversightRelationshipCard.tsx:36 * kind: interface * core: hr * spec: HR-19 * summary: Props for : the clinical-oversightrelationship to display. * score: 3 ### interface OversightRelationshipDialogProps * file: src/cores/hr/components/oversight/OversightRelationshipDialog.tsx:27 * kind: interface * core: hr * spec: HR-19 * summary: Props for : dialog open state, an optionalexisting relationship to edit, and optional prefilled values for creation. * score: 3 ### type PayCalendarEventStatus * file: src/cores/hr/hooks/payroll/usePayCalendarEvents.ts:31 * kind: type * core: hr * spec: (none) * summary: Valid status values for pay calendar events (must match DB CHECK) * score: 2 ### type PayrollFrequency * file: src/cores/hr/benefits/utils/costCalculator.ts:34 * kind: type * core: hr * spec: (none) * summary: Supported payroll frequency types. * score: 2 ### type PayrollRunSurface * file: src/cores/hr/lib/payroll/selectPayrollRunSurface.ts:5 * kind: type * core: hr * spec: (none) * summary: Which payroll-run surface the single entry point renders. * score: 2 ### interface PayStubWithEmployee * file: src/cores/hr/hooks/payroll/usePayStubs.ts:37 * kind: interface * core: hr * spec: (none) * summary: Pay stub with employee and computed summary from stub\_data * score: 2 ### type PerformanceRating * file: src/cores/hr/constants/performance.ts:21 * kind: type * core: hr * spec: HR-10 * summary: A performance review overall rating value, derived from the options (exceeds, meets, or below expectations). * score: 3 ### type PersonnelDocumentSource * file: src/cores/hr/hooks/employees/useEmployeePersonnelDocuments.ts:15 * kind: type * core: hr * spec: (none) * summary: Where a personnel-file document originated, derived from its tags/customfields by : an HR admin upload, an employee self-upload,a generated job description, or anything else (). * score: 2 ### interface PIPExportDialogProps * file: src/cores/hr/components/documents/PIPExportDialog.tsx:24 * kind: interface * core: hr * spec: HR-10 * summary: Props for : dialog open state and the performanceimprovement plan data rendered into the exported document. * score: 3 ### interface PortalOffer * file: src/cores/hr/pages/portal/portalOffers.ts:15 * kind: interface * core: hr * spec: (none) * summary: Offer fields returned by the hr-portal-offers / hr-offer-accept edge functions. * score: 2 ### interface PositionActionsProps * file: src/cores/hr/components/positions/PositionActions.tsx:34 * kind: interface * core: hr * spec: HR-23 * summary: Props for : the position being acted on and its currentstatus, which determines the available lifecycle actions. * score: 3 ### interface PositionAssignmentDialogProps * file: src/cores/hr/components/positions/PositionAssignmentDialog.tsx:17 * kind: interface * core: hr * spec: HR-23 * summary: Props for : the position to assign into plusdialog open state. * score: 3 ### interface PositionAssignmentsTabProps * file: src/cores/hr/components/positions/PositionAssignmentsTab.tsx:18 * kind: interface * core: hr * spec: HR-23 * summary: Props for : the position whose assignments arelisted. * score: 3 ### interface PositionHistoryTabProps * file: src/cores/hr/components/positions/PositionHistoryTab.tsx:11 * kind: interface * core: hr * spec: HR-23 * summary: Props for : the position whose lifecycle history isshown. * score: 3 ### interface PositionStatusBadgeProps * file: src/cores/hr/components/positions/PositionStatusBadge.tsx:31 * kind: interface * core: hr * spec: HR-23 * summary: Props for : the position status to render (fallingback to draft when null/unknown) and an optional className override. * score: 3 ### interface PositionTransitionDialogProps * file: src/cores/hr/components/positions/PositionTransitionDialog.tsx:15 * kind: interface * core: hr * spec: HR-23 * summary: Props for : dialog open state, display copy(title, description, confirm label), whether a reason is required, whether theaction is destructive, the confirm handler (receiving the optional reason),and an in-flight pending flag. * score: 3 ### interface PrefilledData * file: src/cores/hr/components/oversight/OversightRelationshipDialog.tsx:15 * kind: interface * core: hr * spec: HR-19 * summary: Initial values used to seed the oversight relationship form when creating anew relationship from a known context (e.g. a specific supervisor/supervisee). * score: 3 ### interface ProliantCodeMappingRow * file: src/cores/hr/utils/proliantCandidateTargets.ts:23 * kind: interface * core: hr * spec: (none) * summary: Minimal shape of an row the request builder reads. * score: 2 ### interface ProliantMappedEmployee * file: src/cores/hr/hooks/proliant/useProliantManualCheck.ts:18 * kind: interface * core: hr * spec: (none) * summary: One employee eligible for a manual check (ACTIVE Proliant mapping). * score: 2 ### interface ProliantPaystubEntry * file: src/cores/hr/self-service/hooks/useProliantTaxDocuments.ts:36 * kind: interface * core: hr * spec: (none) * summary: One mirrored paystub entry (Encore-side rows; no vendor call to list). * score: 2 ### interface ProliantReportListItem * file: src/cores/hr/hooks/proliant/useProliantReports.ts:19 * kind: interface * core: hr * spec: (none) * summary: One sanitized vendor report (mirrors the edge-fn mapper output). * score: 2 ### interface ProliantReportsResult * file: src/cores/hr/hooks/proliant/useProliantReports.ts:31 * kind: interface * core: hr * spec: (none) * summary: Response envelope from the edge function. * score: 2 ### interface ProliantTaxDocumentMeta * file: src/cores/hr/self-service/hooks/useProliantTaxDocuments.ts:26 * kind: interface * core: hr * spec: (none) * summary: One metadata-only tax document (mirrors the edge-fn mapper output). * score: 2 ### type ProliantTaxDocumentRequest * file: src/cores/hr/self-service/hooks/useProliantTaxDocuments.ts:71 * kind: type * core: hr * spec: (none) * summary: Inputs for the single-document fetch (one of the two identifier forms). * score: 2 ### interface ProliantTaxDocumentsResult * file: src/cores/hr/self-service/hooks/useProliantTaxDocuments.ts:45 * kind: interface * core: hr * spec: (none) * summary: Response envelope from the list action. * score: 2 ### interface ReconciliationLike * file: src/cores/hr/components/wizards/payroll-run/hooks/reconciliationView\.ts:8 * kind: interface * core: hr * spec: (none) * summary: HR-UX-25: client-side reconciliation variance math (AC-5 / FR-5). Mirrors theedge gate — headcount is always gated exactly; gross/deductionsare gated against the configured tolerance. Submit may proceed only when thepersisted reconciliation row passed OR was overridden. * score: 2 ### interface ReminderHistoryEntry * file: src/cores/hr/benefits/hooks/useEnrollmentReminders.ts:38 * kind: interface * core: hr * spec: HR-11 * summary: One row of enrollment-reminder history: the employee reminded, when the mostrecent reminder was sent, and which notification template was used. * score: 3 ### interface RoleMapping * file: src/cores/hr/utils/employeeCsvParser.ts:31 * kind: interface * core: hr * spec: (none) * summary: Role mapping by job title pattern * score: 2 ### interface RoleSuggestion * file: src/cores/hr/hooks/useAIImportAssist.ts:33 * kind: interface * core: hr * spec: (none) * summary: Role suggestion from AI * score: 1 ### interface RoleSuggestionResult * file: src/cores/hr/hooks/useAIImportAssist.ts:41 * kind: interface * core: hr * spec: (none) * summary: Role suggestion result from AI * score: 2 ### interface RoutingNumberValidation * file: src/cores/hr/utils/routing-number.ts:8 * kind: interface * core: hr * spec: (none) * summary: HR-PAY-03: ABA Routing Number ValidationImplements the ABA checksum algorithm for validating US bank routing numbers.Formula: 3\*(d1+d4+d7) + 7\*(d2+d5+d8) + (d3+d6+d9) mod 10 === 0 * score: 2 ### type RunPhase * file: src/cores/hr/components/wizards/payroll-run/hooks/pollState.ts:10 * kind: type * core: hr * spec: (none) * summary: HR-UX-25: pure poll-state machine for the embedded Proliant payroll-runwizard. Proliant exposes no webhooks, so every long-running operation'sstatus is obtained by polling (AC-4 / FR-8 / NFR-2). These helpers classify arun phase as in-flight (keep polling), terminal (may show completion/failure),or idle (draft / no run yet) so the UI never claims completion before aterminal status is observed. * score: 2 ### interface SalaryChangeExportDialogProps * file: src/cores/hr/components/documents/SalaryChangeExportDialog.tsx:32 * kind: interface * core: hr * spec: HR-15 * summary: Props for : dialog open state and the salarychange record rendered into the exported notification letter. * score: 3 ### interface ScorecardTemplatePreset * file: src/cores/hr/constants/scorecardTemplatePresets.ts:15 * kind: interface * core: hr * spec: HR-09 * summary: A pre-built interview scorecard preset for a behavioral-health role: itsdisplay name and description, the competencies it assesses, and the ratingscale applied to each. * score: 3 ### interface SeparationAgreementExportDialogProps * file: src/cores/hr/components/documents/SeparationAgreementExportDialog.tsx:33 * kind: interface * core: hr * spec: HR-03 * summary: Props for : dialog open state and theseparation record rendered into the exported agreement document. * score: 3 ### interface SetProliantCodeMappingInput * file: src/cores/hr/hooks/proliant/useProliantIntegration.ts:840 * kind: interface * core: hr * spec: HR-44 * summary: Input shape for .Targets a specific code-mapping row by and carries the new and flag to persist via the update mutation. * see: * useSetProliantCodeMapping * score: 5 ### type SkillCardData * file: src/cores/hr/components/skills/SkillCard.tsx:35 * kind: type * core: hr * spec: HR-13 * summary: Union of the skill shapes a can render — a skill enrichedwith usage statistics or one carrying its parent-skill reference. * score: 3 ### type SkillCategoryFilterValue * file: src/cores/hr/components/skills/SkillCategoryFilter.tsx:18 * kind: type * core: hr * spec: HR-13 * summary: Selected value of the skill-category filter: a specific or the sentinel meaning no category restriction. * score: 3 ### interface SkillMatchInput * file: src/cores/hr/utils/internalMobility/skillMatch.ts:9 * kind: interface * core: hr * spec: (none) * summary: HR-35: Advisory skill-match scoring.Per spec §FR-4 and CAC-004 (29 CFR Part 1607), this score MUST NOTbe used to auto-reject candidates. UI may use it for sort only when is true. * score: 2 ### type StepFieldErrors * file: src/cores/hr/components/fingerprint-clearance/wizard/useFingerprintClearanceWizardState.ts:62 * kind: type * core: hr * spec: HR-UX-11 * summary: Map of wizard field name to its current validation error message; empty whenthe active step has no outstanding errors. * score: 3 ### interface SurveyAnalyticsData * file: src/cores/hr/engagement/hooks/useSurveyAnalytics.ts:20 * kind: interface * core: hr * spec: HR-17 * summary: Aggregated engagement-survey metrics for the dashboard: the overallengagement score and response rate, the trend direction and score changeversus the prior period, per-department scores, active survey count, andtotal responses for the period. * score: 3 ### interface SurveyAnalyticsFilters * file: src/cores/hr/engagement/hooks/useSurveyAnalytics.ts:45 * kind: interface * core: hr * spec: HR-17 * summary: Filters narrowing the survey-analytics query by analytics period type, aspecific survey, and/or an explicit date range. * score: 3 ### interface SyncProliantCodesInput * file: src/cores/hr/hooks/proliant/useProliantIntegration.ts:796 * kind: interface * core: hr * spec: HR-44 * summary: Input shape for .Identifies the integration and Proliant company whose earning, deduction,and accrual codes should be fetched via the edge function. * see: * useSyncProliantCodes * score: 5 ### interface TimesheetPunchDetail * file: src/cores/hr/lib/timesheetPunchDisplay.ts:2 * kind: interface * core: hr * spec: (none) * summary: Punch fields joined for timesheet entry audit display (HR-05). * score: 2 ### interface TransferExecutionDialogProps * file: src/cores/hr/components/internal-mobility/TransferExecutionDialog.tsx:28 * kind: interface * core: hr * spec: HR-35 * summary: Props for : dialog open state and the acceptedinternal application whose transfer is being executed. * score: 3 ### interface TriggerSyncInput * file: src/cores/hr/hooks/proliant/useProliantIntegration.ts:314 * kind: interface * core: hr * spec: HR-44 * summary: Input shape for .Specifies which integration, entity type, company, and direction to syncwhen requesting an on-demand run via the edge function. * see: * useTriggerProliantSync * score: 5 ### interface UpdateBenefitsGuideInput * file: src/cores/hr/benefits/hooks/useBenefitsGuides.ts:86 * kind: interface * core: hr * spec: (none) * summary: Input for updating a benefits guide. * score: 2 ### interface UpsertProliantIntegrationInput * file: src/cores/hr/hooks/proliant/useProliantIntegration.ts:73 * kind: interface * core: hr * spec: HR-44 * summary: Input shape for creating or updating a Proliant integration record.Passed to ; partial updates are supported —omitted fields keep their database defaults. * see: * useUpsertProliantIntegration * score: 5 ### interface UseBenefitsStatementPdfOptions * file: src/cores/hr/benefits/hooks/useBenefitsStatementPdf.ts:22 * kind: interface * core: hr * spec: HR-11 * summary: Configuration for , selecting the optionalletterhead and template used when rendering the statement. * score: 3 ### interface UseBenefitsStatementPdfResult * file: src/cores/hr/benefits/hooks/useBenefitsStatementPdf.ts:35 * kind: interface * core: hr * spec: HR-11 * summary: Return shape of : a generator callback plusits in-flight and error state. * score: 3 ### interface UseCompensationAnalysisDetailOptions * file: src/cores/hr/compensation/hooks/useCompensationAnalysisDetail.ts:12 * kind: interface * core: hr * spec: HR-15 * summary: Options for : the analysis to fetch andan optional flag to suspend the query. * score: 3 ### interface UseCompensationAnalysisListOptions * file: src/cores/hr/compensation/hooks/useCompensationAnalysisList.ts:13 * kind: interface * core: hr * spec: HR-15 * summary: Options for : optional filter criteria,1-based pagination, and a flag to suspend the query. * score: 3 ### interface UseCompensationCostReportOptions * file: src/cores/hr/compensation/hooks/useCompensationCostReport.ts:12 * kind: interface * core: hr * spec: HR-15 * summary: Options for : extends the report groupingand scoping options with a flag to suspend the query. * score: 3 ### interface UseCurrentSalaryOptions * file: src/cores/hr/compensation/hooks/useCurrentSalary.ts:11 * kind: interface * core: hr * spec: HR-15 * summary: Options for : the employee whose salary to resolve andan optional flag to suspend the query. * score: 3 ### interface UseFingerprintClearanceWizardStateReturn * file: src/cores/hr/components/fingerprint-clearance/wizard/useFingerprintClearanceWizardState.ts:80 * kind: interface * core: hr * spec: HR-UX-11 * summary: Return shape of : the step model andnavigation cursor, the in-progress payload and validation errors, fieldmutation and step-transition callbacks, and PF-41 draft-persistencepassthrough (save, discard, auto-save status). * score: 3 ### interface UseMeritIncreaseDetailOptions * file: src/cores/hr/compensation/hooks/useMeritIncreaseDetail.ts:12 * kind: interface * core: hr * spec: HR-15 * summary: Options for : the merit increase to fetch andan optional flag to suspend the query. * score: 3 ### interface UseMeritIncreaseListOptions * file: src/cores/hr/compensation/hooks/useMeritIncreaseList.ts:13 * kind: interface * core: hr * spec: HR-15 * summary: Options for : optional filter criteria, 1-basedpagination, and a flag to suspend the query. * score: 3 ### interface UseMyCompensationStatementOptions * file: src/cores/hr/compensation/hooks/useMyCompensationStatement.ts:13 * kind: interface * core: hr * spec: HR-15 * summary: Options for : optional year/status filtersscoping the self-service statements, and a flag to suspend the query. * score: 3 ### interface UseSalaryBandDetailOptions * file: src/cores/hr/compensation/hooks/useSalaryBandDetail.ts:12 * kind: interface * core: hr * spec: HR-15 * summary: Options for : the salary band to fetch and anoptional flag to suspend the query. * score: 3 ### interface UseSalaryBandListOptions * file: src/cores/hr/compensation/hooks/useSalaryBandList.ts:13 * kind: interface * core: hr * spec: HR-15 * summary: Options for : optional filter criteria, 1-basedpagination, and a flag to suspend the query. * score: 3 ### interface UseSubmitFingerprintClearanceWizardReturn * file: src/cores/hr/components/fingerprint-clearance/wizard/useSubmitFingerprintClearanceWizard.ts:34 * kind: interface * core: hr * spec: HR-UX-11 * summary: Return shape of : the submitcallback (resolving to the saved record id or null on failure), the in-flightflag, and the latest server-side error message plus a reset for it. * score: 3 ### interface UseTotalCompensationStatementDetailOptions * file: src/cores/hr/compensation/hooks/useTotalCompensationStatementDetail.ts:12 * kind: interface * core: hr * spec: HR-15 * summary: Options for : the statement tofetch and an optional flag to suspend the query. * score: 3 ### interface UseTotalCompensationStatementListOptions * file: src/cores/hr/compensation/hooks/useTotalCompensationStatementList.ts:13 * kind: interface * core: hr * spec: HR-15 * summary: Options for : optional filtercriteria, 1-based pagination, and a flag to suspend the query. * score: 3 ### interface VerificationLike * file: src/cores/hr/components/wizards/payroll-run/hooks/runGuards.ts:9 * kind: interface * core: hr * spec: (none) * summary: HR-UX-25: step-gate guards + idempotency-key reuse (AC-3 / AC-6 / FR-4 / FR-6/ NFR-1). The verify gate blocks forward navigation while any Proliantverification test is failed-and-unapproved; the idempotency-key helper returnsthe run's existing key unchanged so a retry reuses it and the run is neverdouble-submitted. * score: 2 ### interface W2ValidationResult * file: src/cores/hr/services/w2/w2-form-builder.ts:170 * kind: interface * core: hr * spec: (none) * summary: Validate W-2 form data for common issues. * score: 2 ### interface W3EmployerInfo * file: src/cores/hr/services/w2/w3-calculator.ts:19 * kind: interface * core: hr * spec: (none) * summary: Minimal employer info needed for W-3 calculation.This narrows the interface to only required fields. * score: 2 ## Hooks ### hook useAbandonDLQEntry * file: src/cores/hr/hooks/ats/useBackgroundCheckDLQ.ts:272 * kind: hook * core: hr * spec: (none) * summary: Abandon an entry (stop retrying) * score: 4 ### hook useACACompliance * file: src/cores/hr/benefits/hooks/useACACompliance.ts:15 * kind: hook * core: hr * spec: (none) * summary: Hook for listing ACA compliance records by tax year * score: 1 ### hook useACAComplianceDetail * file: src/cores/hr/benefits/hooks/useACACompliance.ts:73 * kind: hook * core: hr * spec: (none) * summary: Hook for fetching a single ACA compliance record * score: 1 ### hook useACAComplianceMutation * file: src/cores/hr/benefits/hooks/useACAComplianceMutation.ts:29 * kind: hook * core: hr * spec: (none) * summary: Hook for ACA compliance mutations * score: 1 ### hook useACAEmployeeCoverage * file: src/cores/hr/benefits/hooks/useACACompliance.ts:129 * kind: hook * core: hr * spec: (none) * summary: Hook for listing employee coverage records for a compliance year * score: 1 ### hook useACAEmployeeCoverageMutation * file: src/cores/hr/benefits/hooks/useACAComplianceMutation.ts:220 * kind: hook * core: hr * spec: (none) * summary: Hook for ACA employee coverage mutations * score: 1 ### hook useAccrualEngine * file: src/cores/hr/hooks/leave/useAccrualEngine.ts:9 * kind: hook * core: hr * spec: (none) * summary: Hook for managing accrual engine. * score: 1 ### hook useActionPlanDetail * file: src/cores/hr/engagement/hooks/useActionPlanDetail.ts:14 * kind: hook * core: hr * spec: (none) * summary: Hook to fetch a single action plan by ID * score: 4 ### hook useActionPlanList * file: src/cores/hr/engagement/hooks/useActionPlanList.ts:19 * kind: hook * core: hr * spec: (none) * summary: Hook to fetch action plans with filters and joins * score: 4 ### hook useActionPlanMutation * file: src/cores/hr/engagement/hooks/useActionPlanMutation.ts:24 * kind: hook * core: hr * spec: (none) * summary: Hook providing mutations for action plan operations * score: 4 ### hook useActiveBankAccounts * file: src/cores/hr/hooks/payroll/useEmployeeBankAccounts.ts:70 * kind: hook * core: hr * spec: (none) * summary: Fetch only active bank accounts for an employee.Used for payment processing. * score: 4 ### hook useActiveBenefitPlans * file: src/cores/hr/benefits/hooks/useBenefitPlans.ts:88 * kind: hook * core: hr * spec: (none) * summary: Hook for fetching active benefit plans (for dropdowns, enrollment forms) * score: 1 ### hook useActiveDeductionsForPayroll * file: src/cores/hr/hooks/payroll/useEmployeeDeductions.ts:110 * kind: hook * core: hr * spec: (none) * summary: Fetch active deductions for multiple employees (batch for payroll runs). * score: 4 ### hook useActiveDeductionTypes * file: src/cores/hr/hooks/payroll/useDeductionTypes.ts:103 * kind: hook * core: hr * spec: (none) * summary: Fetch only active deduction types (for dropdowns). * score: 4 ### hook useActiveEarningTypes * file: src/cores/hr/hooks/payroll/useEarningTypes.ts:103 * kind: hook * core: hr * spec: (none) * summary: Fetch only active earning types (for dropdowns). * score: 4 ### hook useActiveEmployeeDeductions * file: src/cores/hr/hooks/payroll/useEmployeeDeductions.ts:74 * kind: hook * core: hr * spec: (none) * summary: Fetch only active deductions for an employee that are currently effective.Used for payroll calculations. * score: 4 ### hook useActiveEnrollmentWindow * file: src/cores/hr/benefits/hooks/useLifeEvents.ts:222 * kind: hook * core: hr * spec: (none) * summary: Hook to check if employee has an active enrollment window from a life event * score: 4 ### hook useAdvanceApplicationStatus * file: src/cores/hr/hooks/internal-mobility/useAdvanceApplicationStatus.ts:27 * kind: hook * core: hr * spec: (none) * summary: HR-35 / US-2: Recruiter / hiring manager advances an internal application.Writes the new status to , sets on terminal statuses, and inserts a row in for compliance (CAC-002). Disposition is enforced both client-side(via ) and server-side (validation trigger). * score: 4 ### hook useAIColumnMapping * file: src/cores/hr/hooks/useAIImportAssist.ts:71 * kind: hook * core: hr * spec: (none) * summary: Hook for AI-powered column mapping suggestions. * returns: A mutation that accepts CSV headers and sample rows, returns AI-suggested mappings. * score: 1 ### hook useAIRoleSuggestions * file: src/cores/hr/hooks/useAIImportAssist.ts:109 * kind: hook * core: hr * spec: (none) * summary: Hook for AI-powered role suggestions. * returns: A mutation that accepts job title groups, returns AI-suggested role assignments. * score: 1 ### hook useAllBankAccounts * file: src/cores/hr/hooks/payroll/useEmployeeBankAccounts.ts:133 * kind: hook * core: hr * spec: (none) * summary: Fetch all bank accounts for an organization with employee joins.For admin views. * score: 4 ### hook useAllTimesheets * file: src/cores/hr/hooks/time/useAllTimesheets.ts:17 * kind: hook * core: hr * spec: (none) * summary: Hook for managing all timesheets. * score: 1 ### hook useApplicationDetail * file: src/cores/hr/hooks/ats/useApplicationDetail.ts:14 * kind: hook * core: hr * spec: (none) * summary: Hook for managing application detail. * score: 1 ### hook useApplicationMutation * file: src/cores/hr/hooks/ats/useApplicationMutation.ts:11 * kind: hook * core: hr * spec: (none) * summary: Hook for managing application mutation. * score: 1 ### hook useApplications * file: src/cores/hr/hooks/ats/useApplications.ts:17 * kind: hook * core: hr * spec: (none) * summary: Hook for managing applications. * score: 1 ### hook useApplyPathwayTemplate * file: src/cores/hr/hooks/skills/useApplyPathwayTemplate.ts:21 * kind: hook * core: hr * spec: (none) * summary: Applies pathway template requirements to a position. * score: 4 ### hook useApprovedLeaveForPeriod * file: src/cores/hr/hooks/leave/useApprovedLeaveForPeriod.ts:41 * kind: hook * core: hr * spec: (none) * summary: Hook for managing approved leave for period. * score: 1 ### hook useApproveRenewal * file: src/cores/hr/hooks/credentialing/useCredentialRenewalWorkflow\.ts:307 * kind: hook * core: hr * spec: (none) * summary: Provides approve renewal queries and mutation actions scoped to the current organization. * score: 4 ### hook useAvailabilityMutation * file: src/cores/hr/hooks/scheduling/useAvailabilityMutation.ts:15 * kind: hook * core: hr * spec: (none) * summary: Hook for managing availability mutation. * score: 1 ### hook useAvailabilityPreferences * file: src/cores/hr/hooks/scheduling/useAvailabilityPreferences.ts:15 * kind: hook * core: hr * spec: (none) * summary: Hook for managing availability preferences. * score: 1 ### hook useBackgroundCheck * file: src/cores/hr/hooks/ats/useBackgroundChecks.ts:142 * kind: hook * core: hr * spec: (none) * summary: Fetch a single background check by ID * score: 4 ### hook useBackgroundCheckDLQ * file: src/cores/hr/hooks/ats/useBackgroundCheckDLQ.ts:52 * kind: hook * core: hr * spec: (none) * summary: Fetch DLQ entries with optional filters * score: 4 ### hook useBackgroundCheckDLQStats * file: src/cores/hr/hooks/ats/useBackgroundCheckDLQ.ts:92 * kind: hook * core: hr * spec: (none) * summary: Get DLQ statistics * score: 1 ### hook useBackgroundCheckProviders * file: src/cores/hr/hooks/ats/useBackgroundCheckProviders.ts:32 * kind: hook * core: hr * spec: (none) * summary: Fetch all background check providers for the organization * score: 4 ### hook useBackgroundChecks * file: src/cores/hr/hooks/ats/useBackgroundChecks.ts:36 * kind: hook * core: hr * spec: (none) * summary: Fetch all background checks for the current organization * score: 4 ### hook useBackgroundChecksForApplication * file: src/cores/hr/hooks/ats/useBackgroundChecks.ts:115 * kind: hook * core: hr * spec: (none) * summary: Fetch background checks for a specific application * score: 4 ### hook useBackgroundChecksForCandidate * file: src/cores/hr/hooks/ats/useBackgroundChecks.ts:88 * kind: hook * core: hr * spec: (none) * summary: Fetch background checks for a specific candidate * score: 4 ### hook useBankAccount * file: src/cores/hr/hooks/payroll/useEmployeeBankAccounts.ts:100 * kind: hook * core: hr * spec: (none) * summary: Fetch a single bank account by ID. * score: 4 ### hook useBankAccountEncryption * file: src/cores/hr/hooks/payroll/useBankAccountEncryption.ts:38 * kind: hook * core: hr * spec: (none) * summary: Hook for encrypting bank account data via edge function. * score: 1 ### hook useBatchStaffingCalculation * file: src/cores/hr/hooks/scheduling/useBatchStaffingCalculation.ts:43 * kind: hook * core: hr * spec: (none) * summary: Hook for managing batch staffing calculation. * score: 1 ### hook useBenefitDependentMutation * file: src/cores/hr/benefits/hooks/useBenefitDependents.ts:60 * kind: hook * core: hr * spec: (none) * summary: Hook for dependent mutations * score: 1 ### hook useBenefitDependents * file: src/cores/hr/benefits/hooks/useBenefitDependents.ts:18 * kind: hook * core: hr * spec: (none) * summary: Hook for listing benefit dependents * score: 1 ### hook useBenefitEnrollmentDetail * file: src/cores/hr/benefits/hooks/useBenefitEnrollments.ts:205 * kind: hook * core: hr * spec: (none) * summary: Hook for fetching a single enrollment with full details * score: 1 ### hook useBenefitEnrollmentMutation * file: src/cores/hr/benefits/hooks/useBenefitEnrollmentMutation.ts:18 * kind: hook * core: hr * spec: (none) * summary: Hook for managing benefit enrollment mutation. * score: 1 ### hook useBenefitEnrollments * file: src/cores/hr/benefits/hooks/useBenefitEnrollments.ts:16 * kind: hook * core: hr * spec: (none) * summary: Hook for listing benefit enrollments (admin view) * score: 1 ### hook useBenefitPlanDetail * file: src/cores/hr/benefits/hooks/useBenefitPlans.ts:56 * kind: hook * core: hr * spec: (none) * summary: Hook for fetching a single benefit plan with full details * score: 1 ### hook useBenefitPlanMutation * file: src/cores/hr/benefits/hooks/useBenefitPlanMutation.ts:22 * kind: hook * core: hr * spec: (none) * summary: Hook for managing benefit plan mutation. * score: 1 ### hook useBenefitPlans * file: src/cores/hr/benefits/hooks/useBenefitPlans.ts:15 * kind: hook * core: hr * spec: (none) * summary: Hook for listing benefit plans with optional filters * score: 1 ### hook useBenefitPlanStats * file: src/cores/hr/benefits/hooks/useBenefitsAnalytics.ts:82 * kind: hook * core: hr * spec: (none) * summary: Hook for benefits plan statistics * score: 1 ### hook useBenefitsAnalytics * file: src/cores/hr/benefits/hooks/useBenefitsAnalytics.ts:15 * kind: hook * core: hr * spec: (none) * summary: Hook for benefits analytics and statistics * score: 1 ### hook useBenefitsGuideMutation * file: src/cores/hr/benefits/hooks/useBenefitsGuides.ts:100 * kind: hook * core: hr * spec: (none) * summary: Mutation hook for creating, updating, and deleting benefits guides.Handles file upload to Supabase storage and record management. * score: 4 ### hook useBenefitsGuides * file: src/cores/hr/benefits/hooks/useBenefitsGuides.ts:39 * kind: hook * core: hr * spec: (none) * summary: Fetches benefits guides for the current organization. * params: * options — Optional filters for the query. - activeOnly: If true, only fetch active guides. - enrollmentPeriodId: Filter by enrollment period. - enabled: Set to false to skip the query entirely (default: true). * score: 4 ### hook useBenefitsStatementPdf * file: src/cores/hr/benefits/hooks/useBenefitsStatementPdf.ts:58 * kind: hook * core: hr * spec: (none) * summary: Hook for generating benefits statement PDFs using PF-64. * score: 1 ### hook useBulkCreateHolidays * file: src/cores/hr/hooks/useHolidayMutation.ts:65 * kind: hook * core: hr * spec: (none) * summary: Create multiple holidays at once (for bulk import) * score: 4 ### hook useBulkCredentialCsvImport * file: src/cores/hr/hooks/credentialing/useBulkCredentialCsvImport.ts:38 * kind: hook * core: hr * spec: (none) * summary: Hook for bulk importing employee credentials via edge function. * returns: React Query mutation for credential import. * score: 1 ### hook useBulkCredentialImport * file: src/cores/hr/hooks/credentialing/useBulkCredentialImport.ts:103 * kind: hook * core: hr * spec: (none) * summary: Hook for managing bulk credential import. * score: 1 ### hook useBulkCredentialVerification * file: src/cores/hr/hooks/credentialing/useBulkCredentialVerification.ts:25 * kind: hook * core: hr * spec: (none) * summary: Hook for managing bulk credential verification. * score: 1 ### hook useBulkEmployeeImport * file: src/cores/hr/hooks/employees/useBulkEmployeeImport.ts:55 * kind: hook * core: hr * spec: (none) * summary: Hook that provides a mutation for bulk-importing employee roster data into the current organization. Calls a server-side edge function to import an array of employee rows,optionally creating user accounts for active employees. * returns: A React Query mutation object whose mutate/mutateAsync functions accept and resolve to . * score: 4 ### hook useBulkLeaveBalanceImport * file: src/cores/hr/hooks/leave/useBulkLeaveBalanceImport.ts:39 * kind: hook * core: hr * spec: (none) * summary: Hook for bulk importing leave balance data via edge function. * returns: React Query mutation for leave balance import. * score: 1 ### hook useBulkOptOut * file: src/cores/hr/hooks/ats/useTCPAConsent.ts:208 * kind: hook * core: hr * spec: (none) * summary: Bulk opt-out for a phone number across all consent types * score: 4 ### hook useBulkOversightSessionImport * file: src/cores/hr/hooks/oversight/useBulkOversightSessionImport.ts:99 * kind: hook * core: hr * spec: (none) * summary: Hook for managing bulk oversight session import. * score: 1 ### hook useBulkPayRateImport * file: src/cores/hr/hooks/payroll/useBulkPayRateImport.ts:38 * kind: hook * core: hr * spec: (none) * summary: Hook for bulk importing pay rate history data via edge function. * returns: React Query mutation for pay rate import. * score: 1 ### hook useBulkSendCommunication * file: src/cores/hr/hooks/ats/useCandidateCommunications.ts:299 * kind: hook * core: hr * spec: (none) * summary: Send bulk communications to multiple candidates * score: 4 ### hook useBulkSetProliantTaxForm * file: src/cores/hr/hooks/proliant/useProliantIntegration.ts:688 * kind: hook * core: hr * spec: HR-44 * summary: Mutation that stamps a tax form code (e.g. ) onto every active employeein the organization who does not already have one set. Employees are processedin chunks of and skipped when is already populated. Returns counts. * returns: TanStack ; call with . * score: 5 ### hook useBulkTimePunchImport * file: src/cores/hr/hooks/time/useBulkTimePunchImport.ts:34 * kind: hook * core: hr * spec: (none) * summary: Hook for bulk importing time punch history via edge function. * returns: React Query mutation for time punch import. * score: 1 ### hook useCalculatedStaffCount * file: src/cores/hr/hooks/scheduling/useStaffingCalculation.ts:183 * kind: hook * core: hr * spec: (none) * summary: Simple hook to get just the calculated staff count * score: 4 ### hook useCalculatePayrollTaxes * file: src/cores/hr/hooks/payroll/useCalculatePayrollTaxes.ts:75 * kind: hook * core: hr * spec: (none) * summary: Hook for managing calculate payroll taxes. * score: 1 ### hook useCalculationMutation * file: src/cores/hr/hooks/payroll/useCalculationMutation.ts:37 * kind: hook * core: hr * spec: (none) * summary: Hook for managing calculation mutation. * score: 1 ### hook useCancelEmployeeDeduction * file: src/cores/hr/hooks/payroll/useEmployeeDeductionMutation.ts:232 * kind: hook * core: hr * spec: (none) * summary: Cancel a deduction. * score: 1 ### hook useCancelOversightSession * file: src/cores/hr/hooks/oversight/useOversightSessionMutation.ts:115 * kind: hook * core: hr * spec: (none) * summary: Hook for managing cancel oversight session. * score: 1 ### hook useCancelPaymentBatch * file: src/cores/hr/hooks/payroll/usePaymentBatchMutation.ts:289 * kind: hook * core: hr * spec: (none) * summary: Cancel a pending payment batch * score: 4 ### hook useCancelRenewalWorkflow * file: src/cores/hr/hooks/credentialing/useCredentialRenewalWorkflow\.ts:489 * kind: hook * core: hr * spec: (none) * summary: Provides cancel renewal workflow queries and mutation actions scoped to the current organization. * score: 4 ### hook useCandidateCommunicationHistory * file: src/cores/hr/hooks/ats/useCandidateCommunications.ts:143 * kind: hook * core: hr * spec: (none) * summary: Fetch communications for a specific candidate (org-scoped) * score: 4 ### hook useCandidateCommunications * file: src/cores/hr/hooks/ats/useCandidateCommunications.ts:91 * kind: hook * core: hr * spec: (none) * summary: Fetch communications with optional filters * score: 4 ### hook useCandidateDetail * file: src/cores/hr/hooks/ats/useCandidateDetail.ts:14 * kind: hook * core: hr * spec: (none) * summary: Hook for managing candidate detail. * score: 1 ### hook useCandidateMutation * file: src/cores/hr/hooks/ats/useCandidateMutation.ts:12 * kind: hook * core: hr * spec: (none) * summary: Hook for managing candidate mutation. * score: 1 ### hook useCandidatePortalAccount * file: src/cores/hr/hooks/ats/useCandidatePortal.ts:66 * kind: hook * core: hr * spec: (none) * summary: Fetch portal account for a specific candidate (org-scoped) * score: 4 ### hook useCandidates * file: src/cores/hr/hooks/ats/useCandidates.ts:18 * kind: hook * core: hr * spec: (none) * summary: Hook for managing candidates. * score: 1 ### hook useCanManageGrievanceAssignments * file: src/cores/hr/employee-relations/hooks/useCanManageGrievanceAssignments.ts:14 * kind: hook * core: hr * spec: (none) * summary: Platform admins, org admins, and HR employee-relations admins can manage grievances(create on behalf of employees, assign staff, update status/resolution). * score: 4 ### hook useCanStartSurvey * file: src/cores/hr/engagement/hooks/useMyActiveSurveys.ts:113 * kind: hook * core: hr * spec: (none) * summary: Checks if the current user can start a new response for a survey.Returns false if:- Survey is not active- User already has a completed response- Survey is past end date * score: 4 ### hook useCapacityDashboard * file: src/cores/hr/hooks/scheduling/useCapacityDashboard.ts:47 * kind: hook * core: hr * spec: (none) * summary: Hook for querying capacity analytics across a date range * score: 1 ### hook useCaptureConsent * file: src/cores/hr/hooks/ats/useTCPAConsent.ts:109 * kind: hook * core: hr * spec: (none) * summary: Capture SMS consent * score: 1 ### hook useCareerPathList * file: src/cores/hr/succession/hooks/useCareerPathList.ts:12 * kind: hook * core: hr * spec: (none) * summary: Hook for managing career path list. * score: 1 ### hook useCareerPathMutation * file: src/cores/hr/succession/hooks/useCareerPathMutation.ts:14 * kind: hook * core: hr * spec: (none) * summary: Hook for managing career path mutation. * score: 1 ### hook useCarryoverEngine * file: src/cores/hr/hooks/leave/useCarryoverEngine.ts:26 * kind: hook * core: hr * spec: (none) * summary: Hook for managing carryover engine. * score: 1 ### hook useCaseDocuments * file: src/cores/hr/employee-relations/hooks/useCaseDocuments.ts:53 * kind: hook * core: hr * spec: (none) * summary: Fetches documents uploaded directly to an employee relations case record. * score: 4 ### hook useCaseDocumentUpload * file: src/cores/hr/employee-relations/hooks/useCaseDocuments.ts:88 * kind: hook * core: hr * spec: (none) * summary: Uploads a file to storage and records metadata on the case in hr\_case\_documents. * score: 4 ### hook useChangeDeductionStatus * file: src/cores/hr/hooks/payroll/useEmployeeDeductionMutation.ts:157 * kind: hook * core: hr * spec: (none) * summary: Change the status of an employee deduction. * score: 4 ### hook useCheckrSDK * file: src/cores/hr/components/checkr/CheckrSDKLoader.tsx:155 * kind: hook * core: hr * spec: (none) * summary: Hook for checking Checkr SDK availability. * score: 1 ### hook useCheckrSessionToken * file: src/cores/hr/hooks/ats/useCheckrSessionToken.ts:49 * kind: hook * core: hr * spec: (none) * summary: Fetches and manages a Checkr session token (and its expiry) via a Supabase edge function. Returns reactive state and actions to obtain, store, clear, and inspect a Checkr session token fetched from the 'checkr-session-token' Supabase edge function. The hook exposes loading and error state and accepts optional scopes and organizationId to include in the request. * params: * options — Configuration for token requests - scopes: Array of scopes to request for the token; defaults to - organizationId: Optional organization ID to include in the request body * returns: UseCheckrSessionTokenReturn - An object containing: - : the current session token string or - : ISO timestamp string when the token expires or - : sanitized error message or - : structured error code from the edge function or - : while a fetch is in progress - : async function to request a token; resolves to the token string or - : function to clear stored token and related state * example: | const token, isLoading, error, fetchToken, clearToken = useCheckrSessionToken( scopes: \['order'], organizationId: 'org\_123' ); * score: 4 ### hook useClassificationTestMutation * file: src/cores/hr/hooks/contractors/useClassificationTestMutation.ts:17 * kind: hook * core: hr * spec: (none) * summary: Provides mutations for creating and updating contractor classification tests. * returns: An object containing and mutation objects. * score: 4 ### hook useClassificationTests * file: src/cores/hr/hooks/contractors/useClassificationTests.ts:12 * kind: hook * core: hr * spec: (none) * summary: Fetches classification tests for a specific contractor within the current organization. * params: * contractorId — The UUID of the contractor. * returns: A React Query result containing an array of classification test rows. * score: 4 ### hook useClonePathwayTemplate * file: src/cores/hr/hooks/skills/useClonePathwayTemplate.ts:15 * kind: hook * core: hr * spec: (none) * summary: Clone-on-first-edit helper for pathway templates. * score: 4 ### hook useCobraElectionMutation * file: src/cores/hr/benefits/hooks/useCobraElections.ts:68 * kind: hook * core: hr * spec: (none) * summary: Hook for COBRA election mutations * score: 1 ### hook useCobraElections * file: src/cores/hr/benefits/hooks/useCobraElections.ts:23 * kind: hook * core: hr * spec: (none) * summary: Hook for listing elections for a specific COBRA event * score: 1 ### hook useCobraEventCounts * file: src/cores/hr/benefits/hooks/useCobraEvents.ts:216 * kind: hook * core: hr * spec: (none) * summary: Hook for counting COBRA events by status (for dashboard) * score: 1 ### hook useCobraEventDetail * file: src/cores/hr/benefits/hooks/useCobraEvents.ts:106 * kind: hook * core: hr * spec: (none) * summary: Hook for fetching a single COBRA event with full details * score: 1 ### hook useCobraEventMutation * file: src/cores/hr/benefits/hooks/useCobraEventMutation.ts:19 * kind: hook * core: hr * spec: (none) * summary: Hook for COBRA event mutations * score: 1 ### hook useCobraEvents * file: src/cores/hr/benefits/hooks/useCobraEvents.ts:15 * kind: hook * core: hr * spec: (none) * summary: Hook for listing COBRA events (admin view) * score: 1 ### hook useCommunicationStats * file: src/cores/hr/hooks/ats/useCandidateCommunications.ts:174 * kind: hook * core: hr * spec: (none) * summary: Get communication statistics * score: 1 ### hook useCommunicationTemplate * file: src/cores/hr/hooks/ats/useCommunicationTemplates.ts:91 * kind: hook * core: hr * spec: (none) * summary: Fetch a single template by ID (org-scoped) * score: 4 ### hook useCommunicationTemplates * file: src/cores/hr/hooks/ats/useCommunicationTemplates.ts:52 * kind: hook * core: hr * spec: (none) * summary: Fetch communication templates with optional filters * score: 4 ### hook useCompensationAnalysisDetail * file: src/cores/hr/compensation/hooks/useCompensationAnalysisDetail.ts:36 * kind: hook * core: hr * spec: (none) * summary: Fetches detailed compensation analysis for the current organization. Queries the table (including related position and profile relations)and returns a React Query object for the specified analysis id. The query is only enabled when is true,an is provided, and an organization is selected. * params: * options — Hook options - : The compensation analysis ID to fetch - : Optional flag to enable or disable the query (defaults to ) * returns: A React Query result containing the record when successful * score: 4 ### hook useCompensationAnalysisList * file: src/cores/hr/compensation/hooks/useCompensationAnalysisList.ts:45 * kind: hook * core: hr * spec: (none) * summary: Fetches a paginated list of compensation analyses for the current organization and applies optional filters. Queries the Supabase table (including related position and profile data), applies provided filters and pagination, and returns a result shaped for UI consumption. * params: * options — Options to control the query. - : Filter criteria: may include , , , , , and . - : 1-based page number (default: 1). - : Number of items per page (default: 50). - : Whether the query is enabled (default: true). * returns: The React Query result whose (when available) is an object with: - : array of CompensationAnalysisWithRelations - : total number of matching records - : current page number - : page size used - : total number of pages * score: 4 ### hook useCompensationAnalysisMutation * file: src/cores/hr/compensation/hooks/useCompensationAnalysisMutation.ts:14 * kind: hook * core: hr * spec: (none) * summary: Hook for managing compensation analysis mutation. * score: 1 ### hook useCompensationCostReport * file: src/cores/hr/compensation/hooks/useCompensationCostReport.ts:20 * kind: hook * core: hr * spec: (none) * summary: Hook to generate compensation cost reports by employee or department.Aggregates salary, benefits, bonuses, and retirement contributions. * score: 4 ### hook useCompensationStatementPdf * file: src/cores/hr/compensation/hooks/useCompensationStatementPdf.ts:49 * kind: hook * core: hr * spec: (none) * summary: Provides utilities to generate compensation statement PDFs using the PF-64 templating system.The hook exposes functions to fetch statement data from the database (by statement ID) or accept pre-fetchedCompensationStatementData, build the templated PDF content, generate the PDF with a selected letterhead, open itin a new tab, and surface generation state and errors. * params: * options — Configuration options for PDF generation - letterheadId: Optional letterhead ID to override the organization's default letterhead * returns: An object with: - — fetches data for the given statement ID, generates the PDF, opens it in a new tab, and returns the PDF URL or . - — generates the PDF from a provided CompensationStatementData object, opens it in a new tab, and returns the PDF URL or . - — while the hook is fetching or generating a PDF. - — error from the templated PDF generator, if any. - — resets the templated PDF generator's error/state. * example: | const generateStatementPdf, isGenerating = useCompensationStatementPdf( letterheadId: 'lh\_123' );await generateStatementPdf('statement\_abc'); // opens generated PDF in a new tab * score: 4 ### hook useCompensationSummary * file: src/cores/hr/compensation/hooks/useCompensationSummary.ts:43 * kind: hook * core: hr * spec: (none) * summary: Hook for managing compensation summary. * score: 1 ### hook useCompetencyCredentialLink * file: src/cores/hr/hooks/performance/useCompetencyCredentialLink.ts:32 * kind: hook * core: hr * spec: (none) * summary: Hook for managing competency credential link. * score: 1 ### hook useCompetencyFrameworkMutation * file: src/cores/hr/hooks/skills/useCompetencyFrameworkMutation.ts:24 * kind: hook * core: hr * spec: (none) * summary: Hook for managing competency framework mutation. * score: 1 ### hook useCompetencyFrameworks * file: src/cores/hr/hooks/skills/useCompetencyFrameworks.ts:14 * kind: hook * core: hr * spec: (none) * summary: Hook for managing competency frameworks. * score: 1 ### hook useCompetencyTrainingRecommendations * file: src/cores/hr/hooks/performance/useCompetencyTrainingRecommendations.ts:52 * kind: hook * core: hr * spec: (none) * summary: Hook for managing competency training recommendations. * score: 1 ### hook useCompleteOversightSession * file: src/cores/hr/hooks/oversight/useOversightSessionMutation.ts:161 * kind: hook * core: hr * spec: (none) * summary: Hook for managing complete oversight session. * score: 1 ### hook useComplianceDashboard * file: src/cores/hr/hooks/credentialing/useComplianceDashboard.ts:26 * kind: hook * core: hr * spec: (none) * summary: Hook for managing compliance dashboard. * score: 1 ### hook useComplianceStats * file: src/cores/hr/hooks/credentialing/useComplianceStats.ts:62 * kind: hook * core: hr * spec: (none) * summary: Hook for managing compliance stats. * score: 1 ### hook useConsentLogsForCandidate * file: src/cores/hr/hooks/ats/useTCPAConsent.ts:80 * kind: hook * core: hr * spec: (none) * summary: Get all consent logs for a candidate * score: 4 ### hook useConsentStatus * file: src/cores/hr/hooks/ats/useTCPAConsent.ts:37 * kind: hook * core: hr * spec: (none) * summary: Check consent status for a phone number and consent type * score: 4 ### hook useContractor1099Export * file: src/cores/hr/hooks/contractors/useContractor1099Export.ts:43 * kind: hook * core: hr * spec: (none) * summary: Fetches contractor 1099 totals and formats for export.Intended as the HR-PAY-04 consumer path for 1099-NEC preparation.The RPC already returns contractor name and tax\_id\_type, so no secondary query is needed.Permission-gated: callers should verify before rendering sensitive data. * params: * taxYear — The calendar year to aggregate approved time entries. * options — Optional filters (e.g., threshold-only). * returns: React Query result with enriched export rows. * score: 4 ### hook useContractor1099Totals * file: src/cores/hr/hooks/contractors/useContractor1099Totals.ts:14 * kind: hook * core: hr * spec: (none) * summary: Fetches 1099 totals for contractors in the current organization for a given tax year.Wraps the SECURITY DEFINER RPC. * params: * taxYear — The tax year to aggregate (e.g. 2025). * returns: A React Query result containing an array of 1099 total rows. * score: 4 ### hook useContractorContractMutation * file: src/cores/hr/hooks/contractors/useContractorContractMutation.ts:15 * kind: hook * core: hr * spec: (none) * summary: Provides mutations for creating, updating, and deleting contractor contracts. * returns: An object containing , , and mutation objects. * score: 4 ### hook useContractorContractsList * file: src/cores/hr/hooks/contractors/useContractorContractsList.ts:12 * kind: hook * core: hr * spec: (none) * summary: Fetches contracts for a specific contractor within the current organization. * params: * contractorId — The UUID of the contractor. * returns: A React Query result containing an array of contractor contract rows. * score: 4 ### hook useContractorCredentialMutation * file: src/cores/hr/hooks/contractors/useContractorCredentialMutation.ts:15 * kind: hook * core: hr * spec: (none) * summary: Provides mutations for creating, updating, and deleting contractor credentials. * returns: An object containing , , and mutation objects. * score: 4 ### hook useContractorCredentials * file: src/cores/hr/hooks/contractors/useContractorCredentials.ts:12 * kind: hook * core: hr * spec: (none) * summary: Fetches credentials for a specific contractor within the current organization. * params: * contractorId — The UUID of the contractor. * returns: A React Query result containing an array of contractor credential rows. * score: 4 ### hook useContractorDetail * file: src/cores/hr/hooks/contractors/useContractorDetail.ts:12 * kind: hook * core: hr * spec: (none) * summary: Fetches a single contractor by ID within the current organization. * params: * contractorId — The UUID of the contractor to fetch. * returns: A React Query result containing the contractor row or null. * score: 4 ### hook useContractorMutation * file: src/cores/hr/hooks/contractors/useContractorMutation.ts:14 * kind: hook * core: hr * spec: (none) * summary: Provides mutations for creating, updating, and deleting contractors. * returns: An object containing , , and mutation objects. * score: 4 ### hook useContractorsList * file: src/cores/hr/hooks/contractors/useContractorsList.ts:16 * kind: hook * core: hr * spec: (none) * summary: Fetches the list of contractors for the current organization, with optional filters. * params: * options — Optional filters for status, classification, agency, and department. * returns: A React Query result containing an array of contractor rows. * score: 4 ### hook useContractorTimeEntries * file: src/cores/hr/hooks/contractors/useContractorTimeEntries.ts:17 * kind: hook * core: hr * spec: (none) * summary: Fetches time entries for a specific contractor within the current organization. * params: * contractorId — The UUID of the contractor. * options — Optional filters for approval status, date range, and contract. * returns: A React Query result containing an array of time entry rows. * score: 4 ### hook useContractorTimeEntryMutation * file: src/cores/hr/hooks/contractors/useContractorTimeEntryMutation.ts:17 * kind: hook * core: hr * spec: (none) * summary: Provides mutations for creating, updating, deleting, approving, and rejecting contractor time entries.The mutation automatically computes . * returns: An object containing mutation objects for time entry CRUD and approval workflows. * score: 4 ### hook useCostAnalytics * file: src/cores/hr/analytics/hooks/useCostAnalytics.ts:30 * kind: hook * core: hr * spec: (none) * summary: Hook for managing cost analytics. * score: 1 ### hook useCounterOfferMutation * file: src/cores/hr/hooks/ats/useCounterOfferMutation.ts:36 * kind: hook * core: hr * spec: (none) * summary: Hook for managing counter offer mutation. * score: 1 ### hook useCounterOffers * file: src/cores/hr/hooks/ats/useCounterOffers.ts:42 * kind: hook * core: hr * spec: (none) * summary: Hook for managing counter offers. * score: 1 ### hook useCounterOfferStats * file: src/cores/hr/hooks/ats/useCounterOffers.ts:108 * kind: hook * core: hr * spec: (none) * summary: Hook for managing counter offer stats. * score: 1 ### hook useCreate1099NECRun * file: src/cores/hr/hooks/tax-forms/useCreate1099NECRun.ts:28 * kind: hook * core: hr * spec: (none) * summary: Hook for managing create1099 necrun. * score: 1 ### hook useCreateAnnualRun * file: src/cores/hr/hooks/tax-forms/useCreateAnnualRun.ts:40 * kind: hook * core: hr * spec: (none) * summary: Hook for managing create annual run. * score: 1 ### hook useCreateBackgroundCheck * file: src/cores/hr/hooks/ats/useBackgroundChecks.ts:181 * kind: hook * core: hr * spec: (none) * summary: Create a new background check record * score: 4 ### hook useCreateBackgroundCheckProvider * file: src/cores/hr/hooks/ats/useBackgroundCheckProviders.ts:86 * kind: hook * core: hr * spec: (none) * summary: Create a new background check provider * score: 4 ### hook useCreateBankAccount * file: src/cores/hr/hooks/payroll/useEmployeeBankAccountMutation.ts:25 * kind: hook * core: hr * spec: (none) * summary: Create a new bank account for an employee.Encrypts account number via edge function before saving. * score: 4 ### hook useCreateBlankTimesheet * file: src/cores/hr/hooks/time/useCreateBlankTimesheet.ts:15 * kind: hook * core: hr * spec: (none) * summary: Create an empty draft timesheet with no punches and open it (HR-05 Phase 1 / D4). * score: 4 ### hook useCreateCommunicationTemplate * file: src/cores/hr/hooks/ats/useCommunicationTemplates.ts:119 * kind: hook * core: hr * spec: (none) * summary: Create a new communication template * score: 4 ### hook useCreateDeductionType * file: src/cores/hr/hooks/payroll/useDeductionTypeMutation.ts:18 * kind: hook * core: hr * spec: (none) * summary: Create a new deduction type. * score: 1 ### hook useCreateEarningType * file: src/cores/hr/hooks/payroll/useEarningTypeMutation.ts:18 * kind: hook * core: hr * spec: (none) * summary: Create a new earning type. * score: 1 ### hook useCreateEmployeeAccount * file: src/cores/hr/hooks/employees/useCreateEmployeeAccount.ts:19 * kind: hook * core: hr * spec: (none) * summary: Creates a platform user account for an existing employee and links itby updating . * returns: React Query mutation for creating an employee account. * score: 4 ### hook useCreateEmployeeDeduction * file: src/cores/hr/hooks/payroll/useEmployeeDeductionMutation.ts:24 * kind: hook * core: hr * spec: (none) * summary: Create a new employee deduction. * score: 4 ### hook useCreateEmployeeTaxInfo * file: src/cores/hr/hooks/payroll/useEmployeeTaxInfoMutation.ts:44 * kind: hook * core: hr * spec: (none) * summary: Create a new employee tax info record. * score: 4 ### hook useCreateEmployerTaxConfig * file: src/cores/hr/hooks/payroll/useEmployerTaxConfigMutation.ts:18 * kind: hook * core: hr * spec: (none) * summary: Create a new employer tax config for a tax year. * score: 4 ### hook useCreateFicaConfig * file: src/cores/hr/hooks/payroll/useTaxTableMutation.ts:127 * kind: hook * core: hr * spec: (none) * summary: Create a new FICA config for a new tax year (copy from previous year). * score: 4 ### hook useCreateHoliday * file: src/cores/hr/hooks/useHolidayMutation.ts:22 * kind: hook * core: hr * spec: (none) * summary: Create a new holiday * score: 1 ### hook useCreateOversightRelationship * file: src/cores/hr/hooks/oversight/useOversightRelationshipMutation.ts:18 * kind: hook * core: hr * spec: (none) * summary: Hook for managing create oversight relationship. * score: 1 ### hook useCreateOversightSession * file: src/cores/hr/hooks/oversight/useOversightSessionMutation.ts:18 * kind: hook * core: hr * spec: (none) * summary: Hook for managing create oversight session. * score: 1 ### hook useCreatePaymentBatch * file: src/cores/hr/hooks/payroll/usePaymentBatchMutation.ts:40 * kind: hook * core: hr * spec: (none) * summary: Create a new payment batch from a finalized payroll run * score: 4 ### hook useCreatePaySchedule * file: src/cores/hr/hooks/payroll/usePayScheduleMutation.ts:22 * kind: hook * core: hr * spec: (none) * summary: Create a new pay schedule * score: 1 ### hook useCreatePortalAccount * file: src/cores/hr/hooks/ats/useCandidatePortal.ts:94 * kind: hook * core: hr * spec: (none) * summary: Create or invite candidate to portal * score: 4 ### hook useCreateProliantProfileFromPending * file: src/cores/hr/hooks/proliant/useProliantIntegration.ts:538 * kind: hook * core: hr * spec: HR-44-EN-05 * summary: Mutation that creates + links an Encore profile for an Proliantskip row, then marks it .Invokes the edge function (NOT apure SQL RPC): minting a row requires the Auth Admin API because is FK'd to . The function find-or-creates theauth identity + profile from the enriched identity, thendelegates the org-scoped DB writes (hr\_employees + mapping + resolve) to theSECURITY DEFINER RPC , which re-checkstenant + the resolve-conflicts permission against the ROW's org.REGULATED: this fabricates a person identity from a payroll feed — admin-gated(resolve-conflicts permission) and audited (see HR-44-EN-05). It reverses theprior "never fabricate a profile from a payroll feed" design. * returns: TanStack ; call with . * score: 4 ### hook useCreateQuarterlyRun * file: src/cores/hr/hooks/tax-forms/useCreateQuarterlyRun.ts:36 * kind: hook * core: hr * spec: (none) * summary: Hook for managing create quarterly run. * score: 1 ### hook useCreateReference * file: src/cores/hr/hooks/ats/useReferences.ts:233 * kind: hook * core: hr * spec: (none) * summary: Create a new reference request * score: 4 ### hook useCreateTaxFormRun * file: src/cores/hr/hooks/tax-forms/useTaxFormRunMutation.ts:46 * kind: hook * core: hr * spec: (none) * summary: Provides create tax form run queries and mutation actions scoped to the current organization. * score: 4 ### hook useCredentialAlerts * file: src/cores/hr/hooks/credentialing/useCredentialAlerts.ts:15 * kind: hook * core: hr * spec: (none) * summary: Hook for managing credential alerts. * score: 1 ### hook useCredentialAnalytics * file: src/cores/hr/hooks/credentialing/useCredentialAnalytics.ts:152 * kind: hook * core: hr * spec: (none) * summary: Hook for managing credential analytics. * score: 1 ### hook useCredentialMutation * file: src/cores/hr/hooks/credentialing/useCredentialMutation.ts:23 * kind: hook * core: hr * spec: (none) * summary: Create mutations for uploading, verifying, rejecting, updating, and deleting employee credentials.Each mutation operates on the table and, on success, invalidates the query key and shows a success toast. On error, a toast with the errormessage is shown. * returns: An object containing the following React Query mutation objects:- — inserts a new credential row- — marks a credential as verified and records verifier and timestamp- — marks a credential as rejected and stores a rejection reason- — updates fields of an existing credential- — deletes a credential by id * score: 4 ### hook useCredentialRenewalStats * file: src/cores/hr/hooks/credentialing/useCredentialRenewalStats.ts:22 * kind: hook * core: hr * spec: (none) * summary: Hook for managing credential renewal stats. * score: 1 ### hook useCredentialRenewalWorkflow * file: src/cores/hr/hooks/credentialing/useCredentialRenewalWorkflow\.ts:133 * kind: hook * core: hr * spec: (none) * summary: Provides credential renewal workflow queries and mutation actions scoped to the current organization. * score: 4 ### hook useCredentialRenewalWorkflows * file: src/cores/hr/hooks/credentialing/useCredentialRenewalWorkflow\.ts:76 * kind: hook * core: hr * spec: (none) * summary: Provides credential renewal workflows queries and mutation actions scoped to the current organization. * score: 4 ### hook useCredentialRequirements * file: src/cores/hr/hooks/credentialing/useCredentialRequirements.ts:15 * kind: hook * core: hr * spec: (none) * summary: Hook for managing credential requirements. * score: 1 ### hook useCredentialRequirementsMutation * file: src/cores/hr/hooks/credentialing/useCredentialRequirementsMutation.ts:12 * kind: hook * core: hr * spec: (none) * summary: Hook for managing credential requirements mutation. * score: 1 ### hook useCredentialTypeMutation * file: src/cores/hr/hooks/credentialing/useCredentialTypeMutation.ts:12 * kind: hook * core: hr * spec: (none) * summary: Hook for managing credential type mutation. * score: 1 ### hook useCredentialTypes * file: src/cores/hr/hooks/credentialing/useCredentialTypes.ts:13 * kind: hook * core: hr * spec: (none) * summary: Hook for managing credential types. * score: 1 ### hook useCurrentACACompliance * file: src/cores/hr/benefits/hooks/useACACompliance.ts:101 * kind: hook * core: hr * spec: (none) * summary: Hook for current/latest tax year ACA compliance * score: 1 ### hook useCurrentEnrollments * file: src/cores/hr/benefits/hooks/useCurrentEnrollments.ts:31 * kind: hook * core: hr * spec: (none) * summary: Fetches the current employee's active/approved enrollments with plan detailsfor side-by-side comparison during re-enrollment. * score: 4 ### hook useCurrentOpenEnrollment * file: src/cores/hr/benefits/hooks/useOpenEnrollmentPeriods.ts:50 * kind: hook * core: hr * spec: (none) * summary: Hook to check if currently in an open enrollment period * score: 4 ### hook useCurrentPTORate * file: src/cores/hr/hooks/leave/usePTOPatterns.ts:97 * kind: hook * core: hr * spec: (none) * summary: Hook for managing current ptorate. * score: 1 ### hook useCurrentPunchStatus * file: src/cores/hr/hooks/time/useCurrentPunchStatus.ts:20 * kind: hook * core: hr * spec: (none) * summary: Provides the current user's punch status for the active organization.Returns a React Query result whose (when available) is an object with:- : if the user's most recent punch today is an "in" or "break\_end", otherwise.- : the most recent punch record for today or if none.- : (reserved for future shift-joining logic). * returns: The React Query result containing the punch status data and standard query state (loading, error, etc.). * score: 4 ### hook useCurrentSalary * file: src/cores/hr/compensation/hooks/useCurrentSalary.ts:34 * kind: hook * core: hr * spec: (none) * summary: Fetches the current salary for an employee.First checks hr\_pay\_rates for active records, then falls back to hr\_employees.base\_salary * score: 4 ### hook useDeactivateBankAccount * file: src/cores/hr/hooks/payroll/useEmployeeBankAccountMutation.ts:174 * kind: hook * core: hr * spec: (none) * summary: Deactivate (soft delete) a bank account. * score: 4 ### hook useDeactivateDeductionType * file: src/cores/hr/hooks/payroll/useDeductionTypeMutation.ts:111 * kind: hook * core: hr * spec: (none) * summary: Deactivate (soft delete) a deduction type. * score: 4 ### hook useDeactivateEarningType * file: src/cores/hr/hooks/payroll/useEarningTypeMutation.ts:99 * kind: hook * core: hr * spec: (none) * summary: Deactivate (soft delete) an earning type. * score: 4 ### hook useDeactivatePortalAccount * file: src/cores/hr/hooks/ats/useCandidatePortal.ts:208 * kind: hook * core: hr * spec: (none) * summary: Deactivate portal account * score: 1 ### hook useDeductionType * file: src/cores/hr/hooks/payroll/useDeductionTypes.ts:74 * kind: hook * core: hr * spec: (none) * summary: Fetch a single deduction type by ID. * score: 4 ### hook useDeductionTypes * file: src/cores/hr/hooks/payroll/useDeductionTypes.ts:34 * kind: hook * core: hr * spec: (none) * summary: Fetch all deduction types for the current organization.Can filter by category and active status. * score: 4 ### hook useDefaultBackgroundCheckProvider * file: src/cores/hr/hooks/ats/useBackgroundCheckProviders.ts:58 * kind: hook * core: hr * spec: (none) * summary: Fetch the default provider for the organization * score: 4 ### hook useDeleteCommunicationTemplate * file: src/cores/hr/hooks/ats/useCommunicationTemplates.ts:193 * kind: hook * core: hr * spec: (none) * summary: Delete a template * score: 1 ### hook useDeleteFingerprintClearance * file: src/cores/hr/hooks/fingerprint-clearance/useDeleteFingerprintClearance.ts:22 * kind: hook * core: hr * spec: (none) * summary: Deletes a fingerprint clearance record by ID. * returns: Mutation for delete operations * score: 4 ### hook useDeleteHoliday * file: src/cores/hr/hooks/useHolidayMutation.ts:160 * kind: hook * core: hr * spec: (none) * summary: Delete a holiday * score: 1 ### hook useDeletePaySchedule * file: src/cores/hr/hooks/payroll/usePayScheduleMutation.ts:117 * kind: hook * core: hr * spec: (none) * summary: Delete a pay schedule * score: 1 ### hook useDeleteProliantFieldMapping * file: src/cores/hr/hooks/proliant/useProliantIntegration.ts:656 * kind: hook * core: hr * spec: (none) * summary: Delete a custom field mapping override row. * score: 4 ### hook useDeleteTaxFormRun * file: src/cores/hr/hooks/tax-forms/useTaxFormRunMutation.ts:523 * kind: hook * core: hr * spec: (none) * summary: Provides delete tax form run queries and mutation actions scoped to the current organization. * score: 4 ### hook useDeleteTaxFormStateItem * file: src/cores/hr/hooks/tax-forms/useTaxFormStateItemsMutation.ts:56 * kind: hook * core: hr * spec: (none) * summary: Delete a state item (org admin only per RLS). * score: 4 ### hook useDepartmentList * file: src/cores/hr/hooks/employees/useDepartmentList.ts:15 * kind: hook * core: hr * spec: (none) * summary: Hook for managing department list. * score: 1 ### hook useDepartmentMutation * file: src/cores/hr/hooks/employees/useDepartmentMutation.ts:17 * kind: hook * core: hr * spec: (none) * summary: Provides mutations for creating, updating, archiving, and assigning heads to departments. * returns: An object containing:- — mutates to create a department and returns the created department.- — mutates to update a department and returns the updated department.- — mutates to archive (soft-delete) a department.- — mutates to assign or remove a department head and returns the updated department.- , , , — booleans indicating whether the respective mutation is pending. * score: 4 ### hook useDirectReportReviews * file: src/cores/hr/hooks/performance/useDirectReportReviews.ts:21 * kind: hook * core: hr * spec: (none) * summary: Hook for managing direct report reviews. * score: 1 ### hook useDirectReportsCases * file: src/cores/hr/employee-relations/hooks/useDirectReportsCases.ts:16 * kind: hook * core: hr * spec: (none) * summary: Hook for managing direct reports cases. * score: 1 ### hook useDirectReportsOnboarding * file: src/cores/hr/hooks/onboarding/useDirectReportsOnboarding.ts:38 * kind: hook * core: hr * spec: (none) * summary: Hook for managing direct reports onboarding. * score: 1 ### hook useDisciplinaryActionDetail * file: src/cores/hr/employee-relations/hooks/useDisciplinaryActionDetail.ts:15 * kind: hook * core: hr * spec: (none) * summary: Hook for managing disciplinary action detail. * score: 1 ### hook useDisciplinaryActionList * file: src/cores/hr/employee-relations/hooks/useDisciplinaryActionList.ts:15 * kind: hook * core: hr * spec: (none) * summary: Hook for managing disciplinary action list. * score: 1 ### hook useDisciplinaryActionMutation * file: src/cores/hr/employee-relations/hooks/useDisciplinaryActionMutation.ts:28 * kind: hook * core: hr * spec: (none) * summary: Hook for managing disciplinary action mutation. * score: 1 ### hook useDisciplinaryActionPdf * file: src/cores/hr/hooks/documents/useDisciplinaryActionPdf.ts:17 * kind: hook * core: hr * spec: (none) * summary: Hook for managing disciplinary action pdf. * score: 1 ### hook useDriverTemplateCategories * file: src/cores/hr/hooks/workload/useDriverTemplates.ts:62 * kind: hook * core: hr * spec: (none) * summary: Hook for managing driver template categories. * score: 1 ### hook useDriverTemplates * file: src/cores/hr/hooks/workload/useDriverTemplates.ts:23 * kind: hook * core: hr * spec: (none) * summary: Hook for managing driver templates. * score: 1 ### hook useDriverVersionMutation * file: src/cores/hr/hooks/workload/useDriverVersionMutation.ts:30 * kind: hook * core: hr * spec: (none) * summary: Hook for managing driver version mutation. * score: 1 ### hook useDriverVersions * file: src/cores/hr/hooks/workload/useDriverVersions.ts:19 * kind: hook * core: hr * spec: (none) * summary: Hook for managing driver versions. * score: 1 ### hook useEarningType * file: src/cores/hr/hooks/payroll/useEarningTypes.ts:74 * kind: hook * core: hr * spec: (none) * summary: Fetch a single earning type by ID. * score: 4 ### hook useEarningTypes * file: src/cores/hr/hooks/payroll/useEarningTypes.ts:34 * kind: hook * core: hr * spec: (none) * summary: Fetch all earning types for the current organization.Can filter by category and active status. * score: 4 ### hook useEEOMetrics * file: src/cores/hr/hooks/useEEOMetrics.ts:227 * kind: hook * core: hr * spec: (none) * summary: Hook for managing eeometrics. * score: 1 ### hook useEfileCredentialStatus * file: src/cores/hr/hooks/tax-forms/useEfileCredentialStatus.ts:20 * kind: hook * core: hr * spec: (none) * summary: Check whether e-file credentials are configured for a given tax year. * score: 4 ### hook useEfileSubmit * file: src/cores/hr/hooks/tax-forms/useEfileSubmit.ts:16 * kind: hook * core: hr * spec: (none) * summary: Hook for managing efile submit. * score: 1 ### hook useEligibilityRuleMutation * file: src/cores/hr/benefits/hooks/useEligibilityRules.ts:49 * kind: hook * core: hr * spec: (none) * summary: Hook for eligibility rule mutations * score: 1 ### hook useEligibilityRules * file: src/cores/hr/benefits/hooks/useEligibilityRules.ts:18 * kind: hook * core: hr * spec: (none) * summary: Hook for listing eligibility rules for a plan * score: 1 ### hook useEmployeeAccountStatus * file: src/cores/hr/hooks/employees/useEmployeeAccountStatus.ts:22 * kind: hook * core: hr * spec: (none) * summary: Detects whether an employee has a linked platform account,and if so whether it is dormant (profile exists but never confirmed via email\_verified)or active. * params: * employeeProfileId — The employee's from . * workEmail — The employee's (fallback display). * returns: React Query result with . * score: 4 ### hook useEmployeeBankAccounts * file: src/cores/hr/hooks/payroll/useEmployeeBankAccounts.ts:33 * kind: hook * core: hr * spec: (none) * summary: Fetch all bank accounts for a specific employee. * score: 4 ### hook useEmployeeCredentials * file: src/cores/hr/hooks/credentialing/useEmployeeCredentials.ts:14 * kind: hook * core: hr * spec: (none) * summary: Hook for managing employee credentials. * score: 1 ### hook useEmployeeDeductions * file: src/cores/hr/hooks/payroll/useEmployeeDeductions.ts:34 * kind: hook * core: hr * spec: (none) * summary: Fetch all deductions for a specific employee. * score: 4 ### hook useEmployeeDetail * file: src/cores/hr/hooks/employees/useEmployeeDetail.ts:22 * kind: hook * core: hr * spec: (none) * summary: Fetches and composes detailed HR data for a single employee into an EmployeeDetail shape. Runs a composite Supabase query to load the main employee record plus related data (sites, direct reports, team memberships) and returns the React Query result for that composite resource. * params: * employeeId — The ID of the employee to fetch; when falsy the query is disabled. * returns: The React Query result for the employee detail query (success value is an object when available). * example: | // Usage in a React componentconst data: employeeDetail, isLoading, error = useEmployeeDetail('employee-uuid'); * score: 4 ### hook useEmployeeEligibility * file: src/cores/hr/benefits/hooks/useEmployeeEligibility.ts:104 * kind: hook * core: hr * spec: (none) * summary: Hook to check an employee's eligibility for benefit plans * score: 4 ### hook useEmployeeList * file: src/cores/hr/hooks/employees/useEmployeeList.ts:151 * kind: hook * core: hr * spec: (none) * summary: Retrieve a paginated, filtered list of employees for the current organization. Fetches employees with related profile, position, primary site, manager, and level data. Applies provided filters (employment\_status, department\_id, site\_id, is\_clinical, level\_id), text search across job\_title/work\_email/employee\_number, pagination, and orders results by profile full name. Defaults to when not specified. * params: * options — UseEmployeeListOptions — optional settings for the query - filters: EmployeeListFilters | undefined — filtering criteria; if is omitted, results default to active employees - page: number | undefined — 1-based page number (default: 1) - pageSize: number | undefined — number of items per page (default: 50) - enabled: boolean | undefined — whether the query should be enabled (default: true) * returns: The React Query result whose data shape is employees: EmployeeListItem\[]; totalCount: number; page: number; pageSize: number; totalPages: number * example: | // Fetch first page of active employees with a search termconst data, isLoading = useEmployeeList( filters: search: 'Garcia' , page: 1, pageSize: 25 ); * score: 4 ### hook useEmployeeMutation * file: src/cores/hr/hooks/employees/useEmployeeMutation.ts:161 * kind: hook * core: hr * spec: (none) * summary: Provide mutations for creating, updating, terminating, and reactivating HR employee records.Exposes async mutation functions that perform Supabase operations and local cache invalidation, and boolean flags for each mutation's pending state. * returns: An object containing:- — async function to create a new employee record (organization and actor enforced).- — async function to update an existing employee by .- — async function to mark an employee as terminated by and termination date.- — async function to reactivate an employee by .- — if a create operation is pending, otherwise.- — if an update operation is pending, otherwise.- — if a terminate operation is pending, otherwise.- — if a reactivate operation is pending, otherwise. * score: 4 ### hook useEmployeePaymentPreviews * file: src/cores/hr/hooks/payroll/useEmployeePaymentPreviews.ts:16 * kind: hook * core: hr * spec: (none) * summary: Hook for managing employee payment previews. * score: 1 ### hook useEmployeePayStubs * file: src/cores/hr/hooks/payroll/usePayStubs.ts:205 * kind: hook * core: hr * spec: (none) * summary: Fetch all pay stubs for a specific employee (admin view). * score: 4 ### hook useEmployeePersonnelDocumentDownload * file: src/cores/hr/hooks/employees/useEmployeePersonnelDocumentDownload.ts:20 * kind: hook * core: hr * spec: (none) * summary: Signed URL download for employee personnel file documents (HR admin view). * score: 4 ### hook useEmployeePersonnelDocuments * file: src/cores/hr/hooks/employees/useEmployeePersonnelDocuments.ts:165 * kind: hook * core: hr * spec: (none) * summary: Loads personnel file documents for an employee (HR admin employee profile tab). * score: 4 ### hook useEmployeePersonnelDocumentUpload * file: src/cores/hr/hooks/employees/useEmployeePersonnelDocumentUpload.ts:27 * kind: hook * core: hr * spec: (none) * summary: Upload hook for HR admins adding documents to an employee personnel file. * score: 4 ### hook useEmployeePreferences * file: src/cores/hr/self-service/hooks/useEmployeePreferences.ts:17 * kind: hook * core: hr * spec: (none) * summary: Hook for managing employee preferences. * score: 1 ### hook useEmployeeRelationsReport * file: src/cores/hr/employee-relations/hooks/useEmployeeRelationsReport.ts:15 * kind: hook * core: hr * spec: (none) * summary: Hook for managing employee relations report. * score: 1 ### hook useEmployeeSkillGaps * file: src/cores/hr/hooks/skills/useEmployeeSkillGaps.ts:39 * kind: hook * core: hr * spec: (none) * summary: Hook for managing employee skill gaps. * score: 1 ### hook useEmployeeSkillMutation * file: src/cores/hr/hooks/skills/useEmployeeSkillMutation.ts:17 * kind: hook * core: hr * spec: (none) * summary: Hook for managing employee skill mutation. * score: 1 ### hook useEmployeeSkills * file: src/cores/hr/hooks/skills/useEmployeeSkills.ts:20 * kind: hook * core: hr * spec: (none) * summary: Hook for managing employee skills. * score: 1 ### hook useEmployeesWithSkills * file: src/cores/hr/hooks/skills/useEmployeesWithSkills.ts:36 * kind: hook * core: hr * spec: (none) * summary: Hook for querying employees with specific skills (HR-04 scheduling integration) - skillIds: Array of skill IDs to filter by - minimumProficiency: Minimum proficiency level required (default: intermediate) - requireVerified: Only include verified skills (default: false) - enabled: Whether the query is enabled * returns: Query result with employees matching the skill criteria * score: 1 ### hook useEmployeeTaxInfo * file: src/cores/hr/hooks/payroll/useEmployeeTaxInfo.ts:33 * kind: hook * core: hr * spec: (none) * summary: Get the current effective tax info for an employee.Returns the most recent record where:- effective\_date = today- end\_date is NULL or end\_date = today * score: 4 ### hook useEmployeeTaxInfoAsOf * file: src/cores/hr/hooks/payroll/useEmployeeTaxInfo.ts:98 * kind: hook * core: hr * spec: (none) * summary: Get effective tax info for an employee as of a specific date.Useful for payroll calculations on a specific pay date. * score: 4 ### hook useEmployeeTaxInfoHistory * file: src/cores/hr/hooks/payroll/useEmployeeTaxInfo.ts:68 * kind: hook * core: hr * spec: (none) * summary: Get all tax info records for an employee (full history). * score: 4 ### hook useEmployeeYTDSummary * file: src/cores/hr/hooks/payroll/useEmployeeYTDSummary.ts:29 * kind: hook * core: hr * spec: (none) * summary: Hook for managing employee ytdsummary. * score: 1 ### hook useEmployerTaxConfigByYear * file: src/cores/hr/hooks/payroll/useEmployerTaxConfig.ts:55 * kind: hook * core: hr * spec: (none) * summary: Get employer tax config for a specific tax year. * score: 4 ### hook useEmployerTaxConfigList * file: src/cores/hr/hooks/payroll/useEmployerTaxConfig.ts:27 * kind: hook * core: hr * spec: (none) * summary: Get all employer tax configs for the current organization.Returns configs sorted by tax\_year descending. * score: 4 ### hook useEmploymentVerificationPdf * file: src/cores/hr/hooks/documents/useEmploymentVerificationPdf.ts:21 * kind: hook * core: hr * spec: (none) * summary: Hook for managing employment verification pdf. * score: 1 ### hook useEndEmployeeTaxInfo * file: src/cores/hr/hooks/payroll/useEmployeeTaxInfoMutation.ts:138 * kind: hook * core: hr * spec: (none) * summary: End an existing tax info record by setting its end\_date.This is the proper way to "supersede" a record instead of deleting. * score: 4 ### hook useEndOversightRelationship * file: src/cores/hr/hooks/oversight/useOversightRelationshipMutation.ts:90 * kind: hook * core: hr * spec: (none) * summary: Hook for ending an oversight relationship. * score: 1 ### hook useEngagementTrends * file: src/cores/hr/engagement/hooks/useEngagementTrends.ts:30 * kind: hook * core: hr * spec: (none) * summary: Hook for managing engagement trends. * score: 1 ### hook useEnrollmentProgress * file: src/cores/hr/benefits/hooks/useEnrollmentProgress.ts:56 * kind: hook * core: hr * spec: (none) * summary: Fetches enrollment progress for a given open enrollment period. Compares active employees in the organization against employeeswho have submitted enrollments for the specified period. Returns counts,completion percentage, and a list of employees who have not yet enrolled. * params: * periodId — The open enrollment period ID to track progress for * returns: React Query result with EnrollmentProgressData * score: 4 ### hook useEnrollmentStatus * file: src/cores/hr/self-service/hooks/useEnrollmentStatus.ts:16 * kind: hook * core: hr * spec: (none) * summary: Hook for managing enrollment status. * score: 1 ### hook useEnsureTimesheet * file: src/cores/hr/hooks/time/useEnsureTimesheet.ts:17 * kind: hook * core: hr * spec: (none) * summary: Materialize a timesheet from existing punches (HR-05-EN-10 US-4). * score: 4 ### hook useEquityAnalysis * file: src/cores/hr/compensation/hooks/useEquityAnalysis.ts:13 * kind: hook * core: hr * spec: (none) * summary: Hook to analyze pay equity across positions.Compares salaries within same position/level and flags disparities. * score: 4 ### hook useEverifyAuditLog * file: src/cores/hr/hooks/everify/useEverifyAuditLog.ts:17 * kind: hook * core: hr * spec: (none) * summary: Fetches the audit log entries for a specific E-Verify case. * params: * caseId — The UUID of the E-Verify case * returns: React Query result with audit event list * score: 4 ### hook useEverifyCase * file: src/cores/hr/hooks/everify/useEverifyCase.ts:17 * kind: hook * core: hr * spec: (none) * summary: Fetches a single E-Verify case by ID. * params: * caseId — The UUID of the E-Verify case * returns: React Query result with case detail data * score: 4 ### hook useEverifyCasesList * file: src/cores/hr/hooks/everify/useEverifyCasesList.ts:18 * kind: hook * core: hr * spec: (none) * summary: Fetches the list of E-Verify cases for the current organization. * params: * filters — Optional filters (status, search, overdueOnly) * returns: React Query result with case list data * score: 4 ### hook useEverifyConfig * file: src/cores/hr/hooks/everify/useEverifyConfig.ts:18 * kind: hook * core: hr * spec: (none) * summary: Fetches the E-Verify configuration for the current organization. * returns: React Query result with config data (or null if not configured) * score: 4 ### hook useEverifyConfigMutation * file: src/cores/hr/hooks/everify/useEverifyConfig.ts:47 * kind: hook * core: hr * spec: (none) * summary: Upserts the E-Verify configuration for the current organization. * returns: Mutation for saving E-Verify config * score: 4 ### hook useEverifyCreateCase * file: src/cores/hr/hooks/everify/useEverifyCreateCase.ts:18 * kind: hook * core: hr * spec: (none) * summary: Creates a new E-Verify case for an employee. * returns: Mutation for creating E-Verify cases * score: 4 ### hook useEverifyUpdateCase * file: src/cores/hr/hooks/everify/useEverifyUpdateCase.ts:23 * kind: hook * core: hr * spec: (none) * summary: Updates an existing E-Verify case. * returns: Mutation for updating E-Verify cases * score: 4 ### hook useExecuteTransfer * file: src/cores/hr/hooks/internal-mobility/useExecuteTransfer.ts:28 * kind: hook * core: hr * spec: (none) * summary: HR-35 / US-3: Execute an employee transfer.Inserts an row with a snapshot of theemployee's prior position, then updates (Plan A-2 interim until HR-23 ships its dedicated mutation path). * score: 4 ### hook useExitInterviewAnalytics * file: src/cores/hr/engagement/hooks/useExitInterviewAnalytics.ts:56 * kind: hook * core: hr * spec: (none) * summary: Hook to fetch and calculate exit interview analytics * score: 4 ### hook useExitInterviewDetail * file: src/cores/hr/engagement/hooks/useExitInterviewDetail.ts:15 * kind: hook * core: hr * spec: (none) * summary: Hook to fetch a single exit interview with full details * score: 4 ### hook useExitInterviewList * file: src/cores/hr/engagement/hooks/useExitInterviewList.ts:14 * kind: hook * core: hr * spec: (none) * summary: Hook for managing exit interview list. * score: 1 ### hook useExitInterviewMutation * file: src/cores/hr/engagement/hooks/useExitInterviewMutation.ts:19 * kind: hook * core: hr * spec: (none) * summary: Hook providing mutations for exit interview operations * score: 4 ### hook useExportForecast * file: src/cores/hr/hooks/forecasting/useExportForecast.ts:22 * kind: hook * core: hr * spec: (none) * summary: Hook for managing export forecast. * score: 1 ### hook useFederalTaxBrackets * file: src/cores/hr/hooks/payroll/useTaxTables.ts:37 * kind: hook * core: hr * spec: (none) * summary: Fetch federal tax brackets for tax calculation.Can filter by filing status and pay frequency. * score: 4 ### hook useFicaConfig * file: src/cores/hr/hooks/payroll/useTaxTables.ts:79 * kind: hook * core: hr * spec: (none) * summary: Fetch FICA configuration for a specific tax year.Returns SS rates, wage base, Medicare rates, and Additional Medicare thresholds. * score: 4 ### hook useFicaConfigList * file: src/cores/hr/hooks/payroll/useTaxTables.ts:136 * kind: hook * core: hr * spec: (none) * summary: Get all FICA configs for display in admin page. * score: 4 ### hook useFinalizeAndDistribute1099NEC * file: src/cores/hr/hooks/tax-forms/useTaxFormRunMutation.ts:453 * kind: hook * core: hr * spec: (none) * summary: Provides finalize and distribute1099 nec queries and mutation actions scoped to the current organization. * score: 4 ### hook useFingerprintClearance * file: src/cores/hr/hooks/fingerprint-clearance/useFingerprintClearance.ts:17 * kind: hook * core: hr * spec: (none) * summary: Fetches a single fingerprint clearance by ID. * params: * clearanceId — UUID of the clearance record * returns: React Query result with clearance data * score: 4 ### hook useFingerprintClearanceIncidents * file: src/cores/hr/hooks/fingerprint-clearance/useFingerprintClearanceIncidents.ts:17 * kind: hook * core: hr * spec: (none) * summary: Fetches incidents for a given clearance. * params: * clearanceId — UUID of the clearance record * returns: React Query result with incident list * score: 4 ### hook useFingerprintClearanceList * file: src/cores/hr/hooks/fingerprint-clearance/useFingerprintClearanceList.ts:18 * kind: hook * core: hr * spec: (none) * summary: Fetches the list of fingerprint clearances for the current organization. * params: * filters — Optional filters (status, cardType, search, expiringWithinDays) * returns: React Query result with clearance list data * score: 4 ### hook useFingerprintClearanceWizardState * file: src/cores/hr/components/fingerprint-clearance/wizard/useFingerprintClearanceWizardState.ts:133 * kind: hook * core: hr * spec: HR-UX-11 * summary: State controller for the Fingerprint Clearance Wizard. Manages stepnavigation, the clearance payload, and per-step Zod validation; in updatemode it preloads the existing record (with the card number masked) and, fromthe second step onward, persists progress as a PF-41 wizard draft scoped tothe employee. * params: * options — Wizard options: selects create vs. update; identifies the record to edit in update mode; optionally pre-selects the subject in create mode. * returns: The wizard state and control API described by . * score: 5 ### hook useFMLACaseDetail * file: src/cores/hr/hooks/leave/useFMLACaseDetail.ts:9 * kind: hook * core: hr * spec: (none) * summary: Hook for managing fmlacase detail. * score: 1 ### hook useFMLACaseMutation * file: src/cores/hr/hooks/leave/useFMLACaseMutation.ts:26 * kind: hook * core: hr * spec: (none) * summary: Provides mutations for creating, updating, closing FMLA cases and uploading certification documents.Exposes mutation triggers and status flags for FMLA case operations. * returns: An object with:- — trigger function to create a new FMLA case.- — async variant of .- — trigger function to update an existing FMLA case.- — async variant of .- — trigger function to mark a case as completed.- — trigger function to attach a certification document to a case.- — when a create mutation is pending.- — when an update mutation is pending.- — when a close mutation is pending. * score: 4 ### hook useFMLACases * file: src/cores/hr/hooks/leave/useFMLACases.ts:9 * kind: hook * core: hr * spec: (none) * summary: Hook for managing fmlacases. * score: 1 ### hook useForecastAccuracy * file: src/cores/hr/hooks/forecasting/useForecastAccuracy.ts:23 * kind: hook * core: hr * spec: (none) * summary: Hook for managing forecast accuracy. * score: 1 ### hook useForecastMutation * file: src/cores/hr/hooks/forecasting/useForecastMutation.ts:21 * kind: hook * core: hr * spec: (none) * summary: Hook for managing forecast mutation. * score: 1 ### hook useGenerateCalendarEvents * file: src/cores/hr/hooks/payroll/usePayCalendarEvents.ts:86 * kind: hook * core: hr * spec: (none) * summary: Generate and save calendar events for a schedule * score: 4 ### hook useGenerateForecast * file: src/cores/hr/hooks/forecasting/useGenerateForecast.ts:32 * kind: hook * core: hr * spec: (none) * summary: Hook for managing generate forecast. * score: 1 ### hook useGenerateForm940Pdf * file: src/cores/hr/hooks/tax-forms/useGenerateForm940Pdf.ts:29 * kind: hook * core: hr * spec: (none) * summary: Hook for managing generate form940 pdf. * score: 1 ### hook useGenerateForm941Pdf * file: src/cores/hr/hooks/tax-forms/useGenerateForm941Pdf.ts:32 * kind: hook * core: hr * spec: (none) * summary: Hook for managing generate form941 pdf. * score: 1 ### hook useGenerateOfferLetter * file: src/cores/hr/hooks/ats/useGenerateOfferLetter.ts:21 * kind: hook * core: hr * spec: (none) * summary: Hook for managing generate offer letter. * score: 1 ### hook useGeneratePaymentChecks * file: src/cores/hr/hooks/payroll/usePaymentCheckMutation.ts:30 * kind: hook * core: hr * spec: (none) * summary: Generate check records for a payment batch * score: 4 ### hook useGenerateW2Items * file: src/cores/hr/hooks/tax-forms/useTaxFormRunMutation.ts:167 * kind: hook * core: hr * spec: (none) * summary: Provides generate w2 items queries and mutation actions scoped to the current organization. * score: 4 ### hook useGenerateW2Pdf * file: src/cores/hr/hooks/tax-forms/useGenerateW2Pdf.ts:44 * kind: hook * core: hr * spec: (none) * summary: Hook for managing generate w2 pdf. * score: 1 ### hook useGeofenceConfigList * file: src/cores/hr/hooks/time/useGeofenceConfig.ts:22 * kind: hook * core: hr * spec: (none) * summary: Fetch all geofence configs for the current organization. * score: 4 ### hook useGeofenceForSite * file: src/cores/hr/hooks/time/useGeofenceConfig.ts:50 * kind: hook * core: hr * spec: (none) * summary: Fetch active geofence for a specific site (used during punch validation). * score: 4 ### hook useGeofenceMutation * file: src/cores/hr/hooks/time/useGeofenceConfig.ts:80 * kind: hook * core: hr * spec: (none) * summary: Create/update/delete geofence mutations. * score: 4 ### hook useGoalMetrics * file: src/cores/hr/hooks/performance/useGoalMetrics.ts:65 * kind: hook * core: hr * spec: (none) * summary: Hook for managing goal metrics. * score: 1 ### hook useGrievanceAssignees * file: src/cores/hr/employee-relations/hooks/useGrievanceAssignees.ts:36 * kind: hook * core: hr * spec: (none) * summary: Fetches HR assignees for a grievance (RLS: HR admin / platform admin only). * score: 4 ### hook useGrievanceDetail * file: src/cores/hr/employee-relations/hooks/useGrievanceDetail.ts:15 * kind: hook * core: hr * spec: (none) * summary: Hook for managing grievance detail. * score: 1 ### hook useGrievanceList * file: src/cores/hr/employee-relations/hooks/useGrievanceList.ts:15 * kind: hook * core: hr * spec: (none) * summary: Hook for managing grievance list. * score: 1 ### hook useGrievanceMutation * file: src/cores/hr/employee-relations/hooks/useGrievanceMutation.ts:25 * kind: hook * core: hr * spec: (none) * summary: Hook for managing grievance mutation. * score: 1 ### hook useHandbookBundleDetail * file: src/cores/hr/hooks/handbook/useHandbookBundles.ts:32 * kind: hook * core: hr * spec: (none) * summary: Single bundle + ordered items. * score: 4 ### hook useHandbookBundles * file: src/cores/hr/hooks/handbook/useHandbookBundles.ts:9 * kind: hook * core: hr * spec: (none) * summary: List all handbook bundles for the current org (HR-43 US-2). * score: 4 ### hook useHasActiveClearance * file: src/cores/hr/hooks/fingerprint-clearance/useHasActiveClearance.ts:20 * kind: hook * core: hr * spec: (none) * summary: Checks if an employee has an active verified fingerprint clearance. * params: * employeeId — UUID of the employee to check * returns: React Query result with boolean indicating clearance status * score: 4 ### hook useHireWithOnboarding * file: src/cores/hr/hooks/ats/useHireWithOnboarding.ts:56 * kind: hook * core: hr * spec: (none) * summary: Hook to hire a candidate and optionally create onboarding.This hook is used when:1. An offer is accepted and employee is already created2. An employee is created manually and needs onboarding triggeredIt will:- Publish the candidate\_hired event- Create onboarding if auto\_create\_onboarding is enabled * example: | const hireWithOnboarding, isHiring = useHireWithOnboarding();await hireWithOnboarding( application\_id: application.id, candidate\_id: candidate.id, employee\_id: employee.id, offer\_id: offer.id, hire\_date: offer.start\_date,); * score: 4 ### hook useHolidayDates * file: src/cores/hr/hooks/useHolidays.ts:84 * kind: hook * core: hr * spec: (none) * summary: Fetch holidays as Date objects for calculator functions * score: 4 ### hook useHolidayDetail * file: src/cores/hr/hooks/useHolidays.ts:97 * kind: hook * core: hr * spec: (none) * summary: Fetch a specific holiday by ID * score: 4 ### hook useHolidays * file: src/cores/hr/hooks/useHolidays.ts:38 * kind: hook * core: hr * spec: (none) * summary: Fetch holidays for the current organization * params: * options — Optional year filter and enabled flag * score: 4 ### hook useHRDashboardStats * file: src/cores/hr/hooks/settings/useHRDashboardStats.ts:34 * kind: hook * core: hr * spec: (none) * summary: Hook for managing hrdashboard stats. * score: 1 ### hook useHrGrievanceAssigneeCandidates * file: src/cores/hr/employee-relations/hooks/useHrGrievanceAssigneeCandidates.ts:26 * kind: hook * core: hr * spec: (none) * summary: Org admins, platform admins, and users with HR employee-relations admin permission. * score: 4 ### hook useHRModuleSettings * file: src/cores/hr/hooks/settings/useHRModuleSettings.ts:20 * kind: hook * core: hr * spec: (none) * summary: Hook for managing HR module settings at the organization levelUses useCachedQuery (platform cache) for high-read, low-change settings data. * score: 1 ### hook useHRNotificationPreferences * file: src/cores/hr/self-service/hooks/useHRNotificationPreferences.ts:24 * kind: hook * core: hr * spec: (none) * summary: Hook for managing hrnotification preferences. * score: 1 ### hook useHRSettings * file: src/cores/hr/hooks/settings/useHRSettings.ts:77 * kind: hook * core: hr * spec: (none) * summary: Hook that provides HR module settings with fallback defaults. * score: 4 ### hook useIncidentDetail * file: src/cores/hr/employee-relations/hooks/useIncidentDetail.ts:15 * kind: hook * core: hr * spec: (none) * summary: Hook for managing incident detail. * score: 1 ### hook useIncidentList * file: src/cores/hr/employee-relations/hooks/useIncidentList.ts:15 * kind: hook * core: hr * spec: (none) * summary: Hook for managing incident list. * score: 1 ### hook useIncidentMutation * file: src/cores/hr/employee-relations/hooks/useIncidentMutation.ts:24 * kind: hook * core: hr * spec: (none) * summary: Hook for managing incident mutation. * score: 1 ### hook useInitiateAdverseAction * file: src/cores/hr/hooks/ats/useFCRAWorkflow\.ts:58 * kind: hook * core: hr * spec: (none) * summary: Initiate pre-adverse action noticeSets the adverse action notice date and opens dispute window * score: 4 ### hook useInternalJobs * file: src/cores/hr/hooks/internal-mobility/useInternalJobs.ts:12 * kind: hook * core: hr * spec: (none) * summary: HR-35 / US-1: list internal job postings visible to the employee.A position is considered an internal job when: - - * score: 4 ### hook useInterviewDetail * file: src/cores/hr/hooks/ats/useInterviewDetail.ts:14 * kind: hook * core: hr * spec: (none) * summary: Hook for managing interview detail. * score: 1 ### hook useInterviewFeedback * file: src/cores/hr/hooks/ats/useInterviewFeedback.ts:33 * kind: hook * core: hr * spec: (none) * summary: Hook for managing interview feedback. * score: 1 ### hook useInterviewFeedbackMutation * file: src/cores/hr/hooks/ats/useInterviewFeedbackMutation.ts:11 * kind: hook * core: hr * spec: (none) * summary: Hook for managing interview feedback mutation. * score: 1 ### hook useInterviewMutation * file: src/cores/hr/hooks/ats/useInterviewMutation.ts:37 * kind: hook * core: hr * spec: (none) * summary: Hook for managing interview mutation. * score: 1 ### hook useInterviews * file: src/cores/hr/hooks/ats/useInterviews.ts:16 * kind: hook * core: hr * spec: (none) * summary: Hook for managing interviews. * score: 1 ### hook useInterviewScorecardForInterview * file: src/cores/hr/hooks/ats/useInterviewScorecardForInterview\.ts:22 * kind: hook * core: hr * spec: (none) * summary: Fetches scorecards for an interview. RLS handles blind evaluation— interviewer sees own + (peers only after own submitted). * score: 4 ### hook useInterviewScorecardMutation * file: src/cores/hr/hooks/ats/useInterviewScorecardMutation.ts:15 * kind: hook * core: hr * spec: (none) * summary: Hook for scorecard draft save, update, and submission. * score: 1 ### hook useInterviewScorecardTemplateDetail * file: src/cores/hr/hooks/ats/useInterviewScorecardTemplates.ts:55 * kind: hook * core: hr * spec: (none) * summary: Fetches a single scorecard template by ID. * score: 4 ### hook useInterviewScorecardTemplateMutation * file: src/cores/hr/hooks/ats/useInterviewScorecardTemplateMutation.ts:18 * kind: hook * core: hr * spec: (none) * summary: Hook for creating, updating, and archiving scorecard templates. * score: 1 ### hook useInterviewScorecardTemplates * file: src/cores/hr/hooks/ats/useInterviewScorecardTemplates.ts:17 * kind: hook * core: hr * spec: (none) * summary: Lists all scorecard templates for the current organization. * score: 4 ### hook useInvestigationDetail * file: src/cores/hr/employee-relations/hooks/useInvestigationDetail.ts:15 * kind: hook * core: hr * spec: (none) * summary: Hook for managing investigation detail. * score: 1 ### hook useInvestigationList * file: src/cores/hr/employee-relations/hooks/useInvestigationList.ts:15 * kind: hook * core: hr * spec: (none) * summary: Hook for managing investigation list. * score: 1 ### hook useInvestigationMutation * file: src/cores/hr/employee-relations/hooks/useInvestigationMutation.ts:24 * kind: hook * core: hr * spec: (none) * summary: Hook for managing investigation mutation. * score: 1 ### hook useIssueProliantManualCheck * file: src/cores/hr/hooks/proliant/useProliantManualCheck.ts:109 * kind: hook * core: hr * spec: (none) * summary: Issue an off-cycle/correction manual check via the edge function. Server-side the call is admin-gated, capability-gated on thevendor's ManualCheck grant, idempotent per (employee, period, payload), andPF-04 audited. Refreshes the sync-runs list on completion. * score: 4 ### hook useITOffboardingIntegration * file: src/cores/hr/hooks/onboarding/useITOffboardingIntegration.ts:24 * kind: hook * core: hr * spec: (none) * summary: Hook for managing itoffboarding integration. * score: 1 ### hook useITOnboardingIntegration * file: src/cores/hr/hooks/onboarding/useITOnboardingIntegration.ts:30 * kind: hook * core: hr * spec: (none) * summary: Hook for managing itonboarding integration. * score: 1 ### hook useJobBoardIntegrationDetail * file: src/cores/hr/hooks/ats/useJobBoardIntegrations.ts:61 * kind: hook * core: hr * spec: (none) * summary: Hook for managing job board integration detail. * score: 1 ### hook useJobBoardIntegrationMutation * file: src/cores/hr/hooks/ats/useJobBoardIntegrations.ts:92 * kind: hook * core: hr * spec: (none) * summary: Hook for managing job board integration mutation. * score: 1 ### hook useJobBoardIntegrations * file: src/cores/hr/hooks/ats/useJobBoardIntegrations.ts:24 * kind: hook * core: hr * spec: (none) * summary: Hook for managing job board integrations. * score: 1 ### hook useJobBoardPostings * file: src/cores/hr/hooks/ats/useJobBoardPostings.ts:25 * kind: hook * core: hr * spec: (none) * summary: Hook for managing job board postings. * score: 1 ### hook useJobBoardPostingUpdate * file: src/cores/hr/hooks/ats/useJobBoardPostings.ts:110 * kind: hook * core: hr * spec: (none) * summary: Hook for managing job board posting update. * score: 1 ### hook useJobBoardSync * file: src/cores/hr/hooks/ats/useJobBoardPostings.ts:63 * kind: hook * core: hr * spec: (none) * summary: Hook for managing job board sync. * score: 1 ### hook useJobDescriptionAgreementDetail * file: src/cores/hr/hooks/job-descriptions/useJobDescriptionAgreementDetail.ts:32 * kind: hook * core: hr * spec: (none) * summary: Fetches a single job description agreement with related position, employee, manager, and document data scoped to the current organization.Executes a Supabase-backed query (via react-query) to retrieve one by , including nested , , , and relations. The query is disabled unless is true and both and the current organization ID are present. * params: * options — Configuration options for the hook - agreementId: The ID of the job description agreement to fetch - enabled: If , the query will be disabled (defaults to ) * returns: The react-query result containing the fetched when available * example: | const data, isLoading, error = useJobDescriptionAgreementDetail( agreementId: 'abc-123' ); * score: 4 ### hook useJobDescriptionAgreementMutation * file: src/cores/hr/hooks/job-descriptions/useJobDescriptionAgreementMutation.ts:35 * kind: hook * core: hr * spec: (none) * summary: Hook for managing job description agreement mutation. * score: 1 ### hook useJobDescriptionAgreements * file: src/cores/hr/hooks/job-descriptions/useJobDescriptionAgreements.ts:44 * kind: hook * core: hr * spec: (none) * summary: Fetches job description agreements for the current organization with optional filters and React Query caching. Queries the hr\_job\_description\_agreements table for the active organization, applying optional filters (status, employeeId, positionId, managerId) and returns a React Query result that caches data for 5 minutes and retains it for garbage collection for 10 minutes. * params: * options — UseJobDescriptionAgreementsOptions — optional configuration: - filters: JobDescriptionAgreementFilters — filter criteria to apply to the list query - enabled: boolean — when false, disables the query * returns: A React Query result containing an array of JobDescriptionAgreement objects (empty array when there are no matches). * example: | const data, isLoading, error = useJobDescriptionAgreements( filters: status: \['pending', 'signed'], employeeId: 'emp\_123' , enabled: true,); * score: 4 ### hook useJobDescriptionPdf * file: src/cores/hr/hooks/job-descriptions/useJobDescriptionPdf.ts:24 * kind: hook * core: hr * spec: (none) * summary: Hook for managing job description pdf. * score: 1 ### hook useJobPostingDetail * file: src/cores/hr/hooks/ats/useJobPostingDetail.ts:14 * kind: hook * core: hr * spec: (none) * summary: Hook for managing job posting detail. * score: 1 ### hook useJobPostingMutation * file: src/cores/hr/hooks/ats/useJobPostingMutation.ts:11 * kind: hook * core: hr * spec: (none) * summary: Hook for managing job posting mutation. * score: 1 ### hook useJobPostings * file: src/cores/hr/hooks/ats/useJobPostings.ts:18 * kind: hook * core: hr * spec: (none) * summary: Hook for managing job postings. * score: 1 ### hook useJobPostingScorecardComparison * file: src/cores/hr/hooks/ats/useJobPostingScorecardComparison.ts:22 * kind: hook * core: hr * spec: (none) * summary: Fetches all submitted scorecards for a job posting and groups by candidate. * score: 4 ### hook useJobPostingWizard * file: src/cores/hr/wizards/job-posting/hooks/useJobPostingWizard.ts:10 * kind: hook * core: hr * spec: (none) * summary: HR-UX-14: submit handler for the Job Posting Wizard. Wraps HR-09's existing — creates the draft, then optionally publishes.No new data access is introduced. * score: 4 ### hook useLatestCounterOffer * file: src/cores/hr/hooks/ats/useCounterOffers.ts:74 * kind: hook * core: hr * spec: (none) * summary: Hook for managing latest counter offer. * score: 1 ### hook useLeadershipProgramDefinitionList * file: src/cores/hr/succession/hooks/useLeadershipProgramDefinitionList.ts:12 * kind: hook * core: hr * spec: (none) * summary: Hook for listing organization leadership program definitions (catalog). * score: 1 ### hook useLeadershipProgramDefinitionMutation * file: src/cores/hr/succession/hooks/useLeadershipProgramDefinitionMutation.ts:14 * kind: hook * core: hr * spec: (none) * summary: Hook for managing leadership program definition mutations. * score: 1 ### hook useLeadershipProgramList * file: src/cores/hr/succession/hooks/useLeadershipProgramList.ts:12 * kind: hook * core: hr * spec: (none) * summary: Hook for managing leadership program list. * score: 1 ### hook useLeadershipProgramMutation * file: src/cores/hr/succession/hooks/useLeadershipProgramMutation.ts:14 * kind: hook * core: hr * spec: (none) * summary: Hook for managing leadership program mutation. * score: 1 ### hook useLeaveAccrualTierMutation * file: src/cores/hr/hooks/leave/useLeaveAccrualTierMutation.ts:26 * kind: hook * core: hr * spec: (none) * summary: Hook for managing leave accrual tier mutation. * score: 1 ### hook useLeaveAccrualTiers * file: src/cores/hr/hooks/leave/useLeaveAccrualTiers.ts:19 * kind: hook * core: hr * spec: (none) * summary: Hook for managing leave accrual tiers. * score: 1 ### hook useLeaveBalances * file: src/cores/hr/hooks/leave/useLeaveBalances.ts:14 * kind: hook * core: hr * spec: (none) * summary: Query employee's leave balances with policy detailsReturns balances with calculated available amounts * score: 4 ### hook useLeavePolicies * file: src/cores/hr/hooks/leave/useLeavePolicies.ts:9 * kind: hook * core: hr * spec: (none) * summary: Hook for managing leave policies. * score: 1 ### hook useLeavePolicyMutation * file: src/cores/hr/hooks/leave/useLeavePolicyMutation.ts:20 * kind: hook * core: hr * spec: (none) * summary: Provides a set of React Query mutations for creating, updating, toggling, and deleting leave policies scoped to the current organization and authenticated user.Each mutation invalidates the 'leave-policies' query cache on success and displays a success or error toast. * returns: An object containing:- — mutation that creates a leave policy for the current organization; returns the created policy record.- — mutation that updates an existing leave policy by id; returns the updated policy record.- — mutation that sets a policy's state by id; returns the updated policy record.- — mutation that deletes a leave policy by id; returns nothing. * score: 4 ### hook useLeaveReports * file: src/cores/hr/hooks/leave/useLeaveReports.ts:22 * kind: hook * core: hr * spec: (none) * summary: Generate pre-defined leave usage reports * score: 4 ### hook useLeaveRequestMutation * file: src/cores/hr/hooks/leave/useLeaveRequestMutation.ts:62 * kind: hook * core: hr * spec: (none) * summary: Mutations for leave request workflow- submitRequest: Create new request with balance validation- approveRequest: Approve and deduct from balance- denyRequest: Deny and restore pending balance- cancelRequest: Cancel pending request (employee self-service) * score: 4 ### hook useLeaveRequests * file: src/cores/hr/hooks/leave/useLeaveRequests.ts:19 * kind: hook * core: hr * spec: (none) * summary: Query leave requests with filtersJoins employee profile, leave policy, and reviewer dataFor employees: own requestsFor managers: direct reports' pending requests * score: 4 ### hook useLeaveShiftConflicts * file: src/cores/hr/hooks/leave/useLeaveShiftConflicts.ts:23 * kind: hook * core: hr * spec: (none) * summary: Check for conflicts between approved leave and shift assignments * score: 4 ### hook useLeaveStats * file: src/cores/hr/hooks/leave/useLeaveStats.ts:38 * kind: hook * core: hr * spec: (none) * summary: Hook for managing leave stats. * score: 1 ### hook useLifecycleStats * file: src/cores/hr/hooks/employees/useLifecycleStats.ts:58 * kind: hook * core: hr * spec: (none) * summary: Hook for managing lifecycle stats. * score: 1 ### hook useLifeEventDetail * file: src/cores/hr/benefits/hooks/useLifeEvents.ts:140 * kind: hook * core: hr * spec: (none) * summary: Hook for fetching a single life event detail * score: 1 ### hook useLifeEventMutation * file: src/cores/hr/benefits/hooks/useLifeEventMutation.ts:24 * kind: hook * core: hr * spec: (none) * summary: Hook for life event mutations (create, update, review) * score: 1 ### hook useLifeEvents * file: src/cores/hr/benefits/hooks/useLifeEvents.ts:16 * kind: hook * core: hr * spec: (none) * summary: Hook for listing life events (admin view) * score: 1 ### hook useManagerList * file: src/cores/hr/hooks/employees/useManagerList.ts:23 * kind: hook * core: hr * spec: (none) * summary: Hook for managing manager list. * score: 1 ### hook useManualHoursEntry * file: src/cores/hr/hooks/time/useManualHoursEntry.ts:20 * kind: hook * core: hr * spec: (none) * summary: Upsert exempt daily-hours entries (manual=true) and recompute period totals (HR-05 Phase 1 / D4). * score: 4 ### hook useMarkAlertRead * file: src/cores/hr/hooks/scheduling/useStaffingAlerts.ts:82 * kind: hook * core: hr * spec: (none) * summary: Hook for marking a staffing alert as read. * score: 1 ### hook useMeritIncreaseDetail * file: src/cores/hr/compensation/hooks/useMeritIncreaseDetail.ts:23 * kind: hook * core: hr * spec: (none) * summary: Hook for managing merit increase detail. * score: 1 ### hook useMeritIncreaseList * file: src/cores/hr/compensation/hooks/useMeritIncreaseList.ts:26 * kind: hook * core: hr * spec: (none) * summary: Hook for managing merit increase list. * score: 1 ### hook useMeritIncreaseMutation * file: src/cores/hr/compensation/hooks/useMeritIncreaseMutation.ts:16 * kind: hook * core: hr * spec: (none) * summary: Hook for managing merit increase mutation. * score: 1 ### hook useMyActiveSurveys * file: src/cores/hr/engagement/hooks/useMyActiveSurveys.ts:32 * kind: hook * core: hr * spec: (none) * summary: Fetches active surveys available to the current employee,along with their response status if they've started one. * score: 4 ### hook useMyAvailabilityPreferences * file: src/cores/hr/hooks/scheduling/useAvailabilityPreferences.ts:66 * kind: hook * core: hr * spec: (none) * summary: Hook for managing my availability preferences. * score: 1 ### hook useMyBenefitEnrollments * file: src/cores/hr/benefits/hooks/useBenefitEnrollments.ts:122 * kind: hook * core: hr * spec: (none) * summary: Hook for current employee's benefit enrollments (self-service view) * score: 1 ### hook useMyCompensationStatement * file: src/cores/hr/compensation/hooks/useMyCompensationStatement.ts:22 * kind: hook * core: hr * spec: (none) * summary: Employee self-service hook to view their own compensation statements.Uses RLS policy hr\_is\_self\_employee to restrict access. * score: 4 ### hook useMyCredentialsSummary * file: src/cores/hr/self-service/hooks/useMyCredentialsSummary.ts:23 * kind: hook * core: hr * spec: (none) * summary: Returns a summary of the current employee's credentials (total, expiring, expired). * score: 4 ### hook useMyDocumentDownload * file: src/cores/hr/self-service/hooks/useMyDocumentDownload.ts:15 * kind: hook * core: hr * spec: (none) * summary: Hook for managing my document download. * score: 1 ### hook useMyDocuments * file: src/cores/hr/self-service/hooks/useMyDocuments.ts:258 * kind: hook * core: hr * spec: (none) * summary: Hook for managing my documents. * score: 1 ### hook useMyDocumentUpload * file: src/cores/hr/self-service/hooks/useMyDocumentUpload.ts:26 * kind: hook * core: hr * spec: (none) * summary: Hook for managing my document upload. * score: 1 ### hook useMyEligibility * file: src/cores/hr/benefits/hooks/useEmployeeEligibility.ts:179 * kind: hook * core: hr * spec: (none) * summary: Hook to get current user's eligibility (for self-service enrollment) * score: 4 ### hook useMyEmployeeRelationsCases * file: src/cores/hr/employee-relations/hooks/useMyEmployeeRelationsCases.ts:16 * kind: hook * core: hr * spec: (none) * summary: Hook for managing my employee relations cases. * score: 1 ### hook useMyExitInterview * file: src/cores/hr/engagement/hooks/useMyExitInterview\.ts:16 * kind: hook * core: hr * spec: (none) * summary: Hook to fetch the current employee's exit interview * score: 4 ### hook useMyFeedbackPending * file: src/cores/hr/hooks/useMyFeedbackPending.ts:50 * kind: hook * core: hr * spec: (none) * summary: Hook for managing my feedback pending. * score: 1 ### hook useMyFeedbackRequests * file: src/cores/hr/hooks/performance/useMyFeedbackRequests.ts:26 * kind: hook * core: hr * spec: (none) * summary: Hook for managing my feedback requests. * score: 1 ### hook useMyGoals * file: src/cores/hr/hooks/performance/useMyGoals.ts:13 * kind: hook * core: hr * spec: (none) * summary: Hook for managing my goals. * score: 1 ### hook useMyHRDashboard * file: src/cores/hr/self-service/hooks/useMyHRDashboard.ts:16 * kind: hook * core: hr * spec: (none) * summary: Hook for managing my hrdashboard. * score: 1 ### hook useMyInternalApplications * file: src/cores/hr/hooks/internal-mobility/useMyInternalApplications.ts:14 * kind: hook * core: hr * spec: (none) * summary: HR-35 / US-1: current employee's own internal applications. * score: 4 ### hook useMyLifeEvents * file: src/cores/hr/benefits/hooks/useLifeEvents.ts:102 * kind: hook * core: hr * spec: (none) * summary: Hook for current employee's life events (self-service view) * score: 1 ### hook useMyOnboardingContacts * file: src/cores/hr/self-service/hooks/useMyOnboardingContacts.ts:16 * kind: hook * core: hr * spec: (none) * summary: Hook for managing my onboarding contacts. * score: 1 ### hook useMyOnboardingInstance * file: src/cores/hr/self-service/hooks/useMyOnboardingInstance.ts:16 * kind: hook * core: hr * spec: (none) * summary: Hook for managing my onboarding instance. * score: 1 ### hook useMyOnboardingProgress * file: src/cores/hr/self-service/hooks/useMyOnboardingProgress.ts:14 * kind: hook * core: hr * spec: (none) * summary: Hook for managing my onboarding progress. * score: 1 ### hook useMyOnboardingTasks * file: src/cores/hr/hooks/onboarding/useMyOnboardingTasks.ts:16 * kind: hook * core: hr * spec: (none) * summary: Hook for managing my onboarding tasks. * score: 1 ### hook useMyOversightSessions * file: src/cores/hr/hooks/oversight/useMyOversightSessions.ts:19 * kind: hook * core: hr * spec: (none) * summary: Hook for managing my oversight sessions. * score: 1 ### hook useMyOversightSummary * file: src/cores/hr/self-service/hooks/useMyOversightSummary.ts:25 * kind: hook * core: hr * spec: (none) * summary: Returns the current employee's active supervision relationship and compliance summary. * score: 4 ### hook useMyPayStubDetailV2 * file: src/cores/hr/self-service/hooks/useMyPayStubsV2.ts:118 * kind: hook * core: hr * spec: (none) * summary: Fetch a single pay stub with full stub\_data for the current employee. * score: 4 ### hook useMyPayStubs * file: src/cores/hr/self-service/hooks/useMyPayStubs.ts:40 * kind: hook * core: hr * spec: (none) * summary: Hook for managing my pay stubs. * score: 1 ### hook useMyPayStubsV2 * file: src/cores/hr/self-service/hooks/useMyPayStubsV2.ts:59 * kind: hook * core: hr * spec: (none) * summary: Hook for managing my pay stubs v2. * score: 1 ### hook useMyPendingOfferApprovals * file: src/cores/hr/hooks/ats/useOfferApprovals.ts:111 * kind: hook * core: hr * spec: (none) * summary: Fetch pending approvals for the current user across all offers * score: 4 ### hook useMyPendingSignatures * file: src/cores/hr/hooks/oversight/useMyOversightSessions.ts:83 * kind: hook * core: hr * spec: (none) * summary: Hook for managing my pending signatures. * score: 1 ### hook useMyPerformanceReviews * file: src/cores/hr/hooks/performance/useMyPerformanceReviews.ts:41 * kind: hook * core: hr * spec: (none) * summary: Hook for managing my performance reviews. * score: 1 ### hook useMyPersonalInfo * file: src/cores/hr/self-service/hooks/useMyPersonalInfo.ts:26 * kind: hook * core: hr * spec: (none) * summary: Hook for managing my personal info. * score: 1 ### hook useMyReceivedFeedback * file: src/cores/hr/hooks/performance/useMyReceivedFeedback.ts:26 * kind: hook * core: hr * spec: (none) * summary: Hook for managing my received feedback. * score: 1 ### hook useMyShiftSwapRequests * file: src/cores/hr/hooks/scheduling/useShiftSwapRequests.ts:134 * kind: hook * core: hr * spec: (none) * summary: Hook for managing my shift swap requests. * score: 1 ### hook useMyTimePunches * file: src/cores/hr/hooks/time/useMyTimePunches.ts:32 * kind: hook * core: hr * spec: (none) * summary: Fetches time punch records for the current user within the current organization, optionally limited to a date range. * params: * params — Optional filters for the query. - startDate: Inclusive start date in YYYY-MM-DD format; when provided, punches on or after are returned. - endDate: Inclusive end date in YYYY-MM-DD format; when provided, punches on or before are returned. * returns: An array of time punch objects for the current user's employee record, each including related and nested data; returns an empty array if no employee record is found. * score: 4 ### hook useMyTimesheets * file: src/cores/hr/hooks/time/useMyTimesheets.ts:25 * kind: hook * core: hr * spec: (none) * summary: Provides a React Query hook that fetches timesheets for the current user within the active organization. * params: * params — Optional filters to apply to the timesheet query. - status: Filter timesheets by status (exact match). - startDate: Include timesheets with on or after this ISO date string. - endDate: Include timesheets with on or before this ISO date string. * returns: A React Query result containing an array of timesheet records (including a nested object with , , and ) matching the current user and provided filters. * score: 4 ### hook useNewHireReport * file: src/cores/hr/hooks/useNewHireReport.ts:26 * kind: hook * core: hr * spec: (none) * summary: Hook for managing new hire report. * score: 1 ### hook useNewHireReportMutation * file: src/cores/hr/hooks/useNewHireReportMutation.ts:28 * kind: hook * core: hr * spec: (none) * summary: Hook for managing new hire report mutation. * score: 1 ### hook useNextPayDate * file: src/cores/hr/self-service/hooks/useNextPayDate.ts:16 * kind: hook * core: hr * spec: (none) * summary: Hook for managing next pay date. * score: 1 ### hook useOffboardingInstanceDetail * file: src/cores/hr/hooks/onboarding/useOffboardingInstanceDetail.ts:9 * kind: hook * core: hr * spec: (none) * summary: Hook for managing offboarding instance detail. * score: 1 ### hook useOffboardingInstances * file: src/cores/hr/hooks/onboarding/useOffboardingInstances.ts:17 * kind: hook * core: hr * spec: (none) * summary: Hook for managing offboarding instances. * score: 1 ### hook useOffboardingMutation * file: src/cores/hr/hooks/onboarding/useOffboardingMutation.ts:28 * kind: hook * core: hr * spec: (none) * summary: Hook for managing offboarding mutation. * score: 1 ### hook useOfferApprovalMutation * file: src/cores/hr/hooks/ats/useOfferApprovalMutation.ts:37 * kind: hook * core: hr * spec: (none) * summary: Hook for managing offer approval mutation. * score: 1 ### hook useOfferApprovals * file: src/cores/hr/hooks/ats/useOfferApprovals.ts:67 * kind: hook * core: hr * spec: (none) * summary: Hook for managing offer approvals. * score: 1 ### hook useOfferDetail * file: src/cores/hr/hooks/ats/useOfferDetail.ts:14 * kind: hook * core: hr * spec: (none) * summary: Hook for managing offer detail. * score: 1 ### hook useOfferLetterPdf * file: src/cores/hr/hooks/ats/useOfferLetterPdf.ts:61 * kind: hook * core: hr * spec: (none) * summary: Provides a React hook to generate a templated offer letter PDF (using organization letterhead) and handle success/error flows. * params: * options — Configuration for PDF generation - letterheadId: Optional ID of the letterhead to use; when omitted the organization's default letterhead is used - showApprovalBlock: When (default) include an approval/signature block on the generated PDF * returns: An object with: - — generates the offer letter PDF and returns the file URL on success or on failure, - — whether a generation request is in progress, - — the last generation error (if any), - — resets generation state/errors. * example: | const generateOfferLetter, isGenerating = useOfferLetterPdf();const handleGenerate = async () = const url = await generateOfferLetter( candidateName: 'John Doe', position: 'Software Engineer', startDate: '2024-02-01', salary: '\$100,000', salaryFrequency: 'annually', ); if (url) // PDF opened in a new tab and URL returned ; * score: 4 ### hook useOfferLetterWizard * file: src/cores/hr/wizards/offer-letter/hooks/useOfferLetterWizard.ts:10 * kind: hook * core: hr * spec: (none) * summary: HR-UX-14: submit handler for the Offer Letter Wizard. Wraps HR-09's existing — creates the offer, then optionally submits it forapproval (FR-9/FR-10). No new data access is introduced. * score: 4 ### hook useOfferMutation * file: src/cores/hr/hooks/ats/useOfferMutation.ts:25 * kind: hook * core: hr * spec: (none) * summary: Hook for managing offer mutation. * score: 1 ### hook useOffers * file: src/cores/hr/hooks/ats/useOffers.ts:16 * kind: hook * core: hr * spec: (none) * summary: Hook for managing offers. * score: 1 ### hook useOfferSignature * file: src/cores/hr/hooks/ats/useOfferSignature.ts:21 * kind: hook * core: hr * spec: (none) * summary: Hook for managing offer signature. * score: 1 ### hook useOfferTemplateMutation * file: src/cores/hr/hooks/ats/useOfferTemplateMutation.ts:28 * kind: hook * core: hr * spec: (none) * summary: Hook for managing offer template mutation. * score: 1 ### hook useOfferTemplates * file: src/cores/hr/hooks/ats/useOfferTemplates.ts:40 * kind: hook * core: hr * spec: (none) * summary: Hook for managing offer templates. * score: 1 ### hook useOnboardingAnalytics * file: src/cores/hr/hooks/onboarding/useOnboardingAnalytics.ts:44 * kind: hook * core: hr * spec: (none) * summary: Hook for managing onboarding analytics. * score: 1 ### hook useOnboardingForms * file: src/cores/hr/hooks/onboarding/useOnboardingForms.ts:32 * kind: hook * core: hr * spec: (none) * summary: Hook for managing onboarding forms. * score: 1 ### hook useOnboardingInstanceDetail * file: src/cores/hr/hooks/onboarding/useOnboardingInstanceDetail.ts:9 * kind: hook * core: hr * spec: (none) * summary: Hook for managing onboarding instance detail. * score: 1 ### hook useOnboardingInstanceMutation * file: src/cores/hr/hooks/onboarding/useOnboardingInstanceMutation.ts:18 * kind: hook * core: hr * spec: (none) * summary: Hook for managing onboarding instance mutation. * score: 1 ### hook useOnboardingInstances * file: src/cores/hr/hooks/onboarding/useOnboardingInstances.ts:17 * kind: hook * core: hr * spec: (none) * summary: Hook for managing onboarding instances. * score: 1 ### hook useOnboardingNotifications * file: src/cores/hr/hooks/onboarding/useOnboardingNotifications.ts:30 * kind: hook * core: hr * spec: (none) * summary: Hook for managing onboarding notifications. * score: 1 ### hook useOnboardingTaskMutation * file: src/cores/hr/hooks/onboarding/useOnboardingTaskMutation.ts:14 * kind: hook * core: hr * spec: (none) * summary: Hook for managing onboarding task mutation. * score: 1 ### hook useOnboardingTemplateDetail * file: src/cores/hr/hooks/onboarding/useOnboardingTemplateDetail.ts:9 * kind: hook * core: hr * spec: (none) * summary: Hook for managing onboarding template detail. * score: 1 ### hook useOnboardingTemplateMutation * file: src/cores/hr/hooks/onboarding/useOnboardingTemplateMutation.ts:17 * kind: hook * core: hr * spec: (none) * summary: Hook for managing onboarding template mutation. * score: 1 ### hook useOnboardingTemplates * file: src/cores/hr/hooks/onboarding/useOnboardingTemplates.ts:17 * kind: hook * core: hr * spec: (none) * summary: Hook for managing onboarding templates. * score: 1 ### hook useOpenEnrollmentGate * file: src/cores/hr/benefits/hooks/useOpenEnrollmentGate.ts:48 * kind: hook * core: hr * spec: (none) * summary: Checks whether the current user needs to complete open enrollment. * returns: Gate state with requiresAction boolean, period info, and employee ID * score: 4 ### hook useOpenEnrollmentPeriodDetail * file: src/cores/hr/benefits/hooks/useOpenEnrollmentPeriods.ts:80 * kind: hook * core: hr * spec: (none) * summary: Hook for fetching a single open enrollment period * score: 1 ### hook useOpenEnrollmentPeriodMutation * file: src/cores/hr/benefits/hooks/useOpenEnrollmentPeriods.ts:108 * kind: hook * core: hr * spec: (none) * summary: Hook for open enrollment period mutations * score: 1 ### hook useOpenEnrollmentPeriods * file: src/cores/hr/benefits/hooks/useOpenEnrollmentPeriods.ts:19 * kind: hook * core: hr * spec: (none) * summary: Hook for listing open enrollment periods * score: 1 ### hook useOpenEnrollmentStats * file: src/cores/hr/benefits/hooks/useBenefitsAnalytics.ts:122 * kind: hook * core: hr * spec: (none) * summary: Hook for open enrollment statistics * score: 1 ### hook useOpenExceptionsCount * file: src/cores/hr/hooks/time/useTimeExceptions.ts:131 * kind: hook * core: hr * spec: (none) * summary: Hook for managing open exceptions count. * score: 1 ### hook useOrgChart * file: src/cores/hr/hooks/employees/useOrgChart.ts:14 * kind: hook * core: hr * spec: (none) * summary: Hook for managing org chart. * score: 1 ### hook useOversightComplianceList * file: src/cores/hr/hooks/oversight/useOversightCompliance.ts:64 * kind: hook * core: hr * spec: (none) * summary: Hook for managing oversight compliance list. * score: 1 ### hook useOversightComplianceReport * file: src/cores/hr/hooks/oversight/useOversightComplianceReport.ts:55 * kind: hook * core: hr * spec: (none) * summary: Hook for managing oversight compliance report. * score: 1 ### hook useOversightComplianceStatus * file: src/cores/hr/hooks/oversight/useOversightCompliance.ts:19 * kind: hook * core: hr * spec: (none) * summary: Hook for managing oversight compliance status. * score: 1 ### hook useOversightRelationshipDetail * file: src/cores/hr/hooks/oversight/useOversightRelationships.ts:68 * kind: hook * core: hr * spec: (none) * summary: Hook for fetching a single oversight relationship. * score: 1 ### hook useOversightRelationshipList * file: src/cores/hr/hooks/oversight/useOversightRelationships.ts:16 * kind: hook * core: hr * spec: (none) * summary: Hook for managing oversight relationship list. * score: 1 ### hook useOversightRequirementList * file: src/cores/hr/hooks/oversight/useOversightRequirements.ts:22 * kind: hook * core: hr * spec: (none) * summary: Hook for managing oversight requirement list. * score: 1 ### hook useOversightRequirementMutation * file: src/cores/hr/hooks/oversight/useOversightRequirements.ts:60 * kind: hook * core: hr * spec: (none) * summary: Hook for creating, updating, and deleting oversight requirements. * score: 1 ### hook useOversightSessionDetail * file: src/cores/hr/hooks/oversight/useOversightSessions.ts:71 * kind: hook * core: hr * spec: (none) * summary: Hook for fetching a single oversight session. * score: 1 ### hook useOversightSessionList * file: src/cores/hr/hooks/oversight/useOversightSessions.ts:15 * kind: hook * core: hr * spec: (none) * summary: Hook for managing oversight session list. * score: 1 ### hook useOversightSessionPdfV2 * file: src/cores/hr/hooks/oversight/useOversightSessionPdfV2.ts:64 * kind: hook * core: hr * spec: (none) * summary: Hook for generating clinical oversight session PDFs using the PF-64 templating system.Fetches session data from the database (when generating by session id), transforms it into theexpected OversightSessionData shape, builds templated PDF content, and invokes the templated PDFgenerator. Optionally opens the generated PDF in a new tab. * params: * options — Configuration for PDF generation - letterheadId: Optional id of the letterhead to use; if omitted the organization's default (or first) letterhead is used - autoOpen: If , do not automatically open the generated PDF in a new browser tab; defaults to * returns: An object containing:- — fetches session data, generates the PDF, and returns generation metadata or an error result- — generates a PDF from pre-fetched - — while either data fetching or PDF generation is in progress- — last error state from the underlying templated PDF generator- — resets the underlying generator's error/state * example: | const generatePdf, isGenerating = useOversightSessionPdfV2( autoOpen: true );await generatePdf('session-id-123'); * score: 1 ### hook useOvertimeTracking * file: src/cores/hr/hooks/time/useOvertimeTracking.ts:30 * kind: hook * core: hr * spec: (none) * summary: Hook for tracking employee weekly hours and overtime * score: 1 ### hook usePathwayTemplates * file: src/cores/hr/hooks/skills/usePathwayTemplates.ts:9 * kind: hook * core: hr * spec: (none) * summary: Lists qualification pathway templates available to the current organization. * score: 4 ### hook usePauseEmployeeDeduction * file: src/cores/hr/hooks/payroll/useEmployeeDeductionMutation.ts:206 * kind: hook * core: hr * spec: (none) * summary: Pause a deduction (shorthand). * score: 4 ### hook usePayCalendarEvents * file: src/cores/hr/hooks/payroll/usePayCalendarEvents.ts:52 * kind: hook * core: hr * spec: (none) * summary: Fetch pay calendar events for the current organization within a date range * score: 4 ### hook usePaymentBatchDetail * file: src/cores/hr/hooks/payroll/usePaymentBatches.ts:90 * kind: hook * core: hr * spec: (none) * summary: Get a single payment batch with all items * score: 4 ### hook usePaymentBatches * file: src/cores/hr/hooks/payroll/usePaymentBatches.ts:20 * kind: hook * core: hr * spec: (none) * summary: List all payment batches for a payroll run or organization * score: 4 ### hook usePaymentBatchStats * file: src/cores/hr/hooks/payroll/usePaymentBatches.ts:205 * kind: hook * core: hr * spec: (none) * summary: Get payment statistics for a payroll run * score: 4 ### hook usePaymentChecksByBatch * file: src/cores/hr/hooks/payroll/usePaymentChecks.ts:18 * kind: hook * core: hr * spec: (none) * summary: Fetch all payment checks for a given batch * score: 4 ### hook usePayRateHistory * file: src/cores/hr/hooks/payroll/usePayRates.ts:72 * kind: hook * core: hr * spec: (none) * summary: Hook for managing pay rate history. * score: 1 ### hook usePayRateMutation * file: src/cores/hr/hooks/payroll/usePayRateMutation.ts:12 * kind: hook * core: hr * spec: (none) * summary: Hook for managing pay rate mutation. * score: 1 ### hook usePayRates * file: src/cores/hr/hooks/payroll/usePayRates.ts:18 * kind: hook * core: hr * spec: (none) * summary: Hook for managing pay rates. * score: 1 ### hook usePayrollAuditLog * file: src/cores/hr/hooks/payroll/usePayrollAuditLog.ts:22 * kind: hook * core: hr * spec: (none) * summary: Hook for managing payroll audit log. * score: 1 ### hook usePayrollCalculations * file: src/cores/hr/hooks/payroll/usePayrollCalculations.ts:41 * kind: hook * core: hr * spec: (none) * summary: Hook for managing payroll calculations. * score: 1 ### hook usePayrollEligibility * file: src/cores/hr/hooks/payroll/usePayrollEligibility.ts:23 * kind: hook * core: hr * spec: (none) * summary: Hook for managing payroll eligibility. * score: 1 ### hook usePayrollExport * file: src/cores/hr/hooks/payroll/usePayrollExport.ts:16 * kind: hook * core: hr * spec: (none) * summary: Hook for managing payroll export. * score: 1 ### hook usePayrollExports * file: src/cores/hr/hooks/payroll/usePayrollExports.ts:15 * kind: hook * core: hr * spec: (none) * summary: Hook for managing payroll exports. * score: 1 ### hook usePayrollPeriodSummary * file: src/cores/hr/hooks/payroll/usePayrollPeriodSummary.ts:14 * kind: hook * core: hr * spec: (none) * summary: Hook for managing payroll period summary. * score: 1 ### hook usePayrollRunDetail * file: src/cores/hr/hooks/payroll/usePayrollRunDetail.ts:13 * kind: hook * core: hr * spec: (none) * summary: Hook for managing payroll run detail. * score: 1 ### hook usePayrollRunDetail * file: src/cores/hr/hooks/payroll/usePayrollRuns.ts:68 * kind: hook * core: hr * spec: (none) * summary: Hook for managing payroll run detail. * score: 1 ### hook usePayrollRunMutation * file: src/cores/hr/hooks/payroll/usePayrollRunMutation.ts:26 * kind: hook * core: hr * spec: (none) * summary: Hook for managing payroll run mutation. * score: 1 ### hook usePayrollRunPayStubs * file: src/cores/hr/hooks/payroll/usePayStubs.ts:253 * kind: hook * core: hr * spec: (none) * summary: Fetch all pay stubs for a specific payroll run. * score: 4 ### hook usePayrollRuns * file: src/cores/hr/hooks/payroll/usePayrollRuns.ts:23 * kind: hook * core: hr * spec: (none) * summary: Hook for managing payroll runs. * score: 1 ### hook usePaySchedule * file: src/cores/hr/hooks/payroll/usePaySchedule.ts:33 * kind: hook * core: hr * spec: (none) * summary: Fetch the active pay schedule for the current organization * score: 4 ### hook usePayScheduleDetail * file: src/cores/hr/hooks/payroll/usePaySchedule.ts:90 * kind: hook * core: hr * spec: (none) * summary: Fetch a specific pay schedule by ID * score: 4 ### hook usePayScheduleList * file: src/cores/hr/hooks/payroll/usePaySchedule.ts:62 * kind: hook * core: hr * spec: (none) * summary: Fetch all pay schedules for the current organization * score: 4 ### hook usePayStubDetail * file: src/cores/hr/hooks/payroll/usePayStubs.ts:162 * kind: hook * core: hr * spec: (none) * summary: Fetch a single pay stub with full stub\_data. * score: 4 ### hook usePayStubDetail * file: src/cores/hr/self-service/hooks/usePayStubDetail.ts:46 * kind: hook * core: hr * spec: (none) * summary: Hook for managing pay stub detail. * score: 1 ### hook usePayStubPdf * file: src/cores/hr/self-service/hooks/usePayStubPdf.ts:43 * kind: hook * core: hr * spec: (none) * summary: Hook that provides helpers to generate pay stub PDFs via the PF-64 templating system.Provides functions to fetch and transform pay stub records into printable content, generate a templated PDF (opening it in a new tab on success), and generate a PDF from pre-fetched pay stub data. Manages generation and fetch loading state and surfaces template-generation errors. * params: * options — Configuration options for PDF generation - letterheadId: Optional ID of a letterhead to use for the generated PDF; when omitted the organization's default or first available letterhead is used * returns: An object containing:- — fetches pay stub data, generates a PDF, opens it in a new tab if successful, and returns the PDF URL or .- — generates a PDF from provided , opens it in a new tab if successful, and returns the PDF URL or .- — while fetching data or generating a PDF.- — error state from the templated PDF generator hook.- — resets the templated PDF generator error/state. * example: | const generatePayStubPdf, isGenerating = usePayStubPdf( letterheadId: 'lh\_123' );await generatePayStubPdf('paystub\_456'); * score: 4 ### hook usePayStubs * file: src/cores/hr/hooks/payroll/usePayStubs.ts:98 * kind: hook * core: hr * spec: (none) * summary: Fetch pay stubs with optional filters.Admin hook for viewing pay stubs across the organization. * score: 4 ### hook usePendingActions * file: src/cores/hr/self-service/hooks/usePendingActions.ts:16 * kind: hook * core: hr * spec: (none) * summary: Hook for managing pending actions. * score: 1 ### hook usePendingApprovalCount * file: src/cores/hr/hooks/workload/useWorkloadApprovals.ts:79 * kind: hook * core: hr * spec: (none) * summary: Hook for managing pending approval count. * score: 1 ### hook usePendingDependentVerifications * file: src/cores/hr/benefits/hooks/useBenefitDependents.ts:299 * kind: hook * core: hr * spec: (none) * summary: Hook for dependents pending verification (admin dashboard) * score: 1 ### hook usePendingEnrollmentsCount * file: src/cores/hr/benefits/hooks/useBenefitEnrollments.ts:295 * kind: hook * core: hr * spec: (none) * summary: Hook for counting pending enrollments (for dashboard/badges) * score: 1 ### hook usePendingLifeEventsCount * file: src/cores/hr/benefits/hooks/useLifeEvents.ts:196 * kind: hook * core: hr * spec: (none) * summary: Hook for counting pending life events (for dashboard/badges) * score: 1 ### hook usePendingOfferApprovalCount * file: src/cores/hr/hooks/ats/useOfferApprovals.ts:157 * kind: hook * core: hr * spec: (none) * summary: Get count of pending offer approvals for current user * score: 4 ### hook usePendingRenewalApprovals * file: src/cores/hr/hooks/credentialing/useCredentialRenewalWorkflow\.ts:178 * kind: hook * core: hr * spec: (none) * summary: Provides pending renewal approvals queries and mutation actions scoped to the current organization. * score: 4 ### hook usePendingSwapRequests * file: src/cores/hr/hooks/scheduling/useShiftSwapRequests.ts:212 * kind: hook * core: hr * spec: (none) * summary: Hook for managing pending swap requests. * score: 1 ### hook usePeopleStats * file: src/cores/hr/hooks/employees/usePeopleStats.ts:33 * kind: hook * core: hr * spec: (none) * summary: Hook for managing people stats. * score: 1 ### hook usePerformanceAnalytics * file: src/cores/hr/hooks/performance/usePerformanceAnalytics.ts:60 * kind: hook * core: hr * spec: (none) * summary: Hook for managing performance analytics. * score: 1 ### hook usePerformanceCompetencies * file: src/cores/hr/hooks/performance/usePerformanceCompetencies.ts:20 * kind: hook * core: hr * spec: (none) * summary: Hook for managing performance competencies. * score: 1 ### hook usePerformanceCompetencyMutation * file: src/cores/hr/hooks/performance/usePerformanceCompetencyMutation.ts:20 * kind: hook * core: hr * spec: (none) * summary: Hook for managing performance competency mutation. * score: 1 ### hook usePerformanceCycleDetail * file: src/cores/hr/hooks/performance/usePerformanceCycleDetail.ts:14 * kind: hook * core: hr * spec: (none) * summary: Hook for managing performance cycle detail. * score: 1 ### hook usePerformanceCycleMutation * file: src/cores/hr/hooks/performance/usePerformanceCycleMutation.ts:21 * kind: hook * core: hr * spec: (none) * summary: Hook for managing performance cycle mutation. * score: 1 ### hook usePerformanceCycles * file: src/cores/hr/hooks/performance/usePerformanceCycles.ts:25 * kind: hook * core: hr * spec: (none) * summary: Hook for managing performance cycles. * score: 1 ### hook usePerformanceDashboardStats * file: src/cores/hr/hooks/performance/usePerformanceDashboardStats.ts:37 * kind: hook * core: hr * spec: (none) * summary: Hook for managing performance dashboard stats. * score: 1 ### hook usePerformanceFeedback * file: src/cores/hr/hooks/performance/usePerformanceFeedback.ts:25 * kind: hook * core: hr * spec: (none) * summary: Hook for managing performance feedback. * score: 1 ### hook usePerformanceFeedbackDetail * file: src/cores/hr/hooks/performance/usePerformanceFeedbackDetail.ts:25 * kind: hook * core: hr * spec: (none) * summary: Hook for managing performance feedback detail. * score: 1 ### hook usePerformanceFeedbackMutation * file: src/cores/hr/hooks/performance/usePerformanceFeedbackMutation.ts:24 * kind: hook * core: hr * spec: (none) * summary: Hook for managing performance feedback mutation. * score: 1 ### hook usePerformanceGoalDetail * file: src/cores/hr/hooks/performance/usePerformanceGoalDetail.ts:12 * kind: hook * core: hr * spec: (none) * summary: Hook for managing performance goal detail. * score: 1 ### hook usePerformanceGoalMutation * file: src/cores/hr/hooks/performance/usePerformanceGoalMutation.ts:19 * kind: hook * core: hr * spec: (none) * summary: Hook for managing performance goal mutation. * score: 1 ### hook usePerformanceGoals * file: src/cores/hr/hooks/performance/usePerformanceGoals.ts:12 * kind: hook * core: hr * spec: (none) * summary: Hook for managing performance goals. * score: 1 ### hook usePerformanceImprovementPlans * file: src/cores/hr/hooks/performance/usePerformanceImprovementPlans.ts:23 * kind: hook * core: hr * spec: (none) * summary: Hook for managing performance improvement plans. * score: 1 ### hook usePerformanceReviewDetail * file: src/cores/hr/hooks/performance/usePerformanceReviewDetail.ts:14 * kind: hook * core: hr * spec: (none) * summary: Hook for managing performance review detail. * score: 1 ### hook usePerformanceReviewMutation * file: src/cores/hr/hooks/performance/usePerformanceReviewMutation.ts:22 * kind: hook * core: hr * spec: (none) * summary: Hook for managing performance review mutation. * score: 1 ### hook usePerformanceReviews * file: src/cores/hr/hooks/performance/usePerformanceReviews.ts:25 * kind: hook * core: hr * spec: (none) * summary: Hook for managing performance reviews. * score: 1 ### hook usePIPDetail * file: src/cores/hr/hooks/performance/usePIPDetail.ts:16 * kind: hook * core: hr * spec: (none) * summary: Hook for managing pipdetail. * score: 1 ### hook usePIPDocumentPdf * file: src/cores/hr/hooks/documents/usePIPDocumentPdf.ts:17 * kind: hook * core: hr * spec: (none) * summary: Hook for managing pipdocument pdf. * score: 1 ### hook usePipelineMetrics * file: src/cores/hr/hooks/ats/usePipelineMetrics.ts:70 * kind: hook * core: hr * spec: (none) * summary: Hook for managing pipeline metrics. * score: 1 ### hook usePIPMetrics * file: src/cores/hr/hooks/performance/usePIPMetrics.ts:76 * kind: hook * core: hr * spec: (none) * summary: Hook for managing pipmetrics. * score: 1 ### hook usePIPMutation * file: src/cores/hr/hooks/performance/usePIPMutation.ts:22 * kind: hook * core: hr * spec: (none) * summary: Hook for managing pipmutation. * score: 1 ### hook usePIPTerminationIntegration * file: src/cores/hr/hooks/performance/usePIPTerminationIntegration.ts:37 * kind: hook * core: hr * spec: (none) * summary: Hook for managing piptermination integration. * score: 1 ### hook usePortalAccounts * file: src/cores/hr/hooks/ats/useCandidatePortal.ts:35 * kind: hook * core: hr * spec: (none) * summary: Fetch portal accounts for the organization * score: 4 ### hook usePositionList * file: src/cores/hr/hooks/employees/usePositionList.ts:27 * kind: hook * core: hr * spec: (none) * summary: Fetches a filtered list of HR positions for the currently selected organization. Executes a Supabase query (via React Query) against the table and returns positions with an relation. Filters from are applied when provided; when is omitted the query defaults to returning active positions only. The query is enabled only when is true and an organization is selected. * params: * options — UsePositionListOptions — optional configuration for the query - filters: PositionListFilters — optional filter set: , , , , and (applies to and ) - enabled: boolean — when false the query is disabled; defaults to * returns: UseQueryResultPositionListItem\[], unknown — React Query result containing an array of ; resolves to an empty array when no rows are returned * example: | const data: positions, isLoading = usePositionList( filters: is\_active: true, search: 'nurse' ); * score: 4 ### hook usePositionMutation * file: src/cores/hr/hooks/employees/usePositionMutation.ts:21 * kind: hook * core: hr * spec: (none) * summary: Exposes mutations for creating, updating, and archiving HR positions, and manages cache invalidation and user-facing toasts.Mutation functions may throw when the user is not authenticated, when no organization is selected (create), or when the database returns an error. * returns: An object with mutation functions and their pending states:- — async function to create a position; provides the created position.- — async function to update a position; provides the updated position.- — async function to archive (soft-delete) a position.- — if the create mutation is pending, otherwise.- — if the update mutation is pending, otherwise.- — if the delete mutation is pending, otherwise. * score: 4 ### hook usePositionSkillRequirementMutation * file: src/cores/hr/hooks/skills/usePositionSkillRequirementMutation.ts:21 * kind: hook * core: hr * spec: (none) * summary: Hook for managing position skill requirement mutation. * score: 1 ### hook usePositionSkillRequirements * file: src/cores/hr/hooks/skills/usePositionSkillRequirements.ts:15 * kind: hook * core: hr * spec: (none) * summary: Hook for managing position skill requirements. * score: 1 ### hook useProliantCalendars * file: src/cores/hr/hooks/proliant/useProliantPayrollRun.ts:37 * kind: hook * core: hr * spec: (none) * summary: List the active organization's Proliant pay calendars, active ones first,for the calendar-select step of the run wizard. * score: 4 ### hook useProliantCodeMappings * file: src/cores/hr/hooks/proliant/useProliantIntegration.ts:765 * kind: hook * core: hr * spec: (none) * summary: List Proliant code mappings for the active organization, ordered bycode type then Proliant code. * score: 4 ### hook useProliantConflictEntries * file: src/cores/hr/hooks/proliant/useProliantIntegration.ts:414 * kind: hook * core: hr * spec: HR-44-EN-05 * summary: Query pending conflict entries from for the activeorganization. Returns log rows whose is ,ordered newest-first, capped at rows.The cap defaults to 1000 (raised from 200) so the resolver covers the fullconflict backlog rather than truncating it. rows areintentionally NOT returned here — they have no Encore profile and are handledby the dedicated Unmatched-profiles view (). * params: * limit — Maximum number of conflict rows to fetch (default 1000). * returns: TanStack Query result containing . * score: 4 ### hook useProliantFieldMappings * file: src/cores/hr/hooks/proliant/useProliantIntegration.ts:571 * kind: hook * core: hr * spec: HR-44 * summary: Query all field mappings for a given Proliant integration, ordered by. Returns rows from that controlwhich Proliant fields are mirrored into Encore and in which direction. * params: * integrationId — The integration to scope mappings to; query is disabled when undefined. * returns: TanStack Query result containing . * score: 5 ### hook useProliantIntegration * file: src/cores/hr/hooks/proliant/useProliantIntegration.ts:43 * kind: hook * core: hr * spec: (none) * summary: Fetch the Proliant integration config for the active organization. * score: 4 ### hook useProliantMappedEmployees * file: src/cores/hr/hooks/proliant/useProliantManualCheck.ts:32 * kind: hook * core: hr * spec: (none) * summary: List the org's ACTIVELY mapped employees for the manual-check picker.Only mapped employees qualify — the edge function resolves the vendor idthrough the same mapping and rejects unmapped targets. * score: 4 ### hook useProliantMappingTargets * file: src/cores/hr/hooks/proliant/useProliantMappingTargets.ts:33 * kind: hook * core: hr * spec: HR-44 * summary: Resolve Encore mapping targets per registry family present in .Computes the distinct registry families in the rows (via ),resolves each through , and returnsthem keyed by family. Org-scoped query key for tenant-cache safety. never throws (returns on error), so consumers can treatthe result as strictly additive — families with no resolvable target offeronly the "N/A — skip" option downstream. * params: * rows — Code-mapping rows whose families to resolve. * returns: keyed by Proliant , plus . * score: 5 ### hook useProliantReconciliation * file: src/cores/hr/hooks/proliant/useProliantPayrollRun.ts:98 * kind: hook * core: hr * spec: (none) * summary: Fetch the latest reconciliation row for a given run-state. * score: 4 ### hook useProliantReports * file: src/cores/hr/hooks/proliant/useProliantReports.ts:47 * kind: hook * core: hr * spec: (none) * summary: Fetch the read-only ReadyPay report list for the current org's integration.Enabled only when an integration + company id exist; the query key carriesthe org id for tenant cache isolation. * score: 4 ### hook useProliantRunState * file: src/cores/hr/hooks/proliant/useProliantPayrollRun.ts:64 * kind: hook * core: hr * spec: (none) * summary: Fetch the run-state row for (org, calendar\_guid), live-polling while therun is in-flight and idling once it reaches a terminal phase. * score: 4 ### hook useProliantSyncLog * file: src/cores/hr/hooks/proliant/useProliantIntegration.ts:377 * kind: hook * core: hr * spec: (none) * summary: List log entries for a given sync run. * score: 4 ### hook useProliantSyncRuns * file: src/cores/hr/hooks/proliant/useProliantIntegration.ts:351 * kind: hook * core: hr * spec: (none) * summary: List recent sync runs for the active organization. * score: 4 ### hook useProliantTaxDocumentDownload * file: src/cores/hr/self-service/hooks/useProliantTaxDocuments.ts:139 * kind: hook * core: hr * spec: (none) * summary: Fetch ONE document (tax form by vendor id, or paystub by transaction id)on demand and trigger a client download. Owner-scoped server-side; thecontent is never cached. * score: 4 ### hook useProliantTaxDocuments * file: src/cores/hr/self-service/hooks/useProliantTaxDocuments.ts:79 * kind: hook * core: hr * spec: (none) * summary: List the employee's own payroll-provider tax documents for a tax year.Metadata only; the query key carries the org id for tenant cache isolation. * score: 4 ### hook useProliantTestConnection * file: src/cores/hr/hooks/proliant/useProliantIntegration.ts:283 * kind: hook * core: hr * spec: (none) * summary: Trigger a sandbox/production connection test. * score: 4 ### hook useProliantUnmatchedEntries * file: src/cores/hr/hooks/proliant/useProliantIntegration.ts:449 * kind: hook * core: hr * spec: HR-44-EN-05 * summary: Query skip entries from for the activeorganization — Proliant employees that had no matching Encore profile during apull. These are NOT data conflicts; each carries an enriched identity payload and can be remediated by creating + linking a profile via. * params: * limit — Maximum number of unmatched rows to fetch (default 1000). * returns: TanStack Query result containing . * score: 4 ### hook usePTOBalance * file: src/cores/hr/self-service/hooks/usePTOBalance.ts:16 * kind: hook * core: hr * spec: (none) * summary: Hook for managing ptobalance. * score: 1 ### hook usePTOHoursForPeriod * file: src/cores/hr/hooks/leave/useApprovedLeaveForPeriod.ts:103 * kind: hook * core: hr * spec: (none) * summary: Calculate total PTO hours for a date range * score: 4 ### hook usePTOPatternAnalysis * file: src/cores/hr/hooks/leave/usePTOPatternAnalysis.ts:68 * kind: hook * core: hr * spec: (none) * summary: Hook for managing ptopattern analysis. * score: 1 ### hook usePTOPatternMutation * file: src/cores/hr/hooks/leave/usePTOPatternMutation.ts:17 * kind: hook * core: hr * spec: (none) * summary: Hook for managing ptopattern mutation. * score: 1 ### hook usePTOPatterns * file: src/cores/hr/hooks/leave/usePTOPatterns.ts:25 * kind: hook * core: hr * spec: (none) * summary: Hook for managing ptopatterns. * score: 1 ### hook usePTOPatternsByMonth * file: src/cores/hr/hooks/leave/usePTOPatterns.ts:83 * kind: hook * core: hr * spec: (none) * summary: Hook for managing ptopatterns by month. * score: 1 ### hook usePunchSites * file: src/cores/hr/hooks/time/usePunchSites.ts:25 * kind: hook * core: hr * spec: (none) * summary: HR-05 Phase 0 — the sites available to the time clock's work-location picker.Returns the org's active sites plus the current employee's assigned site so thepicker can default to "where you're assigned" while letting a worker covering adifferent house pick their real location (which drives the punch timezone). * score: 4 ### hook useReactivateBankAccount * file: src/cores/hr/hooks/payroll/useEmployeeBankAccountMutation.ts:219 * kind: hook * core: hr * spec: (none) * summary: Reactivate a previously deactivated bank account. * score: 4 ### hook useReadinessScore * file: src/cores/hr/succession/hooks/useReadinessScore.ts:17 * kind: hook * core: hr * spec: (none) * summary: Hook for managing readiness score. * score: 1 ### hook useRecalculateLineItemTax * file: src/cores/hr/hooks/payroll/useCalculatePayrollTaxes.ts:374 * kind: hook * core: hr * spec: (none) * summary: Hook to recalculate taxes for a single line item (useful for adjustments). * score: 4 ### hook useRecentSSNAccess * file: src/cores/hr/benefits/hooks/useSSNAccessLog.ts:51 * kind: hook * core: hr * spec: (none) * summary: Hook for recent SSN access (dashboard widget) * score: 1 ### hook useRecordOptOut * file: src/cores/hr/hooks/ats/useTCPAConsent.ts:160 * kind: hook * core: hr * spec: (none) * summary: Record opt-out for a consent log * score: 4 ### hook useReference * file: src/cores/hr/hooks/ats/useReferences.ts:145 * kind: hook * core: hr * spec: (none) * summary: Fetch a single reference by ID with organization scoping * score: 4 ### hook useReferenceAverages * file: src/cores/hr/hooks/ats/useReferences.ts:433 * kind: hook * core: hr * spec: (none) * summary: Calculate average ratings for a candidate's referencesReturns memoized averages, loading state, and error * score: 4 ### hook useReferences * file: src/cores/hr/hooks/ats/useReferences.ts:66 * kind: hook * core: hr * spec: (none) * summary: Fetch all references for the current organization * score: 4 ### hook useReferencesForCandidate * file: src/cores/hr/hooks/ats/useReferences.ts:117 * kind: hook * core: hr * spec: (none) * summary: Fetch references for a specific candidate * score: 4 ### hook useReferenceStats * file: src/cores/hr/hooks/ats/useReferences.ts:187 * kind: hook * core: hr * spec: (none) * summary: Get reference statistics for the organization * score: 4 ### hook useRegenerateCalendarEvents * file: src/cores/hr/hooks/payroll/usePayCalendarEvents.ts:130 * kind: hook * core: hr * spec: (none) * summary: Regenerate calendar events for a schedule (delete and recreate) * score: 4 ### hook useRejectRenewal * file: src/cores/hr/hooks/credentialing/useCredentialRenewalWorkflow\.ts:438 * kind: hook * core: hr * spec: (none) * summary: Provides reject renewal queries and mutation actions scoped to the current organization. * score: 4 ### hook useReminderHistory * file: src/cores/hr/benefits/hooks/useEnrollmentReminders.ts:74 * kind: hook * core: hr * spec: (none) * summary: Fetches reminder history for a given enrollment period. * params: * periodId — The enrollment period to fetch history for * returns: Map of employeeId to last reminder info * score: 4 ### hook useResendPortalInvite * file: src/cores/hr/hooks/ats/useCandidatePortal.ts:161 * kind: hook * core: hr * spec: (none) * summary: Resend portal invitation * score: 1 ### hook useResolveDispute * file: src/cores/hr/hooks/ats/useFCRAWorkflow\.ts:163 * kind: hook * core: hr * spec: (none) * summary: Resolve a dispute * score: 1 ### hook useResolveDLQEntry * file: src/cores/hr/hooks/ats/useBackgroundCheckDLQ.ts:228 * kind: hook * core: hr * spec: (none) * summary: Mark an entry as resolved * score: 1 ### hook useResolveFingerprintClearanceIncident * file: src/cores/hr/hooks/fingerprint-clearance/useResolveFingerprintClearanceIncident.ts:24 * kind: hook * core: hr * spec: (none) * summary: Resolves a fingerprint clearance incident by setting resolved = trueand recording the resolver and date. * returns: Mutation for resolving incidents * score: 4 ### hook useResolveProliantConflict * file: src/cores/hr/hooks/proliant/useProliantIntegration.ts:488 * kind: hook * core: hr * spec: HR-44-EN-05 * summary: Mutation to resolve a pending Proliant sync conflict.Calls the tenant-scoped SECURITY DEFINER RPC ,which sets , , and under an explicit org-ownership check. This replaces the prior bare clientUPDATE, which (a) recorded no , and (b) silently affected zerorows — is append-only (SELECT/INSERT RLS only; noUPDATE policy), so a direct client UPDATE was denied by RLS.On success, invalidates the conflicts and sync-log query caches. * returns: TanStack ; call with . * score: 4 ### hook useResumeEmployeeDeduction * file: src/cores/hr/hooks/payroll/useEmployeeDeductionMutation.ts:219 * kind: hook * core: hr * spec: (none) * summary: Resume (activate) a paused deduction. * score: 4 ### hook useRetentionRiskAnalytics * file: src/cores/hr/analytics/hooks/useRetentionRiskAnalytics.ts:36 * kind: hook * core: hr * spec: (none) * summary: Hook for managing retention risk analytics. * score: 1 ### hook useRetryDLQEntry * file: src/cores/hr/hooks/ats/useBackgroundCheckDLQ.ts:135 * kind: hook * core: hr * spec: (none) * summary: Retry a failed webhook with optimistic locking to prevent race conditions * score: 4 ### hook useReviewInternalApplications * file: src/cores/hr/hooks/internal-mobility/useReviewInternalApplications.ts:22 * kind: hook * core: hr * spec: (none) * summary: HR-35 / US-2: recruiter / hiring-manager review queue. * score: 4 ### hook useReviewMetrics * file: src/cores/hr/hooks/performance/useReviewMetrics.ts:81 * kind: hook * core: hr * spec: (none) * summary: Hook for managing review metrics. * score: 1 ### hook useRunAction * file: src/cores/hr/hooks/proliant/useProliantPayrollRun.ts:148 * kind: hook * core: hr * spec: (none) * summary: Invoke the orchestration edge function for a givenaction, then refresh the run-state and reconciliation queries for theaffected calendar. * score: 4 ### hook useSalaryBandDetail * file: src/cores/hr/compensation/hooks/useSalaryBandDetail.ts:23 * kind: hook * core: hr * spec: (none) * summary: Hook for managing salary band detail. * score: 1 ### hook useSalaryBandList * file: src/cores/hr/compensation/hooks/useSalaryBandList.ts:26 * kind: hook * core: hr * spec: (none) * summary: Hook for managing salary band list. * score: 1 ### hook useSalaryBandMutation * file: src/cores/hr/compensation/hooks/useSalaryBandMutation.ts:14 * kind: hook * core: hr * spec: (none) * summary: Hook for managing salary band mutation. * score: 1 ### hook useSalaryChangePdf * file: src/cores/hr/hooks/documents/useSalaryChangePdf.ts:17 * kind: hook * core: hr * spec: (none) * summary: Hook for managing salary change pdf. * score: 1 ### hook useSendCommunication * file: src/cores/hr/hooks/ats/useCandidateCommunications.ts:216 * kind: hook * core: hr * spec: (none) * summary: Send a communication to a candidate * score: 4 ### hook useSendEnrollmentReminders * file: src/cores/hr/benefits/hooks/useEnrollmentReminders.ts:123 * kind: hook * core: hr * spec: (none) * summary: Mutation for sending bulk enrollment reminders.Batch-inserts notifications into pf\_notifications and logsto hr\_enrollment\_reminder\_logs in chunks of 50. * returns: Mutation for sending reminders with progress toasts * score: 4 ### hook useSendFinalAdverseNotice * file: src/cores/hr/hooks/ats/useFCRAWorkflow\.ts:220 * kind: hook * core: hr * spec: (none) * summary: Send final adverse action noticeOnly available after dispute window closes or dispute is resolved * score: 4 ### hook useSendOnboardingReminder * file: src/cores/hr/hooks/onboarding/useSendOnboardingReminder.ts:42 * kind: hook * core: hr * spec: (none) * summary: Hook for managing send onboarding reminder. * score: 1 ### hook useSendReferenceRequest * file: src/cores/hr/hooks/ats/useReferences.ts:336 * kind: hook * core: hr * spec: (none) * summary: Send reference request email * score: 1 ### hook useSeparationAgreementPdf * file: src/cores/hr/hooks/documents/useSeparationAgreementPdf.ts:17 * kind: hook * core: hr * spec: (none) * summary: Hook for managing separation agreement pdf. * score: 1 ### hook useSetActivePaySchedule * file: src/cores/hr/hooks/payroll/usePayScheduleMutation.ts:156 * kind: hook * core: hr * spec: (none) * summary: Set a pay schedule as active (deactivates others) * score: 4 ### hook useSetDefaultProvider * file: src/cores/hr/hooks/ats/useBackgroundCheckProviders.ts:170 * kind: hook * core: hr * spec: (none) * summary: Set a provider as the default using atomic RPC * score: 4 ### hook useSetDefaultTemplate * file: src/cores/hr/hooks/ats/useCommunicationTemplates.ts:223 * kind: hook * core: hr * spec: (none) * summary: Set a template as the default for its type/category using atomic RPC * score: 4 ### hook useSetProliantCodeMapping * file: src/cores/hr/hooks/proliant/useProliantIntegration.ts:849 * kind: hook * core: hr * spec: (none) * summary: Override a single Proliant code mapping's Encore value and mapped flag. * score: 4 ### hook useShiftAssignmentList * file: src/cores/hr/hooks/scheduling/useShiftAssignmentList.ts:14 * kind: hook * core: hr * spec: (none) * summary: Hook for managing shift assignment list. * score: 1 ### hook useShiftAssignmentMutation * file: src/cores/hr/hooks/scheduling/useShiftAssignmentMutation.ts:25 * kind: hook * core: hr * spec: (none) * summary: Provides mutations and status flags for creating, claiming, updating, and removing shift assignments. * returns: An object with mutation functions and pending-state flags:- : async function to assign an employee to a shift (omits and in payload).- : async function for an employee to claim an open shift ().- : async function to update an assignment ().- : async function to delete an assignment by .- : while an assign operation is pending, otherwise.- : while a claim operation is pending, otherwise.- : while an update operation is pending, otherwise.- : while a remove operation is pending, otherwise. * score: 4 ### hook useShiftList * file: src/cores/hr/hooks/scheduling/useShiftList.ts:38 * kind: hook * core: hr * spec: (none) * summary: Hook for managing shift list. * score: 1 ### hook useShiftMutation * file: src/cores/hr/hooks/scheduling/useShiftMutation.ts:23 * kind: hook * core: hr * spec: (none) * summary: Exposes helpers to create, update, and delete hr\_shifts while handling user/organization checks, toasts, and cache invalidation. * returns: An object with:- — a function that creates a shift from insert data and resolves to the created shift row\.- — a function that updates a shift by and resolves to the updated shift row\.- — a function that deletes a shift by and resolves when deletion completes.- — when a create mutation is pending, otherwise.- — when an update mutation is pending, otherwise.- — when a delete mutation is pending, otherwise. * score: 4 ### hook useShiftSwapRequests * file: src/cores/hr/hooks/scheduling/useShiftSwapRequests.ts:55 * kind: hook * core: hr * spec: (none) * summary: Hook for managing shift swap requests. * score: 1 ### hook useShiftTemplateList * file: src/cores/hr/hooks/scheduling/useShiftTemplateList.ts:14 * kind: hook * core: hr * spec: (none) * summary: Hook for managing shift template list. * score: 1 ### hook useShiftTemplateMutation * file: src/cores/hr/hooks/scheduling/useShiftTemplateMutation.ts:26 * kind: hook * core: hr * spec: (none) * summary: Provides mutations for creating, updating, and archiving shift templates and exposes their status flags. * returns: An object containing:- : a function that creates a shift template and returns the created template row\.- : a function that updates a shift template and returns the updated template row\.- : a function that archives a shift template (no value returned).- : when a create operation is pending, otherwise.- : when an update operation is pending, otherwise.- : when an archive operation is pending, otherwise. * score: 4 ### hook useSignJobDescriptionAgreement * file: src/cores/hr/hooks/job-descriptions/useSignJobDescriptionAgreement.ts:45 * kind: hook * core: hr * spec: (none) * summary: Provides mutations and state for manager and employee signing of a job description agreement. Exposes async actions to sign a job description agreement as the manager or the employee, and boolean flags that indicate whether each signing mutation is in progress. Each mutate function validates authentication and organization, authorizes the current user's profile against the agreement role, updates the agreement status and timestamps, invalidates relevant queries, and shows success or error toasts. * returns: An object containing:- - : Async function to sign an agreement as the manager. Validates the current user is the designated manager and moves the agreement to .- - : Async function to sign an agreement as the employee. Validates the current user is the designated employee and moves the agreement to .- - : while the manager signing mutation is pending.- - : while the employee signing mutation is pending. * example: | // Usage in a React componentconst managerSign, employeeSign, isManagerSigning, isEmployeeSigning = useSignJobDescriptionAgreement();// Sign as managerawait managerSign( agreementId: 'abc', signatureData: 'data', signatureType: 'typed' ); * score: 4 ### hook useSkillAssessmentMutation * file: src/cores/hr/hooks/skills/useSkillAssessmentMutation.ts:19 * kind: hook * core: hr * spec: (none) * summary: Hook for managing skill assessment mutation. * score: 1 ### hook useSkillDetail * file: src/cores/hr/hooks/skills/useSkillDetail.ts:14 * kind: hook * core: hr * spec: (none) * summary: Hook for managing skill detail. * score: 1 ### hook useSkillMutation * file: src/cores/hr/hooks/skills/useSkillMutation.ts:16 * kind: hook * core: hr * spec: (none) * summary: Hook for managing skill mutation. * score: 1 ### hook useSkillsAssessments * file: src/cores/hr/hooks/skills/useSkillsAssessments.ts:29 * kind: hook * core: hr * spec: (none) * summary: Hook for managing skills assessments. * score: 1 ### hook useSkillsCoverage * file: src/cores/hr/hooks/skills/useSkillsCoverage.ts:21 * kind: hook * core: hr * spec: (none) * summary: Hook for managing skills coverage. * score: 1 ### hook useSkillsLibrary * file: src/cores/hr/hooks/skills/useSkillsLibrary.ts:30 * kind: hook * core: hr * spec: (none) * summary: Hook for managing skills library. * score: 1 ### hook useSourceEffectivenessMetrics * file: src/cores/hr/hooks/ats/useSourceEffectivenessMetrics.ts:69 * kind: hook * core: hr * spec: (none) * summary: Hook for managing source effectiveness metrics. * score: 1 ### hook useSSNAccessLog * file: src/cores/hr/benefits/hooks/useSSNAccessLog.ts:15 * kind: hook * core: hr * spec: (none) * summary: Hook for viewing SSN access audit log (HR admins only) * score: 1 ### hook useStaffingAgenciesList * file: src/cores/hr/hooks/contractors/useStaffingAgenciesList.ts:12 * kind: hook * core: hr * spec: (none) * summary: Fetches the list of staffing agencies for the current organization. * params: * options — Optional flag to include inactive agencies. * returns: A React Query result containing an array of staffing agency rows. * score: 4 ### hook useStaffingAgencyMutation * file: src/cores/hr/hooks/contractors/useStaffingAgencyMutation.ts:14 * kind: hook * core: hr * spec: (none) * summary: Provides mutations for creating, updating, and deleting staffing agencies. * returns: An object containing , , and mutation objects. * score: 4 ### hook useStaffingAlerts * file: src/cores/hr/hooks/scheduling/useStaffingAlerts.ts:21 * kind: hook * core: hr * spec: (none) * summary: Hook for managing staffing alerts. * score: 1 ### hook useStaffingCalculation * file: src/cores/hr/hooks/scheduling/useStaffingCalculation.ts:50 * kind: hook * core: hr * spec: (none) * summary: Hook for managing staffing calculation. * score: 1 ### hook useStaffingForecast * file: src/cores/hr/hooks/scheduling/useStaffingForecasts.ts:110 * kind: hook * core: hr * spec: (none) * summary: Hook for managing staffing forecast. * score: 1 ### hook useStaffingForecasts * file: src/cores/hr/hooks/scheduling/useStaffingForecasts.ts:27 * kind: hook * core: hr * spec: (none) * summary: Hook for managing staffing forecasts. * score: 1 ### hook useStartRenewalWorkflow * file: src/cores/hr/hooks/credentialing/useCredentialRenewalWorkflow\.ts:540 * kind: hook * core: hr * spec: (none) * summary: Provides start renewal workflow queries and mutation actions scoped to the current organization. * score: 4 ### hook useSubmitDispute * file: src/cores/hr/hooks/ats/useFCRAWorkflow\.ts:113 * kind: hook * core: hr * spec: (none) * summary: Submit a dispute on behalf of the candidate * score: 4 ### hook useSubmitFingerprintClearanceWizard * file: src/cores/hr/components/fingerprint-clearance/wizard/useSubmitFingerprintClearanceWizard.ts:44 * kind: hook * core: hr * spec: (none) * summary: Wrap the existing HR-28 upsert with wizard-specific side effects. * score: 4 ### hook useSubmitInternalApplication * file: src/cores/hr/hooks/internal-mobility/useSubmitInternalApplication.ts:25 * kind: hook * core: hr * spec: (none) * summary: HR-35 / US-1: Employee submits an internal application.The DB unique index enforces one activeapplication per (org, employee, position). * score: 4 ### hook useSubmitPaymentBatch * file: src/cores/hr/hooks/payroll/usePaymentBatchMutation.ts:215 * kind: hook * core: hr * spec: (none) * summary: Submit a payment batch for processingCalls edge function for Plaid transfers or NACHA generation * score: 4 ### hook useSubmitRenewalForm * file: src/cores/hr/hooks/credentialing/useCredentialRenewalWorkflow\.ts:252 * kind: hook * core: hr * spec: (none) * summary: Provides submit renewal form queries and mutation actions scoped to the current organization. * score: 4 ### hook useSuccessionPlanDetail * file: src/cores/hr/succession/hooks/useSuccessionPlanDetail.ts:29 * kind: hook * core: hr * spec: (none) * summary: Hook for managing succession plan detail. * score: 1 ### hook useSuccessionPlanList * file: src/cores/hr/succession/hooks/useSuccessionPlanList.ts:28 * kind: hook * core: hr * spec: (none) * summary: Hook for managing succession plan list. * score: 1 ### hook useSuccessionPlanMutation * file: src/cores/hr/succession/hooks/useSuccessionPlanMutation.ts:14 * kind: hook * core: hr * spec: (none) * summary: Hook for managing succession plan mutation. * score: 1 ### hook useSurveyAnalytics * file: src/cores/hr/engagement/hooks/useSurveyAnalytics.ts:59 * kind: hook * core: hr * spec: (none) * summary: Hook to fetch and aggregate survey analytics for dashboard * score: 4 ### hook useSurveyDetail * file: src/cores/hr/engagement/hooks/useSurveyDetail.ts:14 * kind: hook * core: hr * spec: (none) * summary: Hook for managing survey detail. * score: 1 ### hook useSurveyList * file: src/cores/hr/engagement/hooks/useSurveyList.ts:14 * kind: hook * core: hr * spec: (none) * summary: Hook for managing survey list. * score: 1 ### hook useSurveyMutation * file: src/cores/hr/engagement/hooks/useSurveyMutation.ts:17 * kind: hook * core: hr * spec: (none) * summary: Hook for managing survey mutation. * score: 1 ### hook useSurveyResponseList * file: src/cores/hr/engagement/hooks/useSurveyResponseList.ts:15 * kind: hook * core: hr * spec: (none) * summary: Hook for managing survey response list. * score: 1 ### hook useSurveyResponseMutation * file: src/cores/hr/engagement/hooks/useSurveyResponseMutation.ts:35 * kind: hook * core: hr * spec: (none) * summary: Hook for managing survey response mutation. * score: 1 ### hook useSurveyResponseStats * file: src/cores/hr/engagement/hooks/useSurveyResponseList.ts:71 * kind: hook * core: hr * spec: (none) * summary: Get response count grouped by status for a specific survey. * score: 4 ### hook useSwapRequestMutation * file: src/cores/hr/hooks/scheduling/useSwapRequestMutation.ts:14 * kind: hook * core: hr * spec: (none) * summary: Hook for managing swap request mutation. * score: 1 ### hook useSyncGrievanceAssignees * file: src/cores/hr/employee-relations/hooks/useGrievanceAssignees.ts:78 * kind: hook * core: hr * spec: (none) * summary: Replaces all assignees on a grievance and syncs legacy assigned\_to to the first assignee. * score: 4 ### hook useSyncProliantCodes * file: src/cores/hr/hooks/proliant/useProliantIntegration.ts:805 * kind: hook * core: hr * spec: (none) * summary: Pull the latest earning/deduction/accrual codes from Proliant via the edge function, then refresh the code-mappings query. * score: 4 ### hook useTalentPipelineList * file: src/cores/hr/succession/hooks/useTalentPipelineList.ts:29 * kind: hook * core: hr * spec: (none) * summary: Hook for managing talent pipeline list. * score: 1 ### hook useTalentPipelineMutation * file: src/cores/hr/succession/hooks/useTalentPipelineMutation.ts:14 * kind: hook * core: hr * spec: (none) * summary: Hook for managing talent pipeline mutation. * score: 1 ### hook useTaxDocumentDownload * file: src/cores/hr/self-service/hooks/useTaxDocumentDownload.ts:17 * kind: hook * core: hr * spec: (none) * summary: Hook for managing tax document download. * score: 1 ### hook useTaxDocuments * file: src/cores/hr/self-service/hooks/useTaxDocuments.ts:35 * kind: hook * core: hr * spec: (none) * summary: Hook for managing tax documents. * score: 1 ### hook useTaxFormItemById * file: src/cores/hr/hooks/tax-forms/useTaxFormItems.ts:79 * kind: hook * core: hr * spec: (none) * summary: Get a single tax form item by ID. * score: 4 ### hook useTaxFormItems * file: src/cores/hr/hooks/tax-forms/useTaxFormItems.ts:36 * kind: hook * core: hr * spec: (none) * summary: Get all tax form items for a run. * score: 4 ### hook useTaxFormRunById * file: src/cores/hr/hooks/tax-forms/useTaxFormRuns.ts:76 * kind: hook * core: hr * spec: (none) * summary: Get a single tax form run by ID. * score: 4 ### hook useTaxFormRuns * file: src/cores/hr/hooks/tax-forms/useTaxFormRuns.ts:34 * kind: hook * core: hr * spec: (none) * summary: Get all tax form runs for the current organization. * score: 4 ### hook useTaxFormStateItems * file: src/cores/hr/hooks/tax-forms/useTaxFormStateItems.ts:21 * kind: hook * core: hr * spec: (none) * summary: Get all state items for a specific tax form item, sorted alphabetically by state\_code. * score: 4 ### hook useTaxYears * file: src/cores/hr/hooks/payroll/useTaxTables.ts:108 * kind: hook * core: hr * spec: (none) * summary: Get all available tax years that have FICA config. * score: 4 ### hook useTeamLeaveCalendar * file: src/cores/hr/hooks/leave/useTeamLeaveCalendar.ts:24 * kind: hook * core: hr * spec: (none) * summary: Query team leave requests for calendar view with coverage risk analysis * score: 4 ### hook useTeamList * file: src/cores/hr/hooks/employees/useTeamList.ts:14 * kind: hook * core: hr * spec: (none) * summary: Hook for managing team list. * score: 1 ### hook useTeamMutation * file: src/cores/hr/hooks/employees/useTeamMutation.ts:23 * kind: hook * core: hr * spec: (none) * summary: Provides mutation functions and status flags for creating, updating, deleting teams and managing team membership. * returns: An object containing:- — creates a team and returns the created team record.- — updates a team and returns the updated team record.- — archives a team (no return value).- — adds a member to a team and returns the created team member record.- — marks a team member as removed (no return value).- — while a create operation is pending, otherwise.- — while an update operation is pending, otherwise.- — while a delete/archive operation is pending, otherwise.- — while an add-member operation is pending, otherwise.- — while a remove-member operation is pending, otherwise. * score: 4 ### hook useTeamSkillGaps * file: src/cores/hr/hooks/skills/useTeamSkillGaps.ts:27 * kind: hook * core: hr * spec: (none) * summary: Hook for managing team skill gaps. * score: 1 ### hook useTeamTimesheets * file: src/cores/hr/hooks/time/useTeamTimesheets.ts:17 * kind: hook * core: hr * spec: (none) * summary: Hook for managing team timesheets. * score: 1 ### hook useTimeExceptionAnalytics * file: src/cores/hr/hooks/time/useTimeExceptionAnalytics.ts:83 * kind: hook * core: hr * spec: (none) * summary: Hook for managing time exception analytics. * score: 1 ### hook useTimeExceptionMutation * file: src/cores/hr/hooks/time/useTimeExceptionMutation.ts:12 * kind: hook * core: hr * spec: (none) * summary: Hook for managing time exception mutation. * score: 1 ### hook useTimeExceptions * file: src/cores/hr/hooks/time/useTimeExceptions.ts:54 * kind: hook * core: hr * spec: (none) * summary: Hook for managing time exceptions. * score: 1 ### hook useTimePunch * file: src/cores/hr/hooks/time/useTimePunch.ts:25 * kind: hook * core: hr * spec: (none) * summary: Hook for managing time punch. * score: 1 ### hook useTimeSchedulingStats * file: src/cores/hr/hooks/time/useTimeSchedulingStats.ts:41 * kind: hook * core: hr * spec: (none) * summary: Hook for managing time scheduling stats. * score: 1 ### hook useTimesheetApproval * file: src/cores/hr/hooks/time/useTimesheetApproval.ts:15 * kind: hook * core: hr * spec: (none) * summary: Provides mutations to approve, reject, and bulk-approve timesheets.Approving or rejecting a timesheet updates its status, triggers an in-app notification to the employee when possible, invalidates related query caches, and shows success or error toasts. Bulk approval updates multiple timesheets, invalidates the team timesheets cache, and shows a summary toast. * returns: An object with , , and React Query mutation objects for performing and monitoring the respective operations. * score: 4 ### hook useTimesheetCorrections * file: src/cores/hr/hooks/time/useTimesheetCorrections.ts:38 * kind: hook * core: hr * spec: (none) * summary: State + handlers for manager/HR punch correction (HR-05-EN-10). * score: 4 ### hook useTimesheetDetail * file: src/cores/hr/hooks/time/useTimesheetDetail.ts:29 * kind: hook * core: hr * spec: (none) * summary: Loads a single timesheet with daily entries and clock punch audit metadata (HR-05). * score: 4 ### hook useTimesheetMutation * file: src/cores/hr/hooks/time/useTimesheetMutation.ts:55 * kind: hook * core: hr * spec: (none) * summary: Mutations for editing punches and adding missed punches with audit + rebuild (HR-05-EN-10). * score: 4 ### hook useTimeToFillMetrics * file: src/cores/hr/hooks/ats/useTimeToFillMetrics.ts:91 * kind: hook * core: hr * spec: (none) * summary: Hook for managing time to fill metrics. * score: 1 ### hook useTotalCompensationStatementDetail * file: src/cores/hr/compensation/hooks/useTotalCompensationStatementDetail.ts:23 * kind: hook * core: hr * spec: (none) * summary: Hook for managing total compensation statement detail. * score: 1 ### hook useTotalCompensationStatementList * file: src/cores/hr/compensation/hooks/useTotalCompensationStatementList.ts:26 * kind: hook * core: hr * spec: (none) * summary: Hook for managing total compensation statement list. * score: 1 ### hook useTotalCompensationStatementMutation * file: src/cores/hr/compensation/hooks/useTotalCompensationStatementMutation.ts:18 * kind: hook * core: hr * spec: (none) * summary: Hook for managing total compensation statement mutation. * score: 1 ### hook useTrendAnalytics * file: src/cores/hr/analytics/hooks/useTrendAnalytics.ts:53 * kind: hook * core: hr * spec: (none) * summary: Hook for managing trend analytics. * score: 1 ### hook useTriggerProliantSync * file: src/cores/hr/hooks/proliant/useProliantIntegration.ts:325 * kind: hook * core: hr * spec: (none) * summary: Trigger an immediate sync run for a specific entity. * score: 4 ### hook useUpcomingCobraDeadlines * file: src/cores/hr/benefits/hooks/useCobraEvents.ts:258 * kind: hook * core: hr * spec: (none) * summary: Hook for upcoming COBRA deadlines (for alerts) * score: 1 ### hook useUpcomingVerifications * file: src/cores/hr/hooks/skills/useUpcomingVerifications.ts:22 * kind: hook * core: hr * spec: (none) * summary: Hook for managing upcoming verifications. * score: 1 ### hook useUpdateBackgroundCheck * file: src/cores/hr/hooks/ats/useBackgroundChecks.ts:236 * kind: hook * core: hr * spec: (none) * summary: Update an existing background check record * score: 4 ### hook useUpdateBackgroundCheckProvider * file: src/cores/hr/hooks/ats/useBackgroundCheckProviders.ts:128 * kind: hook * core: hr * spec: (none) * summary: Update an existing background check provider * score: 4 ### hook useUpdateBankAccount * file: src/cores/hr/hooks/payroll/useEmployeeBankAccountMutation.ts:90 * kind: hook * core: hr * spec: (none) * summary: Update an existing bank account.Encrypts account number via edge function if changed. * score: 4 ### hook useUpdateCalendarEventStatus * file: src/cores/hr/hooks/payroll/usePayCalendarEvents.ts:174 * kind: hook * core: hr * spec: (none) * summary: Update the status of a calendar event * score: 4 ### hook useUpdateCommunicationTemplate * file: src/cores/hr/hooks/ats/useCommunicationTemplates.ts:155 * kind: hook * core: hr * spec: (none) * summary: Update an existing template * score: 1 ### hook useUpdateDeductionType * file: src/cores/hr/hooks/payroll/useDeductionTypeMutation.ts:62 * kind: hook * core: hr * spec: (none) * summary: Update an existing deduction type. * score: 4 ### hook useUpdateEarningType * file: src/cores/hr/hooks/payroll/useEarningTypeMutation.ts:56 * kind: hook * core: hr * spec: (none) * summary: Update an existing earning type. * score: 4 ### hook useUpdateEmployeeDeduction * file: src/cores/hr/hooks/payroll/useEmployeeDeductionMutation.ts:86 * kind: hook * core: hr * spec: (none) * summary: Update an existing employee deduction. * score: 4 ### hook useUpdateEmployeeTaxInfo * file: src/cores/hr/hooks/payroll/useEmployeeTaxInfoMutation.ts:95 * kind: hook * core: hr * spec: (none) * summary: Update an existing employee tax info record. * score: 4 ### hook useUpdateEmployerTaxConfig * file: src/cores/hr/hooks/payroll/useEmployerTaxConfigMutation.ts:70 * kind: hook * core: hr * spec: (none) * summary: Update an existing employer tax config. * score: 4 ### hook useUpdateFederalBracket * file: src/cores/hr/hooks/payroll/useTaxTableMutation.ts:84 * kind: hook * core: hr * spec: (none) * summary: Update a federal tax bracket. * score: 1 ### hook useUpdateFicaConfig * file: src/cores/hr/hooks/payroll/useTaxTableMutation.ts:43 * kind: hook * core: hr * spec: (none) * summary: Update FICA configuration for a tax year. * score: 4 ### hook useUpdateHoliday * file: src/cores/hr/hooks/useHolidayMutation.ts:116 * kind: hook * core: hr * spec: (none) * summary: Update an existing holiday * score: 1 ### hook useUpdateNotificationPreferences * file: src/cores/hr/hooks/ats/useCandidatePortal.ts:276 * kind: hook * core: hr * spec: (none) * summary: Update notification preferences * score: 4 ### hook useUpdateOversightRelationship * file: src/cores/hr/hooks/oversight/useOversightRelationshipMutation.ts:55 * kind: hook * core: hr * spec: (none) * summary: Hook for updating an oversight relationship. * score: 1 ### hook useUpdateOversightSession * file: src/cores/hr/hooks/oversight/useOversightSessionMutation.ts:66 * kind: hook * core: hr * spec: (none) * summary: Hook for managing update oversight session. * score: 1 ### hook useUpdatePaymentBatchStatus * file: src/cores/hr/hooks/payroll/usePaymentBatchMutation.ts:355 * kind: hook * core: hr * spec: (none) * summary: Update payment batch status (for admin override) * score: 4 ### hook useUpdatePaySchedule * file: src/cores/hr/hooks/payroll/usePayScheduleMutation.ts:67 * kind: hook * core: hr * spec: (none) * summary: Update an existing pay schedule * score: 4 ### hook useUpdatePersonalInfo * file: src/cores/hr/self-service/hooks/useUpdatePersonalInfo.ts:17 * kind: hook * core: hr * spec: (none) * summary: Hook for managing update personal info. * score: 1 ### hook useUpdatePreferences * file: src/cores/hr/self-service/hooks/useUpdatePreferences.ts:25 * kind: hook * core: hr * spec: (none) * summary: Hook for managing update preferences. * score: 1 ### hook useUpdateReference * file: src/cores/hr/hooks/ats/useReferences.ts:294 * kind: hook * core: hr * spec: (none) * summary: Update a reference * score: 1 ### hook useUpdateSMSOptIn * file: src/cores/hr/hooks/ats/useCandidatePortal.ts:238 * kind: hook * core: hr * spec: (none) * summary: Update SMS opt-in status for a portal account * score: 4 ### hook useUpdateTaxFormRunStatus * file: src/cores/hr/hooks/tax-forms/useTaxFormRunMutation.ts:96 * kind: hook * core: hr * spec: (none) * summary: Provides update tax form run status queries and mutation actions scoped to the current organization. * score: 4 ### hook useUpsertFingerprintClearance * file: src/cores/hr/hooks/fingerprint-clearance/useUpsertFingerprintClearance.ts:24 * kind: hook * core: hr * spec: (none) * summary: Creates or updates a fingerprint clearance record. * returns: Mutation for upsert operations * score: 4 ### hook useUpsertFingerprintClearanceIncident * file: src/cores/hr/hooks/fingerprint-clearance/useUpsertFingerprintClearanceIncident.ts:27 * kind: hook * core: hr * spec: (none) * summary: Creates or updates a fingerprint clearance incident. * returns: Mutation for incident upsert * score: 4 ### hook useUpsertProliantFieldMapping * file: src/cores/hr/hooks/proliant/useProliantIntegration.ts:602 * kind: hook * core: hr * spec: HR-44 * summary: Mutation to create or update a single Proliant field mapping row in. Pass to update an existing row; omitit to insert a new one. Invalidates the field-mappings query on success. * returns: TanStack ; call with a partial . * score: 5 ### hook useUpsertProliantIntegration * file: src/cores/hr/hooks/proliant/useProliantIntegration.ts:97 * kind: hook * core: hr * spec: (none) * summary: Create or update the Proliant integration config. * score: 4 ### hook useUpsertTaxFormStateItems * file: src/cores/hr/hooks/tax-forms/useTaxFormStateItemsMutation.ts:19 * kind: hook * core: hr * spec: (none) * summary: Upsert state items for a tax form item.Inserts new records or updates existing ones based on tax\_form\_item\_id + state\_code. * score: 4 ### hook useVerificationCompliance * file: src/cores/hr/hooks/skills/useVerificationCompliance.ts:15 * kind: hook * core: hr * spec: (none) * summary: Hook for managing verification compliance. * score: 1 ### hook useVerifyEmployeeSkill * file: src/cores/hr/hooks/skills/useVerifyEmployeeSkill.ts:17 * kind: hook * core: hr * spec: (none) * summary: Hook for managing verify employee skill. * score: 1 ### hook useVerifyReference * file: src/cores/hr/hooks/ats/useReferences.ts:378 * kind: hook * core: hr * spec: (none) * summary: Mark a reference as verified * score: 1 ### hook useVoidPaymentCheck * file: src/cores/hr/hooks/payroll/usePaymentCheckMutation.ts:90 * kind: hook * core: hr * spec: (none) * summary: Void a payment check * score: 1 ### hook useWorkforceAnalyticsDashboard * file: src/cores/hr/analytics/hooks/useWorkforceAnalyticsDashboard.ts:85 * kind: hook * core: hr * spec: (none) * summary: Hook for managing workforce analytics dashboard. * score: 1 ### hook useWorkloadApprovalMutation * file: src/cores/hr/hooks/workload/useWorkloadApprovalMutation.ts:29 * kind: hook * core: hr * spec: (none) * summary: Hook for managing workload approval mutation. * score: 1 ### hook useWorkloadApprovals * file: src/cores/hr/hooks/workload/useWorkloadApprovals.ts:24 * kind: hook * core: hr * spec: (none) * summary: Hook for managing workload approvals. * score: 1 ### hook useWorkloadDriver * file: src/cores/hr/hooks/workload/useWorkloadDriver.ts:19 * kind: hook * core: hr * spec: (none) * summary: Hook for managing workload driver. * score: 1 ### hook useWorkloadDriverMutation * file: src/cores/hr/hooks/workload/useWorkloadDriverMutation.ts:55 * kind: hook * core: hr * spec: (none) * summary: Hook for managing workload driver mutation. * score: 1 ### hook useWorkloadDrivers * file: src/cores/hr/hooks/workload/useWorkloadDrivers.ts:20 * kind: hook * core: hr * spec: (none) * summary: Hook for managing workload drivers. * score: 1 ## Components ### component ACACompliancePage * file: src/cores/hr/benefits/pages/admin/ACACompliancePage.tsx:43 * kind: component * core: hr * spec: (none) * summary: Utility for acacompliance page. * score: 1 ### component AccrualRunDialog * file: src/cores/hr/components/leave/AccrualRunDialog.tsx:16 * kind: component * core: hr * spec: (none) * summary: Dialog for triggering leave accrual processing runs.Requires permission. * score: 2 ### component AccrualTiersSection * file: src/cores/hr/components/leave/AccrualTiersSection.tsx:22 * kind: component * core: hr * spec: (none) * summary: Utility for accrual tiers section. * score: 1 ### component ActionPlanDetailPage * file: src/cores/hr/engagement/pages/ActionPlanDetailPage.tsx:61 * kind: component * core: hr * spec: (none) * summary: Utility for action plan detail page. * score: 1 ### component ActionPlanForm * file: src/cores/hr/engagement/components/ActionPlanForm.tsx:63 * kind: component * core: hr * spec: (none) * summary: Utility for action plan form. * score: 1 ### component ActionPlanFormPage * file: src/cores/hr/engagement/pages/ActionPlanFormPage.tsx:22 * kind: component * core: hr * spec: (none) * summary: Utility for action plan form page. * score: 1 ### component ActionPlanListPage * file: src/cores/hr/engagement/pages/ActionPlanListPage.tsx:64 * kind: component * core: hr * spec: (none) * summary: Utility for action plan list page. * score: 1 ### component ActiveJobPostingsWidget * file: src/cores/hr/components/ats/ActiveJobPostingsWidget.tsx:21 * kind: component * core: hr * spec: (none) * summary: Utility for active job postings widget. * score: 1 ### component AddDeductionDialog * file: src/cores/hr/components/payroll/AddDeductionDialog.tsx:58 * kind: component * core: hr * spec: (none) * summary: Utility for add deduction dialog. * score: 1 ### component AddEmployeeSkillDialog * file: src/cores/hr/components/skills/AddEmployeeSkillDialog.tsx:71 * kind: component * core: hr * spec: (none) * summary: Utility for add employee skill dialog. * score: 1 ### component AddMissedPunchDialog * file: src/cores/hr/components/time/AddMissedPunchDialog.tsx:142 * kind: component * core: hr * spec: (none) * summary: Add a missed punch with documented reason (HR-05-EN-10). * score: 2 ### component AddPositionSkillRequirementDialog * file: src/cores/hr/components/skills/AddPositionSkillRequirementDialog.tsx:37 * kind: component * core: hr * spec: (none) * summary: Utility for add position skill requirement dialog. * score: 1 ### component AddProviderDialog * file: src/cores/hr/components/settings/AddProviderDialog.tsx:47 * kind: component * core: hr * spec: (none) * summary: Utility for add provider dialog. * score: 1 ### component AddTierDialog * file: src/cores/hr/components/leave/AddTierDialog.tsx:31 * kind: component * core: hr * spec: (none) * summary: Utility for add tier dialog. * score: 1 ### component AdminOverrideConfirmDialog * file: src/cores/hr/components/time/AdminOverrideConfirmDialog.tsx:18 * kind: component * core: hr * spec: (none) * summary: Confirmation before correcting an approved or paid timesheet (HR-05-EN-10). * score: 2 ### component AdvanceStatusDialog * file: src/cores/hr/components/internal-mobility/AdvanceStatusDialog.tsx:41 * kind: component * core: hr * spec: HR-35 * summary: Dialog for advancing an internal-mobility application to its next allowedstatus. Offers only the transitions valid from the current status, captures adisposition code and notes, and submits the change via the advance-statusmutation. Renders as a bottom sheet on mobile and a modal dialog on desktop. * params: * props — Dialog props: toggles visibility; fires on open/close; is the record being advanced. * score: 5 ### component AdverseActionDialog * file: src/cores/hr/components/ats/AdverseActionDialog.tsx:45 * kind: component * core: hr * spec: (none) * summary: Utility for adverse action dialog. * score: 1 ### component AdverseImpactCard * file: src/cores/hr/components/ats/AdverseImpactCard.tsx:54 * kind: component * core: hr * spec: (none) * summary: Utility for adverse impact card. * score: 1 ### component AgreementCard * file: src/cores/hr/components/job-descriptions/AgreementCard.tsx:54 * kind: component * core: hr * spec: (none) * summary: Renders a clickable card summarizing a job description agreement and navigates to its detail view when activated.Shows employee name, position title, manager, created and signed dates (with safe fallbacks), and a normalized agreement status badge. * params: * props — Component props - agreement: The JobDescriptionAgreement to display; missing or invalid fields are rendered with safe defaults (for example, "Unknown Employee" or a 'draft' status). * returns: The rendered Agreement card element. * example: | AgreementCard agreement=agreement /Accessibility: The card is clickable but not an interactive native element—ensure it is keyboard-focusable and has an accessible name/role in the surrounding context for keyboard and screen reader users. * score: 4 ### component AgreementContentView * file: src/cores/hr/components/job-descriptions/AgreementContentView\.tsx:40 * kind: component * core: hr * spec: (none) * summary: Renders a read-only, card-based view of a job description snapshot.Displays an optional header (position title + "Job Description") and structured sections forPosition Summary, Responsibilities, Qualifications, Reporting & Location, and Physical Requirements.Sections are rendered only when the corresponding data exists on the provided content snapshot. * params: * props — Component props - content: The job description snapshot to render (summary, responsibilities, qualifications, reporting, physical) - positionTitle: Optional position title shown in the header when present and is true - showHeader: When true (default), shows the header section if is provided * example: | AgreementContentView content=jobDescriptionSnapshot positionTitle="Senior Software Engineer" showHeader=true/Accessibility notes:- Section headings are rendered as visual CardTitle elements; ensure the surrounding page provides appropriate document structure for screen reader navigation.- List items use plain text bullets; if interactive or focusable content is added later, ensure proper keyboard focus order and ARIA roles. * score: 4 ### component AgreementStatusBadge * file: src/cores/hr/components/job-descriptions/AgreementStatusBadge.tsx:28 * kind: component * core: hr * spec: (none) * summary: Utility for agreement status badge. * score: 1 ### component ApplicationBulkActions * file: src/cores/hr/components/ats/ApplicationBulkActions.tsx:17 * kind: component * core: hr * spec: (none) * summary: Utility for application bulk actions. * score: 1 ### component ApplicationCard * file: src/cores/hr/components/ats/ApplicationCard.tsx:23 * kind: component * core: hr * spec: (none) * summary: Utility for application card. * score: 1 ### component ApplicationDetailPage * file: src/cores/hr/pages/ats/ApplicationDetailPage.tsx:33 * kind: component * core: hr * spec: (none) * summary: Utility for application detail page. * score: 1 ### component ApplicationFormStep * file: src/cores/hr/wizards/job-posting/steps/ApplicationFormStep.tsx:20 * kind: component * core: hr * spec: (none) * summary: Step 3 (FR-3): configure which application fields are requested from candidates. * score: 2 ### component ApplicationListContent * file: src/cores/hr/pages/ats/ApplicationListPage.tsx:26 * kind: component * core: hr * spec: (none) * summary: Extracted content component for use in the ATSRecruitingHubPage * score: 2 ### component ApplicationListPage * file: src/cores/hr/pages/ats/ApplicationListPage.tsx:206 * kind: component * core: hr * spec: (none) * summary: Utility for application list page. * score: 1 ### component ApplicationStatusBadge * file: src/cores/hr/components/ats/ApplicationStatusBadge.tsx:30 * kind: component * core: hr * spec: (none) * summary: Utility for application status badge. * score: 1 ### component ApplyInternalPositionDialog * file: src/cores/hr/components/internal-mobility/ApplyInternalPositionDialog.tsx:31 * kind: component * core: hr * spec: (none) * summary: HR-35 / US-1: single-page apply form (Sheet on mobile, Dialog on desktop).Note: CONTEXT.md called for a 3-step . This single-pageform is an intentional WS3 simplification — same fields, same privacy default,same audit semantics. Promote to multi-step wizard in a follow-up if needed. * score: 2 ### component ApprovalRoutingStep * file: src/cores/hr/wizards/offer-letter/steps/ApprovalRoutingStep.tsx:15 * kind: component * core: hr * spec: (none) * summary: Step 4 (FR-9): approval routing. Uses HR-09's existing flag+ submit-for-approval flow. (Multi-step manager→HR→executive chains beyond thesingle-approver model are a noted HR-09 follow-up.) * score: 2 ### component AtsPhase5SettingsSection * file: src/cores/hr/components/settings/AtsPhase5SettingsSection.tsx:17 * kind: component * core: hr * spec: (none) * summary: HR-09-P5: Settings panel for references, candidate portal, and bulk SMS PHI policy.Lightweight standalone card so we don't retrofit the 583-line HRSettingsForm. * score: 2 ### component ATSRecruitingHubPage * file: src/cores/hr/pages/ats/ATSRecruitingHubPage.tsx:56 * kind: component * core: hr * spec: (none) * summary: Utility for atsrecruiting hub page. * score: 1 ### component AuditReadinessWidget * file: src/cores/hr/components/compliance/AuditReadinessWidget.tsx:23 * kind: component * core: hr * spec: (none) * summary: Utility for audit readiness widget. * score: 1 ### component AvailabilityPreferencesForm * file: src/cores/hr/components/scheduling/AvailabilityPreferencesForm.tsx:45 * kind: component * core: hr * spec: (none) * summary: Utility for availability preferences form. * score: 1 ### component AvailabilitySettings * file: src/cores/hr/pages/AvailabilitySettings.tsx:11 * kind: component * core: hr * spec: (none) * summary: Utility for availability settings. * score: 1 ### component AZA1QRTReviewPage * file: src/cores/hr/pages/AZA1QRTReviewPage.tsx:65 * kind: component * core: hr * spec: (none) * summary: Utility for aza1 qrtreview page. * score: 1 ### component AZA1RReviewPage * file: src/cores/hr/pages/AZA1RReviewPage.tsx:30 * kind: component * core: hr * spec: (none) * summary: Utility for aza1 rreview page. * score: 1 ### component AZA1RSummary * file: src/cores/hr/components/tax-forms/AZA1RSummary.tsx:22 * kind: component * core: hr * spec: (none) * summary: Utility for aza1 rsummary. * score: 1 ### component BackgroundCheckProvidersSection * file: src/cores/hr/components/settings/BackgroundCheckProvidersSection.tsx:33 * kind: component * core: hr * spec: (none) * summary: Utility for background check providers section. * score: 1 ### component BackgroundCheckSection * file: src/cores/hr/components/ats/BackgroundCheckSection.tsx:66 * kind: component * core: hr * spec: (none) * summary: Utility for background check section. * score: 1 ### component BackgroundChecksPage * file: src/cores/hr/pages/ats/BackgroundChecksPage.tsx:46 * kind: component * core: hr * spec: (none) * summary: HR-09-P5 WS3g: Background Check management page.Lists in-flight checks, configured providers, and webhook DLQ. * score: 2 ### component BackgroundCheckStatusBadge * file: src/cores/hr/components/ats/BackgroundCheckStatusBadge.tsx:89 * kind: component * core: hr * spec: (none) * summary: Utility for background check status badge. * score: 1 ### component BenefitPlanDetailPage * file: src/cores/hr/benefits/pages/admin/BenefitPlanDetailPage.tsx:48 * kind: component * core: hr * spec: (none) * summary: Utility for benefit plan detail page. * score: 1 ### component BenefitPlanFormPage * file: src/cores/hr/benefits/pages/admin/BenefitPlanFormPage.tsx:78 * kind: component * core: hr * spec: (none) * summary: Utility for benefit plan form page. * score: 1 ### component BenefitPlansListPage * file: src/cores/hr/benefits/pages/admin/BenefitPlansListPage.tsx:51 * kind: component * core: hr * spec: (none) * summary: Utility for benefit plans list page. * score: 1 ### component BenefitsCostSummary * file: src/cores/hr/benefits/components/employee/BenefitsCostSummary.tsx:50 * kind: component * core: hr * spec: (none) * summary: Displays a breakdown of monthly benefit costs by plan type. * score: 2 ### component BenefitsEnrollmentImportDialog * file: src/cores/hr/components/data-import/BenefitsEnrollmentImportDialog.tsx:102 * kind: component * core: hr * spec: (none) * summary: Dialog for importing benefits enrollment data from Rippling CSV.Includes AI-assisted employee name matching with manual review. * score: 2 ### component BenefitsGuideCard * file: src/cores/hr/benefits/components/guides/BenefitsGuideCard.tsx:29 * kind: component * core: hr * spec: (none) * summary: Card component displaying a benefits guide with actions. * score: 2 ### component BenefitsGuidesAdminPage * file: src/cores/hr/benefits/pages/admin/BenefitsGuidesAdminPage.tsx:24 * kind: component * core: hr * spec: (none) * summary: Admin page for managing benefits guide documents. * score: 2 ### component BenefitsGuidesPage * file: src/cores/hr/benefits/pages/employee/BenefitsGuidesPage.tsx:21 * kind: component * core: hr * spec: (none) * summary: Employee-facing page listing active benefits guides with inline PDF viewing. * score: 2 ### component BenefitsGuideUploader * file: src/cores/hr/benefits/components/guides/BenefitsGuideUploader.tsx:32 * kind: component * core: hr * spec: (none) * summary: Upload form for benefits guide PDFs with metadata fields. * score: 2 ### component BenefitsGuideViewer * file: src/cores/hr/benefits/components/guides/BenefitsGuideViewer.tsx:25 * kind: component * core: hr * spec: (none) * summary: Inline PDF viewer using iframe with Supabase signed URL. * score: 2 ### component BenefitsSectionCard * file: src/cores/hr/components/onboarding/BenefitsSectionCard.tsx:40 * kind: component * core: hr * spec: (none) * summary: Utility for benefits section card. * score: 1 ### component BenefitsStatementsPage * file: src/cores/hr/benefits/pages/admin/BenefitsStatementsPage.tsx:26 * kind: component * core: hr * spec: (none) * summary: Utility for benefits statements page. * score: 1 ### component BulkApprovalActions * file: src/cores/hr/components/time/BulkApprovalActions.tsx:19 * kind: component * core: hr * spec: (none) * summary: Utility for bulk approval actions. * score: 1 ### component BulkCommunicationsPage * file: src/cores/hr/pages/ats/BulkCommunicationsPage.tsx:38 * kind: component * core: hr * spec: (none) * summary: Three-step ATS page for sending a templated email/SMS to many candidates atonce: pick recipients, choose channel + template (or compose subject/body),then review and bulk-send via . * score: 2 ### component BulkCredentialImportDialog * file: src/cores/hr/components/credentialing/BulkCredentialImportDialog.tsx:51 * kind: component * core: hr * spec: (none) * summary: Utility for bulk credential import dialog. * score: 1 ### component BulkEmployeeImportDialog * file: src/cores/hr/components/employees/BulkEmployeeImportDialog.tsx:116 * kind: component * core: hr * spec: (none) * summary: Renders a multi-step dialog to import employees from a CSV file.Includes AI-powered column mapping, HRIS detection, and role suggestions. * score: 2 ### component BulkRejectDialog * file: src/cores/hr/components/credentialing/BulkRejectDialog.tsx:28 * kind: component * core: hr * spec: (none) * summary: Utility for bulk reject dialog. * score: 1 ### component BulkSessionImportDialog * file: src/cores/hr/components/oversight/BulkSessionImportDialog.tsx:73 * kind: component * core: hr * spec: (none) * summary: Utility for bulk session import dialog. * score: 1 ### component BulkSsnImportDialog * file: src/cores/hr/components/proliant/BulkSsnImportDialog.tsx:73 * kind: component * core: hr * spec: none * summary: Dialog for bulk-importing employee SSNs from a CSV (matched by employeenumber or ID). Parses and validates the uploaded file, previews the parsedrows, and submits the batch — invoking once the importcompletes so callers can refresh. * params: * props — Dialog props: toggles visibility; fires on open/close; fires after a successful import. * score: 5 ### component BundleEditorDialog * file: src/cores/hr/components/handbook/BundleEditorDialog.tsx:25 * kind: component * core: hr * spec: (none) * summary: HR-43 BundleEditorDialog — create or edit a handbook bundle (HR-43 US-2).Uses entity-bound to force remount per bundle (memory: dialog patterns). * score: 2 ### component BundlePolicyPicker * file: src/cores/hr/components/handbook/BundlePolicyPicker.tsx:33 * kind: component * core: hr * spec: (none) * summary: HR-43 BundlePolicyPicker — select handbook-tagged GR policies andconfigure required/optional + display order for a bundle. * score: 2 ### component CandidateDetailPage * file: src/cores/hr/pages/ats/CandidateDetailPage.tsx:32 * kind: component * core: hr * spec: (none) * summary: Utility for candidate detail page. * score: 1 ### component CandidateListContent * file: src/cores/hr/pages/ats/CandidateListPage.tsx:22 * kind: component * core: hr * spec: (none) * summary: Extracted content component for use in the ATSRecruitingHubPage * score: 2 ### component CandidateListPage * file: src/cores/hr/pages/ats/CandidateListPage.tsx:147 * kind: component * core: hr * spec: (none) * summary: Utility for candidate list page. * score: 1 ### component CandidateNotes * file: src/cores/hr/components/ats/CandidateNotes.tsx:19 * kind: component * core: hr * spec: (none) * summary: Utility for candidate notes. * score: 1 ### component CandidatePortalAccessCard * file: src/cores/hr/components/ats/CandidatePortalAccessCard.tsx:34 * kind: component * core: hr * spec: (none) * summary: Employer-side card on the candidate detail page for managing Candidate Portalaccess: invite the candidate (mint token + email), show verification/loginstatus once an account exists, or resend the invite. Org scoping and toastsare handled by the underlying hooks. * score: 2 ### component CandidateProfileCard * file: src/cores/hr/components/ats/CandidateProfileCard.tsx:18 * kind: component * core: hr * spec: (none) * summary: Utility for candidate profile card. * score: 1 ### component CandidateTags * file: src/cores/hr/components/ats/CandidateTags.tsx:20 * kind: component * core: hr * spec: (none) * summary: Utility for candidate tags. * score: 1 ### component CapacityDashboard * file: src/cores/hr/pages/CapacityDashboard.tsx:25 * kind: component * core: hr * spec: (none) * summary: Utility for capacity dashboard. * score: 1 ### component CareerPathForm * file: src/cores/hr/succession/components/CareerPathForm.tsx:37 * kind: component * core: hr * spec: (none) * summary: Utility for career path form. * score: 1 ### component CareerPathListPage * file: src/cores/hr/succession/pages/CareerPathListPage.tsx:56 * kind: component * core: hr * spec: (none) * summary: Utility for career path list page. * score: 1 ### component CareersApplyPage * file: src/cores/hr/pages/CareersApplyPage.tsx:63 * kind: component * core: hr * spec: (none) * summary: HR-09 AC-2: public, unauthenticated careers + apply page at .Loads a published posting via the hr-public-apply edge function (RLS blocksanonymous reads), renders the role and an application form, and submits theapplication through the same function, showing an on-screen confirmation. * returns: The public careers/apply page for the route param. * score: 2 ### component CaseDocuments * file: src/cores/hr/employee-relations/components/CaseDocuments.tsx:71 * kind: component * core: hr * spec: (none) * summary: Upload and list documents stored on this employee relations case. * score: 2 ### component CheckBatchReviewPage * file: src/cores/hr/pages/payroll/CheckBatchReviewPage.tsx:33 * kind: component * core: hr * spec: (none) * summary: Utility for check batch review page. * score: 1 ### component CheckrDisclosureConsentEmbed * file: src/cores/hr/components/checkr/CheckrDisclosureConsentEmbed.tsx:131 * kind: component * core: hr * spec: (none) * summary: Utility for checkr disclosure consent embed. * score: 1 ### component CheckrNewInvitationEmbed * file: src/cores/hr/components/checkr/CheckrNewInvitationEmbed.tsx:183 * kind: component * core: hr * spec: (none) * summary: Utility for checkr new invitation embed. * score: 1 ### component CheckrReportsOverviewEmbed * file: src/cores/hr/components/checkr/CheckrReportsOverviewEmbed.tsx:131 * kind: component * core: hr * spec: (none) * summary: Utility for checkr reports overview embed. * score: 1 ### component CheckrSDKLoader * file: src/cores/hr/components/checkr/CheckrSDKLoader.tsx:91 * kind: component * core: hr * spec: (none) * summary: Utility for checkr sdkloader. * score: 1 ### component CheckrSettingsSection * file: src/cores/hr/components/settings/CheckrSettingsSection.tsx:82 * kind: component * core: hr * spec: (none) * summary: Renders the Checkr integration settings section, including status, API key management, and default package configuration.Displays current integration state for the active organization, allows enabling/disabling the integration, updating or storing a Checkr API key, and setting a default package slug. Handles loading, error, and success states and persists changes to the backend.Accessibility:- All interactive controls are keyboard-focusable and labeled.- External links include rel="noopener noreferrer".- The API key field uses a toggleable visibility control; ensure screen reader users are informed of the control state via surrounding label text. * example: | // Render within an organization-admin pageCheckrSettingsSection / * score: 5 ### component ClassificationStep * file: src/cores/hr/components/wizards/steps/contractor/ClassificationStep.tsx:38 * kind: component * core: hr * spec: (none) * summary: Step 1: classification + attestation rationale. * score: 2 ### component ClassificationTestFormDialog * file: src/cores/hr/components/contractors/ClassificationTestFormDialog.tsx:35 * kind: component * core: hr * spec: (none) * summary: HR-34: Dialog for creating an IRS factor classification test. * score: 2 ### component ClockButton * file: src/cores/hr/components/time/ClockButton.tsx:18 * kind: component * core: hr * spec: (none) * summary: Utility for clock button. * score: 1 ### component CobraElectionForm * file: src/cores/hr/benefits/components/admin/CobraElectionForm.tsx:36 * kind: component * core: hr * spec: (none) * summary: Utility for cobra election form. * score: 1 ### component CobraEventDetailPage * file: src/cores/hr/benefits/pages/admin/CobraEventDetailPage.tsx:46 * kind: component * core: hr * spec: (none) * summary: Utility for cobra event detail page. * score: 1 ### component CobraEventsListPage * file: src/cores/hr/benefits/pages/admin/CobraEventsListPage.tsx:75 * kind: component * core: hr * spec: (none) * summary: Utility for cobra events list page. * score: 1 ### component CobraImportDialog * file: src/cores/hr/components/data-import/CobraImportDialog.tsx:91 * kind: component * core: hr * spec: (none) * summary: Dialog for importing COBRA event data from Rippling COBRA CSV.Includes AI-assisted employee name matching with manual review. * score: 2 ### component ColumnMappingStep * file: src/cores/hr/components/employees/import/ColumnMappingStep.tsx:84 * kind: component * core: hr * spec: (none) * summary: Column mapping step for the import wizard.Shows AI-suggested mappings with dropdowns for manual overrides. * score: 2 ### component CommandCenterTip * file: src/cores/hr/components/onboarding/OnboardingHelpContent.tsx:202 * kind: component * core: hr * spec: (none) * summary: Command center intro tip for HR admins * score: 2 ### component CommunicationHistorySection * file: src/cores/hr/components/communications/CommunicationHistorySection.tsx:40 * kind: component * core: hr * spec: (none) * summary: Utility for communication history section. * score: 1 ### component CommunicationTemplateDialog * file: src/cores/hr/components/communications/CommunicationTemplateDialog.tsx:81 * kind: component * core: hr * spec: (none) * summary: Utility for communication template dialog. * score: 1 ### component CommunicationTemplatesPage * file: src/cores/hr/pages/ats/CommunicationTemplatesPage.tsx:16 * kind: component * core: hr * spec: (none) * summary: ATS settings page for managing reusable email/SMS outreach templates; rendersthe editor alongside interview-remindersettings. * score: 2 ### component CommunicationTemplatesSection * file: src/cores/hr/components/communications/CommunicationTemplatesSection.tsx:50 * kind: component * core: hr * spec: (none) * summary: Utility for communication templates section. * score: 1 ### component CompactPresetSelector * file: src/cores/hr/components/onboarding/OnboardingTemplatePresets.tsx:145 * kind: component * core: hr * spec: (none) * summary: Utility for compact preset selector. * score: 1 ### component CompanyMappingStep * file: src/cores/hr/components/proliant/setup-steps/CompanyMappingStep.tsx:20 * kind: component * core: hr * spec: HR-UX-13 * summary: Step 2 of the Proliant setup wizard — Company Mapping.Collects the Proliant company code (e.g. ) that scopes allsubsequent API calls. The value is required before advancing to step 3;validation is enforced by the parent wizard. * params: * companyId — Current controlled value for the company code field. * onCompanyIdChange — Called with the new value whenever the input changes. * score: 3 ### component ComparisonPdfExportButton * file: src/cores/hr/components/ats/scorecards/ScorecardPdfExport.tsx:74 * kind: component * core: hr * spec: (none) * summary: Button to export candidate comparison grid as PDF. * score: 2 ### component CompensationAnalysisForm * file: src/cores/hr/compensation/components/CompensationAnalysisForm.tsx:49 * kind: component * core: hr * spec: (none) * summary: Utility for compensation analysis form. * score: 1 ### component CompensationAnalysisPage * file: src/cores/hr/compensation/pages/CompensationAnalysisPage.tsx:80 * kind: component * core: hr * spec: (none) * summary: Utility for compensation analysis page. * score: 1 ### component CompensationAnalysisStatusBadge * file: src/cores/hr/compensation/components/CompensationAnalysisStatusBadge.tsx:24 * kind: component * core: hr * spec: (none) * summary: Utility for compensation analysis status badge. * score: 1 ### component CompensationBreakdownChart * file: src/cores/hr/compensation/components/CompensationBreakdownChart.tsx:26 * kind: component * core: hr * spec: (none) * summary: Utility for compensation breakdown chart. * score: 1 ### component CompensationCostReportsPage * file: src/cores/hr/compensation/pages/CompensationCostReportsPage.tsx:19 * kind: component * core: hr * spec: (none) * summary: T24: Compensation Cost Reports PageDisplays compensation costs aggregated by employee or department. * score: 2 ### component CompensationOverview * file: src/cores/hr/compensation/pages/CompensationOverview\.tsx:22 * kind: component * core: hr * spec: (none) * summary: Utility for compensation overview. * score: 1 ### component CompensationStatementDetailPage * file: src/cores/hr/compensation/pages/CompensationStatementDetailPage.tsx:69 * kind: component * core: hr * spec: (none) * summary: Utility for compensation statement detail page. * score: 1 ### component CompensationWidget * file: src/cores/hr/analytics/components/CompensationWidget.tsx:40 * kind: component * core: hr * spec: (none) * summary: Utility for compensation widget. * score: 1 ### component CompetencyAssessmentTable * file: src/cores/hr/components/performance/CompetencyAssessmentTable.tsx:50 * kind: component * core: hr * spec: HR-10 * summary: Table of the competencies assessed within a performance review, surfacingeach competency's rating and any identified skill gap or trainingrecommendation. When not read-only, exposes add/edit/delete controls soreviewers can manage the assessment inline. * params: * props — Table props: scopes the competencies loaded; hides editing controls; / fire when the corresponding action is invoked. * score: 5 ### component CompetencyFormDialog * file: src/cores/hr/components/performance/CompetencyFormDialog.tsx:43 * kind: component * core: hr * spec: (none) * summary: Utility for competency form dialog. * score: 1 ### component CompetencyGapCard * file: src/cores/hr/components/performance/CompetencyGapCard.tsx:31 * kind: component * core: hr * spec: (none) * summary: Utility for competency gap card. * score: 1 ### component CompetencyRatingsStep * file: src/cores/hr/components/wizards/steps/CompetencyRatingsStep.tsx:32 * kind: component * core: hr * spec: (none) * summary: Utility for competency ratings step. * score: 1 ### component ComplianceDashboard * file: src/cores/hr/pages/ComplianceReport.tsx:23 * kind: component * core: hr * spec: (none) * summary: Utility for compliance dashboard. * score: 1 ### component ComplianceExportButton * file: src/cores/hr/components/internal-mobility/ComplianceExportButton.tsx:22 * kind: component * core: hr * spec: (none) * summary: HR-35 / T13 (US-4): EEOC UGESP compliance CSV export button.Permission gate: . Excludes .Renders nothing when the current user lacks the permission. * score: 2 ### component ComplianceHealthWidget * file: src/cores/hr/components/compliance/ComplianceHealthWidget.tsx:24 * kind: component * core: hr * spec: (none) * summary: Utility for compliance health widget. * score: 1 ### component ComplianceSettingsSection * file: src/cores/hr/components/settings/ComplianceSettingsSection.tsx:9 * kind: component * core: hr * spec: (none) * summary: Compliance administration links for the HR Settings hub. * score: 2 ### component ComplianceTrendChart * file: src/cores/hr/components/analytics/ComplianceTrendChart.tsx:21 * kind: component * core: hr * spec: (none) * summary: Utility for compliance trend chart. * score: 1 ### component ConfirmationStep * file: src/cores/hr/benefits/components/enrollment/ConfirmationStep.tsx:20 * kind: component * core: hr * spec: (none) * summary: Displays success confirmation after enrollment submission with next steps. * score: 2 ### component ConflictDetailSheet * file: src/cores/hr/components/proliant/ConflictDetailSheet.tsx:32 * kind: component * core: hr * spec: HR-44-EN-05 * summary: Side sheet for resolving a single Proliant sync conflict. Shows the conflictedsync-log entry and lets the user pick the source of truth — Proliant, Encore,or a manual resolution — invoking with that choice. * params: * props — Sheet props: is the entry to resolve; toggles visibility; fires on open/close; receives the chosen resolution; disables actions while in flight; gates the resolution actions on the resolve-conflicts permission. * score: 4 ### component ContractorClassificationTab * file: src/cores/hr/components/contractors/ContractorClassificationTab.tsx:20 * kind: component * core: hr * spec: (none) * summary: HR-34: Classification test history for a contractor (IRS factor assessments). * score: 2 ### component ContractorContractFormDialog * file: src/cores/hr/components/contractors/ContractorContractFormDialog.tsx:36 * kind: component * core: hr * spec: (none) * summary: HR-34: Dialog for creating a contractor contract/SOW. * score: 2 ### component ContractorContractsTab * file: src/cores/hr/components/contractors/ContractorContractsTab.tsx:20 * kind: component * core: hr * spec: (none) * summary: HR-34: Displays contracts for a contractor with create capability. * score: 2 ### component ContractorContractStep * file: src/cores/hr/components/wizards/steps/contractor/ContractorContractStep.tsx:38 * kind: component * core: hr * spec: (none) * summary: Step 4: contract / SOW fields. * score: 2 ### component ContractorCredentialFormDialog * file: src/cores/hr/components/contractors/ContractorCredentialFormDialog.tsx:35 * kind: component * core: hr * spec: (none) * summary: HR-34: Dialog for adding a contractor credential. * score: 2 ### component ContractorCredentialsStep * file: src/cores/hr/components/wizards/steps/contractor/ContractorCredentialsStep.tsx:16 * kind: component * core: hr * spec: (none) * summary: Step 3: credential expectations + acknowledgement. * score: 2 ### component ContractorCredentialsTab * file: src/cores/hr/components/contractors/ContractorCredentialsTab.tsx:23 * kind: component * core: hr * spec: (none) * summary: HR-34: Credentials list for a contractor with create capability. * score: 2 ### component ContractorDetailPage * file: src/cores/hr/pages/ContractorDetailPage.tsx:27 * kind: component * core: hr * spec: (none) * summary: HR-34: Contractor detail page with tabbed layout.Shows Profile, Contracts, Classification, Time Entries, and Credentials. * score: 2 ### component ContractorFormDialog * file: src/cores/hr/components/contractors/ContractorFormDialog.tsx:22 * kind: component * core: hr * spec: (none) * summary: HR-34: Dialog for creating/editing a contractor profile. * score: 2 ### component ContractorOnboardingWizardPage * file: src/cores/hr/pages/ContractorOnboardingWizardPage.tsx:30 * kind: component * core: hr * spec: (none) * summary: Wrapper page that mounts the contractor onboarding wizard. * score: 2 ### component ContractorProfileStep * file: src/cores/hr/components/wizards/steps/contractor/ContractorProfileStep.tsx:20 * kind: component * core: hr * spec: (none) * summary: Step 2: contractor profile fields. * score: 2 ### component ContractorReviewStep * file: src/cores/hr/components/wizards/steps/contractor/ContractorReviewStep.tsx:31 * kind: component * core: hr * spec: (none) * summary: Step 5: read-only review before activation. * score: 2 ### component ContractorsListPage * file: src/cores/hr/pages/ContractorsListPage.tsx:22 * kind: component * core: hr * spec: (none) * summary: HR-34: Contractor directory list page.Displays all contractors with filtering by status and classification. * score: 2 ### component ContractorTimeEntriesTab * file: src/cores/hr/components/contractors/ContractorTimeEntriesTab.tsx:23 * kind: component * core: hr * spec: (none) * summary: HR-34: Time entries list with approval actions and create capability. * score: 2 ### component ContractorTimeEntryFormDialog * file: src/cores/hr/components/contractors/ContractorTimeEntryFormDialog.tsx:34 * kind: component * core: hr * spec: (none) * summary: HR-34: Dialog for creating a contractor time entry. * score: 2 ### component CostBreakdownChart * file: src/cores/hr/analytics/components/CostBreakdownChart.tsx:54 * kind: component * core: hr * spec: (none) * summary: Utility for cost breakdown chart. * score: 1 ### component CostCalculator * file: src/cores/hr/benefits/components/enrollment/CostCalculator.tsx:32 * kind: component * core: hr * spec: (none) * summary: Displays running total of selected benefits costs with inline and sticky variants. * score: 2 ### component CounterOfferCard * file: src/cores/hr/components/ats/CounterOfferCard.tsx:30 * kind: component * core: hr * spec: (none) * summary: Utility for counter offer card. * score: 1 ### component CounterOfferDialog * file: src/cores/hr/components/ats/CounterOfferDialog.tsx:28 * kind: component * core: hr * spec: (none) * summary: Utility for counter offer dialog. * score: 1 ### component CounterOfferHistory * file: src/cores/hr/components/ats/CounterOfferHistory.tsx:21 * kind: component * core: hr * spec: (none) * summary: Utility for counter offer history. * score: 1 ### component CoverageHeatmap * file: src/cores/hr/components/scheduling/CoverageHeatmap.tsx:21 * kind: component * core: hr * spec: (none) * summary: Utility for coverage heatmap. * score: 1 ### component CoverageLevelSelector * file: src/cores/hr/benefits/components/enrollment/CoverageLevelSelector.tsx:23 * kind: component * core: hr * spec: (none) * summary: Radio button group for selecting coverage level with premium display. * score: 2 ### component CoverageSummaryWidget * file: src/cores/hr/components/time/CoverageSummaryWidget.tsx:24 * kind: component * core: hr * spec: (none) * summary: Utility for coverage summary widget. * score: 1 ### component Create1099NECRunDialog * file: src/cores/hr/components/tax-forms/Create1099NECRunDialog.tsx:29 * kind: component * core: hr * spec: (none) * summary: Utility for create1099 necrun dialog. * score: 1 ### component CreateAgreementDialog * file: src/cores/hr/components/job-descriptions/CreateAgreementDialog.tsx:58 * kind: component * core: hr * spec: (none) * summary: Modal dialog that guides the user through creating a new job description agreement.The dialog is a two-step flow: first the user selects an employee, a position, and a signing manager;then the user defines or imports the job description content and submits to create the agreement.Accessibility:- Form fields are labeled and use native-like select controls for keyboard and screen reader support.- Dialog focus should be managed by the surrounding Dialog component (ensure Dialog provides focus trapping). * params: * props — Component props - open: Whether the dialog is open - onOpenChange: Callback invoked when the dialog open state should change - preselectedEmployeeId: Optional employee id to preselect when the dialog opens - preselectedPositionId: Optional position id to preselect when the dialog opens - onSuccess: Optional callback invoked with the created agreement id after successful creation * returns: The rendered CreateAgreementDialog React element * example: | CreateAgreementDialog open=isOpen onOpenChange=setIsOpen preselectedEmployeeId="emp\_123" preselectedPositionId="pos\_456" onSuccess=(id) = console.log('Created agreement', id)/ * score: 4 ### component CreateAnnualRunDialog * file: src/cores/hr/components/tax-forms/CreateAnnualRunDialog.tsx:42 * kind: component * core: hr * spec: (none) * summary: Utility for create annual run dialog. * score: 1 ### component CreatePaymentBatchDialog * file: src/cores/hr/components/payroll/CreatePaymentBatchDialog.tsx:26 * kind: component * core: hr * spec: (none) * summary: Utility for create payment batch dialog. * score: 1 ### component CreatePayrollRunPage * file: src/cores/hr/pages/CreatePayrollRunPage.tsx:13 * kind: component * core: hr * spec: (none) * summary: Utility for create payroll run page. * score: 1 ### component CreateQuarterlyRunDialog * file: src/cores/hr/components/tax-forms/CreateQuarterlyRunDialog.tsx:35 * kind: component * core: hr * spec: (none) * summary: Utility for create quarterly run dialog. * score: 1 ### component CreateW2CorrectionDialog * file: src/cores/hr/components/tax-forms/CreateW2CorrectionDialog.tsx:72 * kind: component * core: hr * spec: (none) * summary: Utility for create w2 correction dialog. * score: 1 ### component CreateW2RunDialog * file: src/cores/hr/components/tax-forms/CreateW2RunDialog.tsx:46 * kind: component * core: hr * spec: (none) * summary: Utility for create w2 run dialog. * score: 1 ### component CredentialAlertsStep * file: src/cores/hr/components/wizards/steps/credential/CredentialAlertsStep.tsx:23 * kind: component * core: hr * spec: (none) * summary: Step 3: expiration date and alert thresholds. * score: 2 ### component CredentialAnalyticsPage * file: src/cores/hr/pages/CredentialAnalyticsPage.tsx:21 * kind: component * core: hr * spec: (none) * summary: Utility for credential analytics page. * score: 1 ### component CredentialBulkActionToolbar * file: src/cores/hr/components/credentialing/CredentialBulkActionToolbar.tsx:36 * kind: component * core: hr * spec: (none) * summary: Utility for credential bulk action toolbar. * score: 1 ### component CredentialCard * file: src/cores/hr/components/credentialing/CredentialCard.tsx:29 * kind: component * core: hr * spec: (none) * summary: Utility for credential card. * score: 1 ### component CredentialCategoryWidget * file: src/cores/hr/components/compliance/CredentialCategoryWidget.tsx:34 * kind: component * core: hr * spec: (none) * summary: Utility for credential category widget. * score: 1 ### component CredentialDetailsStep * file: src/cores/hr/components/wizards/steps/credential/CredentialDetailsStep.tsx:14 * kind: component * core: hr * spec: (none) * summary: Step 2: credential identifiers and issue date. * score: 2 ### component CredentialDocumentStep * file: src/cores/hr/components/wizards/steps/credential/CredentialDocumentStep.tsx:25 * kind: component * core: hr * spec: (none) * summary: Step 4: upload supporting document via PF-11. * score: 2 ### component CredentialEditDialog * file: src/cores/hr/components/credentialing/CredentialEditDialog.tsx:40 * kind: component * core: hr * spec: (none) * summary: Dialog for updating an existing employee credential (dates, number, document). * score: 2 ### component CredentialImportDialog * file: src/cores/hr/components/data-import/CredentialImportDialog.tsx:30 * kind: component * core: hr * spec: (none) * summary: Dialog for importing employee credentials and licenses from CSV files. * score: 2 ### component CredentialingHubPage * file: src/cores/hr/pages/CredentialingHubPage.tsx:48 * kind: component * core: hr * spec: (none) * summary: Utility for credentialing hub page. * score: 1 ### component CredentialingOverview * file: src/cores/hr/pages/ComplianceOverview\.tsx:22 * kind: component * core: hr * spec: (none) * summary: Utility for credentialing overview. * score: 1 ### component CredentialRenewalApprovalCard * file: src/cores/hr/components/credentialing/CredentialRenewalApprovalCard.tsx:40 * kind: component * core: hr * spec: (none) * summary: Utility for credential renewal approval card. * score: 1 ### component CredentialRenewalForm * file: src/cores/hr/components/credentialing/CredentialRenewalForm.tsx:70 * kind: component * core: hr * spec: (none) * summary: Utility for credential renewal form. * score: 1 ### component CredentialRenewalPage * file: src/cores/hr/pages/CredentialRenewalPage.tsx:34 * kind: component * core: hr * spec: (none) * summary: Utility for credential renewal page. * score: 1 ### component CredentialRenewalWidget * file: src/cores/hr/components/dashboard/CredentialRenewalWidget.tsx:19 * kind: component * core: hr * spec: (none) * summary: Utility for credential renewal widget. * score: 1 ### component CredentialRequirements * file: src/cores/hr/pages/CredentialRequirements.tsx:22 * kind: component * core: hr * spec: (none) * summary: Utility for credential requirements. * score: 1 ### component CredentialReviewStep * file: src/cores/hr/components/wizards/steps/credential/CredentialReviewStep.tsx:17 * kind: component * core: hr * spec: (none) * summary: Step 6: read-only review of values before save. * score: 2 ### component CredentialsAlertWidget * file: src/cores/hr/self-service/components/CredentialsAlertWidget.tsx:19 * kind: component * core: hr * spec: (none) * summary: Dashboard widget showing the current employee's credential alerts. * score: 2 ### component CredentialSetupWizardPage * file: src/cores/hr/pages/CredentialSetupWizardPage.tsx:34 * kind: component * core: hr * spec: (none) * summary: Wrapper page that mounts the credential setup wizard. * score: 2 ### component CredentialsStep * file: src/cores/hr/components/proliant/setup-steps/CredentialsStep.tsx:56 * kind: component * core: hr * spec: HR-UX-13 * summary: Step 1 of the Proliant setup wizard — Credentials & Environment.Collects environment selection, API key, API secret, and (in sandbox mode)an optional base-URL override. In production mode, the user must check theBAA attestation checkbox before the wizard allows advancing to step 2.Credential fields are write-only; values are stored in Vault and never surfaced. * params: * value — Controlled form state for this step. * onChange — Called with the merged next state whenever any field changes. * score: 3 ### component CredentialsStep * file: src/cores/hr/components/wizards/steps/CredentialsStep.tsx:38 * kind: component * core: hr * spec: (none) * summary: Utility for credentials step. * score: 1 ### component CredentialTypeDistributionChart * file: src/cores/hr/components/analytics/CredentialTypeDistributionChart.tsx:21 * kind: component * core: hr * spec: (none) * summary: Utility for credential type distribution chart. * score: 1 ### component CredentialTypeFormDialog * file: src/cores/hr/components/credentialing/CredentialTypeFormDialog.tsx:49 * kind: component * core: hr * spec: (none) * summary: Utility for credential type form dialog. * score: 1 ### component CredentialTypes * file: src/cores/hr/pages/CredentialTypes.tsx:20 * kind: component * core: hr * spec: (none) * summary: Utility for credential types. * score: 1 ### component CredentialTypeStep * file: src/cores/hr/components/wizards/steps/credential/CredentialTypeStep.tsx:22 * kind: component * core: hr * spec: (none) * summary: Step 1: pick employee and credential type. * score: 2 ### component CredentialUploadDialog * file: src/cores/hr/components/credentialing/CredentialUploadDialog.tsx:40 * kind: component * core: hr * spec: (none) * summary: Utility for credential upload dialog. * score: 1 ### component CredentialVerificationQueue * file: src/cores/hr/components/credentialing/CredentialVerificationQueue.tsx:36 * kind: component * core: hr * spec: (none) * summary: Utility for credential verification queue. * score: 1 ### component CredentialVerificationStep * file: src/cores/hr/components/wizards/steps/credential/CredentialVerificationStep.tsx:18 * kind: component * core: hr * spec: (none) * summary: Step 5: choose initial verification status. * score: 2 ### component CurrentVsNewComparison * file: src/cores/hr/benefits/components/enrollment/CurrentVsNewComparison.tsx:83 * kind: component * core: hr * spec: (none) * summary: Displays a comparison of current enrollments vs new selections with cost diffs. * score: 2 ### component DashboardLayoutForm * file: src/cores/hr/self-service/components/DashboardLayoutForm.tsx:55 * kind: component * core: hr * spec: (none) * summary: Utility for dashboard layout form. * score: 1 ### component DateSelectionStep * file: src/cores/hr/components/wizards/steps/DateSelectionStep.tsx:27 * kind: component * core: hr * spec: (none) * summary: Utility for date selection step. * score: 1 ### component DeductionTypeFormDialog * file: src/cores/hr/components/payroll/DeductionTypeFormDialog.tsx:61 * kind: component * core: hr * spec: (none) * summary: Utility for deduction type form dialog. * score: 1 ### component DeductionTypesListPage * file: src/cores/hr/pages/DeductionTypesListPage.tsx:54 * kind: component * core: hr * spec: (none) * summary: Utility for deduction types list page. * score: 1 ### component DeleteTimesheetDayDialog * file: src/cores/hr/components/time/DeleteTimesheetDayDialog.tsx:107 * kind: component * core: hr * spec: (none) * summary: Confirmation dialog to delete all punches for one timesheet day (HR-05-EN-10). * score: 2 ### component DepartmentComparisonTable * file: src/cores/hr/components/performance/analytics/DepartmentComparisonTable.tsx:43 * kind: component * core: hr * spec: (none) * summary: Utility for department comparison table. * score: 1 ### component DepartmentComplianceTable * file: src/cores/hr/components/analytics/DepartmentComplianceTable.tsx:23 * kind: component * core: hr * spec: (none) * summary: Utility for department compliance table. * score: 1 ### component DepartmentExceptionChart * file: src/cores/hr/components/time/analytics/DepartmentExceptionChart.tsx:14 * kind: component * core: hr * spec: (none) * summary: Utility for department exception chart. * score: 1 ### component Departments * file: src/cores/hr/pages/Departments.tsx:19 * kind: component * core: hr * spec: (none) * summary: Utility for departments. * score: 1 ### component DependentCard * file: src/cores/hr/benefits/components/dependents/DependentCard.tsx:51 * kind: component * core: hr * spec: (none) * summary: Utility for dependent card. * score: 1 ### component DependentFormDialog * file: src/cores/hr/benefits/components/dependents/DependentFormDialog.tsx:59 * kind: component * core: hr * spec: (none) * summary: Utility for dependent form dialog. * score: 1 ### component DependentsStep * file: src/cores/hr/benefits/components/enrollment/DependentsStep.tsx:93 * kind: component * core: hr * spec: (none) * summary: Step 3 of enrollment wizard — select dependents to cover under each selected plan. * score: 2 ### component DependentVerificationPage * file: src/cores/hr/benefits/pages/admin/DependentVerificationPage.tsx:47 * kind: component * core: hr * spec: (none) * summary: Utility for dependent verification page. * score: 1 ### component DetailsCoverageStep * file: src/cores/hr/components/wizards/steps/DetailsCoverageStep.tsx:20 * kind: component * core: hr * spec: (none) * summary: Utility for details coverage step. * score: 1 ### component DisciplinaryActionExportDialog * file: src/cores/hr/components/documents/DisciplinaryActionExportDialog.tsx:52 * kind: component * core: hr * spec: (none) * summary: Utility for disciplinary action export dialog. * score: 1 ### component DisciplinaryActionForm * file: src/cores/hr/employee-relations/components/DisciplinaryActionForm.tsx:113 * kind: component * core: hr * spec: (none) * summary: Utility for disciplinary action form. * score: 1 ### component DisciplinaryDetailPage * file: src/cores/hr/employee-relations/pages/DisciplinaryDetailPage.tsx:59 * kind: component * core: hr * spec: (none) * summary: Utility for disciplinary detail page. * score: 1 ### component DisciplinaryFormPage * file: src/cores/hr/employee-relations/pages/DisciplinaryFormPage.tsx:22 * kind: component * core: hr * spec: (none) * summary: Utility for disciplinary form page. * score: 1 ### component DisciplinaryListPage * file: src/cores/hr/employee-relations/pages/DisciplinaryListPage.tsx:75 * kind: component * core: hr * spec: (none) * summary: Utility for disciplinary list page. * score: 1 ### component DisputeDialog * file: src/cores/hr/components/ats/DisputeDialog.tsx:31 * kind: component * core: hr * spec: (none) * summary: Utility for dispute dialog. * score: 1 ### component DocumentationStep * file: src/cores/hr/components/wizards/steps/DocumentationStep.tsx:80 * kind: component * core: hr * spec: (none) * summary: Utility for documentation step. * score: 1 ### component DocumentsStep * file: src/cores/hr/components/fingerprint-clearance/wizard/steps/DocumentsStep.tsx:42 * kind: component * core: hr * spec: (none) * summary: Render the Documents step. * score: 1 ### component DriverTemplateCard * file: src/cores/hr/components/workload-drivers/DriverTemplateCard.tsx:67 * kind: component * core: hr * spec: (none) * summary: Utility for driver template card. * score: 1 ### component DriverTemplateSelector * file: src/cores/hr/components/workload-drivers/DriverTemplateSelector.tsx:89 * kind: component * core: hr * spec: (none) * summary: Utility for driver template selector. * score: 1 ### component DriverTemplatesLibrary * file: src/cores/hr/components/workload-drivers/DriverTemplatesLibrary.tsx:22 * kind: component * core: hr * spec: (none) * summary: Utility for driver templates library. * score: 1 ### component DriverVersionDiff * file: src/cores/hr/components/workload-drivers/DriverVersionDiff.tsx:82 * kind: component * core: hr * spec: (none) * summary: Utility for driver version diff. * score: 1 ### component DriverVersionHistory * file: src/cores/hr/components/workload-drivers/DriverVersionHistory.tsx:46 * kind: component * core: hr * spec: (none) * summary: Utility for driver version history. * score: 1 ### component EarningTypeFormDialog * file: src/cores/hr/components/payroll/EarningTypeFormDialog.tsx:55 * kind: component * core: hr * spec: (none) * summary: Create/edit dialog for an organization earning type. * score: 2 ### component EarningTypesListPage * file: src/cores/hr/pages/EarningTypesListPage.tsx:49 * kind: component * core: hr * spec: (none) * summary: Admin list page for organization earning types. * score: 2 ### component EditPunchDialog * file: src/cores/hr/components/time/EditPunchDialog.tsx:141 * kind: component * core: hr * spec: (none) * summary: Edit an existing punch with documented reason (HR-05-EN-10). * score: 2 ### component EEOBreakdownTable * file: src/cores/hr/components/ats/EEOBreakdownTable.tsx:38 * kind: component * core: hr * spec: (none) * summary: Utility for eeobreakdown table. * score: 1 ### component EEOComparisonChart * file: src/cores/hr/components/ats/EEOComparisonChart.tsx:74 * kind: component * core: hr * spec: (none) * summary: Utility for eeocomparison chart. * score: 1 ### component EEODataCompletenessWidget * file: src/cores/hr/components/ats/EEODataCompletenessWidget.tsx:62 * kind: component * core: hr * spec: (none) * summary: Utility for eeodata completeness widget. * score: 1 ### component EEODemographicsChart * file: src/cores/hr/components/ats/EEODemographicsChart.tsx:81 * kind: component * core: hr * spec: (none) * summary: Utility for eeodemographics chart. * score: 1 ### component EEOReportingPage * file: src/cores/hr/pages/ats/EEOReportingPage.tsx:30 * kind: component * core: hr * spec: (none) * summary: Utility for eeoreporting page. * score: 1 ### component EfileConfigSection * file: src/cores/hr/components/tax-forms/EfileConfigSection.tsx:38 * kind: component * core: hr * spec: (none) * summary: E-File configuration section with provider selection and credential management. * score: 2 ### component EfileStatusBadge * file: src/cores/hr/components/tax-forms/EfileStatusBadge.tsx:23 * kind: component * core: hr * spec: (none) * summary: Utility for efile status badge. * score: 1 ### component EFileStatusCard * file: src/cores/hr/components/tax-forms/EFileStatusCard.tsx:27 * kind: component * core: hr * spec: (none) * summary: Utility for efile status card. * score: 1 ### component EligibilityRuleForm * file: src/cores/hr/benefits/components/admin/EligibilityRuleForm.tsx:38 * kind: component * core: hr * spec: (none) * summary: Form component for eligibility rule create/edit. * score: 2 ### component EligibilityRulesManager * file: src/cores/hr/benefits/components/admin/EligibilityRulesManager.tsx:70 * kind: component * core: hr * spec: (none) * summary: Manages eligibility rules for a specific benefit plan. * score: 2 ### component EligibilityStep * file: src/cores/hr/benefits/components/enrollment/EligibilityStep.tsx:19 * kind: component * core: hr * spec: (none) * summary: Shows enrollment period info and eligibility confirmation. * score: 2 ### component EmergencyContactCard * file: src/cores/hr/self-service/components/EmergencyContactCard.tsx:25 * kind: component * core: hr * spec: (none) * summary: Utility for emergency contact card. * score: 1 ### component EmployeeAccountCard * file: src/cores/hr/components/employees/EmployeeAccountCard.tsx:47 * kind: component * core: hr * spec: (none) * summary: Displays the platform account status for an employee and providesactions to create an account or re-send an invitation. * score: 2 ### component EmployeeBankAccountForm * file: src/cores/hr/components/payroll/EmployeeBankAccountForm.tsx:85 * kind: component * core: hr * spec: (none) * summary: Utility for employee bank account form. * score: 1 ### component EmployeeBankAccountList * file: src/cores/hr/components/payroll/EmployeeBankAccountList.tsx:34 * kind: component * core: hr * spec: (none) * summary: Utility for employee bank account list. * score: 1 ### component EmployeeCredentialsList * file: src/cores/hr/components/credentialing/EmployeeCredentialsList.tsx:25 * kind: component * core: hr * spec: (none) * summary: Utility for employee credentials list. * score: 1 ### component EmployeeDeductionsTab * file: src/cores/hr/components/payroll/EmployeeDeductionsTab.tsx:83 * kind: component * core: hr * spec: (none) * summary: Utility for employee deductions tab. * score: 1 ### component EmployeeDetail * file: src/cores/hr/pages/EmployeeDetail.tsx:81 * kind: component * core: hr * spec: (none) * summary: Utility for employee detail. * score: 1 ### component EmployeeDirectory * file: src/cores/hr/pages/EmployeeDirectory.tsx:64 * kind: component * core: hr * spec: (none) * summary: Renders the Employee Directory UI including filters, list/grid views, export/import actions, pagination, and dialogs for adding or bulk importing employees.Presents searchable, pageable employee results with controls to switch between grid and list layouts, export the current filtered set to CSV, and open dialogs to add or import employees. Fetches employee, department, and picklist data and manages local UI state (filters, search, page, view mode, and dialog visibility). * params: * props — Component props (none) * example: | EmployeeDirectory /Accessibility considerations:- Action buttons include titles for assistive technologies.- Controls use native form elements or accessible custom components (Select, Input, Pagination) to preserve keyboard and screen reader interactions. * score: 4 ### component EmployeeEntraStatus * file: src/cores/hr/components/employees/EmployeeEntraStatus.tsx:79 * kind: component * core: hr * spec: (none) * summary: Utility for employee entra status. * score: 1 ### component EmployeeGapAnalysis * file: src/cores/hr/components/skills/EmployeeGapAnalysis.tsx:34 * kind: component * core: hr * spec: (none) * summary: Utility for employee gap analysis. * score: 1 ### component EmployeeRelationsDashboardPage * file: src/cores/hr/employee-relations/pages/EmployeeRelationsDashboardPage.tsx:17 * kind: component * core: hr * spec: (none) * summary: Utility for employee relations dashboard page. * score: 1 ### component EmployeeRelationsReportsPage * file: src/cores/hr/employee-relations/pages/EmployeeRelationsReportsPage.tsx:35 * kind: component * core: hr * spec: HR-14 * summary: Compliance reporting page for the employee-relations domain. Lets HR userspick a report type (incident summary, disciplinary actions, grievances) and adate range, renders the resulting summary stats and tables, and supportsexporting the data for audit/compliance purposes. * returns: The employee-relations reports page element. * score: 5 ### component EmployeeSharePointStatus * file: src/cores/hr/components/employees/EmployeeSharePointStatus.tsx:39 * kind: component * core: hr * spec: (none) * summary: Utility for employee share point status. * score: 1 ### component EmployeeSkillCard * file: src/cores/hr/components/skills/EmployeeSkillCard.tsx:37 * kind: component * core: hr * spec: (none) * summary: Utility for employee skill card. * score: 1 ### component EmployeeSkillsList * file: src/cores/hr/components/skills/EmployeeSkillsList.tsx:30 * kind: component * core: hr * spec: (none) * summary: Utility for employee skills list. * score: 1 ### component EmployeeSyncStatus * file: src/cores/hr/components/employees/EmployeeSyncStatus.tsx:25 * kind: component * core: hr * spec: (none) * summary: Utility for employee sync status. * score: 1 ### component EmployeeTaxInfoForm * file: src/cores/hr/components/tax-forms/EmployeeTaxInfoForm.tsx:74 * kind: component * core: hr * spec: (none) * summary: Utility for employee tax info form. * score: 1 ### component EmployeeTaxInfoHistory * file: src/cores/hr/components/tax-forms/EmployeeTaxInfoHistory.tsx:23 * kind: component * core: hr * spec: (none) * summary: Utility for employee tax info history. * score: 1 ### component EmployeeTeamsActivityStatus * file: src/cores/hr/components/employees/EmployeeTeamsActivityStatus.tsx:27 * kind: component * core: hr * spec: (none) * summary: Utility for employee teams activity status. * score: 1 ### component EmployeeTeamsStatus * file: src/cores/hr/components/employees/EmployeeTeamsStatus.tsx:39 * kind: component * core: hr * spec: (none) * summary: Utility for employee teams status. * score: 1 ### component EmployeeYTDTable * file: src/cores/hr/components/payroll/reports/EmployeeYTDTable.tsx:43 * kind: component * core: hr * spec: (none) * summary: Utility for employee ytdtable. * score: 1 ### component EmployerTaxConfigForm * file: src/cores/hr/components/tax-forms/EmployerTaxConfigForm.tsx:68 * kind: component * core: hr * spec: (none) * summary: Utility for employer tax config form. * score: 1 ### component EmploymentStep * file: src/cores/hr/components/wizards/steps/EmploymentStep.tsx:28 * kind: component * core: hr * spec: (none) * summary: Utility for employment step. * score: 1 ### component EmploymentVerificationExportDialog * file: src/cores/hr/components/documents/EmploymentVerificationExportDialog.tsx:55 * kind: component * core: hr * spec: (none) * summary: Utility for employment verification export dialog. * score: 1 ### component EncoreValueCell * file: src/cores/hr/components/proliant/ProliantCodeMappingConfig.tsx:476 * kind: component * core: hr * spec: HR-44 * summary: Constrained Encore-value picker for a Proliant code-mapping row (HR-44 Task 5).Replaces the legacy free-text input: an admin may only pick from theregistry-resolved for the family, or the explicit\*\*"N/A — skip"\*\* sentinel (a reviewed "no Encore value" decision that stillmarks the row mapped, so it clears the go-live gate without junk free-text).When a saved is not one of the current targets (legacyfree-text), it surfaces as a selected "(unrecognized: …)" option so it staysvisible and re-pickable. With no targets, only N/A is offered.Picking saves immediately via ; there is no free-text entry.Implemented as a disclosure (trigger + option buttons) rather than a portalledRadix listbox so it is robust to drive in the browser and under jsdom.Keyboard support: ArrowDown/ArrowUp navigate options; Enter/Space select thefocused option (native button behaviour); Escape closes and returns focus tothe trigger. Pointer-outside closes the listbox. * score: 3 ### component EngagementAnalyticsDashboardPage * file: src/cores/hr/engagement/pages/EngagementAnalyticsDashboardPage.tsx:201 * kind: component * core: hr * spec: (none) * summary: Utility for engagement analytics dashboard page. * score: 1 ### component EngagementScoreCard * file: src/cores/hr/engagement/components/EngagementScoreCard.tsx:62 * kind: component * core: hr * spec: (none) * summary: Utility for engagement score card. * score: 1 ### component EnrollmentCostCard * file: src/cores/hr/benefits/components/enrollment/EnrollmentCostCard.tsx:25 * kind: component * core: hr * spec: (none) * summary: Utility for enrollment cost card. * score: 1 ### component EnrollmentDependentsList * file: src/cores/hr/benefits/components/enrollment/EnrollmentDependentsList.tsx:44 * kind: component * core: hr * spec: (none) * summary: Utility for enrollment dependents list. * score: 1 ### component EnrollmentDetailPage * file: src/cores/hr/benefits/pages/admin/EnrollmentDetailPage.tsx:309 * kind: component * core: hr * spec: HR-11 * summary: Admin route for reviewing a single benefits enrollment submission. Gatesaccess behind the permission and renders the enrollmentdetail (employee, elected plans, dependents) along with approve/rejectactions for administrators who can process the submission. * returns: The permission-gated enrollment detail page element. * score: 5 ### component EnrollmentPlanCard * file: src/cores/hr/benefits/components/enrollment/EnrollmentPlanCard.tsx:68 * kind: component * core: hr * spec: (none) * summary: Utility for enrollment plan card. * score: 1 ### component EnrollmentReminderDialog * file: src/cores/hr/benefits/components/admin/EnrollmentReminderDialog.tsx:68 * kind: component * core: hr * spec: (none) * summary: Dialog for sending bulk enrollment reminders with template selection. * params: * props — Dialog props including employees, period info, and reminder history * score: 2 ### component EnrollmentsListPage * file: src/cores/hr/benefits/pages/admin/EnrollmentsListPage.tsx:64 * kind: component * core: hr * spec: (none) * summary: Utility for enrollments list page. * score: 1 ### component EnrollmentStatusWidget * file: src/cores/hr/self-service/components/EnrollmentStatusWidget.tsx:53 * kind: component * core: hr * spec: (none) * summary: Utility for enrollment status widget. * score: 1 ### component EnrollmentSummaryCard * file: src/cores/hr/benefits/components/employee/EnrollmentSummaryCard.tsx:76 * kind: component * core: hr * spec: (none) * summary: Displays a summary of a single benefit enrollment for the employee dashboard. * score: 2 ### component EnrollmentWizardPage * file: src/cores/hr/benefits/pages/employee/EnrollmentWizardPage.tsx:58 * kind: component * core: hr * spec: (none) * summary: Multi-step enrollment wizard page for employee benefits open enrollment. * score: 2 ### component EquityDisparityTable * file: src/cores/hr/compensation/components/EquityDisparityTable.tsx:20 * kind: component * core: hr * spec: (none) * summary: Utility for equity disparity table. * score: 1 ### component EquityScoreGauge * file: src/cores/hr/compensation/components/EquityScoreGauge.tsx:41 * kind: component * core: hr * spec: (none) * summary: Semicircular gauge rendered with plain SVG.Replaces the previous Recharts RadialBarChart implementation which had aknown rendering bug in Recharts v3 where the PolarAngleAxis domain did notproperly constrain the RadialBar arc extent (recharts/recharts#5195). * score: 2 ### component EverifyCaseDetailDialog * file: src/cores/hr/components/everify/EverifyCaseDetailDialog.tsx:31 * kind: component * core: hr * spec: (none) * summary: Dialog showing E-Verify case detail with tabs for details, TNC, and audit log. * score: 2 ### component EverifyCaseList * file: src/cores/hr/components/everify/EverifyCaseList.tsx:74 * kind: component * core: hr * spec: (none) * summary: EverifyCaseList renders a table of E-Verify cases. * score: 2 ### component EverifyComplianceExport * file: src/cores/hr/components/everify/EverifyComplianceExport.tsx:52 * kind: component * core: hr * spec: (none) * summary: Button that exports E-Verify cases as a CSV file. * score: 2 ### component EverifyDashboardPage * file: src/cores/hr/pages/EverifyDashboardPage.tsx:31 * kind: component * core: hr * spec: (none) * summary: EverifyDashboardPage — main E-Verify landing page for HR admins. * score: 2 ### component EverifyOrgSettingsForm * file: src/cores/hr/components/everify/EverifyOrgSettingsForm.tsx:22 * kind: component * core: hr * spec: (none) * summary: Form for managing E-Verify org configuration. * score: 2 ### component EverifyReverifyButton * file: src/cores/hr/components/everify/EverifyReverifyButton.tsx:22 * kind: component * core: hr * spec: (none) * summary: Button to trigger manual reverification on an E-Verify case. * score: 2 ### component EverifySettingsPage * file: src/cores/hr/pages/EverifySettingsPage.tsx:18 * kind: component * core: hr * spec: (none) * summary: EverifySettingsPage — organization-level E-Verify configuration. * score: 2 ### component EverifyTncPanel * file: src/cores/hr/components/everify/EverifyTncPanel.tsx:28 * kind: component * core: hr * spec: (none) * summary: TNC panel for contesting or not contesting a TNC, plus notice tracking. * score: 2 ### component ExceptionQueuePage * file: src/cores/hr/pages/ExceptionQueuePage.tsx:54 * kind: component * core: hr * spec: (none) * summary: Exception queue with punch correction context (HR-05-EN-10 US-5). * score: 2 ### component ExceptionResolutionDialog * file: src/cores/hr/components/time/ExceptionResolutionDialog.tsx:21 * kind: component * core: hr * spec: (none) * summary: Utility for exception resolution dialog. * score: 1 ### component ExceptionTrendChart * file: src/cores/hr/components/time/analytics/ExceptionTrendChart.tsx:14 * kind: component * core: hr * spec: (none) * summary: Utility for exception trend chart. * score: 1 ### component ExceptionTypeBadge * file: src/cores/hr/components/time/ExceptionTypeBadge.tsx:71 * kind: component * core: hr * spec: (none) * summary: Renders a badge for a time exception type with severity styling. * score: 2 ### component ExceptionTypeDistributionChart * file: src/cores/hr/components/time/analytics/ExceptionTypeDistributionChart.tsx:23 * kind: component * core: hr * spec: (none) * summary: Utility for exception type distribution chart. * score: 1 ### component ExemptHoursGrid * file: src/cores/hr/components/time/ExemptHoursGrid.tsx:46 * kind: component * core: hr * spec: (none) * summary: Daily-hours grid for EXEMPT (salaried) employees — one numeric input per day acrossthe pay period; a single Save upserts manual=true rows via (HR-05-EN-12 / D4). No punches are created. * score: 2 ### component ExitInterviewDetailPage * file: src/cores/hr/engagement/pages/ExitInterviewDetailPage.tsx:75 * kind: component * core: hr * spec: (none) * summary: Utility for exit interview detail page. * score: 1 ### component ExitInterviewForm * file: src/cores/hr/components/lifecycle/ExitInterviewForm.tsx:18 * kind: component * core: hr * spec: (none) * summary: Utility for exit interview form. * score: 1 ### component ExitInterviewForm * file: src/cores/hr/engagement/components/ExitInterviewForm.tsx:62 * kind: component * core: hr * spec: (none) * summary: Utility for exit interview form. * score: 1 ### component ExitInterviewFormPage * file: src/cores/hr/engagement/pages/ExitInterviewFormPage.tsx:19 * kind: component * core: hr * spec: (none) * summary: Utility for exit interview form page. * score: 1 ### component ExitInterviewListPage * file: src/cores/hr/engagement/pages/ExitInterviewListPage.tsx:77 * kind: component * core: hr * spec: (none) * summary: Utility for exit interview list page. * score: 1 ### component ExpirationAlertWidget * file: src/cores/hr/components/compliance/ExpirationAlertWidget.tsx:28 * kind: component * core: hr * spec: (none) * summary: Utility for expiration alert widget. * score: 1 ### component ExpirationForecastChart * file: src/cores/hr/components/analytics/ExpirationForecastChart.tsx:23 * kind: component * core: hr * spec: (none) * summary: Utility for expiration forecast chart. * score: 1 ### component ExportOptionsDialog * file: src/cores/hr/components/forecasting/ExportOptionsDialog.tsx:25 * kind: component * core: hr * spec: (none) * summary: Utility for export options dialog. * score: 1 ### component FCRAWorkflowPanel * file: src/cores/hr/components/ats/FCRAWorkflowPanel.tsx:52 * kind: component * core: hr * spec: (none) * summary: Utility for fcraworkflow panel. * score: 1 ### component FeedbackRequestFormDialog * file: src/cores/hr/components/performance/FeedbackRequestFormDialog.tsx:44 * kind: component * core: hr * spec: (none) * summary: Utility for feedback request form dialog. * score: 1 ### component FeedbackRequestTable * file: src/cores/hr/components/performance/FeedbackRequestTable.tsx:44 * kind: component * core: hr * spec: (none) * summary: Utility for feedback request table. * score: 1 ### component FeedbackResponseCard * file: src/cores/hr/components/performance/FeedbackResponseCard.tsx:25 * kind: component * core: hr * spec: (none) * summary: Utility for feedback response card. * score: 1 ### component FeedbackSubmitDialog * file: src/cores/hr/components/performance/FeedbackSubmitDialog.tsx:42 * kind: component * core: hr * spec: (none) * summary: Utility for feedback submit dialog. * score: 1 ### component FeedbackSummaryWidget * file: src/cores/hr/components/ats/FeedbackSummaryWidget.tsx:57 * kind: component * core: hr * spec: (none) * summary: Utility for feedback summary widget. * score: 1 ### component FieldMappingsStep * file: src/cores/hr/components/proliant/setup-steps/FieldMappingsStep.tsx:27 * kind: component * core: hr * spec: HR-UX-13 * summary: Step 3 of the Proliant setup wizard — Field Mappings.Reuses with the same prop wiring as the"Field Mappings" tab on . Requires a draftintegration to exist (created when the user advances from step 2);renders an empty-state prompt until is available. * params: * integrationId — ID of the draft integration; renders an empty state when undefined. * score: 3 ### component FilingMethodRadio * file: src/cores/hr/components/tax-forms/FilingMethodRadio.tsx:25 * kind: component * core: hr * spec: (none) * summary: Utility for filing method radio. * score: 1 ### component FinalAdverseActionDialog * file: src/cores/hr/components/ats/FinalAdverseActionDialog.tsx:31 * kind: component * core: hr * spec: (none) * summary: Utility for final adverse action dialog. * score: 1 ### component FingerprintClearanceDashboardPage * file: src/cores/hr/pages/FingerprintClearanceDashboardPage.tsx:37 * kind: component * core: hr * spec: (none) * summary: Main fingerprint clearance roster page for HR admins. * score: 2 ### component FingerprintClearanceDetailDialog * file: src/cores/hr/components/fingerprint-clearance/FingerprintClearanceDetailDialog.tsx:37 * kind: component * core: hr * spec: (none) * summary: Detail dialog for a single fingerprint clearance record. * score: 2 ### component FingerprintClearanceForm * file: src/cores/hr/components/fingerprint-clearance/FingerprintClearanceForm.tsx:50 * kind: component * core: hr * spec: (none) * summary: Form dialog for creating or editing a fingerprint clearance record. * score: 2 ### component FingerprintClearanceIncidentPanel * file: src/cores/hr/components/fingerprint-clearance/FingerprintClearanceIncidentPanel.tsx:36 * kind: component * core: hr * spec: (none) * summary: Panel displaying and managing incidents for a clearance record. * score: 2 ### component FingerprintClearanceList * file: src/cores/hr/components/fingerprint-clearance/FingerprintClearanceList.tsx:71 * kind: component * core: hr * spec: (none) * summary: Renders the fingerprint clearance list table. * score: 2 ### component FingerprintClearanceSettingsSection * file: src/cores/hr/components/fingerprint-clearance/FingerprintClearanceSettingsSection.tsx:28 * kind: component * core: hr * spec: (none) * summary: Settings section for fingerprint clearance configuration. * score: 2 ### component FingerprintClearanceVerifyButton * file: src/cores/hr/components/fingerprint-clearance/FingerprintClearanceVerifyButton.tsx:26 * kind: component * core: hr * spec: (none) * summary: Button to mark a clearance record as verified. * score: 2 ### component FingerprintClearanceWizard * file: src/cores/hr/components/fingerprint-clearance/wizard/FingerprintClearanceWizard.tsx:37 * kind: component * core: hr * spec: (none) * summary: Dialog-based wizard for creating or updating a fingerprint clearance card. * score: 2 ### component FMLACaseCard * file: src/cores/hr/components/leave/FMLACaseCard.tsx:30 * kind: component * core: hr * spec: (none) * summary: Utility for fmlacase card. * score: 1 ### component FMLACaseDetail * file: src/cores/hr/components/leave/FMLACaseDetail.tsx:33 * kind: component * core: hr * spec: (none) * summary: Utility for fmlacase detail. * score: 1 ### component FMLACaseDetailPage * file: src/cores/hr/pages/FMLACaseDetailPage.tsx:16 * kind: component * core: hr * spec: (none) * summary: Utility for fmlacase detail page. * score: 1 ### component FMLACaseFormDialog * file: src/cores/hr/components/leave/FMLACaseFormDialog.tsx:37 * kind: component * core: hr * spec: (none) * summary: Utility for fmlacase form dialog. * score: 1 ### component FMLACases * file: src/cores/hr/pages/FMLACases.tsx:9 * kind: component * core: hr * spec: (none) * summary: Utility for fmlacases. * score: 1 ### component FMLACasesList * file: src/cores/hr/components/leave/FMLACasesList.tsx:16 * kind: component * core: hr * spec: (none) * summary: Utility for fmlacases list. * score: 1 ### component FMLASummaryWidget * file: src/cores/hr/components/leave/FMLASummaryWidget.tsx:22 * kind: component * core: hr * spec: (none) * summary: Utility for fmlasummary widget. * score: 1 ### component ForecastAccuracyCard * file: src/cores/hr/components/forecasting/ForecastAccuracyCard.tsx:21 * kind: component * core: hr * spec: (none) * summary: Utility for forecast accuracy card. * score: 1 ### component ForecastAccuracyDashboard * file: src/cores/hr/components/forecasting/ForecastAccuracyDashboard.tsx:19 * kind: component * core: hr * spec: (none) * summary: Utility for forecast accuracy dashboard. * score: 1 ### component ForecastChart * file: src/cores/hr/components/forecasting/ForecastChart.tsx:18 * kind: component * core: hr * spec: (none) * summary: Utility for forecast chart. * score: 1 ### component ForecastDashboard * file: src/cores/hr/components/forecasting/ForecastDashboard.tsx:26 * kind: component * core: hr * spec: (none) * summary: Utility for forecast dashboard. * score: 1 ### component ForecastTable * file: src/cores/hr/components/forecasting/ForecastTable.tsx:26 * kind: component * core: hr * spec: (none) * summary: Utility for forecast table. * score: 1 ### component Form940LineItem * file: src/cores/hr/components/tax-forms/Form940LineItem.tsx:24 * kind: component * core: hr * spec: (none) * summary: Utility for form940 line item. * score: 1 ### component Form940ReviewPage * file: src/cores/hr/pages/Form940ReviewPage.tsx:33 * kind: component * core: hr * spec: (none) * summary: Utility for form940 review page. * score: 1 ### component Form941LineItem * file: src/cores/hr/components/tax-forms/Form941LineItem.tsx:29 * kind: component * core: hr * spec: (none) * summary: Utility for form941 line item. * score: 1 ### component Form941ReviewPage * file: src/cores/hr/pages/Form941ReviewPage.tsx:33 * kind: component * core: hr * spec: (none) * summary: Utility for form941 review page. * score: 1 ### component Form941Summary * file: src/cores/hr/components/tax-forms/Form941Summary.tsx:22 * kind: component * core: hr * spec: (none) * summary: Utility for form941 summary. * score: 1 ### component FormDateInput * file: src/cores/hr/employee-relations/components/FormDateInput.tsx:25 * kind: component * core: hr * spec: (none) * summary: Controlled date input for react-hook-form: stores ISO dates (YYYY-MM-DD) or undefined, never "".Forwards the / props injects (a bare gets these viaSlot automatically; a custom component must pass them through) so the date inputassociates with its and reflects validation state. * score: 2 ### component GapAnalysisPage * file: src/cores/hr/pages/GapAnalysisPage.tsx:25 * kind: component * core: hr * spec: (none) * summary: Utility for gap analysis page. * score: 1 ### component GarnishmentForm * file: src/cores/hr/components/payroll/GarnishmentForm.tsx:24 * kind: component * core: hr * spec: (none) * summary: Utility for garnishment form. * score: 1 ### component GenerateChecksToolbar * file: src/cores/hr/components/payroll/GenerateChecksToolbar.tsx:24 * kind: component * core: hr * spec: (none) * summary: Utility for generate checks toolbar. * score: 1 ### component GenerateForecastDialog * file: src/cores/hr/components/forecasting/GenerateForecastDialog.tsx:49 * kind: component * core: hr * spec: (none) * summary: Utility for generate forecast dialog. * score: 1 ### component GeofenceConfigDialog * file: src/cores/hr/components/geofencing/GeofenceConfigDialog.tsx:46 * kind: component * core: hr * spec: (none) * summary: Dialog for creating/editing a geofence configuration. * score: 2 ### component GeofenceConfigList * file: src/cores/hr/components/geofencing/GeofenceConfigList.tsx:21 * kind: component * core: hr * spec: (none) * summary: List of geofence configurations per site. * score: 2 ### component GoalAchievementWidget * file: src/cores/hr/components/performance/analytics/GoalAchievementWidget.tsx:32 * kind: component * core: hr * spec: (none) * summary: Utility for goal achievement widget. * score: 1 ### component GoalsAssessmentStep * file: src/cores/hr/components/wizards/steps/GoalsAssessmentStep.tsx:35 * kind: component * core: hr * spec: (none) * summary: Utility for goals assessment step. * score: 1 ### component GrievanceAssigneePicker * file: src/cores/hr/employee-relations/components/GrievanceAssigneePicker.tsx:17 * kind: component * core: hr * spec: (none) * summary: Multi-select picker for HR staff assigned to a grievance. * score: 2 ### component GrievanceAssigneesCard * file: src/cores/hr/employee-relations/components/GrievanceAssigneesCard.tsx:13 * kind: component * core: hr * spec: (none) * summary: HR-only card listing people assigned to handle this grievance. * score: 2 ### component GrievanceDetailPage * file: src/cores/hr/employee-relations/pages/GrievanceDetailPage.tsx:53 * kind: component * core: hr * spec: (none) * summary: Utility for grievance detail page. * score: 1 ### component GrievanceForm * file: src/cores/hr/employee-relations/components/GrievanceForm.tsx:86 * kind: component * core: hr * spec: (none) * summary: Utility for grievance form. * score: 1 ### component GrievanceFormPage * file: src/cores/hr/employee-relations/pages/GrievanceFormPage.tsx:55 * kind: component * core: hr * spec: (none) * summary: Utility for grievance form page. * score: 1 ### component GrievanceListPage * file: src/cores/hr/employee-relations/pages/GrievanceListPage.tsx:93 * kind: component * core: hr * spec: (none) * summary: Utility for grievance list page. * score: 1 ### component HandbookBundlesPage * file: src/cores/hr/pages/HandbookBundlesPage.tsx:20 * kind: component * core: hr * spec: (none) * summary: HR-43 US-2 — Manage handbook bundles (new-hire policy sets). * score: 2 ### component HandbookComplianceDashboardPage * file: src/cores/hr/pages/HandbookComplianceDashboardPage.tsx:25 * kind: component * core: hr * spec: (none) * summary: HR-43 US-4 — Handbook acknowledgment compliance dashboard. * score: 2 ### component HandbookListPage * file: src/cores/hr/pages/HandbookListPage.tsx:19 * kind: component * core: hr * spec: (none) * summary: HR-43 Handbook hub — list view (HR-43 US-1).Filters GR-01 policies by handbook tagging convention( + ).Edit/version actions stay in GR-01. * score: 2 ### component HeadcountDrilldownTable * file: src/cores/hr/components/headcount/HeadcountDrilldownTable.tsx:30 * kind: component * core: hr * spec: HR-08 * summary: Renders a table breaking headcount down by group (e.g. department orlocation), with a column per position status — filled, vacant, frozen, andapproved — so planners can see where capacity sits. * params: * props — Table props: labels the card; supply the per-group counts; optionally maps group keys to display names. * score: 5 ### component HeadcountStatusChart * file: src/cores/hr/components/headcount/HeadcountStatusChart.tsx:41 * kind: component * core: hr * spec: HR-08 * summary: Renders a pie chart of position counts by status (filled, vacant, frozen,approved, pending approval), showing a skeleton while data loads. * params: * props — Chart props: is the headcount summary to visualize; swaps in a skeleton placeholder. * score: 5 ### component HeadcountSummaryCards * file: src/cores/hr/components/headcount/HeadcountSummaryCards.tsx:30 * kind: component * core: hr * spec: HR-08 * summary: Renders the top-line headcount KPI cards — total, filled, vacant, andfrozen/closed positions with computed fill and vacancy percentages — showingskeleton cards while data loads. * params: * props — Card props: is the headcount summary; swaps in skeleton placeholders. * score: 5 ### component HeadcountWidget * file: src/cores/hr/analytics/components/HeadcountWidget.tsx:28 * kind: component * core: hr * spec: (none) * summary: Utility for headcount widget. * score: 1 ### component HiringChecklist * file: src/cores/hr/components/ats/HiringChecklist.tsx:49 * kind: component * core: hr * spec: (none) * summary: Utility for hiring checklist. * score: 1 ### component HolidayFormDialog * file: src/cores/hr/components/pay-calendar/HolidayFormDialog.tsx:42 * kind: component * core: hr * spec: (none) * summary: Utility for holiday form dialog. * score: 1 ### component HolidayList * file: src/cores/hr/components/pay-calendar/HolidayList.tsx:35 * kind: component * core: hr * spec: (none) * summary: Utility for holiday list. * score: 1 ### component HRAdvancedSettingsTabs * file: src/cores/hr/components/settings/HRAdvancedSettingsTabs.tsx:112 * kind: component * core: hr * spec: (none) * summary: Utility for hradvanced settings tabs. * score: 1 ### component HRComplianceWidget * file: src/cores/hr/components/dashboard/HRComplianceWidget.tsx:14 * kind: component * core: hr * spec: (none) * summary: Utility for hrcompliance widget. * score: 1 ### component HRCsvImportDialog * file: src/cores/hr/components/data-import/HRCsvImportDialog.tsx:89 * kind: component * core: hr * spec: (none) * summary: Renders a generic CSV import wizard dialog for HR data types.Includes an optional AI-assisted column mapping step when headers don't match. * params: * props — Configuration for columns, parsing, import execution, and template download. * score: 2 ### component HRDataImportChecklistPage * file: src/cores/hr/pages/HRDataImportChecklistPage.tsx:64 * kind: component * core: hr * spec: (none) * summary: Renders the unified HR Data Import page with CSV and HRIS Connect tabs. * score: 2 ### component HRDocumentExportDialog * file: src/cores/hr/components/documents/HRDocumentExportDialog.tsx:43 * kind: component * core: hr * spec: (none) * summary: Utility for hrdocument export dialog. * score: 1 ### component HREmailSettingsTab * file: src/cores/hr/components/settings/HREmailSettingsTab.tsx:23 * kind: component * core: hr * spec: (none) * summary: Utility for hremail settings tab. * score: 1 ### component HRFormsPage * file: src/cores/hr/pages/HRFormsPage.tsx:13 * kind: component * core: hr * spec: (none) * summary: Utility for hrforms page. * score: 1 ### component HRNotificationCategoryCard * file: src/cores/hr/self-service/components/HRNotificationCategoryCard.tsx:69 * kind: component * core: hr * spec: (none) * summary: Utility for hrnotification category card. * score: 1 ### component HRNotificationPreferencesSection * file: src/cores/hr/self-service/components/HRNotificationPreferencesSection.tsx:57 * kind: component * core: hr * spec: (none) * summary: Utility for hrnotification preferences section. * score: 1 ### component HROverview * file: src/cores/hr/pages/HROverview\.tsx:28 * kind: component * core: hr * spec: (none) * summary: Utility for hroverview. * score: 1 ### component HRPendingApprovalsWidget * file: src/cores/hr/components/dashboard/HRPendingApprovalsWidget.tsx:14 * kind: component * core: hr * spec: (none) * summary: Utility for hrpending approvals widget. * score: 1 ### component HRQuickActionsWidget * file: src/cores/hr/components/dashboard/HRQuickActionsWidget.tsx:13 * kind: component * core: hr * spec: (none) * summary: HR dashboard widget: registry-driven quick actions with PF-30 permission filtering. Add tests covering:- Permission filtering (actions hidden when user lacks permission)- Capping and order behavior (maxModuleActions limit)- Registry integration * score: 2 ### component HRSchedulingWidget * file: src/cores/hr/components/dashboard/HRSchedulingWidget.tsx:14 * kind: component * core: hr * spec: (none) * summary: Utility for hrscheduling widget. * score: 1 ### component HrSettingsBackNav * file: src/cores/hr/components/settings/HrSettingsBackNav.tsx:13 * kind: component * core: hr * spec: (none) * summary: Back link to the HR Settings hub tab that owns this admin sub-page. * score: 2 ### component HRSettingsForm * file: src/cores/hr/components/settings/HRSettingsForm.tsx:84 * kind: component * core: hr * spec: (none) * summary: Utility for hrsettings form. * score: 1 ### component HrSettingsLinkCard * file: src/cores/hr/components/settings/HrSettingsLinkCard.tsx:20 * kind: component * core: hr * spec: (none) * summary: Permission-gated settings hub card linking to an HR admin sub-page. * score: 2 ### component HRSettingsPage * file: src/cores/hr/pages/HRSettingsPage.tsx:54 * kind: component * core: hr * spec: (none) * summary: HR module settings — organization-wide defaults and integrations. * score: 2 ### component HRWorkforceSummaryWidget * file: src/cores/hr/components/dashboard/HRWorkforceSummaryWidget.tsx:13 * kind: component * core: hr * spec: (none) * summary: Utility for hrworkforce summary widget. * score: 1 ### component IdentityStep * file: src/cores/hr/components/fingerprint-clearance/wizard/steps/IdentityStep.tsx:37 * kind: component * core: hr * spec: (none) * summary: Render the Identity step. * score: 1 ### component ImportReviewStep * file: src/cores/hr/components/employees/import/ImportReviewStep.tsx:42 * kind: component * core: hr * spec: (none) * summary: Review step showing exactly what will be created during import. * score: 2 ### component IncidentDetailPage * file: src/cores/hr/employee-relations/pages/IncidentDetailPage.tsx:41 * kind: component * core: hr * spec: (none) * summary: Utility for incident detail page. * score: 1 ### component IncidentForm * file: src/cores/hr/employee-relations/components/IncidentForm.tsx:63 * kind: component * core: hr * spec: (none) * summary: Utility for incident form. * score: 1 ### component IncidentFormPage * file: src/cores/hr/employee-relations/pages/IncidentFormPage.tsx:44 * kind: component * core: hr * spec: (none) * summary: Utility for incident form page. * score: 1 ### component IncidentListPage * file: src/cores/hr/employee-relations/pages/IncidentListPage.tsx:85 * kind: component * core: hr * spec: (none) * summary: Utility for incident list page. * score: 1 ### component InfoTooltip * file: src/cores/hr/components/onboarding/OnboardingHelpContent.tsx:98 * kind: component * core: hr * spec: (none) * summary: Utility for info tooltip. * score: 1 ### component InternalApplicantsPage * file: src/cores/hr/pages/InternalApplicantsPage.tsx:9 * kind: component * core: hr * spec: (none) * summary: HR-35 / US-2: Recruiter / hiring-manager review queue for internal applicants. * score: 2 ### component InternalApplicantsTable * file: src/cores/hr/components/internal-mobility/InternalApplicantsTable.tsx:39 * kind: component * core: hr * spec: HR-35 * summary: Reviewer table listing internal applicants, optionally scoped to a positionor status. Each row surfaces the applicant's status badge and revieweractions to advance the application or execute a transfer; renders skeletonswhile loading and an empty state when no applications match. * params: * props — Table props: and optionally filter the listed applications. * score: 5 ### component InternalApplicationStatusBadge * file: src/cores/hr/components/internal-mobility/InternalApplicationStatusBadge.tsx:32 * kind: component * core: hr * spec: HR-35 * summary: Renders a colored badge for an internal-mobility application status, mappingeach status to a badge variant and human-readable label (falling back to theraw status when unmapped). * params: * props — Component props: is the application status to render. * score: 5 ### component InternalJobsPage * file: src/cores/hr/pages/me/InternalJobsPage.tsx:15 * kind: component * core: hr * spec: (none) * summary: HR-35 / US-1: Employee-facing browse-and-apply page for internal openings. * score: 2 ### component InterviewCard * file: src/cores/hr/components/ats/InterviewCard.tsx:37 * kind: component * core: hr * spec: (none) * summary: Utility for interview card. * score: 1 ### component InterviewDetailPage * file: src/cores/hr/pages/ats/InterviewDetailPage.tsx:94 * kind: component * core: hr * spec: (none) * summary: Utility for interview detail page. * score: 1 ### component InterviewerSelect * file: src/cores/hr/components/ats/InterviewerSelect.tsx:31 * kind: component * core: hr * spec: (none) * summary: Utility for interviewer select. * score: 1 ### component InterviewFeedbackCard * file: src/cores/hr/components/ats/InterviewFeedbackCard.tsx:43 * kind: component * core: hr * spec: (none) * summary: Utility for interview feedback card. * score: 1 ### component InterviewFeedbackForm * file: src/cores/hr/components/ats/InterviewFeedbackForm.tsx:62 * kind: component * core: hr * spec: (none) * summary: Utility for interview feedback form. * score: 1 ### component InterviewListContent * file: src/cores/hr/pages/ats/InterviewListPage.tsx:23 * kind: component * core: hr * spec: (none) * summary: Extracted content component for use in the ATSRecruitingHubPage * score: 2 ### component InterviewListPage * file: src/cores/hr/pages/ats/InterviewListPage.tsx:164 * kind: component * core: hr * spec: (none) * summary: Utility for interview list page. * score: 1 ### component InterviewReminderSettings * file: src/cores/hr/components/ats/InterviewReminderSettings.tsx:30 * kind: component * core: hr * spec: (none) * summary: Utility for interview reminder settings. * score: 1 ### component InterviewScheduleDialog * file: src/cores/hr/components/ats/InterviewScheduleDialog.tsx:56 * kind: component * core: hr * spec: (none) * summary: Utility for interview schedule dialog. * score: 1 ### component InterviewScorecardForm * file: src/cores/hr/components/ats/scorecards/InterviewScorecardForm.tsx:50 * kind: component * core: hr * spec: (none) * summary: Scorecard form for rating competencies during an interview. * score: 2 ### component InterviewStatusBadge * file: src/cores/hr/components/ats/InterviewStatusBadge.tsx:24 * kind: component * core: hr * spec: (none) * summary: Utility for interview status badge. * score: 1 ### component InvestigationDetailPage * file: src/cores/hr/employee-relations/pages/InvestigationDetailPage.tsx:45 * kind: component * core: hr * spec: (none) * summary: Utility for investigation detail page. * score: 1 ### component InvestigationForm * file: src/cores/hr/employee-relations/components/InvestigationForm.tsx:66 * kind: component * core: hr * spec: (none) * summary: Utility for investigation form. * score: 1 ### component InvestigationFormPage * file: src/cores/hr/employee-relations/pages/InvestigationFormPage.tsx:38 * kind: component * core: hr * spec: (none) * summary: Utility for investigation form page. * score: 1 ### component InvestigationInvestigatorPicker * file: src/cores/hr/employee-relations/components/InvestigationInvestigatorPicker.tsx:14 * kind: component * core: hr * spec: (none) * summary: Single-select picker for the investigation lead (HR admins and platform admins). * score: 2 ### component InvestigationListPage * file: src/cores/hr/employee-relations/pages/InvestigationListPage.tsx:57 * kind: component * core: hr * spec: (none) * summary: Utility for investigation list page. * score: 1 ### component JobBoardIntegrationDialog * file: src/cores/hr/components/job-boards/JobBoardIntegrationDialog.tsx:38 * kind: component * core: hr * spec: (none) * summary: Dialog for creating/editing job board integrations.LinkedIn integrations use OAuth instead of API key entry. * score: 2 ### component JobBoardIntegrationsPage * file: src/cores/hr/pages/ats/JobBoardIntegrationsPage.tsx:33 * kind: component * core: hr * spec: (none) * summary: HR-09-P5 WS3e: Job Board Integrations management page.Lists configured job boards, allows add/sync/disable/delete. * score: 2 ### component JobBoardIntegrationsSection * file: src/cores/hr/components/job-boards/JobBoardIntegrationsSection.tsx:22 * kind: component * core: hr * spec: (none) * summary: Utility for job board integrations section. * score: 1 ### component JobBoardPostingsDashboard * file: src/cores/hr/components/job-boards/JobBoardPostingsDashboard.tsx:26 * kind: component * core: hr * spec: (none) * summary: Utility for job board postings dashboard. * score: 1 ### component JobDescriptionAgreementDetailPage * file: src/cores/hr/pages/JobDescriptionAgreementDetailPage.tsx:54 * kind: component * core: hr * spec: (none) * summary: Utility for job description agreement detail page. * score: 1 ### component JobDescriptionAgreementsPage * file: src/cores/hr/pages/JobDescriptionAgreementsPage.tsx:36 * kind: component * core: hr * spec: (none) * summary: Page that lists and manages job description agreements with status filtering and creation.Renders a header with actions (New Agreement), a status filter, loading and error states,distinct empty-state screens for "no agreements" and "no results for current filter",and a responsive grid of agreement cards. Opens a create-agreement dialog when requested.Accessibility:- Uses semantic headings and buttons for screen-reader discoverability.- Filter control is keyboard-focusable and exposes a visible label via placeholder text. * example: | import JobDescriptionAgreementsPage from 'src/cores/hr/pages/JobDescriptionAgreementsPage';function App() return JobDescriptionAgreementsPage /; * score: 5 ### component JobDescriptionForm * file: src/cores/hr/components/job-descriptions/JobDescriptionForm.tsx:86 * kind: component * core: hr * spec: (none) * summary: Multi-section form for creating or editing a job description.Renders fields for a position summary, dynamic lists for responsibilities,qualifications, and physical requirements, plus optional reporting and location inputs.Validates input using the component's Zod schema and submits normalized values via . - initialValues: Optional initial values to populate the form; missing arrays are initialized with sensible defaults. - onSubmit: Callback invoked with normalized when the form is valid and submitted. - onCancel: Optional callback invoked when the user clicks the Cancel action. - isSubmitting: Optional flag that disables the submit button and shows a loading state when . - submitLabel: Optional custom label for the submit button (defaults to ). * example: | JobDescriptionForm initialValues= summary: "Oversees clinical operations", responsibilities: \["Lead team", "Manage budgets"], qualifications: \["RN", "5+ years experience"], reportsTo: "CEO", location: "Main Campus", physical: \["Lift 25 lbs"] onSubmit=(values) = console.log(values) onCancel=() = navigateBack()/Accessibility:- Inputs include labels and aria-labels for dynamic item removal buttons.- Ensure surrounding layout provides sufficient color contrast and focus visibility for keyboard users. * score: 5 ### component JobDescriptionSettingsSection * file: src/cores/hr/components/settings/JobDescriptionSettingsSection.tsx:22 * kind: component * core: hr * spec: (none) * summary: Utility for job description settings section. * score: 1 ### component JobPostingCard * file: src/cores/hr/components/ats/JobPostingCard.tsx:22 * kind: component * core: hr * spec: (none) * summary: Utility for job posting card. * score: 1 ### component JobPostingDetailPage * file: src/cores/hr/pages/ats/JobPostingDetailPage.tsx:31 * kind: component * core: hr * spec: (none) * summary: Utility for job posting detail page. * score: 1 ### component JobPostingFormDialog * file: src/cores/hr/components/ats/JobPostingFormDialog.tsx:43 * kind: component * core: hr * spec: (none) * summary: Utility for job posting form dialog. * score: 1 ### component JobPostingListContent * file: src/cores/hr/pages/ats/JobPostingListPage.tsx:28 * kind: component * core: hr * spec: (none) * summary: Extracted content component for use in the ATSRecruitingHubPage * score: 2 ### component JobPostingListPage * file: src/cores/hr/pages/ats/JobPostingListPage.tsx:238 * kind: component * core: hr * spec: (none) * summary: Utility for job posting list page. * score: 1 ### component JobPostingStatusBadge * file: src/cores/hr/components/ats/JobPostingStatusBadge.tsx:24 * kind: component * core: hr * spec: (none) * summary: Utility for job posting status badge. * score: 1 ### component JobPostingWizardDialog * file: src/cores/hr/wizards/job-posting/JobPostingWizardDialog.tsx:34 * kind: component * core: hr * spec: (none) * summary: HR-UX-14: four-step guided dialog for creating a job posting on HR-09's. A guided alternative to . * score: 2 ### component KeyContactsCard * file: src/cores/hr/self-service/components/KeyContactsCard.tsx:47 * kind: component * core: hr * spec: (none) * summary: Utility for key contacts card. * score: 1 ### component LanguagePreferenceForm * file: src/cores/hr/self-service/components/LanguagePreferenceForm.tsx:31 * kind: component * core: hr * spec: (none) * summary: Utility for language preference form. * score: 1 ### component LeadershipProgramCatalogPage * file: src/cores/hr/succession/pages/LeadershipProgramCatalogPage.tsx:85 * kind: component * core: hr * spec: (none) * summary: Admin catalog of leadership programs available for employee enrollment. * score: 2 ### component LeadershipProgramDefinitionForm * file: src/cores/hr/succession/components/LeadershipProgramDefinitionForm.tsx:35 * kind: component * core: hr * spec: (none) * summary: Form for creating or updating a leadership program catalog entry. * score: 2 ### component LeadershipProgramForm * file: src/cores/hr/succession/components/LeadershipProgramForm.tsx:45 * kind: component * core: hr * spec: (none) * summary: Enrollment form; program is selected from the organization catalog. * score: 2 ### component LeadershipProgramListPage * file: src/cores/hr/succession/pages/LeadershipProgramListPage.tsx:64 * kind: component * core: hr * spec: (none) * summary: Utility for leadership program list page. * score: 1 ### component LeaveApprovalDialog * file: src/cores/hr/components/leave/LeaveApprovalDialog.tsx:24 * kind: component * core: hr * spec: (none) * summary: Utility for leave approval dialog. * score: 1 ### component LeaveApprovalQueue * file: src/cores/hr/components/leave/LeaveApprovalQueue.tsx:16 * kind: component * core: hr * spec: (none) * summary: Utility for leave approval queue. * score: 1 ### component LeaveApprovals * file: src/cores/hr/pages/LeaveApprovals.tsx:23 * kind: component * core: hr * spec: (none) * summary: Utility for leave approvals. * score: 1 ### component LeaveApprovalSummaryWidget * file: src/cores/hr/components/leave/LeaveApprovalSummaryWidget.tsx:21 * kind: component * core: hr * spec: (none) * summary: Utility for leave approval summary widget. * score: 1 ### component LeaveBalanceCard * file: src/cores/hr/components/leave/LeaveBalanceCard.tsx:15 * kind: component * core: hr * spec: (none) * summary: Utility for leave balance card. * score: 1 ### component LeaveBalanceImportDialog * file: src/cores/hr/components/data-import/LeaveBalanceImportDialog.tsx:31 * kind: component * core: hr * spec: (none) * summary: Dialog for importing employee leave/PTO balances from CSV files. * score: 2 ### component LeaveBalanceWidget * file: src/cores/hr/components/leave/LeaveBalanceWidget.tsx:14 * kind: component * core: hr * spec: (none) * summary: Dashboard widget showing employee's leave balancesShows top 3 policies with quick actions * score: 2 ### component LeaveCalendarDayCell * file: src/cores/hr/components/leave/LeaveCalendarDayCell.tsx:15 * kind: component * core: hr * spec: (none) * summary: Utility for leave calendar day cell. * score: 1 ### component LeaveOverview * file: src/cores/hr/pages/LeaveOverview\.tsx:27 * kind: component * core: hr * spec: (none) * summary: Utility for leave overview. * score: 1 ### component LeavePolicies * file: src/cores/hr/pages/LeavePolicies.tsx:17 * kind: component * core: hr * spec: (none) * summary: Utility for leave policies. * score: 1 ### component LeavePoliciesList * file: src/cores/hr/components/leave/LeavePoliciesList.tsx:34 * kind: component * core: hr * spec: (none) * summary: Utility for leave policies list. * score: 1 ### component LeavePolicyFormDialog * file: src/cores/hr/components/leave/LeavePolicyFormDialog.tsx:71 * kind: component * core: hr * spec: (none) * summary: Utility for leave policy form dialog. * score: 1 ### component LeaveReportWidget * file: src/cores/hr/components/leave/LeaveReportWidget.tsx:10 * kind: component * core: hr * spec: (none) * summary: Utility for leave report widget. * score: 1 ### component LeaveRequestCalendarBadge * file: src/cores/hr/components/leave/LeaveRequestCalendarStatus.tsx:105 * kind: component * core: hr * spec: (none) * summary: Utility for leave request calendar badge. * score: 1 ### component LeaveRequestCalendarStatus * file: src/cores/hr/components/leave/LeaveRequestCalendarStatus.tsx:25 * kind: component * core: hr * spec: (none) * summary: Displays calendar sync status for a leave request. * score: 2 ### component LeaveRequestForm * file: src/cores/hr/components/leave/LeaveRequestForm.tsx:38 * kind: component * core: hr * spec: (none) * summary: Utility for leave request form. * score: 1 ### component LeaveRequestWizardPage * file: src/cores/hr/pages/LeaveRequestWizardPage.tsx:24 * kind: component * core: hr * spec: (none) * summary: Utility for leave request wizard page. * score: 1 ### component LeaveReviewSubmitStep * file: src/cores/hr/components/wizards/steps/LeaveReviewSubmitStep.tsx:21 * kind: component * core: hr * spec: (none) * summary: Utility for leave review submit step. * score: 1 ### component LeaveTypeSelectionStep * file: src/cores/hr/components/wizards/steps/LeaveTypeSelectionStep.tsx:22 * kind: component * core: hr * spec: (none) * summary: Utility for leave type selection step. * score: 1 ### component LifecycleOverview * file: src/cores/hr/pages/LifecycleOverview\.tsx:27 * kind: component * core: hr * spec: (none) * summary: Utility for lifecycle overview. * score: 1 ### component LifeEventBanner * file: src/cores/hr/benefits/components/employee/LifeEventBanner.tsx:45 * kind: component * core: hr * spec: HR-11 * summary: Renders an alert prompting an employee to report or act on a qualifyinglife event. Shows a loading skeleton while the active enrollment windowloads, hides itself when no window is open or is set, and surfacesa call-to-action that navigates the employee into the life-event flow. * params: * props — Banner props: fires when the employee clicks the report action; suppresses rendering entirely. * score: 5 ### component LifeEventRequestDialog * file: src/cores/hr/benefits/components/employee/LifeEventRequestDialog.tsx:71 * kind: component * core: hr * spec: HR-11 * summary: Modal form letting an employee report a qualifying life event (marriage,birth, loss of coverage, etc.). Captures the event type, effective date, andan optional description, submits it through the life-event mutation, andinvokes once the special-enrollment request is recorded. * params: * props — Dialog props: toggles visibility; fires on open/close transitions; fires after a successful submission. * score: 5 ### component LifeEventReviewDialog * file: src/cores/hr/benefits/components/admin/LifeEventReviewDialog.tsx:46 * kind: component * core: hr * spec: (none) * summary: Utility for life event review dialog. * score: 1 ### component LifeEventsListPage * file: src/cores/hr/benefits/pages/admin/LifeEventsListPage.tsx:50 * kind: component * core: hr * spec: (none) * summary: Utility for life events list page. * score: 1 ### component LinkToFMLADialog * file: src/cores/hr/components/leave/LinkToFMLADialog.tsx:19 * kind: component * core: hr * spec: (none) * summary: Utility for link to fmladialog. * score: 1 ### component ManualCheckDialog * file: src/cores/hr/components/proliant/ManualCheckDialog.tsx:44 * kind: component * core: hr * spec: (none) * summary: Dialog for issuing a Proliant manual (off-cycle) check: the user picks amapped employee, pay period, and earning line (hours/rate or amount), and theform validates and submits the request to the proliant-manual-check function. * score: 2 ### component MappingReadinessBanner * file: src/cores/hr/components/proliant/ProliantCodeMappingConfig.tsx:74 * kind: component * core: hr * spec: HR-44 * summary: Go-live readiness banner for the Proliant code mappings tab (HR-44 Task 7).Summarises how many REQUIRED families are fully mapped, with a per-familychecklist ordered required-first. When no rows have been pulled yet (emptyarray) the banner renders nothing — avoids a misleading "0/6 ready" state.Pure presentational component driven by so Task 8 (wizard Activatehard-gate) can reuse it without additional data fetching. * score: 3 ### component MarkAsFiledDialog * file: src/cores/hr/components/tax-forms/MarkAsFiledDialog.tsx:31 * kind: component * core: hr * spec: (none) * summary: Utility for mark as filed dialog. * score: 1 ### component MeritIncreaseForm * file: src/cores/hr/compensation/components/MeritIncreaseForm.tsx:54 * kind: component * core: hr * spec: (none) * summary: Utility for merit increase form. * score: 1 ### component MeritIncreasePlanningPage * file: src/cores/hr/compensation/pages/MeritIncreasePlanningPage.tsx:29 * kind: component * core: hr * spec: (none) * summary: Utility for merit increase planning page. * score: 1 ### component MeritIncreaseStatusBadge * file: src/cores/hr/compensation/components/MeritIncreaseStatusBadge.tsx:25 * kind: component * core: hr * spec: (none) * summary: Utility for merit increase status badge. * score: 1 ### component MobileWorkloadSummary * file: src/cores/hr/components/workload-drivers/MobileWorkloadSummary.tsx:20 * kind: component * core: hr * spec: (none) * summary: Utility for mobile workload summary. * score: 1 ### component ModuleLinksSection * file: src/cores/hr/self-service/components/ModuleLinksSection.tsx:101 * kind: component * core: hr * spec: (none) * summary: Utility for module links section. * score: 1 ### component MyBenefitsDashboardPage * file: src/cores/hr/benefits/pages/employee/MyBenefitsDashboardPage.tsx:28 * kind: component * core: hr * spec: (none) * summary: Employee self-service benefits dashboard page. * score: 2 ### component MyBenefitsStatementPage * file: src/cores/hr/benefits/pages/employee/MyBenefitsStatementPage.tsx:28 * kind: component * core: hr * spec: (none) * summary: Utility for my benefits statement page. * score: 1 ### component MyCasesPage * file: src/cores/hr/employee-relations/pages/MyCasesPage.tsx:103 * kind: component * core: hr * spec: (none) * summary: Utility for my cases page. * score: 1 ### component MyCompensationPage * file: src/cores/hr/self-service/pages/MyCompensationPage.tsx:28 * kind: component * core: hr * spec: (none) * summary: Utility for my compensation page. * score: 1 ### component MyCompensationStatementDetailPage * file: src/cores/hr/self-service/pages/MyCompensationStatementDetailPage.tsx:35 * kind: component * core: hr * spec: (none) * summary: Utility for my compensation statement detail page. * score: 1 ### component MyCredentials * file: src/cores/hr/pages/MyCredentials.tsx:27 * kind: component * core: hr * spec: (none) * summary: Utility for my credentials. * score: 1 ### component MyDependentsPage * file: src/cores/hr/benefits/pages/employee/MyDependentsPage.tsx:67 * kind: component * core: hr * spec: (none) * summary: Utility for my dependents page. * score: 1 ### component MyDocumentCard * file: src/cores/hr/self-service/components/MyDocumentCard.tsx:58 * kind: component * core: hr * spec: (none) * summary: Utility for my document card. * score: 1 ### component MyDocumentList * file: src/cores/hr/self-service/components/MyDocumentList.tsx:63 * kind: component * core: hr * spec: (none) * summary: Utility for my document list. * score: 1 ### component MyDocumentsPage * file: src/cores/hr/self-service/pages/MyDocumentsPage.tsx:38 * kind: component * core: hr * spec: (none) * summary: Utility for my documents page. * score: 1 ### component MyEnrollmentDetailPage * file: src/cores/hr/benefits/pages/employee/MyEnrollmentDetailPage.tsx:53 * kind: component * core: hr * spec: (none) * summary: Utility for my enrollment detail page. * score: 1 ### component MyExitInterviewPage * file: src/cores/hr/engagement/pages/MyExitInterviewPage.tsx:46 * kind: component * core: hr * spec: (none) * summary: Utility for my exit interview page. * score: 1 ### component MyExpiringCredentials * file: src/cores/hr/components/credentialing/MyExpiringCredentials.tsx:17 * kind: component * core: hr * spec: (none) * summary: Utility for my expiring credentials. * score: 1 ### component MyFeedbackPage * file: src/cores/hr/pages/performance/MyFeedbackPage.tsx:43 * kind: component * core: hr * spec: (none) * summary: Utility for my feedback page. * score: 1 ### component MyGoalsPage * file: src/cores/hr/pages/performance/MyGoalsPage.tsx:77 * kind: component * core: hr * spec: (none) * summary: Utility for my goals page. * score: 1 ### component MyHRDashboardPage * file: src/cores/hr/self-service/pages/MyHRDashboardPage.tsx:54 * kind: component * core: hr * spec: (none) * summary: Utility for my hrdashboard page. * score: 1 ### component MyInternalApplicationsPage * file: src/cores/hr/pages/me/MyInternalApplicationsPage.tsx:14 * kind: component * core: hr * spec: (none) * summary: HR-35 / US-1: Employee self-service list of their own internal applications. * score: 2 ### component MyLeaveBalances * file: src/cores/hr/pages/MyLeaveBalances.tsx:14 * kind: component * core: hr * spec: (none) * summary: Utility for my leave balances. * score: 1 ### component MyLeaveRequestsList * file: src/cores/hr/components/leave/MyLeaveRequestsList.tsx:23 * kind: component * core: hr * spec: (none) * summary: Utility for my leave requests list. * score: 1 ### component MyLeaveStatusWidget * file: src/cores/hr/components/leave/MyLeaveStatusWidget.tsx:22 * kind: component * core: hr * spec: (none) * summary: Utility for my leave status widget. * score: 1 ### component MyLifecycleTasksWidget * file: src/cores/hr/components/lifecycle/MyLifecycleTasksWidget.tsx:18 * kind: component * core: hr * spec: (none) * summary: Utility for my lifecycle tasks widget. * score: 1 ### component MyNotificationsPage * file: src/cores/hr/self-service/pages/MyNotificationsPage.tsx:24 * kind: component * core: hr * spec: (none) * summary: Utility for my notifications page. * score: 1 ### component MyOnboardingHubPage * file: src/cores/hr/self-service/pages/MyOnboardingHubPage.tsx:99 * kind: component * core: hr * spec: (none) * summary: Utility for my onboarding hub page. * score: 1 ### component MyOnboardingTasks * file: src/cores/hr/pages/MyOnboardingTasks.tsx:13 * kind: component * core: hr * spec: (none) * summary: Utility for my onboarding tasks. * score: 1 ### component MyOnboardingTasksWidget * file: src/cores/hr/components/onboarding/MyOnboardingTasksWidget.tsx:12 * kind: component * core: hr * spec: (none) * summary: Utility for my onboarding tasks widget. * score: 1 ### component MyPayrollPage * file: src/cores/hr/self-service/pages/MyPayrollPage.tsx:19 * kind: component * core: hr * spec: (none) * summary: Utility for my payroll page. * score: 1 ### component MyPerformanceReviewsPage * file: src/cores/hr/pages/performance/MyPerformanceReviewsPage.tsx:139 * kind: component * core: hr * spec: (none) * summary: Utility for my performance reviews page. * score: 1 ### component MyPreferencesPage * file: src/cores/hr/self-service/pages/MyPreferencesPage.tsx:26 * kind: component * core: hr * spec: (none) * summary: Utility for my preferences page. * score: 1 ### component MyProfilePage * file: src/cores/hr/self-service/pages/MyProfilePage.tsx:28 * kind: component * core: hr * spec: (none) * summary: Utility for my profile page. * score: 1 ### component MySkillsPage * file: src/cores/hr/pages/MySkillsPage.tsx:29 * kind: component * core: hr * spec: (none) * summary: Utility for my skills page. * score: 1 ### component MySurveysPage * file: src/cores/hr/engagement/pages/MySurveysPage.tsx:117 * kind: component * core: hr * spec: (none) * summary: Utility for my surveys page. * score: 1 ### component MyTimesheets * file: src/cores/hr/pages/MyTimesheets.tsx:16 * kind: component * core: hr * spec: (none) * summary: Utility for my timesheets. * score: 1 ### component NEC1099ReviewPage * file: src/cores/hr/pages/NEC1099ReviewPage.tsx:35 * kind: component * core: hr * spec: (none) * summary: Utility for nec1099 review page. * score: 1 ### component NegotiationStatusBadge * file: src/cores/hr/components/ats/NegotiationStatusBadge.tsx:19 * kind: component * core: hr * spec: (none) * summary: Utility for negotiation status badge. * score: 1 ### component NewHireReportPage * file: src/cores/hr/pages/NewHireReportPage.tsx:30 * kind: component * core: hr * spec: (none) * summary: Utility for new hire report page. * score: 1 ### component NewTimesheetDialog * file: src/cores/hr/components/time/NewTimesheetDialog.tsx:32 * kind: component * core: hr * spec: (none) * summary: HR admin flow to create or open a timesheet for an employee and pay period (HR-05-EN-10). * score: 2 ### component NextPayDateWidget * file: src/cores/hr/self-service/components/NextPayDateWidget.tsx:21 * kind: component * core: hr * spec: (none) * summary: Utility for next pay date widget. * score: 1 ### component NotEnrolledEmployeeList * file: src/cores/hr/benefits/components/admin/NotEnrolledEmployeeList.tsx:40 * kind: component * core: hr * spec: (none) * summary: Displays a collapsible, searchable list of employees who haven't enrolled.Includes a "Send Reminders" button for bulk notifications. - employees: Array of not-enrolled employee records - periodId: Current enrollment period ID - periodName: Current enrollment period name - deadlineDate: Formatted deadline date string - reminderHistory: Previous reminder log entries * score: 2 ### component NotificationPreferencesForm * file: src/cores/hr/self-service/components/NotificationPreferencesForm.tsx:43 * kind: component * core: hr * spec: (none) * summary: Utility for notification preferences form. * score: 1 ### component OffboardingChecklist * file: src/cores/hr/components/onboarding/OffboardingChecklist.tsx:26 * kind: component * core: hr * spec: (none) * summary: Utility for offboarding checklist. * score: 1 ### component OffboardingChecklistItem * file: src/cores/hr/components/onboarding/OffboardingChecklistItem.tsx:29 * kind: component * core: hr * spec: (none) * summary: Utility for offboarding checklist item. * score: 1 ### component OffboardingDashboard * file: src/cores/hr/pages/OffboardingDashboard.tsx:18 * kind: component * core: hr * spec: (none) * summary: Utility for offboarding dashboard. * score: 1 ### component OffboardingDetail * file: src/cores/hr/pages/OffboardingDetail.tsx:21 * kind: component * core: hr * spec: (none) * summary: Utility for offboarding detail. * score: 1 ### component OffboardingOverviewWidget * file: src/cores/hr/components/onboarding/OffboardingOverviewWidget.tsx:12 * kind: component * core: hr * spec: (none) * summary: Utility for offboarding overview widget. * score: 1 ### component OffboardingPipelineWidget * file: src/cores/hr/components/lifecycle/OffboardingPipelineWidget.tsx:22 * kind: component * core: hr * spec: (none) * summary: Utility for offboarding pipeline widget. * score: 1 ### component OfferApprovalHistory * file: src/cores/hr/components/ats/OfferApprovalHistory.tsx:111 * kind: component * core: hr * spec: (none) * summary: Utility for offer approval history. * score: 1 ### component OfferApprovalRequest * file: src/cores/hr/components/ats/OfferApprovalRequest.tsx:44 * kind: component * core: hr * spec: (none) * summary: Utility for offer approval request. * score: 1 ### component OfferApprovalWorkflow * file: src/cores/hr/components/ats/OfferApprovalWorkflow\.tsx:179 * kind: component * core: hr * spec: (none) * summary: Utility for offer approval workflow. * score: 1 ### component OfferCard * file: src/cores/hr/components/ats/OfferCard.tsx:20 * kind: component * core: hr * spec: (none) * summary: Utility for offer card. * score: 1 ### component OfferDetailPage * file: src/cores/hr/pages/ats/OfferDetailPage.tsx:59 * kind: component * core: hr * spec: (none) * summary: HR-09 offer detail page. Renders an offer's overview, approval, signature,background-check, and negotiation tabs, and drives its status transitions:Submit for Approval → Send Offer → Accept Offer (AC-4) / Counteroffer. TheAccept action records acceptance and triggers the offer→employee hire. * returns: The offer detail page for the route param. * score: 2 ### component OfferFormDialog * file: src/cores/hr/components/ats/OfferFormDialog.tsx:50 * kind: component * core: hr * spec: (none) * summary: Utility for offer form dialog. * score: 1 ### component OfferLetterPreview * file: src/cores/hr/components/ats/OfferLetterPreview\.tsx:24 * kind: component * core: hr * spec: (none) * summary: Utility for offer letter preview. * score: 1 ### component OfferLetterWizard * file: src/cores/hr/wizards/offer-letter/OfferLetterWizard.tsx:37 * kind: component * core: hr * spec: (none) * summary: HR-UX-14: five-step full-page guided offer flow over HR-09's .A guided alternative to . * score: 2 ### component OfferLetterWizardPage * file: src/cores/hr/pages/ats/OfferLetterWizardPage.tsx:11 * kind: component * core: hr * spec: (none) * summary: Route wrapper for HR-UX-14's application-scoped offer letter wizard. * score: 2 ### component OfferListContent * file: src/cores/hr/pages/ats/OfferListPage.tsx:21 * kind: component * core: hr * spec: (none) * summary: Extracted content component for use in the ATSRecruitingHubPage * score: 2 ### component OfferListPage * file: src/cores/hr/pages/ats/OfferListPage.tsx:102 * kind: component * core: hr * spec: (none) * summary: Utility for offer list page. * score: 1 ### component OfferReviewStep * file: src/cores/hr/wizards/offer-letter/steps/OfferReviewStep.tsx:17 * kind: component * core: hr * spec: (none) * summary: Step 5 (FR-10): review the offer before creating / routing it. * score: 2 ### component OfferSignaturePanel * file: src/cores/hr/components/ats/OfferSignaturePanel.tsx:33 * kind: component * core: hr * spec: (none) * summary: Utility for offer signature panel. * score: 1 ### component OfferStatusBadge * file: src/cores/hr/components/ats/OfferStatusBadge.tsx:29 * kind: component * core: hr * spec: (none) * summary: Utility for offer status badge. * score: 1 ### component OfferTemplateFormDialog * file: src/cores/hr/components/ats/OfferTemplateFormDialog.tsx:46 * kind: component * core: hr * spec: (none) * summary: Utility for offer template form dialog. * score: 1 ### component OfferTemplateSelector * file: src/cores/hr/components/ats/OfferTemplateSelector.tsx:16 * kind: component * core: hr * spec: (none) * summary: Utility for offer template selector. * score: 1 ### component OfferTemplatesPage * file: src/cores/hr/pages/ats/OfferTemplatesPage.tsx:23 * kind: component * core: hr * spec: (none) * summary: Utility for offer templates page. * score: 1 ### component OnboardingActionsBanner * file: src/cores/hr/self-service/components/OnboardingActionsBanner.tsx:21 * kind: component * core: hr * spec: (none) * summary: Utility for onboarding actions banner. * score: 1 ### component OnboardingAnalyticsWidget * file: src/cores/hr/components/lifecycle/OnboardingAnalyticsWidget.tsx:69 * kind: component * core: hr * spec: (none) * summary: Utility for onboarding analytics widget. * score: 1 ### component OnboardingChecklist * file: src/cores/hr/components/onboarding/OnboardingChecklist.tsx:15 * kind: component * core: hr * spec: (none) * summary: Utility for onboarding checklist. * score: 1 ### component OnboardingCommandCenter * file: src/cores/hr/components/onboarding/OnboardingCommandCenter.tsx:33 * kind: component * core: hr * spec: (none) * summary: Utility for onboarding command center. * score: 1 ### component OnboardingDashboard * file: src/cores/hr/pages/OnboardingDashboard.tsx:18 * kind: component * core: hr * spec: (none) * summary: Utility for onboarding dashboard. * score: 1 ### component OnboardingDetail * file: src/cores/hr/pages/OnboardingDetail.tsx:16 * kind: component * core: hr * spec: (none) * summary: Utility for onboarding detail. * score: 1 ### component OnboardingEmployeeCard * file: src/cores/hr/components/onboarding/OnboardingEmployeeCard.tsx:36 * kind: component * core: hr * spec: (none) * summary: Utility for onboarding employee card. * score: 1 ### component OnboardingEmptyState * file: src/cores/hr/self-service/components/OnboardingEmptyState.tsx:17 * kind: component * core: hr * spec: (none) * summary: Utility for onboarding empty state. * score: 1 ### component OnboardingHelpSection * file: src/cores/hr/components/onboarding/OnboardingHelpContent.tsx:169 * kind: component * core: hr * spec: (none) * summary: Utility for onboarding help section. * score: 1 ### component OnboardingHubHeader * file: src/cores/hr/self-service/components/OnboardingHubHeader.tsx:22 * kind: component * core: hr * spec: (none) * summary: Utility for onboarding hub header. * score: 1 ### component OnboardingInstanceList * file: src/cores/hr/components/onboarding/OnboardingInstanceList.tsx:16 * kind: component * core: hr * spec: (none) * summary: Utility for onboarding instance list. * score: 1 ### component OnboardingMilestoneTimeline * file: src/cores/hr/components/onboarding/OnboardingMilestoneTimeline.tsx:137 * kind: component * core: hr * spec: (none) * summary: Utility for onboarding milestone timeline. * score: 1 ### component OnboardingOverviewWidget * file: src/cores/hr/components/onboarding/OnboardingOverviewWidget.tsx:15 * kind: component * core: hr * spec: (none) * summary: Utility for onboarding overview widget. * score: 1 ### component OnboardingPipelineWidget * file: src/cores/hr/components/lifecycle/OnboardingPipelineWidget.tsx:23 * kind: component * core: hr * spec: (none) * summary: Utility for onboarding pipeline widget. * score: 1 ### component OnboardingProgressBar * file: src/cores/hr/components/onboarding/OnboardingProgressBar.tsx:13 * kind: component * core: hr * spec: (none) * summary: Utility for onboarding progress bar. * score: 1 ### component OnboardingProgressTimeline * file: src/cores/hr/self-service/components/OnboardingProgressTimeline.tsx:19 * kind: component * core: hr * spec: (none) * summary: Utility for onboarding progress timeline. * score: 1 ### component OnboardingQuickActions * file: src/cores/hr/self-service/components/OnboardingQuickActions.tsx:31 * kind: component * core: hr * spec: (none) * summary: Utility for onboarding quick actions. * score: 1 ### component OnboardingQuickActionsMenu * file: src/cores/hr/components/onboarding/OnboardingQuickActionsMenu.tsx:21 * kind: component * core: hr * spec: (none) * summary: Utility for onboarding quick actions menu. * score: 1 ### component OnboardingQuickTip * file: src/cores/hr/components/onboarding/OnboardingHelpContent.tsx:52 * kind: component * core: hr * spec: (none) * summary: Utility for onboarding quick tip. * score: 1 ### component OnboardingStatusGrid * file: src/cores/hr/components/onboarding/OnboardingStatusGrid.tsx:116 * kind: component * core: hr * spec: (none) * summary: Utility for onboarding status grid. * score: 1 ### component OnboardingTaskCard * file: src/cores/hr/components/onboarding/OnboardingTaskCard.tsx:24 * kind: component * core: hr * spec: (none) * summary: Utility for onboarding task card. * score: 1 ### component OnboardingTaskCardSwipeable * file: src/cores/hr/components/onboarding/OnboardingTaskCardSwipeable.tsx:26 * kind: component * core: hr * spec: (none) * summary: Renders an , wrapping it with mobile swipe actions(left → Complete, right → Skip) only when the task is still actionable. * score: 2 ### component OnboardingTaskEditor * file: src/cores/hr/components/onboarding/OnboardingTaskEditor.tsx:17 * kind: component * core: hr * spec: (none) * summary: Utility for onboarding task editor. * score: 1 ### component OnboardingTaskFormDialog * file: src/cores/hr/components/onboarding/OnboardingTaskFormDialog.tsx:21 * kind: component * core: hr * spec: (none) * summary: Utility for onboarding task form dialog. * score: 1 ### component OnboardingTasksByCategory * file: src/cores/hr/self-service/components/OnboardingTasksByCategory.tsx:48 * kind: component * core: hr * spec: (none) * summary: Utility for onboarding tasks by category. * score: 1 ### component OnboardingTemplateFormDialog * file: src/cores/hr/components/onboarding/OnboardingTemplateFormDialog.tsx:25 * kind: component * core: hr * spec: (none) * summary: Utility for onboarding template form dialog. * score: 1 ### component OnboardingTemplateList * file: src/cores/hr/components/onboarding/OnboardingTemplateList.tsx:18 * kind: component * core: hr * spec: (none) * summary: Utility for onboarding template list. * score: 1 ### component OnboardingTemplatePresets * file: src/cores/hr/components/onboarding/OnboardingTemplatePresets.tsx:41 * kind: component * core: hr * spec: (none) * summary: Utility for onboarding template presets. * score: 1 ### component OnboardingTemplates * file: src/cores/hr/pages/OnboardingTemplates.tsx:23 * kind: component * core: hr * spec: (none) * summary: Utility for onboarding templates. * score: 1 ### component OnboardingWizardPage * file: src/cores/hr/pages/OnboardingWizardPage.tsx:180 * kind: component * core: hr * spec: (none) * summary: Utility for onboarding wizard page. * score: 1 ### component OpenEnrollmentBanner * file: src/cores/hr/benefits/components/employee/OpenEnrollmentBanner.tsx:22 * kind: component * core: hr * spec: (none) * summary: Utility for open enrollment banner. * score: 1 ### component OpenEnrollmentGateDialog * file: src/cores/hr/benefits/components/employee/OpenEnrollmentGateDialog.tsx:35 * kind: component * core: hr * spec: (none) * summary: Blocking dialog requiring employees to complete enrollment or decline coverage. Non-dismissable — no close button, escape key, or overlay click.Provides two paths: navigate to enrollment wizard or inline decline with reason. * score: 2 ### component OpenEnrollmentPage * file: src/cores/hr/benefits/pages/admin/OpenEnrollmentPage.tsx:106 * kind: component * core: hr * spec: (none) * summary: Open Enrollment management page with inline detail/edit actions. * score: 2 ### component OpenShifts * file: src/cores/hr/pages/OpenShifts.tsx:34 * kind: component * core: hr * spec: (none) * summary: Utility for open shifts. * score: 1 ### component OrgChart * file: src/cores/hr/pages/OrgChart.tsx:64 * kind: component * core: hr * spec: (none) * summary: Utility for org chart. * score: 1 ### component OrientationStep * file: src/cores/hr/components/wizards/steps/OrientationStep.tsx:34 * kind: component * core: hr * spec: (none) * summary: Utility for orientation step. * score: 1 ### component OversightComplianceDashboard * file: src/cores/hr/pages/oversight/OversightComplianceDashboard.tsx:30 * kind: component * core: hr * spec: (none) * summary: Utility for oversight compliance dashboard. * score: 1 ### component OversightComplianceHealthWidget * file: src/cores/hr/components/oversight/OversightComplianceHealthWidget.tsx:29 * kind: component * core: hr * spec: (none) * summary: Utility for oversight compliance health widget. * score: 1 ### component OversightComplianceReportPage * file: src/cores/hr/pages/oversight/OversightComplianceReportPage.tsx:83 * kind: component * core: hr * spec: (none) * summary: Utility for oversight compliance report page. * score: 1 ### component OversightHubPage * file: src/cores/hr/pages/oversight/OversightHubPage.tsx:43 * kind: component * core: hr * spec: (none) * summary: Utility for oversight hub page. * score: 1 ### component OversightRelationshipCard * file: src/cores/hr/components/oversight/OversightRelationshipCard.tsx:53 * kind: component * core: hr * spec: HR-19 * summary: Mobile card summarizing a clinical-oversight relationship — the supervisorand supervisee names plus a status badge — that navigates to the fullrelationship detail when tapped. * params: * props — Card props: is the oversight relationship to render. * score: 5 ### component OversightRelationshipDetailPage * file: src/cores/hr/pages/oversight/OversightRelationshipDetailPage.tsx:38 * kind: component * core: hr * spec: (none) * summary: Utility for oversight relationship detail page. * score: 1 ### component OversightRelationshipDialog * file: src/cores/hr/components/oversight/OversightRelationshipDialog.tsx:37 * kind: component * core: hr * spec: (none) * summary: Utility for oversight relationship dialog. * score: 1 ### component OversightRelationshipFilters * file: src/cores/hr/components/oversight/OversightRelationshipFilters.tsx:22 * kind: component * core: hr * spec: (none) * summary: Utility for oversight relationship filters. * score: 1 ### component OversightRelationshipForm * file: src/cores/hr/components/oversight/OversightRelationshipForm.tsx:60 * kind: component * core: hr * spec: (none) * summary: Utility for oversight relationship form. * score: 1 ### component OversightRelationshipsPage * file: src/cores/hr/pages/oversight/OversightRelationshipsPage.tsx:28 * kind: component * core: hr * spec: (none) * summary: HR-19: Oversight Relationships List Page.Displays all clinical supervision and oversight relationships withclient-side filtering by search query, status, and oversight type.Renders a card layout on mobile and a table layout on desktop. * score: 2 ### component OversightRelationshipSuggestions * file: src/cores/hr/components/oversight/OversightRelationshipSuggestions.tsx:75 * kind: component * core: hr * spec: (none) * summary: Utility for oversight relationship suggestions. * score: 1 ### component OversightRelationshipTable * file: src/cores/hr/components/oversight/OversightRelationshipTable.tsx:28 * kind: component * core: hr * spec: (none) * summary: Utility for oversight relationship table. * score: 1 ### component OversightSessionCard * file: src/cores/hr/components/oversight/OversightSessionCard.tsx:34 * kind: component * core: hr * spec: (none) * summary: Utility for oversight session card. * score: 1 ### component OversightSessionDetailPage * file: src/cores/hr/pages/oversight/OversightSessionDetailPage.tsx:43 * kind: component * core: hr * spec: (none) * summary: Utility for oversight session detail page. * score: 1 ### component OversightSessionDialog * file: src/cores/hr/components/oversight/OversightSessionDialog.tsx:19 * kind: component * core: hr * spec: (none) * summary: Utility for oversight session dialog. * score: 1 ### component OversightSessionFilters * file: src/cores/hr/components/oversight/OversightSessionFilters.tsx:35 * kind: component * core: hr * spec: (none) * summary: Utility for oversight session filters. * score: 1 ### component OversightSessionForm * file: src/cores/hr/components/oversight/OversightSessionForm.tsx:54 * kind: component * core: hr * spec: (none) * summary: Utility for oversight session form. * score: 1 ### component OversightSessionSignature * file: src/cores/hr/components/oversight/OversightSessionSignature.tsx:26 * kind: component * core: hr * spec: (none) * summary: Utility for oversight session signature. * score: 1 ### component OversightSessionSignPage * file: src/cores/hr/pages/oversight/OversightSessionSignPage.tsx:24 * kind: component * core: hr * spec: (none) * summary: Utility for oversight session sign page. * score: 1 ### component OversightSessionsPage * file: src/cores/hr/pages/oversight/OversightSessionsPage.tsx:25 * kind: component * core: hr * spec: (none) * summary: Utility for oversight sessions page. * score: 1 ### component OversightSessionTable * file: src/cores/hr/components/oversight/OversightSessionTable.tsx:35 * kind: component * core: hr * spec: (none) * summary: Utility for oversight session table. * score: 1 ### component OversightStatusWidget * file: src/cores/hr/self-service/components/OversightStatusWidget.tsx:21 * kind: component * core: hr * spec: (none) * summary: Dashboard widget showing the current employee's clinical oversight status. * score: 2 ### component OvertimeAlertBanner * file: src/cores/hr/components/time/OvertimeAlertBanner.tsx:17 * kind: component * core: hr * spec: (none) * summary: Utility for overtime alert banner. * score: 1 ### component PathwayTemplateApplyDialog * file: src/cores/hr/components/skills/PathwayTemplateApplyDialog.tsx:39 * kind: component * core: hr * spec: (none) * summary: Apply-pathway dialog with clone-on-first-edit behavior. * score: 2 ### component PathwayTemplateList * file: src/cores/hr/components/skills/PathwayTemplateList.tsx:17 * kind: component * core: hr * spec: (none) * summary: Lists qualification pathway templates and emits apply actions. * score: 2 ### component PaymentBatchCreate * file: src/cores/hr/components/payroll/PaymentBatchCreate.tsx:35 * kind: component * core: hr * spec: (none) * summary: Utility for payment batch create. * score: 1 ### component PaymentBatchDetailPage * file: src/cores/hr/pages/payroll/PaymentBatchDetailPage.tsx:54 * kind: component * core: hr * spec: (none) * summary: Utility for payment batch detail page. * score: 1 ### component PaymentBatchesPage * file: src/cores/hr/pages/payroll/PaymentBatchesPage.tsx:101 * kind: component * core: hr * spec: (none) * summary: Utility for payment batches page. * score: 1 ### component PaymentBatchList * file: src/cores/hr/components/payroll/PaymentBatchList.tsx:44 * kind: component * core: hr * spec: (none) * summary: Utility for payment batch list. * score: 1 ### component PaymentBatchListCompact * file: src/cores/hr/components/payroll/PaymentBatchList.tsx:187 * kind: component * core: hr * spec: (none) * summary: Compact version for embedding in detail pages * score: 2 ### component PaymentBatchReview * file: src/cores/hr/components/payroll/PaymentBatchReview\.tsx:62 * kind: component * core: hr * spec: (none) * summary: Utility for payment batch review. * score: 1 ### component PaymentStatusSection * file: src/cores/hr/components/payroll/PaymentStatusSection.tsx:43 * kind: component * core: hr * spec: (none) * summary: Utility for payment status section. * score: 1 ### component PayPeriodPreview * file: src/cores/hr/components/pay-calendar/PayPeriodPreview\.tsx:61 * kind: component * core: hr * spec: (none) * summary: Utility for pay period preview. * score: 1 ### component PayRateFormDialog * file: src/cores/hr/components/payroll/PayRateFormDialog.tsx:44 * kind: component * core: hr * spec: (none) * summary: Utility for pay rate form dialog. * score: 1 ### component PayRateHistoryDialog * file: src/cores/hr/components/payroll/PayRateHistoryDialog.tsx:21 * kind: component * core: hr * spec: (none) * summary: Utility for pay rate history dialog. * score: 1 ### component PayRateImportDialog * file: src/cores/hr/components/data-import/PayRateImportDialog.tsx:32 * kind: component * core: hr * spec: (none) * summary: Dialog for importing pay rate history from CSV files. * score: 2 ### component PayRatesListPage * file: src/cores/hr/pages/PayRatesListPage.tsx:21 * kind: component * core: hr * spec: (none) * summary: Utility for pay rates list page. * score: 1 ### component PayrollAuditLogTable * file: src/cores/hr/components/payroll/reports/PayrollAuditLogTable.tsx:49 * kind: component * core: hr * spec: (none) * summary: Utility for payroll audit log table. * score: 1 ### component PayrollCalendarPage * file: src/cores/hr/pages/PayrollCalendarPage.tsx:54 * kind: component * core: hr * spec: (none) * summary: Utility for payroll calendar page. * score: 1 ### component PayrollExportDialog * file: src/cores/hr/components/payroll/PayrollExportDialog.tsx:28 * kind: component * core: hr * spec: (none) * summary: Utility for payroll export dialog. * score: 1 ### component PayrollExportEmptyState * file: src/cores/hr/components/payroll/PayrollExportEmptyState.tsx:15 * kind: component * core: hr * spec: (none) * summary: Shown at when no healthy Proliant connection exists.Proliant is the system-of-record payroll engine; without it there is noin-app run. The break-glass for non-Proliant tenants is the approved-timesheetCSV export (HR-05 ) — handed to a third-party processor(design D5). The native tax/net calc wizard is retired and intentionally notoffered here. * score: 2 ### component PayrollExportHistory * file: src/cores/hr/components/payroll/PayrollExportHistory.tsx:36 * kind: component * core: hr * spec: (none) * summary: Utility for payroll export history. * score: 1 ### component PayrollOverview * file: src/cores/hr/pages/payroll/PayrollOverview\.tsx:84 * kind: component * core: hr * spec: (none) * summary: Utility for payroll overview. * score: 1 ### component PayrollPeriodSummaryCard * file: src/cores/hr/components/payroll/reports/PayrollPeriodSummaryCard.tsx:21 * kind: component * core: hr * spec: (none) * summary: Utility for payroll period summary card. * score: 1 ### component PayrollReportFilters * file: src/cores/hr/components/payroll/reports/PayrollReportFilters.tsx:32 * kind: component * core: hr * spec: (none) * summary: Utility for payroll report filters. * score: 1 ### component PayrollReportsPage * file: src/cores/hr/pages/PayrollReportsPage.tsx:26 * kind: component * core: hr * spec: (none) * summary: Utility for payroll reports page. * score: 1 ### component PayrollRunDetailPage * file: src/cores/hr/pages/PayrollRunDetailPage.tsx:53 * kind: component * core: hr * spec: (none) * summary: Utility for payroll run detail page. * score: 1 ### component PayrollRunsListPage * file: src/cores/hr/pages/PayrollRunsListPage.tsx:41 * kind: component * core: hr * spec: (none) * summary: Utility for payroll runs list page. * score: 1 ### component PayrollSectionCard * file: src/cores/hr/components/onboarding/PayrollSectionCard.tsx:59 * kind: component * core: hr * spec: (none) * summary: Utility for payroll section card. * score: 1 ### component PayrollSettingsSection * file: src/cores/hr/components/settings/PayrollSettingsSection.tsx:9 * kind: component * core: hr * spec: (none) * summary: Payroll & tax administration links for the HR Settings hub. * score: 2 ### component PayrollWizardRouter * file: src/cores/hr/components/payroll/PayrollWizardRouter.tsx:33 * kind: component * core: hr * spec: (none) * summary: Routes the single payroll-run entry point to the Proliant wizard or the export break-glass. * score: 2 ### component PayScheduleForm * file: src/cores/hr/components/pay-calendar/PayScheduleForm.tsx:91 * kind: component * core: hr * spec: (none) * summary: Utility for pay schedule form. * score: 1 ### component PayStubCard * file: src/cores/hr/self-service/components/PayStubCard.tsx:21 * kind: component * core: hr * spec: (none) * summary: Utility for pay stub card. * score: 1 ### component PayStubDetailPage * file: src/cores/hr/self-service/pages/PayStubDetailPage.tsx:20 * kind: component * core: hr * spec: (none) * summary: Utility for pay stub detail page. * score: 1 ### component PayStubDetailView * file: src/cores/hr/self-service/components/PayStubDetailView\.tsx:25 * kind: component * core: hr * spec: (none) * summary: Utility for pay stub detail view. * score: 1 ### component PayStubDetailViewV2 * file: src/cores/hr/self-service/components/PayStubDetailViewV2.tsx:24 * kind: component * core: hr * spec: (none) * summary: Utility for pay stub detail view v2. * score: 1 ### component PayStubList * file: src/cores/hr/self-service/components/PayStubList.tsx:17 * kind: component * core: hr * spec: (none) * summary: Utility for pay stub list. * score: 1 ### component PayStubsTab * file: src/cores/hr/components/payroll/PayStubsTab.tsx:32 * kind: component * core: hr * spec: (none) * summary: Utility for pay stubs tab. * score: 1 ### component PendingActionsWidget * file: src/cores/hr/self-service/components/PendingActionsWidget.tsx:35 * kind: component * core: hr * spec: (none) * summary: Utility for pending actions widget. * score: 1 ### component PendingFeedbackWidget * file: src/cores/hr/components/ats/PendingFeedbackWidget.tsx:15 * kind: component * core: hr * spec: (none) * summary: Utility for pending feedback widget. * score: 1 ### component PendingHandbookWidget * file: src/cores/hr/components/handbook/PendingHandbookWidget.tsx:18 * kind: component * core: hr * spec: (none) * summary: HR-43 US-5 — HR-12 self-service widget showing pending handbookacknowledgments for the logged-in employee. Deep-links to GR-01 (existing). * score: 2 ### component PendingOffersApprovalWidget * file: src/cores/hr/components/ats/PendingOffersApprovalWidget.tsx:84 * kind: component * core: hr * spec: (none) * summary: Utility for pending offers approval widget. * score: 1 ### component PeopleOverview * file: src/cores/hr/pages/PeopleOverview\.tsx:20 * kind: component * core: hr * spec: (none) * summary: Utility for people overview. * score: 1 ### component PerformanceCycleCard * file: src/cores/hr/components/performance/PerformanceCycleCard.tsx:24 * kind: component * core: hr * spec: (none) * summary: Utility for performance cycle card. * score: 1 ### component PerformanceCycleDetailPage * file: src/cores/hr/pages/performance/PerformanceCycleDetailPage.tsx:200 * kind: component * core: hr * spec: (none) * summary: Wrapper component that handles missing ID case * score: 2 ### component PerformanceCycleFormDialog * file: src/cores/hr/components/performance/PerformanceCycleFormDialog.tsx:58 * kind: component * core: hr * spec: (none) * summary: Utility for performance cycle form dialog. * score: 1 ### component PerformanceCycleListPage * file: src/cores/hr/pages/performance/PerformanceCycleListPage.tsx:16 * kind: component * core: hr * spec: (none) * summary: Utility for performance cycle list page. * score: 1 ### component PerformanceCycleTable * file: src/cores/hr/components/performance/PerformanceCycleTable.tsx:42 * kind: component * core: hr * spec: (none) * summary: Utility for performance cycle table. * score: 1 ### component PerformanceDashboard * file: src/cores/hr/pages/performance/PerformanceDashboard.tsx:21 * kind: component * core: hr * spec: (none) * summary: Utility for performance dashboard. * score: 1 ### component PerformanceDistributionChart * file: src/cores/hr/components/performance/analytics/PerformanceDistributionChart.tsx:41 * kind: component * core: hr * spec: (none) * summary: Utility for performance distribution chart. * score: 1 ### component PerformanceFeedbackDetailPage * file: src/cores/hr/pages/performance/PerformanceFeedbackDetailPage.tsx:252 * kind: component * core: hr * spec: (none) * summary: Wrapper component that handles missing ID case * score: 2 ### component PerformanceFeedbackListPage * file: src/cores/hr/pages/performance/PerformanceFeedbackListPage.tsx:16 * kind: component * core: hr * spec: (none) * summary: Utility for performance feedback list page. * score: 1 ### component PerformanceGoalCard * file: src/cores/hr/components/performance/PerformanceGoalCard.tsx:29 * kind: component * core: hr * spec: (none) * summary: Utility for performance goal card. * score: 1 ### component PerformanceGoalDetailPage * file: src/cores/hr/pages/performance/PerformanceGoalDetailPage.tsx:264 * kind: component * core: hr * spec: (none) * summary: Wrapper component that handles missing ID case * score: 2 ### component PerformanceGoalFormDialog * file: src/cores/hr/components/performance/PerformanceGoalFormDialog.tsx:52 * kind: component * core: hr * spec: (none) * summary: Utility for performance goal form dialog. * score: 1 ### component PerformanceGoalListPage * file: src/cores/hr/pages/performance/PerformanceGoalListPage.tsx:21 * kind: component * core: hr * spec: (none) * summary: Utility for performance goal list page. * score: 1 ### component PerformanceGoalProgressDialog * file: src/cores/hr/components/performance/PerformanceGoalProgressDialog.tsx:30 * kind: component * core: hr * spec: (none) * summary: Utility for performance goal progress dialog. * score: 1 ### component PerformanceGoalTable * file: src/cores/hr/components/performance/PerformanceGoalTable.tsx:46 * kind: component * core: hr * spec: (none) * summary: Utility for performance goal table. * score: 1 ### component PerformanceImprovementPlanDetailPage * file: src/cores/hr/pages/performance/PerformanceImprovementPlanDetailPage.tsx:30 * kind: component * core: hr * spec: (none) * summary: Utility for performance improvement plan detail page. * score: 1 ### component PerformanceImprovementPlanListPage * file: src/cores/hr/pages/performance/PerformanceImprovementPlanListPage.tsx:19 * kind: component * core: hr * spec: (none) * summary: Utility for performance improvement plan list page. * score: 1 ### component PerformanceImprovementPlanTable * file: src/cores/hr/components/performance/PerformanceImprovementPlanTable.tsx:53 * kind: component * core: hr * spec: (none) * summary: Utility for performance improvement plan table. * score: 1 ### component PerformanceReviewAcknowledgeDialog * file: src/cores/hr/components/performance/PerformanceReviewAcknowledgeDialog.tsx:40 * kind: component * core: hr * spec: (none) * summary: Utility for performance review acknowledge dialog. * score: 1 ### component PerformanceReviewCard * file: src/cores/hr/components/performance/PerformanceReviewCard.tsx:27 * kind: component * core: hr * spec: (none) * summary: Utility for performance review card. * score: 1 ### component PerformanceReviewDetailPage * file: src/cores/hr/pages/performance/PerformanceReviewDetailPage.tsx:617 * kind: component * core: hr * spec: (none) * summary: Wrapper component that handles missing ID case * score: 2 ### component PerformanceReviewFormDialog * file: src/cores/hr/components/performance/PerformanceReviewFormDialog.tsx:53 * kind: component * core: hr * spec: (none) * summary: Utility for performance review form dialog. * score: 1 ### component PerformanceReviewListPage * file: src/cores/hr/pages/performance/PerformanceReviewListPage.tsx:16 * kind: component * core: hr * spec: (none) * summary: Utility for performance review list page. * score: 1 ### component PerformanceReviewRatingSection * file: src/cores/hr/components/performance/PerformanceReviewRatingSection.tsx:106 * kind: component * core: hr * spec: (none) * summary: Utility for performance review rating section. * score: 1 ### component PerformanceReviewStatusWidget * file: src/cores/hr/components/performance/PerformanceReviewStatusWidget.tsx:24 * kind: component * core: hr * spec: (none) * summary: Utility for performance review status widget. * score: 1 ### component PerformanceReviewTable * file: src/cores/hr/components/performance/PerformanceReviewTable.tsx:47 * kind: component * core: hr * spec: (none) * summary: Utility for performance review table. * score: 1 ### component PerformanceReviewWizardPage * file: src/cores/hr/pages/PerformanceReviewWizardPage.tsx:34 * kind: component * core: hr * spec: (none) * summary: Utility for performance review wizard page. * score: 1 ### component PerformanceTrendChart * file: src/cores/hr/components/performance/analytics/PerformanceTrendChart.tsx:30 * kind: component * core: hr * spec: (none) * summary: Utility for performance trend chart. * score: 1 ### component PerformanceWidget * file: src/cores/hr/analytics/components/PerformanceWidget.tsx:29 * kind: component * core: hr * spec: (none) * summary: Utility for performance widget. * score: 1 ### component PersonalDocumentUploadDialog * file: src/cores/hr/self-service/components/PersonalDocumentUploadDialog.tsx:39 * kind: component * core: hr * spec: (none) * summary: Utility for personal document upload dialog. * score: 1 ### component PersonalInfoCard * file: src/cores/hr/self-service/components/PersonalInfoCard.tsx:27 * kind: component * core: hr * spec: (none) * summary: Utility for personal info card. * score: 1 ### component PersonalInfoForm * file: src/cores/hr/self-service/components/PersonalInfoForm.tsx:72 * kind: component * core: hr * spec: (none) * summary: Utility for personal info form. * score: 1 ### component PersonalInfoStep * file: src/cores/hr/components/wizards/steps/PersonalInfoStep.tsx:24 * kind: component * core: hr * spec: (none) * summary: Utility for personal info step. * score: 1 ### component PIPCard * file: src/cores/hr/components/performance/PIPCard.tsx:43 * kind: component * core: hr * spec: (none) * summary: Utility for pipcard. * score: 1 ### component PIPCompleteDialog * file: src/cores/hr/components/performance/PIPCompleteDialog.tsx:51 * kind: component * core: hr * spec: (none) * summary: Utility for pipcomplete dialog. * score: 1 ### component PipelineHealthIndicator * file: src/cores/hr/components/ats/PipelineHealthIndicator.tsx:21 * kind: component * core: hr * spec: (none) * summary: Utility for pipeline health indicator. * score: 1 ### component PipelineMetricsWidget * file: src/cores/hr/components/ats/PipelineMetricsWidget.tsx:17 * kind: component * core: hr * spec: (none) * summary: Utility for pipeline metrics widget. * score: 1 ### component PIPExportDialog * file: src/cores/hr/components/documents/PIPExportDialog.tsx:36 * kind: component * core: hr * spec: (none) * summary: Utility for pipexport dialog. * score: 1 ### component PIPFormDialog * file: src/cores/hr/components/performance/PIPFormDialog.tsx:53 * kind: component * core: hr * spec: (none) * summary: Utility for pipform dialog. * score: 1 ### component PIPMilestoneManager * file: src/cores/hr/components/performance/PIPMilestoneManager.tsx:32 * kind: component * core: hr * spec: (none) * summary: Utility for pipmilestone manager. * score: 1 ### component PIPSummaryWidget * file: src/cores/hr/components/performance/analytics/PIPSummaryWidget.tsx:35 * kind: component * core: hr * spec: (none) * summary: Utility for pipsummary widget. * score: 1 ### component PlanCard * file: src/cores/hr/benefits/components/enrollment/PlanCard.tsx:37 * kind: component * core: hr * spec: (none) * summary: Displays a benefit plan card for selection in the enrollment wizard.Coverage level selection is handled externally by PlanSelectionStep. * score: 2 ### component PlanComparisonDialog * file: src/cores/hr/benefits/components/enrollment/PlanComparisonDialog.tsx:52 * kind: component * core: hr * spec: (none) * summary: Utility for plan comparison dialog. * score: 1 ### component PlanComparisonTable * file: src/cores/hr/benefits/components/enrollment/PlanComparisonTable.tsx:65 * kind: component * core: hr * spec: (none) * summary: Utility for plan comparison table. * score: 1 ### component PlanSelectionStep * file: src/cores/hr/benefits/components/enrollment/PlanSelectionStep.tsx:80 * kind: component * core: hr * spec: (none) * summary: Step 2 of enrollment wizard — plan selection with category tabs and cost calculator. * score: 2 ### component PositionActions * file: src/cores/hr/components/positions/PositionActions.tsx:53 * kind: component * core: hr * spec: HR-23 * summary: Renders the lifecycle action buttons valid for a position's current status —submit, approve, reject, freeze, unfreeze, or close — each gated by therelevant permission and routed through a confirmation dialog before invokingthe corresponding mutation. Renders nothing when no transitions are allowed. * params: * props — Component props: identifies the position; selects which actions are offered. * score: 5 ### component PositionAssignmentDialog * file: src/cores/hr/components/positions/PositionAssignmentDialog.tsx:36 * kind: component * core: hr * spec: HR-23 * summary: Dialog for assigning an active employee to a position. Captures the employee,allocation percentage, start date, and primary-assignment flag, then submitsthe assignment mutation for the given position. * params: * props — Dialog props: is the target position; toggles visibility; fires on open/close. * score: 5 ### component PositionAssignmentsTab * file: src/cores/hr/components/positions/PositionAssignmentsTab.tsx:34 * kind: component * core: hr * spec: HR-23 * summary: Detail tab listing a position's employee assignments, split into active andhistorical (ended) groups. Permitted users can open the assignment dialog toadd an employee or end an active assignment via a confirmation transition. * params: * props — Component props: scopes the assignments shown. * score: 5 ### component PositionDetailPage * file: src/cores/hr/pages/PositionDetailPage.tsx:44 * kind: component * core: hr * spec: (none) * summary: Utility for position detail page. * score: 1 ### component PositionHistoryTab * file: src/cores/hr/components/positions/PositionHistoryTab.tsx:27 * kind: component * core: hr * spec: HR-23 * summary: Detail tab rendering a position's lifecycle history as a vertical timeline ofchange events (humanized change type and timestamp), with skeleton and emptystates while loading or when no events exist yet. * params: * props — Component props: scopes the history loaded. * score: 5 ### component Positions * file: src/cores/hr/pages/Positions.tsx:22 * kind: component * core: hr * spec: (none) * summary: Utility for positions. * score: 1 ### component PositionSkillRequirementsList * file: src/cores/hr/components/skills/PositionSkillRequirementsList.tsx:32 * kind: component * core: hr * spec: (none) * summary: Utility for position skill requirements list. * score: 1 ### component PositionStatusBadge * file: src/cores/hr/components/positions/PositionStatusBadge.tsx:40 * kind: component * core: hr * spec: (none) * summary: Status badge for HR-23 positions. Uses semantic color tokens perCONTEXT.md D5. * score: 2 ### component PositionTransitionDialog * file: src/cores/hr/components/positions/PositionTransitionDialog.tsx:42 * kind: component * core: hr * spec: HR-23 * summary: Reusable confirmation dialog for position lifecycle transitions. Optionallyrequires the user to enter a reason before confirming, styles the confirmaction as destructive when requested, and disables interaction while theunderlying mutation is pending. * params: * props — Dialog props described by . * score: 5 ### component PostingReviewStep * file: src/cores/hr/wizards/job-posting/steps/PostingReviewStep.tsx:21 * kind: component * core: hr * spec: (none) * summary: Step 4 (FR-4/FR-5): review the posting and choose draft vs publish. * score: 2 ### component ProficiencyLevelBadge * file: src/cores/hr/components/skills/ProficiencyLevelBadge.tsx:33 * kind: component * core: hr * spec: (none) * summary: Utility for proficiency level badge. * score: 1 ### component ProliantAuditLogView * file: src/cores/hr/components/proliant/ProliantAuditLogView\.tsx:32 * kind: component * core: hr * spec: none * summary: Audit-log viewer for Proliant sync runs. Lets the user select a sync run andrenders that run's per-record log entries in a table, with a skeleton statewhile entries load. * params: * props — Component props: populate the run selector; is the selected run; fires on selection; are the log rows for the active run; toggles the skeleton. * score: 5 ### component ProliantCodeMappingConfig * file: src/cores/hr/components/proliant/ProliantCodeMappingConfig.tsx:194 * kind: component * core: hr * spec: HR-44-EN-02 * summary: Configuration UI for Proliant code mappings (earning/deduction/accrual codes).Lets an admin pull the latest codes from Proliant via the edge function and review or override the Encore value each Proliant code maps to.Rows are grouped by , with an optional "unmapped only" filter.Picking a value in the constrained combobox saves immediately through with no separate commit step.HR-44-EN-02: when , an admin can request AI suggestions (PF-118) forthe Encore value of each code. Suggestions are advisory — Accept triggers thesame path as a direct combobox pick; nothing is auto-applied. * params: * props — Component props: and scope the sync; are the current rows; // toggle progress states; gates edits; triggers the code lookup and persists an edited mapping; /// drive the optional AI suggestion controls. * score: 2 ### component ProliantConflictList * file: src/cores/hr/components/proliant/ProliantConflictList.tsx:36 * kind: component * core: hr * spec: none * summary: Table of pending Proliant sync conflicts. Selecting a row opens the conflictdetail sheet where the user chooses a resolution, which is then submitted via. * params: * props — Component props: are the pending entries; toggles the loading state; submits a chosen resolution for a conflict; disables actions while in flight. * score: 5 ### component ProliantFieldMappingConfig * file: src/cores/hr/components/proliant/ProliantFieldMappingConfig.tsx:33 * kind: component * core: hr * spec: (none) * summary: HR-UX-13 Step 3 / HR-44 manage tab — field mapping overrides with smart defaults,Proliant field dropdowns, and per-entity category tabs. * score: 2 ### component ProliantIntegrationPage * file: src/cores/hr/pages/integrations/ProliantIntegrationPage.tsx:751 * kind: component * core: hr * spec: (none) * summary: Top-level page for the Proliant (ReadyPay) payroll integration. Renders theoverview, connection/credentials, code-mapping, and run-history tabs behindthe feature flag, with tab state synced to theURL. * score: 2 ### component ProliantPayrollRunPage * file: src/cores/hr/pages/integrations/ProliantPayrollRunPage.tsx:24 * kind: component * core: hr * spec: (none) * summary: Route wrapper for the embedded Proliant payroll run wizard (HR-44 Stage 2 / HR-UX-25).Renders the self-contained inside the standard HR pagelayout. Exiting the wizard navigates back to the Payroll hub. Permission gating() is applied at the route level via in .HR-44-EN-03 AC-5: also hosts the "Manual check" entry — an admin-only,confirmation-gated dialog for off-cycle/correction checks, placed beside thewizard entry and shown only when the integration + company id are configured. * score: 2 ### component ProliantSetupWizard * file: src/cores/hr/components/proliant/ProliantSetupWizard.tsx:68 * kind: component * core: hr * spec: HR-UX-13 * summary: Six-step wizard for connecting and activating a Proliant payroll integration(HR-UX-13 / HR-44). Steps: Credentials → Company Mapping → Field Mappings →Sync Schedule → Pull & Map Codes → Test & Activate.Code mapping now precedes Activate: the user pulls Proliant codes and maps therequired families BEFORE the final Test & Activate step, which hard-gatesactivation on both a passing connection test AND go-live mapping readiness(every required code family mapped or marked N/A).Persists a credential-safe draft via so the wizard can beresumed across sessions. Credentials are never included in the draft payload.PF-41 execution lifecycle (Set Up mode only — issue #800):- On open, look for an in-progress draft execution for this template/user. If one exists, prompt to resume (DraftResumeDialog); otherwise so step-change calls actually persist (without an execution the guard in silently no-ops — the bug #800 fixed).- Resuming restores the saved step + non-secret field values (credentials excluded).- on Activate; on exit.Edit mode (an existing integration is present) never opens an execution: the DBrecord is the source of truth and a stale Set Up draft must not clobber it. * params: * onComplete — Called after the integration is activated on the final Test & Activate step. * onExit — Called when the user exits the wizard without completing it. * score: 3 ### component ProliantSyncDashboard * file: src/cores/hr/components/proliant/ProliantSyncDashboard.tsx:47 * kind: component * core: hr * spec: none * summary: Dashboard for the Proliant payroll sync. Shows recent sync runs and theirstatus in a table and lets a permitted user pick the sync scope and directionand trigger a sync run on demand. * params: * props — Component props: scopes the dashboard; are recent sync runs; / toggle progress states; gates the trigger; / and their change handlers control sync parameters; triggers a run. * score: 5 ### component PTOBalanceWidget * file: src/cores/hr/self-service/components/PTOBalanceWidget.tsx:19 * kind: component * core: hr * spec: (none) * summary: Utility for ptobalance widget. * score: 1 ### component PullCodesStep * file: src/cores/hr/components/proliant/setup-steps/PullCodesStep.tsx:43 * kind: component * core: hr * spec: HR-UX-13 * summary: Step 5 of the Proliant setup wizard — Pull & Map Codes.Lets admins import earning, deduction, and accrual codes from Proliant and mapthe required families to Encore values BEFORE the final Test & Activate step.Wired identically to the Code Mappings tab on ,including the registry-resolved constrained dropdowns. Activation downstreamis hard-gated on go-live mapping readiness. * params: * integrationId — Active integration ID; renders an empty state when undefined. * proliantCompanyId — Proliant company code used to scope the code-lookup call. * score: 3 ### component PunchAuditMeta * file: src/cores/hr/components/time/PunchAuditMeta.tsx:18 * kind: component * core: hr * spec: (none) * summary: Subtext under a punch time showing who logged or edited the punch (HR-05 audit trail). * score: 2 ### component PunchSitePicker * file: src/cores/hr/components/time/PunchSitePicker.tsx:27 * kind: component * core: hr * spec: (none) * summary: HR-05 Phase 0 — choose the work location for a punch.Defaults to the employee's assigned site but lets a worker who is covering adifferent house pick where they actually are; the chosen site authoritativelyresolves the punch timezone (and feeds the geofence / location\_mismatch check),so it must reflect the real work location. * score: 2 ### component QuickActionsWidget * file: src/cores/hr/self-service/components/QuickActionsWidget.tsx:17 * kind: component * core: hr * spec: (none) * summary: Self-service quick actions backed by module registry + permission filtering. * score: 2 ### component RatingSummaryStep * file: src/cores/hr/components/wizards/steps/RatingSummaryStep.tsx:61 * kind: component * core: hr * spec: (none) * summary: Utility for rating summary step. * score: 1 ### component ReadinessScoreBadge * file: src/cores/hr/succession/components/ReadinessScoreBadge.tsx:20 * kind: component * core: hr * spec: (none) * summary: Utility for readiness score badge. * score: 1 ### component RecentPunches * file: src/cores/hr/components/time/RecentPunches.tsx:9 * kind: component * core: hr * spec: (none) * summary: Utility for recent punches. * score: 1 ### component RecentTransitionsWidget * file: src/cores/hr/components/lifecycle/RecentTransitionsWidget.tsx:31 * kind: component * core: hr * spec: (none) * summary: Utility for recent transitions widget. * score: 1 ### component RecommendationBadge * file: src/cores/hr/components/ats/RecommendationBadge.tsx:33 * kind: component * core: hr * spec: (none) * summary: Utility for recommendation badge. * score: 1 ### component RecruitingDashboardPage * file: src/cores/hr/pages/ats/RecruitingDashboardPage.tsx:23 * kind: component * core: hr * spec: (none) * summary: Utility for recruiting dashboard page. * score: 1 ### component RecruitingPipelineFunnelChart * file: src/cores/hr/components/ats/RecruitingPipelineFunnelChart.tsx:40 * kind: component * core: hr * spec: (none) * summary: Utility for pipeline funnel chart. * score: 1 ### component RecruitingPipelineWidget * file: src/cores/hr/components/dashboard/RecruitingPipelineWidget.tsx:26 * kind: component * core: hr * spec: (none) * summary: Utility for recruiting pipeline widget. * score: 1 ### component ReferenceSection * file: src/cores/hr/components/ats/ReferenceSection.tsx:41 * kind: component * core: hr * spec: (none) * summary: Utility for reference section. * score: 1 ### component ReferenceStatusBadge * file: src/cores/hr/components/ats/ReferenceStatusBadge.tsx:34 * kind: component * core: hr * spec: (none) * summary: Utility for reference status badge. * score: 1 ### component RejectCredentialDialog * file: src/cores/hr/components/credentialing/RejectCredentialDialog.tsx:21 * kind: component * core: hr * spec: (none) * summary: Utility for reject credential dialog. * score: 1 ### component RemoveDependentDialog * file: src/cores/hr/benefits/components/dependents/RemoveDependentDialog.tsx:25 * kind: component * core: hr * spec: (none) * summary: Utility for remove dependent dialog. * score: 1 ### component RenewalWorkflowStatusBadge * file: src/cores/hr/components/credentialing/RenewalWorkflowStatusBadge.tsx:44 * kind: component * core: hr * spec: (none) * summary: Utility for renewal workflow status badge. * score: 1 ### component RequestBackgroundCheckDialog * file: src/cores/hr/components/ats/RequestBackgroundCheckDialog.tsx:40 * kind: component * core: hr * spec: (none) * summary: Utility for request background check dialog. * score: 1 ### component RequestReferenceDialog * file: src/cores/hr/components/ats/RequestReferenceDialog.tsx:57 * kind: component * core: hr * spec: (none) * summary: Utility for request reference dialog. * score: 1 ### component ResolutionMetricsCard * file: src/cores/hr/components/time/analytics/ResolutionMetricsCard.tsx:15 * kind: component * core: hr * spec: (none) * summary: Utility for resolution metrics card. * score: 1 ### component ResolveDisputeDialog * file: src/cores/hr/components/ats/ResolveDisputeDialog.tsx:30 * kind: component * core: hr * spec: (none) * summary: Utility for resolve dispute dialog. * score: 1 ### component RetentionRiskCard * file: src/cores/hr/analytics/components/RetentionRiskCard.tsx:31 * kind: component * core: hr * spec: (none) * summary: Utility for retention risk card. * score: 1 ### component RetentionRiskPage * file: src/cores/hr/analytics/pages/RetentionRiskPage.tsx:44 * kind: component * core: hr * spec: (none) * summary: Utility for retention risk page. * score: 1 ### component ReviewActivateStep * file: src/cores/hr/components/fingerprint-clearance/wizard/steps/ReviewActivateStep.tsx:42 * kind: component * core: hr * spec: (none) * summary: Render the Review & Activate step. * score: 2 ### component ReviewCompleteStep * file: src/cores/hr/components/wizards/steps/ReviewCompleteStep.tsx:114 * kind: component * core: hr * spec: (none) * summary: Utility for review complete step. * score: 1 ### component ReviewCompletionChart * file: src/cores/hr/components/performance/analytics/ReviewCompletionChart.tsx:24 * kind: component * core: hr * spec: (none) * summary: Utility for review completion chart. * score: 1 ### component ReviewContextStep * file: src/cores/hr/components/wizards/steps/ReviewContextStep.tsx:30 * kind: component * core: hr * spec: (none) * summary: Utility for review context step. * score: 1 ### component ReviewStep * file: src/cores/hr/benefits/components/enrollment/ReviewStep.tsx:54 * kind: component * core: hr * spec: (none) * summary: Review all selections before final submission. * score: 2 ### component RoleMappingStep * file: src/cores/hr/components/employees/import/RoleMappingStep.tsx:27 * kind: component * core: hr * spec: (none) * summary: Interactive role mapping step for the import wizard.Groups employees by job title pattern and suggests roles.Supports both V2 system roles and organization custom roles. * score: 2 ### component SalaryBandForm * file: src/cores/hr/compensation/components/SalaryBandForm.tsx:54 * kind: component * core: hr * spec: (none) * summary: Utility for salary band form. * score: 1 ### component SalaryBandListPage * file: src/cores/hr/compensation/pages/SalaryBandListPage.tsx:50 * kind: component * core: hr * spec: (none) * summary: Utility for salary band list page. * score: 1 ### component SalaryChangeExportDialog * file: src/cores/hr/components/documents/SalaryChangeExportDialog.tsx:44 * kind: component * core: hr * spec: (none) * summary: Utility for salary change export dialog. * score: 1 ### component ScheduleGeneratorDialog * file: src/cores/hr/components/scheduling/ScheduleGeneratorDialog.tsx:46 * kind: component * core: hr * spec: (none) * summary: Utility for schedule generator dialog. * score: 1 ### component ScheduleStep * file: src/cores/hr/components/proliant/setup-steps/ScheduleStep.tsx:35 * kind: component * core: hr * spec: HR-UX-13 * summary: Step 4 of the Proliant setup wizard — Sync Schedule.Collects the cron expression that controls when the daily code/calendar syncfires (default ) and the org-level conflict resolution strategy( | | ). Values are gathered here butpersisted only when the user activates the integration on the Test Connection step. * params: * syncSchedule — Current cron expression value. * conflictStrategy — Current org-level conflict resolution strategy. * onSyncScheduleChange — Called with the new cron string on input change. * onConflictStrategyChange — Called with the new strategy on select change. * score: 3 ### component SchedulingSettingsSection * file: src/cores/hr/components/settings/SchedulingSettingsSection.tsx:9 * kind: component * core: hr * spec: (none) * summary: Scheduling administration links for the HR Settings hub. * score: 2 ### component ScorecardComparisonGrid * file: src/cores/hr/components/ats/scorecards/ScorecardComparisonGrid.tsx:35 * kind: component * core: hr * spec: (none) * summary: Grid comparing scorecard aggregates across candidates. * score: 2 ### component ScorecardCompletionBadge * file: src/cores/hr/components/ats/scorecards/ScorecardCompletionBadge.tsx:18 * kind: component * core: hr * spec: (none) * summary: Badge showing scorecard completion progress for pipeline views. * score: 2 ### component ScorecardPdfExportButton * file: src/cores/hr/components/ats/scorecards/ScorecardPdfExport.tsx:33 * kind: component * core: hr * spec: (none) * summary: Button to export a single scorecard as PDF. * score: 2 ### component ScorecardTemplateBuilder * file: src/cores/hr/components/ats/scorecards/ScorecardTemplateBuilder.tsx:56 * kind: component * core: hr * spec: (none) * summary: Builder component for creating and editing scorecard templates. * score: 2 ### component ScorecardTemplateLibrary * file: src/cores/hr/components/ats/scorecards/ScorecardTemplateLibrary.tsx:24 * kind: component * core: hr * spec: (none) * summary: Library view for managing scorecard templates. * score: 2 ### component ScorecardTemplatesPage * file: src/cores/hr/pages/ats/ScorecardTemplatesPage.tsx:8 * kind: component * core: hr * spec: (none) * summary: Page for managing scorecard templates. * score: 2 ### component SelectCandidateStep * file: src/cores/hr/wizards/offer-letter/steps/SelectCandidateStep.tsx:26 * kind: component * core: hr * spec: (none) * summary: Step 1: resolve offer recipient.- Application mode: confirm application candidate.- Direct mode: select candidate/employee or create candidate inline. * score: 2 ### component SendCommunicationDialog * file: src/cores/hr/components/communications/SendCommunicationDialog.tsx:55 * kind: component * core: hr * spec: (none) * summary: Utility for send communication dialog. * score: 1 ### component SendReminderDialog * file: src/cores/hr/components/onboarding/SendReminderDialog.tsx:28 * kind: component * core: hr * spec: (none) * summary: Utility for send reminder dialog. * score: 1 ### component SeparationAgreementExportDialog * file: src/cores/hr/components/documents/SeparationAgreementExportDialog.tsx:45 * kind: component * core: hr * spec: (none) * summary: Utility for separation agreement export dialog. * score: 1 ### component ShiftAssignmentDialog * file: src/cores/hr/components/scheduling/ShiftAssignmentDialog.tsx:24 * kind: component * core: hr * spec: (none) * summary: Utility for shift assignment dialog. * score: 1 ### component ShiftCalendarView * file: src/cores/hr/components/scheduling/ShiftCalendarView\.tsx:21 * kind: component * core: hr * spec: (none) * summary: Utility for shift calendar view. * score: 1 ### component ShiftDetailDialog * file: src/cores/hr/components/scheduling/ShiftDetailDialog.tsx:36 * kind: component * core: hr * spec: (none) * summary: Utility for shift detail dialog. * score: 1 ### component ShiftFormDialog * file: src/cores/hr/components/scheduling/ShiftFormDialog.tsx:39 * kind: component * core: hr * spec: (none) * summary: Utility for shift form dialog. * score: 1 ### component Shifts * file: src/cores/hr/pages/Shifts.tsx:24 * kind: component * core: hr * spec: (none) * summary: Utility for shifts. * score: 1 ### component ShiftTemplateFormDialog * file: src/cores/hr/components/scheduling/ShiftTemplateFormDialog.tsx:29 * kind: component * core: hr * spec: (none) * summary: Utility for shift template form dialog. * score: 1 ### component ShiftTemplates * file: src/cores/hr/pages/ShiftTemplates.tsx:20 * kind: component * core: hr * spec: (none) * summary: Utility for shift templates. * score: 1 ### component SkillAssessmentDialog * file: src/cores/hr/components/skills/SkillAssessmentDialog.tsx:35 * kind: component * core: hr * spec: (none) * summary: Utility for skill assessment dialog. * score: 1 ### component SkillAssessmentsList * file: src/cores/hr/components/skills/SkillAssessmentsList.tsx:27 * kind: component * core: hr * spec: (none) * summary: Utility for skill assessments list. * score: 1 ### component SkillCard * file: src/cores/hr/components/skills/SkillCard.tsx:48 * kind: component * core: hr * spec: (none) * summary: Utility for skill card. * score: 1 ### component SkillCategoryBadge * file: src/cores/hr/components/skills/SkillCategoryBadge.tsx:26 * kind: component * core: hr * spec: (none) * summary: Utility for skill category badge. * score: 1 ### component SkillCategoryFilter * file: src/cores/hr/components/skills/SkillCategoryFilter.tsx:39 * kind: component * core: hr * spec: (none) * summary: Utility for skill category filter. * score: 1 ### component SkillDetailPage * file: src/cores/hr/pages/SkillDetailPage.tsx:33 * kind: component * core: hr * spec: (none) * summary: Utility for skill detail page. * score: 1 ### component SkillFormDialog * file: src/cores/hr/components/skills/SkillFormDialog.tsx:50 * kind: component * core: hr * spec: (none) * summary: Utility for skill form dialog. * score: 1 ### component SkillGapCoachPanel * file: src/cores/hr/components/skills/SkillGapCoachPanel.tsx:37 * kind: component * core: hr * spec: (none) * summary: Editable AI coaching panel rendered beneath the gap list. * score: 2 ### component SkillGapIndicator * file: src/cores/hr/components/skills/SkillGapIndicator.tsx:41 * kind: component * core: hr * spec: (none) * summary: Utility for skill gap indicator. * score: 1 ### component SkillsDashboardPage * file: src/cores/hr/pages/SkillsDashboardPage.tsx:23 * kind: component * core: hr * spec: (none) * summary: Utility for skills dashboard page. * score: 1 ### component SkillSearchCombobox * file: src/cores/hr/components/skills/SkillSearchCombobox.tsx:33 * kind: component * core: hr * spec: (none) * summary: Utility for skill search combobox. * score: 1 ### component SkillsLibraryPage * file: src/cores/hr/pages/SkillsLibraryPage.tsx:19 * kind: component * core: hr * spec: (none) * summary: Utility for skills library page. * score: 1 ### component SkillsLibraryTable * file: src/cores/hr/components/skills/SkillsLibraryTable.tsx:58 * kind: component * core: hr * spec: (none) * summary: Utility for skills library table. * score: 1 ### component SkillVerificationBadge * file: src/cores/hr/components/skills/SkillVerificationBadge.tsx:44 * kind: component * core: hr * spec: (none) * summary: Utility for skill verification badge. * score: 1 ### component SMSConsentBadge * file: src/cores/hr/components/ats/SMSConsentBadge.tsx:28 * kind: component * core: hr * spec: (none) * summary: Utility for smsconsent badge. * score: 1 ### component SMSConsentForm * file: src/cores/hr/components/ats/SMSConsentForm.tsx:51 * kind: component * core: hr * spec: (none) * summary: Utility for smsconsent form. * score: 1 ### component SourceConversionChart * file: src/cores/hr/components/ats/SourceConversionChart.tsx:18 * kind: component * core: hr * spec: (none) * summary: Utility for source conversion chart. * score: 1 ### component SourceCostAnalysisChart * file: src/cores/hr/components/ats/SourceCostAnalysisChart.tsx:29 * kind: component * core: hr * spec: (none) * summary: Utility for source cost analysis chart. * score: 1 ### component SourceCostConfigForm * file: src/cores/hr/components/ats/SourceCostConfigForm.tsx:62 * kind: component * core: hr * spec: (none) * summary: Utility for source cost config form. * score: 1 ### component SourceEffectivenessPage * file: src/cores/hr/pages/ats/SourceEffectivenessPage.tsx:42 * kind: component * core: hr * spec: (none) * summary: Utility for source effectiveness page. * score: 1 ### component SourceEffectivenessWidget * file: src/cores/hr/components/ats/SourceEffectivenessWidget.tsx:42 * kind: component * core: hr * spec: (none) * summary: Utility for source effectiveness widget. * score: 1 ### component SourceQualityTable * file: src/cores/hr/components/ats/SourceQualityTable.tsx:54 * kind: component * core: hr * spec: (none) * summary: Utility for source quality table. * score: 1 ### component StaffingAgenciesPage * file: src/cores/hr/pages/StaffingAgenciesPage.tsx:20 * kind: component * core: hr * spec: (none) * summary: HR-34: Staffing agencies admin page.Lists agencies with CRUD dialogs. * score: 2 ### component StaffingAgencyFormDialog * file: src/cores/hr/components/contractors/StaffingAgencyFormDialog.tsx:21 * kind: component * core: hr * spec: (none) * summary: HR-34: Dialog for creating/editing a staffing agency. * score: 2 ### component StaffingForecastPage * file: src/cores/hr/pages/StaffingForecastPage.tsx:16 * kind: component * core: hr * spec: (none) * summary: Utility for staffing forecast page. * score: 1 ### component StartOffboardingDialog * file: src/cores/hr/components/onboarding/StartOffboardingDialog.tsx:29 * kind: component * core: hr * spec: (none) * summary: Utility for start offboarding dialog. * score: 1 ### component StartOnboardingDialog * file: src/cores/hr/components/onboarding/StartOnboardingDialog.tsx:21 * kind: component * core: hr * spec: (none) * summary: Utility for start onboarding dialog. * score: 1 ### component StatusDatesStep * file: src/cores/hr/components/fingerprint-clearance/wizard/steps/StatusDatesStep.tsx:42 * kind: component * core: hr * spec: (none) * summary: Render the Status & Dates step. * score: 2 ### component SuccessionDashboardPage * file: src/cores/hr/succession/pages/SuccessionDashboardPage.tsx:19 * kind: component * core: hr * spec: (none) * summary: Utility for succession dashboard page. * score: 1 ### component SuccessionPlanCard * file: src/cores/hr/succession/components/SuccessionPlanCard.tsx:32 * kind: component * core: hr * spec: (none) * summary: Utility for succession plan card. * score: 1 ### component SuccessionPlanDetailPage * file: src/cores/hr/succession/pages/SuccessionPlanDetailPage.tsx:27 * kind: component * core: hr * spec: (none) * summary: Utility for succession plan detail page. * score: 1 ### component SuccessionPlanForm * file: src/cores/hr/succession/components/SuccessionPlanForm.tsx:40 * kind: component * core: hr * spec: (none) * summary: Utility for succession plan form. * score: 1 ### component SuccessionPlanListPage * file: src/cores/hr/succession/pages/SuccessionPlanListPage.tsx:28 * kind: component * core: hr * spec: (none) * summary: Utility for succession plan list page. * score: 1 ### component SurveyDetailPage * file: src/cores/hr/engagement/pages/SurveyDetailPage.tsx:59 * kind: component * core: hr * spec: (none) * summary: Utility for survey detail page. * score: 1 ### component SurveyForm * file: src/cores/hr/engagement/components/SurveyForm.tsx:69 * kind: component * core: hr * spec: (none) * summary: Utility for survey form. * score: 1 ### component SurveyFormPage * file: src/cores/hr/engagement/pages/SurveyFormPage.tsx:21 * kind: component * core: hr * spec: (none) * summary: Utility for survey form page. * score: 1 ### component SurveyListPage * file: src/cores/hr/engagement/pages/SurveyListPage.tsx:72 * kind: component * core: hr * spec: (none) * summary: Utility for survey list page. * score: 1 ### component SurveyResponsePage * file: src/cores/hr/engagement/pages/SurveyResponsePage.tsx:30 * kind: component * core: hr * spec: (none) * summary: Utility for survey response page. * score: 1 ### component SurveyResponseStats * file: src/cores/hr/engagement/components/SurveyResponseStats.tsx:20 * kind: component * core: hr * spec: (none) * summary: Utility for survey response stats. * score: 1 ### component SurveyResponseTable * file: src/cores/hr/engagement/components/SurveyResponseTable.tsx:37 * kind: component * core: hr * spec: (none) * summary: Utility for survey response table. * score: 1 ### component SurveySentimentCard * file: src/cores/hr/engagement/components/SurveySentimentCard.tsx:35 * kind: component * core: hr * spec: (none) * summary: HR engagement-survey sentiment insights card (clean ops, #1629).Read-only advisory panel on the survey detail page. Renders nothing unless HRAI is enabled for the org. On request it summarizes the survey's AGGREGATED,ANONYMOUS free-text comments into an overall sentiment + recurring themes.Suggest-not-save: the analyst reviews the insights; nothing is persisted, andacting on a theme goes through the existing action-plan flow. * score: 2 ### component SwapApprovalCard * file: src/cores/hr/components/scheduling/SwapApprovalCard.tsx:18 * kind: component * core: hr * spec: (none) * summary: Utility for swap approval card. * score: 1 ### component SwapApprovalDialog * file: src/cores/hr/components/scheduling/SwapApprovalDialog.tsx:21 * kind: component * core: hr * spec: (none) * summary: Utility for swap approval dialog. * score: 1 ### component SwapRequestDialog * file: src/cores/hr/components/scheduling/SwapRequestDialog.tsx:22 * kind: component * core: hr * spec: (none) * summary: Utility for swap request dialog. * score: 1 ### component SwapRequests * file: src/cores/hr/pages/SwapRequests.tsx:18 * kind: component * core: hr * spec: (none) * summary: Utility for swap requests. * score: 1 ### component SystemAccessStep * file: src/cores/hr/components/wizards/steps/SystemAccessStep.tsx:50 * kind: component * core: hr * spec: (none) * summary: Utility for system access step. * score: 1 ### component TalentPipelineCard * file: src/cores/hr/succession/components/TalentPipelineCard.tsx:31 * kind: component * core: hr * spec: (none) * summary: Utility for talent pipeline card. * score: 1 ### component TalentPipelinePage * file: src/cores/hr/succession/pages/TalentPipelinePage.tsx:16 * kind: component * core: hr * spec: (none) * summary: Utility for talent pipeline page. * score: 1 ### component TaxDocumentCard * file: src/cores/hr/self-service/components/TaxDocumentCard.tsx:66 * kind: component * core: hr * spec: (none) * summary: Utility for tax document card. * score: 1 ### component TaxDocumentList * file: src/cores/hr/self-service/components/TaxDocumentList.tsx:30 * kind: component * core: hr * spec: (none) * summary: Utility for tax document list. * score: 1 ### component TaxDocumentsPage * file: src/cores/hr/self-service/pages/TaxDocumentsPage.tsx:59 * kind: component * core: hr * spec: (none) * summary: Employee self-service payroll-provider tax documents page. * score: 2 ### component TaxDocumentsSection * file: src/cores/hr/self-service/components/TaxDocumentsSection.tsx:15 * kind: component * core: hr * spec: (none) * summary: Utility for tax documents section. * score: 1 ### component TaxFormRunCard * file: src/cores/hr/components/tax-forms/TaxFormRunCard.tsx:27 * kind: component * core: hr * spec: (none) * summary: Utility for tax form run card. * score: 1 ### component TaxFormRunDetailPage * file: src/cores/hr/pages/TaxFormRunDetailPage.tsx:60 * kind: component * core: hr * spec: (none) * summary: Utility for tax form run detail page. * score: 1 ### component TaxFormRunsPage * file: src/cores/hr/pages/TaxFormRunsPage.tsx:34 * kind: component * core: hr * spec: (none) * summary: Utility for tax form runs page. * score: 1 ### component TaxFormRunStatusBadge * file: src/cores/hr/components/tax-forms/TaxFormRunStatusBadge.tsx:45 * kind: component * core: hr * spec: (none) * summary: Utility for tax form run status badge. * score: 1 ### component TaxFormsSettingsPage * file: src/cores/hr/pages/TaxFormsSettingsPage.tsx:26 * kind: component * core: hr * spec: (none) * summary: Utility for tax forms settings page. * score: 1 ### component TaxTableAdminPage * file: src/cores/hr/pages/TaxTableAdminPage.tsx:52 * kind: component * core: hr * spec: (none) * summary: Utility for tax table admin page. * score: 1 ### component TeamCoverageSummaryWidget * file: src/cores/hr/components/leave/TeamCoverageSummaryWidget.tsx:35 * kind: component * core: hr * spec: (none) * summary: Utility for team coverage summary widget. * score: 1 ### component TeamLeaveCalendar * file: src/cores/hr/components/leave/TeamLeaveCalendar.tsx:18 * kind: component * core: hr * spec: (none) * summary: Utility for team leave calendar. * score: 1 ### component TeamLeaveCalendarPage * file: src/cores/hr/pages/TeamLeaveCalendarPage.tsx:9 * kind: component * core: hr * spec: (none) * summary: Utility for team leave calendar page. * score: 1 ### component TeamOnboardingDashboard * file: src/cores/hr/pages/TeamOnboardingDashboard.tsx:42 * kind: component * core: hr * spec: (none) * summary: Utility for team onboarding dashboard. * score: 1 ### component TeamPerformancePage * file: src/cores/hr/pages/performance/TeamPerformancePage.tsx:72 * kind: component * core: hr * spec: (none) * summary: Utility for team performance page. * score: 1 ### component Teams * file: src/cores/hr/pages/Teams.tsx:28 * kind: component * core: hr * spec: (none) * summary: Utility for teams. * score: 1 ### component TeamTimesheetCard * file: src/cores/hr/components/time/TeamTimesheetCard.tsx:18 * kind: component * core: hr * spec: (none) * summary: Utility for team timesheet card. * score: 1 ### component TeamTimesheetDetail * file: src/cores/hr/pages/TeamTimesheetDetail.tsx:28 * kind: component * core: hr * spec: (none) * summary: Utility for team timesheet detail. * score: 1 ### component TeamTimesheets * file: src/cores/hr/pages/TeamTimesheets.tsx:21 * kind: component * core: hr * spec: (none) * summary: Utility for team timesheets. * score: 1 ### component TemplatesWidget * file: src/cores/hr/components/lifecycle/TemplatesWidget.tsx:20 * kind: component * core: hr * spec: (none) * summary: Utility for templates widget. * score: 1 ### component TermsConditionsStep * file: src/cores/hr/wizards/offer-letter/steps/TermsConditionsStep.tsx:12 * kind: component * core: hr * spec: (none) * summary: Step 3 (FR-8): benefits summary, additional terms, and offer expiry. * score: 2 ### component TestConnectionStep * file: src/cores/hr/components/proliant/setup-steps/TestConnectionStep.tsx:120 * kind: component * core: hr * spec: HR-UX-13 * summary: Step 5 of the Proliant setup wizard — Test Connection.Invokes the edge function using the draftintegration and company code collected in earlier steps. Surfaces thesuccess/failure result inline. A passing test unlocks the ActivateIntegration submit action on this step. * params: * integrationId — ID of the draft integration created in step 2; button is disabled until set. * companyId — Proliant company code collected in step 2. * onResult — Called with on success, on failure or error. * score: 3 ### component TimeClock * file: src/cores/hr/pages/TimeClock.tsx:18 * kind: component * core: hr * spec: (none) * summary: Utility for time clock. * score: 1 ### component TimeClockStatusWidget * file: src/cores/hr/components/time/TimeClockStatusWidget.tsx:25 * kind: component * core: hr * spec: (none) * summary: Utility for time clock status widget. * score: 1 ### component TimeClockWidget * file: src/cores/hr/components/time/TimeClockWidget.tsx:11 * kind: component * core: hr * spec: (none) * summary: Utility for time clock widget. * score: 1 ### component TimeExceptionAnalyticsPage * file: src/cores/hr/pages/TimeExceptionAnalyticsPage.tsx:23 * kind: component * core: hr * spec: (none) * summary: Utility for time exception analytics page. * score: 1 ### component TimeExceptionCard * file: src/cores/hr/components/time/TimeExceptionCard.tsx:34 * kind: component * core: hr * spec: (none) * summary: Utility for time exception card. * score: 1 ### component TimeExceptionsWidget * file: src/cores/hr/components/dashboard/TimeExceptionsWidget.tsx:17 * kind: component * core: hr * spec: (none) * summary: Utility for time exceptions widget. * score: 1 ### component TimeInStageWidget * file: src/cores/hr/components/ats/TimeInStageWidget.tsx:31 * kind: component * core: hr * spec: (none) * summary: Utility for time in stage widget. * score: 1 ### component TimeOverview * file: src/cores/hr/pages/TimeOverview\.tsx:24 * kind: component * core: hr * spec: (none) * summary: Utility for time overview. * score: 1 ### component TimePunchImportDialog * file: src/cores/hr/components/data-import/TimePunchImportDialog.tsx:27 * kind: component * core: hr * spec: (none) * summary: Dialog for importing time punch history from CSV files. * score: 2 ### component TimesheetApprovalDialog * file: src/cores/hr/components/time/TimesheetApprovalDialog.tsx:20 * kind: component * core: hr * spec: (none) * summary: Utility for timesheet approval dialog. * score: 1 ### component TimesheetBreakCell * file: src/cores/hr/components/time/TimesheetBreakCell.tsx:51 * kind: component * core: hr * spec: (none) * summary: Break start/end times and duration for a daily timesheet row (HR-05). * score: 2 ### component TimesheetCard * file: src/cores/hr/components/time/TimesheetCard.tsx:14 * kind: component * core: hr * spec: (none) * summary: Utility for timesheet card. * score: 1 ### component TimesheetCorrectionDialogs * file: src/cores/hr/components/time/TimesheetCorrectionDialogs.tsx:18 * kind: component * core: hr * spec: (none) * summary: Dialog bundle for timesheet punch correction flows (HR-05-EN-10). * score: 2 ### component TimesheetDetail * file: src/cores/hr/pages/TimesheetDetail.tsx:48 * kind: component * core: hr * spec: (none) * summary: Utility for timesheet detail. * score: 1 ### component TimesheetEntriesTable * file: src/cores/hr/components/time/TimesheetEntriesTable.tsx:22 * kind: component * core: hr * spec: (none) * summary: Daily timesheet entries with column headers (clock in/out audit optional). * score: 2 ### component TimesheetEntryRow * file: src/cores/hr/components/time/TimesheetEntryRow\.tsx:147 * kind: component * core: hr * spec: (none) * summary: Single day row on a timesheet with clock in/out, hours, exceptions, and optional audit metadata.When , the row can flip into a single-line In/Out edit form (one Save upserts bothpunches via ); read-only mode is unchanged (HR-05-EN-12 / D3). * score: 2 ### component TimesheetsAdmin * file: src/cores/hr/pages/TimesheetsAdmin.tsx:22 * kind: component * core: hr * spec: (none) * summary: Utility for timesheets admin. * score: 1 ### component TimesheetsAdminDetail * file: src/cores/hr/pages/TimesheetsAdminDetail.tsx:25 * kind: component * core: hr * spec: (none) * summary: HR admin read-only view of a timesheet with daily clock in/out and punch audit trail. * score: 2 ### component TimesheetsAdminEnsure * file: src/cores/hr/pages/TimesheetsAdminEnsure.tsx:16 * kind: component * core: hr * spec: (none) * summary: Admin empty state to materialize a timesheet from punches (HR-05-EN-10 US-4).Entry: * score: 2 ### component TimesheetSummary * file: src/cores/hr/components/time/TimesheetSummary.tsx:13 * kind: component * core: hr * spec: (none) * summary: Utility for timesheet summary. * score: 1 ### component TimesheetSummaryWidget * file: src/cores/hr/components/time/TimesheetSummaryWidget.tsx:22 * kind: component * core: hr * spec: (none) * summary: Utility for timesheet summary widget. * score: 1 ### component TimeToFillAnalyticsPage * file: src/cores/hr/pages/ats/TimeToFillAnalyticsPage.tsx:16 * kind: component * core: hr * spec: (none) * summary: Utility for time to fill analytics page. * score: 1 ### component TimeToFillBenchmarkCard * file: src/cores/hr/components/ats/TimeToFillBenchmarkCard.tsx:19 * kind: component * core: hr * spec: (none) * summary: Utility for time to fill benchmark card. * score: 1 ### component TimeToFillBreakdownChart * file: src/cores/hr/components/ats/TimeToFillBreakdownChart.tsx:28 * kind: component * core: hr * spec: (none) * summary: Utility for time to fill breakdown chart. * score: 1 ### component TimeToFillTrendChart * file: src/cores/hr/components/ats/TimeToFillTrendChart.tsx:28 * kind: component * core: hr * spec: (none) * summary: Utility for time to fill trend chart. * score: 1 ### component TimeToFillWidget * file: src/cores/hr/components/ats/TimeToFillWidget.tsx:20 * kind: component * core: hr * spec: (none) * summary: Utility for time to fill widget. * score: 1 ### component TodaysScheduleWidget * file: src/cores/hr/components/time/TodaysScheduleWidget.tsx:25 * kind: component * core: hr * spec: (none) * summary: Utility for todays schedule widget. * score: 1 ### component TopExceptionsTable * file: src/cores/hr/components/time/analytics/TopExceptionsTable.tsx:17 * kind: component * core: hr * spec: (none) * summary: Utility for top exceptions table. * score: 1 ### component TotalCompensationStatementListPage * file: src/cores/hr/compensation/pages/TotalCompensationStatementListPage.tsx:43 * kind: component * core: hr * spec: (none) * summary: Utility for total compensation statement list page. * score: 1 ### component TotalCompensationStatementStatusBadge * file: src/cores/hr/compensation/components/TotalCompensationStatementStatusBadge.tsx:48 * kind: component * core: hr * spec: (none) * summary: Utility for total compensation statement status badge. * score: 1 ### component TransferExecutionDialog * file: src/cores/hr/components/internal-mobility/TransferExecutionDialog.tsx:50 * kind: component * core: hr * spec: (none) * summary: HR-35 / US-3: execute the transfer once an application is .Note: HR-15 pay preview is not wired in this WS3 build. The spec callsfor blocking submit when is true and HR-15 is unavailable — surface this in a follow-up alongside HR-15hook integration. * score: 2 ### component TrendAnalysisPage * file: src/cores/hr/analytics/pages/TrendAnalysisPage.tsx:30 * kind: component * core: hr * spec: (none) * summary: Utility for trend analysis page. * score: 1 ### component TrendIndicator * file: src/cores/hr/analytics/components/TrendIndicator.tsx:25 * kind: component * core: hr * spec: (none) * summary: Utility for trend indicator. * score: 1 ### component TurnoverWidget * file: src/cores/hr/analytics/components/TurnoverWidget.tsx:28 * kind: component * core: hr * spec: (none) * summary: Utility for turnover widget. * score: 1 ### component UnmatchedProfileList * file: src/cores/hr/components/proliant/UnmatchedProfileList.tsx:38 * kind: component * core: hr * spec: HR-44-EN-05 * summary: Table of Proliant employees that had no matching Encore profile during a pull(conflict\_status='unmatched'). Each row can be remediated by creating + linkingan Encore profile, which marks it resolved and lets the next pull auto-match.REGULATED: creating a profile fabricates a person identity from a payroll feed— the action is gated on the resolve-conflicts permission (). * score: 2 ### component UpcomingInterviewsWidget * file: src/cores/hr/components/ats/UpcomingInterviewsWidget.tsx:20 * kind: component * core: hr * spec: (none) * summary: Utility for upcoming interviews widget. * score: 1 ### component VerificationQueueWidget * file: src/cores/hr/components/compliance/VerificationQueueWidget.tsx:34 * kind: component * core: hr * spec: (none) * summary: Utility for verification queue widget. * score: 1 ### component VerificationStatusBadge * file: src/cores/hr/benefits/components/dependents/VerificationStatusBadge.tsx:50 * kind: component * core: hr * spec: (none) * summary: Utility for verification status badge. * score: 1 ### component VerifySkillDialog * file: src/cores/hr/components/skills/VerifySkillDialog.tsx:40 * kind: component * core: hr * spec: (none) * summary: Utility for verify skill dialog. * score: 1 ### component W2PreviewCard * file: src/cores/hr/components/tax-forms/W2PreviewCard.tsx:25 * kind: component * core: hr * spec: (none) * summary: Utility for w2 preview card. * score: 1 ### component W2StateSection * file: src/cores/hr/components/tax-forms/W2StateSection.tsx:25 * kind: component * core: hr * spec: (none) * summary: Utility for w2 state section. * score: 1 ### component W2StatesMultiSelect * file: src/cores/hr/components/tax-forms/W2StatesMultiSelect.tsx:25 * kind: component * core: hr * spec: (none) * summary: Utility for w2 states multi select. * score: 1 ### component WaiveCoverageCard * file: src/cores/hr/benefits/components/enrollment/WaiveCoverageCard.tsx:27 * kind: component * core: hr * spec: (none) * summary: Card allowing employees to waive/decline all benefits coverage.Includes required reason field for ERISA/ACA documentation. * score: 2 ### component WebhookDLQSection * file: src/cores/hr/components/settings/WebhookDLQSection.tsx:45 * kind: component * core: hr * spec: (none) * summary: Utility for webhook dlqsection. * score: 1 ### component WelcomeHubTip * file: src/cores/hr/components/onboarding/OnboardingHelpContent.tsx:190 * kind: component * core: hr * spec: (none) * summary: Welcome hub intro tip * score: 1 ### component WelcomeStep * file: src/cores/hr/components/wizards/steps/WelcomeStep.tsx:25 * kind: component * core: hr * spec: (none) * summary: Utility for welcome step. * score: 1 ### component WorkforceAnalyticsDashboardPage * file: src/cores/hr/analytics/pages/WorkforceAnalyticsDashboardPage.tsx:64 * kind: component * core: hr * spec: (none) * summary: Utility for workforce analytics dashboard page. * score: 1 ### component WorkforceAnalyticsHubPage * file: src/cores/hr/analytics/pages/WorkforceAnalyticsHubPage.tsx:46 * kind: component * core: hr * spec: (none) * summary: Utility for workforce analytics hub page. * score: 1 ### component WorkforceCostPage * file: src/cores/hr/analytics/pages/WorkforceCostPage.tsx:38 * kind: component * core: hr * spec: (none) * summary: Utility for workforce cost page. * score: 1 ### component WorkforceReportBuilderPage * file: src/cores/hr/analytics/pages/WorkforceReportBuilderPage.tsx:100 * kind: component * core: hr * spec: (none) * summary: Utility for workforce report builder page. * score: 1 ### component WorkloadDriverForm * file: src/cores/hr/components/workload-drivers/WorkloadDriverForm.tsx:90 * kind: component * core: hr * spec: (none) * summary: Utility for workload driver form. * score: 1 ### component WorkloadDriverList * file: src/cores/hr/components/workload-drivers/WorkloadDriverList.tsx:57 * kind: component * core: hr * spec: (none) * summary: Utility for workload driver list. * score: 1 ### component WorkloadDriversPage * file: src/cores/hr/pages/WorkloadDriversPage.tsx:18 * kind: component * core: hr * spec: (none) * summary: Utility for workload drivers page. * score: 1 ## Functions & utilities ### function addBusinessDays * file: src/cores/hr/services/pay-schedule-calculator.ts:127 * kind: function * core: hr * spec: (none) * summary: Add business days to a date * score: 1 ### function adjustForHolidays * file: src/cores/hr/services/pay-schedule-calculator.ts:68 * kind: function * core: hr * spec: (none) * summary: Adjust date for holidays by shifting to the nearest business day * params: * date — The date to adjust * holidays — Array of holiday dates * direction — 'before' or 'after' * score: 4 ### function adjustForWeekend * file: src/cores/hr/services/pay-schedule-calculator.ts:47 * kind: function * core: hr * spec: (none) * summary: Adjust for weekends by shifting to the nearest business day * params: * date — The date to adjust * direction — 'before' shifts to Friday, 'after' shifts to Monday * score: 4 ### function aggregate1099NECData * file: src/cores/hr/services/1099-nec/nec-1099-aggregation.ts:73 * kind: function * core: hr * spec: (none) * summary: Aggregate 1099-NEC data for contractors in a tax year.Only includes contractors with total compensation = \$600. * score: 4 ### function aggregate940Data * file: src/cores/hr/services/employer-taxes/form-940-aggregation.ts:22 * kind: function * core: hr * spec: (none) * summary: Aggregate Form 940 data for a tax year. * params: * supabase — Supabase client * organizationId — Organization ID * taxYear — Tax year * employerConfig — Employer tax configuration * returns: Form 940 aggregation result * score: 4 ### function aggregate941Data * file: src/cores/hr/services/quarterly/form-941-aggregation.ts:40 * kind: function * core: hr * spec: (none) * summary: Aggregate Form 941 data for a quarter. * score: 4 ### function aggregateAZA1QRTData * file: src/cores/hr/services/quarterly/az-a1-qrt-aggregation.ts:29 * kind: function * core: hr * spec: (none) * summary: Aggregate Arizona A1-QRT data for a quarter. * score: 4 ### function aggregateAZA1RData * file: src/cores/hr/services/employer-taxes/az-a1-r-aggregation.ts:39 * kind: function * core: hr * spec: (none) * summary: Aggregate Arizona A1-R annual reconciliation data.Fetches all finalized A1-QRT runs for the year and reconciles totals. * params: * supabase — Supabase client * organizationId — Organization ID * taxYear — Tax year * employerConfig — Employer tax configuration * returns: AZ A1-R aggregation result * score: 4 ### function aggregateDriverResults * file: src/cores/hr/utils/driver-aggregation.ts:23 * kind: function * core: hr * spec: (none) * summary: Aggregate multiple driver results using the specified method * score: 4 ### function aggregateStateWages * file: src/cores/hr/services/w2-state-aggregation.ts:38 * kind: function * core: hr * spec: (none) * summary: Aggregate state wage/tax data for a set of employees.MVP implementation: assigns all wages to the org's primary state from hr\_employer\_tax\_config.States in config without payroll data return \$0 — this does NOT block finalization. * params: * supabase — Supabase client * organizationId — Organization UUID (multi-tenancy filter) * employeeWages — Map of employee\_id to totalWages, stateTaxWithheld * configuredStates — State codes configured in employer tax config * primaryState — Primary state from employer tax config * stateEmployerId — State employer ID (e.g., SUTA account number) * returns: Per-employee state wage aggregation * score: 4 ### function aggregateW2Data * file: src/cores/hr/services/w2/w2-aggregation.ts:26 * kind: function * core: hr * spec: (none) * summary: Aggregate W-2 data for all employees in an organization for a tax year. * params: * supabase — Supabase client * organizationId — Organization ID * taxYear — Tax year to aggregate * ssWageBase — Social Security wage base for the year (e.g., 176100 for 2025) * returns: Array of W2EmployeeData for each employee with payroll in the year * score: 4 ### function allVerificationsCleared * file: src/cores/hr/components/wizards/payroll-run/hooks/runGuards.ts:20 * kind: function * core: hr * spec: (none) * summary: Verify step is cleared when there are no tests or every test is approved. * score: 4 ### function applyConstraints * file: src/cores/hr/utils/staffing-calculator.ts:277 * kind: function * core: hr * spec: (none) * summary: Apply constraints (min/max) to a calculated value * score: 4 ### function applyPTOAdjustment * file: src/cores/hr/utils/pto-normalization.ts:85 * kind: function * core: hr * spec: (none) * summary: Apply PTO adjustment to base staffingIncreases staffing to compensate for expected absences * score: 4 ### function autoMapHeaders * file: src/cores/hr/utils/credentialCsvTemplate.ts:77 * kind: function * core: hr * spec: (none) * summary: Maps CSV headers to field keys for credential import * score: 4 ### function autoMapSessionHeaders * file: src/cores/hr/utils/oversightSessionCsvTemplate.ts:123 * kind: function * core: hr * spec: (none) * summary: Maps CSV headers to field keys for session import * score: 4 ### function averageOverallScores * file: src/cores/hr/utils/interviewScorecard.ts:81 * kind: function * core: hr * spec: (none) * summary: Calculates the average overall score from multiple scorecards. * params: * scores — Array of overall\_score values (may contain nulls). * returns: Average rounded to 2 decimals, or null if no valid scores. * score: 4 ### function breakIntervalsForWorkDate * file: src/cores/hr/lib/time/timesheetBreakDisplay.ts:40 * kind: function * core: hr * spec: (none) * summary: Break intervals whose punches fall on the given work date (local calendar day). * score: 4 ### function build1099NECFormData * file: src/cores/hr/services/1099-nec/nec-1099-form-builder.ts:13 * kind: function * core: hr * spec: (none) * summary: Build 1099-NEC form data for storage in hr\_tax\_form\_items. * score: 4 ### function buildAnnualLiabilityPayload * file: src/cores/hr/services/employer-taxes/publish-tax-event.ts:77 * kind: function * core: hr * spec: (none) * summary: Helper to build annual tax liability payload from Form 940 data. * score: 4 ### function buildBenefitsStatementContent * file: src/cores/hr/templates/benefits-statement-content.ts:47 * kind: function * core: hr * spec: (none) * summary: Builds a DocumentExportContent payload for a benefits statement. Produces a PF-64-ready DocumentExportContent containing employee information,active coverage summary table, cost breakdown, and covered dependents list. * params: * data — BenefitsStatementData containing employee, period, enrollments, totals * returns: DocumentExportContent for PDF generation * score: 4 ### function buildBlankTimesheetEntry * file: src/cores/hr/lib/time/buildBlankTimesheetEntry.ts:9 * kind: function * core: hr * spec: (none) * summary: Build a transient, unsaved blank timesheet-entry row for a missing work date so amanager can add a missed day inline (HR-05-EN-12 / D3). The row carries no punches;saving it through the inline editor inserts manual punches and rebuilds, after whichthe real entry replaces this placeholder on refetch. * score: 4 ### function buildCompensationStatementContent * file: src/cores/hr/templates/compensation-statement-content.ts:94 * kind: function * core: hr * spec: (none) * summary: Builds a DocumentExportContent payload for a total compensation statement. Produces a PF-64-ready DocumentExportContent containing employee information, a compensation breakdown with amounts and percentages, a summary table, a confidentiality notice, and metadata (document number and effective date). * params: * data — CompensationStatementData containing employee, statementYear, breakdown, generatedDate, and companyName * options — Optional configuration including an onWarning callback for validation issues * returns: DocumentExportContent containing title, subtitle, sections array, and metadata for PDF generation * example: | const content = buildCompensationStatementContent( employee: fullName: 'Jane Doe', employeeNumber: '12345', jobTitle: 'Engineer' , statementYear: 2025, breakdown: baseSalary: 90000, bonuses: 5000, benefitsValue: 7000, retirementContributions: 3000, otherCompensation: 2000, totalCompensation: 107000 , generatedDate: '2025-01-15', companyName: 'Acme Corp', onWarning: (w) = logger.warn(w\.code, message: w\.message ) ); * score: 4 ### function buildDisciplinaryActionContent * file: src/cores/hr/templates/disciplinary-action-content.ts:190 * kind: function * core: hr * spec: (none) * summary: Builds complete disciplinary action notice content * score: 4 ### function buildDisciplinaryActionPayload * file: src/cores/hr/employee-relations/lib/disciplinaryPayload.ts:42 * kind: function * core: hr * spec: (none) * summary: Maps form values to a row payload safe for Supabase/Postgres (no "" on date columns). * score: 4 ### function buildDisciplinaryActionUpdatePayload * file: src/cores/hr/employee-relations/lib/disciplinaryPayload.ts:63 * kind: function * core: hr * spec: (none) * summary: Strips empty date strings from update payloads; uses null to clear optional dates. * score: 4 ### function buildEeo1Csv * file: src/cores/hr/services/eeo1/eeo1Service.ts:87 * kind: function * core: hr * spec: (none) * summary: Build the EEO-1 Component 1 CSV — counts only, in a stable job-category ×race/ethnicity × sex layout. Asserts (by construction) that no employee-identifyingcolumn is ever emitted. * score: 4 ### function buildEEOReportCsv * file: src/cores/hr/lib/eeoCsvExport.ts:23 * kind: function * core: hr * spec: (none) * summary: Build an OFCCP-friendly EEO compliance CSV with:- Summary- Applicant pool breakdown (gender, ethnicity, veteran, disability)- Hired pool breakdown- Adverse impact (four-fifths rule) results- Data completeness * score: 4 ### function buildEmployeeMaps * file: src/cores/hr/utils/employeeNameMatcher.ts:31 * kind: function * core: hr * spec: (none) * summary: Builds lookup maps for deterministic employee name matching. * params: * employees — Array of employees with profile data * returns: Maps for exact and fuzzy matching * score: 4 ### function buildEmploymentVerificationContent * file: src/cores/hr/templates/employment-verification-content.ts:95 * kind: function * core: hr * spec: (none) * summary: Builds complete employment verification letter content * score: 4 ### function buildGrievanceCreatePayload * file: src/cores/hr/employee-relations/lib/grievancePayload.ts:37 * kind: function * core: hr * spec: (none) * summary: Maps grievance form values to a Postgres-safe insert payload. * score: 4 ### function buildGrievanceUpdatePayload * file: src/cores/hr/employee-relations/lib/grievancePayload.ts:64 * kind: function * core: hr * spec: (none) * summary: Maps grievance form values to a Postgres-safe update payload. * score: 4 ### function buildInlineRowSave * file: src/cores/hr/lib/time/buildInlineRowSave.ts:38 * kind: function * core: hr * spec: (none) * summary: Plan the punch upserts for a single inline timesheet-row save (HR-05-EN-12 / D3).Pure: no DB calls — the hook executes each op via useTimesheetMutation. * score: 4 ### function buildJobDescriptionContent * file: src/cores/hr/templates/job-description-content.ts:99 * kind: function * core: hr * spec: (none) * summary: Provides build job description content functionality. * score: 4 ### function buildLeadershipProgramEnrollmentPayload * file: src/cores/hr/succession/lib/leadershipProgramEnrollmentPayload.ts:7 * kind: function * core: hr * spec: (none) * summary: Maps enrollment form values to insert/update columns. * score: 4 ### function buildManualHoursEntry * file: src/cores/hr/lib/time/buildManualHoursEntry.ts:21 * kind: function * core: hr * spec: (none) * summary: Build one manual (exempt) daily-hours entry row (HR-05-EN-12 / D4). Pure. * score: 4 ### function buildOversightSessionContent * file: src/cores/hr/templates/oversight-session-content.ts:106 * kind: function * core: hr * spec: (none) * summary: Construct a DocumentExportContent object representing a clinical oversight session for PF-64 PDF generation. * params: * data — OversightSessionData containing session metadata and content: - sessionId: unique session identifier - sessionDate: ISO date/time of the session - sessionType: session type identifier (e.g., "one\_on\_one") - durationMinutes: session duration in minutes - location: optional session location - status: session status string - oversightType: oversight classification - supervisor: OversightParticipant for the supervisor (name, optional signature fields) - supervisee: OversightParticipant for the supervisee (name, optional signature fields) - topicsCovered: array of topics discussed - supervisorNotes: optional supervisor notes - companyName: company name associated with the session * returns: DocumentExportContent containing title, subtitle, ordered sections (Session Details, Participants, optional Topics Covered, optional Supervisor Notes, Signatures), and metadata including a generated documentNumber and effectiveDate. * example: | const content = buildOversightSessionContent( sessionId: 'abc123def456', sessionDate: '2025-01-15T14:00:00Z', sessionType: 'one\_on\_one', durationMinutes: 45, location: 'Room 201', status: 'Completed', oversightType: 'clinical\_review', supervisor: name: 'Dr. Smith', signedAt: '2025-01-15T15:00:00Z' , supervisee: name: 'Jane Doe' , topicsCovered: \['Medication review', 'Care plan'], supervisorNotes: 'Follow-up required in two weeks.', companyName: 'Acme Health'); * score: 4 ### function buildPayStubContent * file: src/cores/hr/templates/pay-stub-content.ts:119 * kind: function * core: hr * spec: (none) * summary: Build a PF-64 DocumentExportContent representing a pay stub from structured payroll data.Constructs sections for employee information, hours breakdown, earnings breakdown, pay rates, and a confidentiality notice.The resulting object includes a title, a subtitle with the formatted pay period, sectioned content suitable for PF-64 rendering,and metadata containing a documentNumber (derived from pay date and employee number) and effectiveDate. * params: * data — Pay stub payload including employee, payPeriod, hours, earnings, rates, and companyName * returns: DocumentExportContent DocumentExportContent ready for PF-64 PDF generation * example: | const content = buildPayStubContent( employee: fullName: 'Jane Doe', employeeNumber: '123' , payPeriod: startDate: '2026-01-01', endDate: '2026-01-15', payDate: '2026-01-15' , hours: regular: 80, overtime: 5, pto: 0, other: 0 , earnings: regularPay: 2000, overtimePay: 200, ptoPay: 0, adjustments: 0, grossPay: 2200 , rates: baseRate: 25, overtimeRate: 37.5 , companyName: 'Acme, Inc.'); * score: 4 ### function buildPIPContent * file: src/cores/hr/templates/pip-content.ts:199 * kind: function * core: hr * spec: (none) * summary: Builds complete PIP document content * score: 4 ### function buildProliantSuggestRequestFromTargets * file: src/cores/hr/utils/proliantCandidateTargets.ts:38 * kind: function * core: hr * spec: (none) * summary: Build the AI request from rows + a map of already-resolved targets per family(resolved at the page via resolveTargets). Every registry family with targetscontributes candidates, so the model can suggest across all of them. Returnsnull when no unmapped row has resolved targets. * score: 4 ### function buildPunchInsert * file: src/cores/hr/lib/time/buildPunchInsert.ts:26 * kind: function * core: hr * spec: (none) * summary: Build the hr\_time\_punches insert payload; resolved\_timezone is stamped by the DB trigger. * score: 4 ### function buildQuarterlyLiabilityPayload * file: src/cores/hr/services/employer-taxes/publish-tax-event.ts:45 * kind: function * core: hr * spec: (none) * summary: Helper to build quarterly tax liability payload from Form 941 data. * score: 4 ### function buildSalaryChangeContent * file: src/cores/hr/templates/salary-change-content.ts:131 * kind: function * core: hr * spec: (none) * summary: Builds complete salary change notification content * score: 4 ### function buildSentimentPrompt * file: src/cores/hr/engagement/hooks/useSurveySentiment.ts:78 * kind: function * core: hr * spec: (none) * summary: Build the sentiment prompt from anonymous, aggregated comment text.Pure — exported for unit testing. Accepts already-de-identified commentstrings (the caller scopes to surveys / aggregate text andstrips identifiers); blank/whitespace-only entries are dropped so the modelonly sees real comments. * score: 4 ### function buildSeparationAgreementContent * file: src/cores/hr/templates/separation-agreement-content.ts:190 * kind: function * core: hr * spec: (none) * summary: Builds complete separation agreement content * score: 4 ### function buildTimesheetPdfModel * file: src/cores/hr/lib/time/timesheetPdfModel.ts:72 * kind: function * core: hr * spec: (none) * summary: Build the printable model for an employee's own timesheet. * params: * timesheet — The loaded timesheet (employee, period, daily entries, totals). * returns: A flat, PII-free model ready to feed into . * score: 4 ### function buildVarianceRows * file: src/cores/hr/components/wizards/payroll-run/hooks/reconciliationView\.ts:31 * kind: function * core: hr * spec: (none) * summary: Side-by-side Encore-expected vs Proliant-returned rows with tolerance flags. * score: 4 ### function buildW2FormData * file: src/cores/hr/services/w2/w2-form-builder.ts:26 * kind: function * core: hr * spec: (none) * summary: Build W-2 form data from aggregated employee data, employer config, and per-state wages. * params: * employeeData — Aggregated W-2 data for an employee * employerConfig — Employer tax configuration for the year * stateWages — Per-state wage/tax data from aggregation service * controlNumber — Optional control number (usually run sequence) * returns: W2FormData ready for storage * score: 4 ### function calculateACAFTE * file: src/cores/hr/benefits/lib/acaFte.ts:12 * kind: function * core: hr * spec: (none) * summary: Calculate full-time equivalent count from headcount inputs. * score: 4 ### function calculateAcuityBasedStaffing * file: src/cores/hr/utils/staffing-calculator.ts:184 * kind: function * core: hr * spec: (none) * summary: Acuity-based: staff = base + sum(count \* multiplier for each level) * score: 4 ### function calculateAllTaxes * file: src/cores/hr/services/tax-calculator.ts:394 * kind: function * core: hr * spec: (none) * summary: Calculate all taxes for an employee in a single call.Aggregates federal, state, and FICA calculations. * score: 4 ### function calculateArizonaTax * file: src/cores/hr/services/tax-calculator.ts:242 * kind: function * core: hr * spec: (none) * summary: Calculate Arizona state income tax.Arizona uses a flat rate system where employees elect a percentagefrom 0.5% to 3.5% (in 0.5% increments) on Form A-4.Alternatively, they can specify a flat dollar amount. * score: 4 ### function calculateAZSUTA * file: src/cores/hr/services/employer-taxes/suta-calculator.ts:43 * kind: function * core: hr * spec: (none) * summary: Calculate Arizona SUTA tax liability for a tax year.Tracks per-employee cumulative wages and applies wage base cap from employer config. * params: * supabase — Supabase client * organizationId — Organization ID * taxYear — Tax year to calculate * employerConfig — Employer tax configuration (contains org-specific SUTA rate) * returns: SUTA calculation result with per-employee breakdown * score: 4 ### function calculateBatchRiskScores * file: src/cores/hr/analytics/utils/retentionRiskScore.ts:287 * kind: function * core: hr * spec: (none) * summary: Calculate risk scores for multiple employees.Returns sorted by score descending (highest risk first). * score: 4 ### function calculateBenefitsValue * file: src/cores/hr/compensation/utils/calculateBenefitsValue.ts:11 * kind: function * core: hr * spec: (none) * summary: Calculate the annual benefits value for an employeeBased on active benefits enrollments: SUM(employer\_contribution \* 12) * params: * employeeId — The employee ID * organizationId — The organization ID * returns: The calculated annual benefits value * score: 4 ### function calculateCensusBasedStaffing * file: src/cores/hr/utils/staffing-calculator.ts:120 * kind: function * core: hr * spec: (none) * summary: Census-based: staff = base + ceil(census / ratio) * score: 4 ### function calculateCostBreakdown * file: src/cores/hr/benefits/utils/costCalculator.ts:12 * kind: function * core: hr * spec: (none) * summary: Calculate total cost breakdown from selected plans * score: 4 ### function calculateDeadlines * file: src/cores/hr/services/pay-schedule-calculator.ts:148 * kind: function * core: hr * spec: (none) * summary: Calculate deadlines from a pay date * score: 4 ### function calculateDeductions * file: src/cores/hr/services/deduction-calculator.ts:31 * kind: function * core: hr * spec: (none) * summary: Calculate all deductions for an employee's pay period.Order of operations:1. Pre-tax deductions (reduce taxable income)2. Taxes are calculated separately3. Post-tax deductions4. Garnishments (sorted by priority, respecting Title III limits) * params: * params — Deduction calculation parameters * returns: DeductionResult with categorized deductions and totals * score: 4 ### function calculateEngagementScore * file: src/cores/hr/engagement/utils/index.ts:13 * kind: function * core: hr * spec: (none) * summary: Calculate engagement score from survey responsesScores are typically on a 1-5 scale, normalized to 0-100 * score: 4 ### function calculateEntryHash * file: src/cores/hr/services/nacha/format-utils.ts:111 * kind: function * core: hr * spec: (none) * summary: Calculate the NACHA hash from an array of routing numbers.The hash is the sum of all entry routing numbers, modulo 10^10. * params: * routingNumbers — Array of routing numbers to hash * returns: 10-digit hash string * score: 4 ### function calculateExpectedPTORate * file: src/cores/hr/utils/pto-normalization.ts:38 * kind: function * core: hr * spec: (none) * summary: Calculate expected PTO rate for a given periodBased on approved leave requests vs total scheduled hours * score: 4 ### function calculateExpiresAt * file: src/cores/hr/analytics/utils/analyticsCache.ts:199 * kind: function * core: hr * spec: (none) * summary: Calculate expiration timestamp based on TTL minutes. * score: 4 ### function calculateFederalTax * file: src/cores/hr/services/tax-calculator.ts:125 * kind: function * core: hr * spec: (none) * summary: Calculate federal income tax using IRS Pub 15-T percentage method.Steps:1. Subtract pre-tax deductions from gross pay2. Annualize the result3. Apply Step 2 adjustments (dependent credits, other income, deductions)4. Look up tax bracket and calculate tax5. De-annualize to per-period amount6. Add additional withholding * score: 4 ### function calculateFICA * file: src/cores/hr/services/tax-calculator.ts:284 * kind: function * core: hr * spec: (none) * summary: Calculate FICA taxes (Social Security and Medicare).Social Security:- 6.2% employee rate (default)- Wage base limit (e.g., $168,600 for 2024, $176,100 for 2025)- Stop withholding when YTD exceeds wage baseMedicare:- 1.45% employee rate (default)- No wage base limit- Additional 0.9% on wages over threshold ($200K single, $250K married) * score: 4 ### function calculateFixedStaffing * file: src/cores/hr/utils/staffing-calculator.ts:213 * kind: function * core: hr * spec: (none) * summary: Fixed: constant staff count * score: 1 ### function calculateFormulaBasedStaffing * file: src/cores/hr/utils/staffing-calculator.ts:231 * kind: function * core: hr * spec: (none) * summary: Formula-based: evaluate a mathematical formula with variablesSupports: +, -, \*, /, parentheses, and variable names * score: 4 ### function calculateFUTA * file: src/cores/hr/services/employer-taxes/futa-calculator.ts:43 * kind: function * core: hr * spec: (none) * summary: Calculate FUTA tax liability for a tax year.Tracks per-employee cumulative wages and applies \$7,000 wage base cap. * params: * supabase — Supabase client * organizationId — Organization ID * taxYear — Tax year to calculate * employerConfig — Employer tax configuration * returns: FUTA calculation result with per-employee breakdown * score: 4 ### function calculateNetPay * file: src/cores/hr/services/deduction-calculator.ts:271 * kind: function * core: hr * spec: (none) * summary: Calculate net pay after all deductions and taxes. * score: 4 ### function calculateNetPay * file: src/cores/hr/services/tax-calculator.ts:347 * kind: function * core: hr * spec: (none) * summary: Calculate net pay after all taxes and deductions.Returns an error if net pay would be negative. * score: 4 ### function calculatePayPeriods * file: src/cores/hr/services/pay-schedule-calculator.ts:220 * kind: function * core: hr * spec: (none) * summary: Calculate pay periods from a schedule * params: * schedule — The pay schedule configuration * startDate — The date to start calculating from * count — Number of periods to calculate * holidays — Array of holiday dates for adjustment * score: 4 ### function calculatePerformanceScore * file: src/cores/hr/succession/utils/readinessScore.ts:53 * kind: function * core: hr * spec: (none) * summary: Maps a performance rating to a 0-100 score.- null/undefined = 0 (penalize missing data — no review on file)- unrecognized string = 50 (neutral default for unknown rating scales) * score: 4 ### function calculatePerPaycheck * file: src/cores/hr/benefits/utils/costCalculator.ts:54 * kind: function * core: hr * spec: (none) * summary: Calculate per-paycheck amount based on payroll frequency. * score: 4 ### function calculatePTOHoursForPeriod * file: src/cores/hr/utils/pto-normalization.ts:51 * kind: function * core: hr * spec: (none) * summary: Calculate PTO hours for a specific date range * score: 4 ### function calculateRatioBasedStaffing * file: src/cores/hr/utils/staffing-calculator.ts:146 * kind: function * core: hr * spec: (none) * summary: Ratio-based: staff = numerator / denominator with rounding * score: 4 ### function calculateReadinessLevel * file: src/cores/hr/succession/utils/readinessScore.ts:41 * kind: function * core: hr * spec: (none) * summary: Provides calculate readiness level functionality. * score: 4 ### function calculateReadinessScore * file: src/cores/hr/succession/utils/readinessScore.ts:101 * kind: function * core: hr * spec: (none) * summary: Provides calculate readiness score functionality. * score: 4 ### function calculateResponseRate * file: src/cores/hr/engagement/utils/index.ts:24 * kind: function * core: hr * spec: (none) * summary: Calculate response rate for a survey * score: 4 ### function calculateRetentionRiskScore * file: src/cores/hr/analytics/utils/retentionRiskScore.ts:24 * kind: function * core: hr * spec: (none) * summary: Calculate retention risk score for an employee. * params: * input — Employee data for risk calculation * weights — Optional custom weights (uses defaults if not provided) * returns: Score from 0 (no risk) to 100 (highest risk) * score: 4 ### function calculateRollingPTORate * file: src/cores/hr/utils/pto-normalization.ts:131 * kind: function * core: hr * spec: (none) * summary: Calculate a rolling average PTO rate from historical patterns * params: * patterns — Array of PTO patterns to average * \_lookbackDays — Reserved for future date-range filtering (currently unused) * score: 4 ### function calculateSkillsScore * file: src/cores/hr/succession/utils/readinessScore.ts:64 * kind: function * core: hr * spec: (none) * summary: Provides calculate skills score functionality. * score: 4 ### function calculateStaffingFromDriver * file: src/cores/hr/utils/staffing-calculator.ts:56 * kind: function * core: hr * spec: (none) * summary: Calculate staffing from a single driver * score: 4 ### function calculateSupplementalFederalTax * file: src/cores/hr/services/tax-calculator.ts:206 * kind: function * core: hr * spec: (none) * summary: Calculate federal tax on supplemental wages (bonuses, commissions, etc.)using the flat rate method per IRS rules. * score: 4 ### function calculateTimeEntryAmount * file: src/cores/hr/lib/contractor-workforce-utils.ts:16 * kind: function * core: hr * spec: (none) * summary: Calculates total amount for a time entry (hours × rate). * params: * hours — Hours worked (must be non-negative). * rate — Hourly rate in dollars (must be non-negative). * returns: The computed amount, rounded to 2 decimal places. * score: 4 ### function calculateTotalCompensation * file: src/cores/hr/compensation/utils/calculateTotalCompensation.ts:6 * kind: function * core: hr * spec: (none) * summary: Calculate total compensation from individual components * score: 4 ### function calculateTotalFromStatement * file: src/cores/hr/compensation/utils/calculateTotalCompensation.ts:31 * kind: function * core: hr * spec: (none) * summary: Calculate total compensation from a statement record * score: 4 ### function calculateW3FromW2s * file: src/cores/hr/services/w2/w3-calculator.ts:42 * kind: function * core: hr * spec: (none) * summary: Calculate W-3 transmittal totals from an array of W-2 forms. * params: * w2Forms — Array of W-2 form data * employerInfo — Employer tax configuration or W3EmployerInfo * controlNumber — Optional control number for the W-3 * returns: W3FormData with totals * score: 4 ### function canEditTimesheet * file: src/cores/hr/lib/time/canEditTimesheet.ts:23 * kind: function * core: hr * spec: (none) * summary: Centralizes timesheet punch correction gating (HR-05-EN-10). * score: 4 ### function canFinalizePayroll * file: src/cores/hr/services/deduction-calculator.ts:288 * kind: function * core: hr * spec: (none) * summary: Check if a payroll run can be finalized (no negative net pay). * score: 4 ### function caseDocumentsQueryKey * file: src/cores/hr/employee-relations/hooks/useCaseDocuments.ts:46 * kind: function * core: hr * spec: HR-14 * summary: Builds the React Query cache key for an employee-relations case's documents,scoped by organization, case type, and case ID. * params: * entityType — The case type the documents belong to. * entityId — The case record ID. * orgId — The active organization ID, included for tenant scoping. * returns: A stable, readonly query-key tuple. * score: 5 ### function checkGeofence * file: src/cores/hr/utils/geofence-utils.ts:37 * kind: function * core: hr * spec: (none) * summary: Check if a punch location is inside a geofence. * score: 4 ### function clearAllCaches * file: src/cores/hr/lib/staffingCalculationCache.ts:179 * kind: function * core: hr * spec: (none) * summary: Clears all cached entries. * score: 1 ### function clearDraft * file: src/cores/hr/benefits/utils/enrollmentDraft.ts:65 * kind: function * core: hr * spec: (none) * summary: Clear saved draft * score: 1 ### function computeCompleteness * file: src/cores/hr/services/eeo1/completeness.ts:33 * kind: function * core: hr * spec: (none) * summary: Compute the EEO-1 completeness score against a threshold.A zero-headcount org returns 0% and is treated as below threshold (nothing to file). * score: 4 ### function computeEverifyDeadlineAt * file: src/cores/hr/lib/everify-business-days.ts:36 * kind: function * core: hr * spec: (none) * summary: Computes the E-Verify case creation deadline: N business days afterthe I-9 Section 2 completion date. * params: * i9CompletedAt — The date I-9 Section 2 was completed * businessDays — Number of business days (default: 3 per USCIS requirement) * holidays — Array of holiday date strings in YYYY-MM-DD format * returns: The deadline Date (end of the Nth business day) * score: 4 ### function computeMappingReadiness * file: src/cores/hr/utils/proliantTargetRegistry.ts:93 * kind: function * core: hr * spec: (none) * summary: Pure hard-gate predicate. A family is "ready" when every pulled code in it ismapped (N/A counts as mapped — it writes is\_mapped=true). Activate is allowedonly when every REQUIRED family that has pulled codes is ready. Requiredfamilies with zero pulled codes do not block (nothing to map). * score: 4 ### function computeOverallScore * file: src/cores/hr/utils/interviewScorecard.ts:20 * kind: function * core: hr * spec: (none) * summary: Computes the weighted average overall score for a scorecard.If any required competency is missing a score, returns .When no weights are defined, uses equal weighting. * params: * competencies — Template competency definitions (with optional weights). * scores — Per-competency scores submitted by the interviewer. * returns: Weighted average rounded to 2 decimals, or null if incomplete. * score: 4 ### function computeShiftDurationHours * file: src/cores/hr/utils/shiftDuration.ts:30 * kind: function * core: hr * spec: (none) * summary: Compute a shift's length in hours from its start and end wall-clock times.- End at or before start is treated as an overnight shift (adds 24h).- Missing or unparseable times fall back to (8), matching the prior "default 8 hours if not specified" behavior of the overtime tracker. * score: 4 ### function computeSkillMatch * file: src/cores/hr/utils/internalMobility/skillMatch.ts:29 * kind: function * core: hr * spec: (none) * summary: Pure helper: simple coverage ratio. If no required skills aredefined, returns a neutral score of 0 with socallers can decide whether to surface the score at all. * score: 4 ### function countRecommendations * file: src/cores/hr/utils/interviewScorecard.ts:58 * kind: function * core: hr * spec: (none) * summary: Counts recommendation occurrences across submitted scorecards. * score: 4 ### function createBlankTimesheet * file: src/cores/hr/lib/time/timesheetRpc.ts:40 * kind: function * core: hr * spec: (none) * summary: Create an empty draft timesheet with no punches (HR-05 Phase 1 / D4). Idempotent per period. * score: 4 ### function createOnboardingForHire * file: src/cores/hr/services/hiring/createOnboardingForHire.ts:38 * kind: function * core: hr * spec: (none) * summary: Create onboarding instance for a newly hired employee.This function:1. Checks if auto\_create\_onboarding is enabled in hr\_module\_settings2. Gets the default\_onboarding\_template\_id from settings3. Creates an onboarding instance using the RPC functionIf auto-creation is disabled or no template is configured,the function returns success with skipped=true. * score: 4 ### function createPayStubsFromRun * file: src/cores/hr/services/createPayStubsFromRun.ts:223 * kind: function * core: hr * spec: (none) * summary: Create pay stub records from a finalized payroll run. * params: * payrollRunId — The ID of the finalized payroll run * organizationId — The organization ID * returns: Result with counts of created/skipped stubs * score: 4 ### function createW2Correction * file: src/cores/hr/services/w2/w2-distribution.ts:181 * kind: function * core: hr * spec: (none) * summary: Mark a W-2C correction and link to original. * params: * supabase — Supabase client * organizationId — Organization ID for multi-tenant scoping * originalItemId — ID of the original form item * correctedFormData — Corrected form data * userId — User creating the correction * score: 4 ### function csvFromInvokeResult * file: src/cores/hr/lib/time/triggerCsvDownload.ts:26 * kind: function * core: hr * spec: (none) * summary: Normalize a Supabase result into its CSV payload.- When is a string, it is treated as the raw CSV body.- When is the edge-function envelope , the field is used and carried through when present.Pure and hermetically testable — no DOM access. * score: 4 ### function daysUntilContractExpiry * file: src/cores/hr/lib/contractor-workforce-utils.ts:51 * kind: function * core: hr * spec: (none) * summary: Returns the number of days until a contract expires. * params: * endDate — The contract end date (ISO string or Date). * referenceDate — The date to check against (defaults to now). * returns: Days remaining (negative if expired), or null if endDate is invalid. * score: 4 ### function deleteCalendarEventsForSchedule * file: src/cores/hr/services/pay-calendar-events.ts:103 * kind: function * core: hr * spec: (none) * summary: Delete all calendar events for a schedule * score: 4 ### function deriveIsClockedIn * file: src/cores/hr/lib/time/deriveIsClockedIn.ts:10 * kind: function * core: hr * spec: (none) * summary: Pure helper: derives whether a user is currently clocked in based on theirmost recent punch record.A user is considered clocked in when their last punch is an 'in' (justclocked in) or 'break\_end' (returned from break — logically still on theclock). All other types — 'out', 'break\_start', or no punch at all — meanthe user is not clocked in. * score: 4 ### function detectHrisTemplate * file: src/cores/hr/utils/hrisTemplateDetector.ts:201 * kind: function * core: hr * spec: (none) * summary: Detect known HRIS export format from CSV headers and return provider-specific column mappings. * params: * headers — Raw CSV header strings from the uploaded file. * returns: Detection result with format, confidence, and mappings. If no format is detected, and are null, confidence is 0, and mappings is empty. * score: 4 ### function detectLocationMismatch * file: src/cores/hr/lib/time/detectLocationMismatch.ts:25 * kind: function * core: hr * spec: (none) * summary: HR-05 Phase 0 — true when a clock punch's captured geo is farther than theallowed radius from the punch site.Geo and site coordinates are both optional (geolocation may be denied, or asite may have no coordinates); a mismatch can only be asserted when all fourare present, so anything missing returns false (no false-positive exception).Reuses the geofence haversine so this and the block/warn geofence agree ondistance. * score: 4 ### function determineTrendDirection * file: src/cores/hr/engagement/utils/index.ts:32 * kind: function * core: hr * spec: (none) * summary: Determine trend direction based on score comparison * score: 4 ### function distribute1099NECToContractors * file: src/cores/hr/services/1099-nec/nec-1099-distribution.ts:22 * kind: function * core: hr * spec: (none) * summary: Distribute 1099-NEC forms to contractors by creating hr\_tax\_documents entries. * score: 4 ### function distributeW2ToEmployees * file: src/cores/hr/services/w2/w2-distribution.ts:42 * kind: function * core: hr * spec: (none) * summary: Distribute W-2 forms to employees by creating hr\_tax\_documents entries. * params: * supabase — Supabase client * run — The finalized tax form run * formItems — The W-2 form items to distribute * userId — User performing the distribution * returns: Distribution result with counts and errors * score: 4 ### function downloadCheckPdf * file: src/cores/hr/services/check-pdf-generator.ts:88 * kind: function * core: hr * spec: (none) * summary: Download the generated PDF * score: 1 ### function downloadCredentialTemplate * file: src/cores/hr/utils/credentialCsvTemplate.ts:49 * kind: function * core: hr * spec: (none) * summary: Triggers a download of the credential CSV template * score: 4 ### function downloadCsv * file: src/cores/hr/lib/eeoCsvExport.ts:95 * kind: function * core: hr * spec: (none) * summary: Trigger a browser download of as a UTF-8 file named ,via a transient object-URL anchor that is revoked immediately after the click.Browser-only (relies on /); used to export EEO report metrics. * score: 4 ### function downloadCSV * file: src/cores/hr/services/new-hire/new-hire-csv-export.ts:49 * kind: function * core: hr * spec: (none) * summary: Download CSV as a file in the browser. * score: 4 ### function downloadEmployeeTemplate * file: src/cores/hr/utils/employeeCsvParser.ts:371 * kind: function * core: hr * spec: (none) * summary: Initiates a browser download of the employee CSV template file. Generates the sample employee CSV content and triggers a download named by creating a temporary blob URL and anchor element. * returns: void No return value. * example: | // In a browser environment:downloadEmployeeTemplate(); * score: 4 ### function downloadSessionTemplate * file: src/cores/hr/utils/oversightSessionCsvTemplate.ts:51 * kind: function * core: hr * spec: (none) * summary: Triggers a download of the session CSV template * score: 4 ### function DriverConfigEditor * file: src/cores/hr/components/workload-drivers/DriverConfigEditor.tsx:31 * kind: function * core: hr * spec: (none) * summary: Utility for driver config editor. * score: 1 ### function elapsedLabel * file: src/cores/hr/components/wizards/payroll-run/hooks/pollState.ts:47 * kind: function * core: hr * spec: (none) * summary: "Mm Ss" elapsed label since ; '' when unknown. * score: 4 ### function endPositionAssignment * file: src/cores/hr/services/positions/endPositionAssignment.ts:19 * kind: function * core: hr * spec: (none) * summary: Service: end a single position assignment and, if no active assignmentsremain and is enabled for the org, transitionthe parent position to . Writes a row to .Pure function (no React/hooks) so it can be reused by the React hook and by HR-01 termination handlers / eventlisteners. * score: 4 ### function ensureIdempotencyKey * file: src/cores/hr/components/wizards/payroll-run/hooks/runGuards.ts:28 * kind: function * core: hr * spec: (none) * summary: AC-6 / NFR-1: return the run's existing idempotency key unchanged so a retryreuses it (never double-submits); only mint a new key when none exists yet. * score: 4 ### function escapeCsvField * file: src/cores/hr/utils/internalMobility/complianceExport.ts:36 * kind: function * core: hr * spec: (none) * summary: RFC 4180 CSV-field escaping. * score: 1 ### function evaluateEligibility * file: src/cores/hr/benefits/lib/eligibility.ts:13 * kind: function * core: hr * spec: (none) * summary: Evaluates an employee against a single eligibility rule * score: 4 ### function evaluateFilingGate * file: src/cores/hr/services/eeo1/completeness.ts:61 * kind: function * core: hr * spec: (none) * summary: Decide whether an EEO-1 export may proceed.- At/above threshold → always allowed.- Below threshold → allowed only when the filer has acknowledged the gap. * score: 4 ### function evaluateMultipleRules * file: src/cores/hr/benefits/lib/eligibility.ts:94 * kind: function * core: hr * spec: (none) * summary: Evaluates an employee against multiple rules and returns aggregated results * score: 4 ### function exceptionTypeToPunchType * file: src/cores/hr/lib/time/exceptionPunchDefaults.ts:5 * kind: function * core: hr * spec: (none) * summary: Infer missed punch type from exception for default dialog selection. * score: 4 ### function exportTimesheetPdf * file: src/cores/hr/lib/time/timesheetPdf.ts:18 * kind: function * core: hr * spec: (none) * summary: Build and download a PDF of the given timesheet. * params: * timesheet — The loaded timesheet to export. * score: 4 ### function extractAnonymousComments * file: src/cores/hr/engagement/hooks/useSurveySentiment.ts:48 * kind: function * core: hr * spec: (none) * summary: Extract anonymous free-text comments from survey responses' .Pure — exported for unit testing. ONLY the free-text answer *values* arepulled (string values longer than ); no questionkeys, employee ids, or any other respondent metadata are read, so nothingthat could re-identify a respondent leaves this function. Callers must stillscope to surveys before calling. * score: 4 ### function extractNewHireData * file: src/cores/hr/services/new-hire/new-hire-extraction.ts:68 * kind: function * core: hr * spec: (none) * summary: Extract new hire data for AZ DES reporting.Queries hr\_employees for recent hires and joins with employer config. * score: 4 ### function extractRiskFactors * file: src/cores/hr/analytics/utils/retentionRiskScore.ts:169 * kind: function * core: hr * spec: (none) * summary: Extract contributing factors for a risk score with impact levels.Used for displaying risk details to users. * score: 4 ### function filterApplicableDrivers * file: src/cores/hr/utils/driver-aggregation.ts:158 * kind: function * core: hr * spec: (none) * summary: Get applicable drivers for a given scopeFilters and sorts drivers by applicability and priority * score: 4 ### function formatAmount * file: src/cores/hr/services/nacha/format-utils.ts:50 * kind: function * core: hr * spec: (none) * summary: Format a cent amount as a 10-character zero-padded string.NACHA amounts are in cents with no decimal point. * params: * cents — The amount in cents (must be non-negative integer = 9,999,999,999) * returns: 10-character zero-padded amount string * score: 4 ### function formatBreakDurationMinutes * file: src/cores/hr/lib/time/timesheetEntryDisplay.ts:2 * kind: function * core: hr * spec: (none) * summary: Format break minutes for timesheet daily rows (HR-05). * score: 4 ### function formatClassification * file: src/cores/hr/lib/contractor-workforce-utils.ts:82 * kind: function * core: hr * spec: (none) * summary: Formats a classification value for display. * params: * classification — The raw classification value. * returns: A human-friendly label. * score: 4 ### function formatContractorStatus * file: src/cores/hr/lib/contractor-workforce-utils.ts:65 * kind: function * core: hr * spec: (none) * summary: Formats a contractor's status for display. * params: * status — The raw status value from the database. * returns: A human-friendly label. * score: 4 ### function formatDate * file: src/cores/hr/services/nacha/format-utils.ts:83 * kind: function * core: hr * spec: (none) * summary: Format a date for NACHA file header/batch headers.NACHA uses YYMMDD format. * params: * date — The date to format * returns: 6-character date string in YYMMDD format * score: 4 ### function formatEntryTotalHours * file: src/cores/hr/lib/time/timesheetEntryDisplay.ts:8 * kind: function * core: hr * spec: (none) * summary: Format stored total hours for timesheet daily rows. * score: 4 ### function formatGapForPrompt * file: src/cores/hr/hooks/skills/useSkillGapCoach.ts:49 * kind: function * core: hr * spec: (none) * summary: Render a single gap into the compact line the prompt sends.Development data only — skill name, required level, and current level.Pure — exported for unit testing and reuse. * score: 4 ### function formatJobDescription * file: src/cores/hr/hooks/positions/useGenerateJobDescriptionDraft.ts:43 * kind: function * core: hr * spec: (none) * summary: Render a structured JD draft into editable plain text for a textarea.Pure — exported for unit testing and reuse. * score: 4 ### function formatNextSession * file: src/cores/hr/self-service/utils/oversightUtils.ts:45 * kind: function * core: hr * spec: (none) * summary: Formats a next session date into a human-readable relative string * score: 4 ### function formatPayPeriod * file: src/cores/hr/services/pay-schedule-calculator.ts:286 * kind: function * core: hr * spec: (none) * summary: Format a pay period for display * score: 4 ### function formatResponseRate * file: src/cores/hr/engagement/utils/index.ts:78 * kind: function * core: hr * spec: (none) * summary: Format response rate for display * score: 4 ### function formatRoutingNumber * file: src/cores/hr/utils/routing-number.ts:79 * kind: function * core: hr * spec: (none) * summary: Formats a routing number with a dash for display (XXX-XXX-XXX). * params: * routingNumber — The raw 9-digit routing number * returns: Formatted routing number or original if invalid length * score: 4 ### function formatRoutingTransit * file: src/cores/hr/services/nacha/format-utils.ts:68 * kind: function * core: hr * spec: (none) * summary: Format a routing number with check digit removed (8 digits).NACHA entry detail records use the first 8 digits of the routing number. * params: * routingNumber — The 9-digit routing number * returns: 8-character routing number (without check digit) * score: 4 ### function formatTime * file: src/cores/hr/services/nacha/format-utils.ts:97 * kind: function * core: hr * spec: (none) * summary: Format a time for NACHA file header.NACHA uses HHMM format in 24-hour time. * params: * date — The date/time to format * returns: 4-character time string in HHMM format * score: 4 ### function formatW2Currency * file: src/cores/hr/services/w2/w2-form-builder.ts:151 * kind: function * core: hr * spec: (none) * summary: Format currency for display on W-2. * score: 4 ### function formatW2EmployeeName * file: src/cores/hr/services/w2/w2-form-builder.ts:158 * kind: function * core: hr * spec: (none) * summary: Format employee name for W-2 (Last, First Middle Suffix). * score: 4 ### function formatW3ValidationError * file: src/cores/hr/services/w2/w3-calculator.ts:281 * kind: function * core: hr * spec: (none) * summary: Format a W-3 validation error for display. * score: 4 ### function generateBenefitsStatementData * file: src/cores/hr/benefits/lib/benefitsStatementGenerator.ts:82 * kind: function * core: hr * spec: (none) * summary: Generate benefits statement data for an employee and period. * score: 4 ### function generateCalendarEvents * file: src/cores/hr/services/pay-calendar-events.ts:42 * kind: function * core: hr * spec: (none) * summary: Generate calendar events for a date range based on pay schedule * score: 4 ### function generateCheckBatchPdf * file: src/cores/hr/services/check-pdf-generator.ts:20 * kind: function * core: hr * spec: (none) * summary: Generate a PDF document containing all checks in a batch.Returns Blob for download. * score: 4 ### function generateComparisonPdf * file: src/cores/hr/components/ats/scorecards/scorecardPdf.ts:123 * kind: function * core: hr * spec: (none) * summary: Generates a PDF blob for a candidate comparison grid. * params: * data — Aggregate scorecard data for multiple candidates * returns: PDF blob * score: 4 ### function generateControlNumber * file: src/cores/hr/services/w2/w2-form-builder.ts:144 * kind: function * core: hr * spec: (none) * summary: Generate a control number for a W-2 item.Format: YYYY-NNNNN (year + 5-digit sequence) * score: 4 ### function generateCredentialCsvTemplate * file: src/cores/hr/utils/credentialCsvTemplate.ts:34 * kind: function * core: hr * spec: (none) * summary: Generates a sample CSV template string for credential imports * score: 4 ### function generateEeo1Matrix * file: src/cores/hr/services/eeo1/eeo1Service.ts:44 * kind: function * core: hr * spec: (none) * summary: Run the EEO-1 matrix + completeness for an org snapshot. * score: 4 ### function generateEmployeeCsvTemplate * file: src/cores/hr/utils/employeeCsvParser.ts:324 * kind: function * core: hr * spec: (none) * summary: Generate a CSV template string for importing employee records. Creates a CSV-formatted string containing a header row of common employee fields and a single sample data row to illustrate expected values and formatting. * returns: A CSV string with headers and one sample row (comma-separated, newline-terminated between header and row). * example: | const csv = generateEmployeeCsvTemplate();// csv can be saved to a file or offered for download as a template * score: 4 ### function generateNewHireCSV * file: src/cores/hr/services/new-hire/new-hire-csv-export.ts:17 * kind: function * core: hr * spec: (none) * summary: Generate CSV string for AZ DES new hire reporting.SECURITY: Only includes SSN last 4 digits. * score: 4 ### function generateRoleMappings * file: src/cores/hr/utils/employeeCsvParser.ts:507 * kind: function * core: hr * spec: (none) * summary: Group employees by job title patterns and generate role mappings.Combines similar titles into pattern groups for easier role assignment. * score: 4 ### function generateScorecardPdf * file: src/cores/hr/components/ats/scorecards/scorecardPdf.ts:34 * kind: function * core: hr * spec: (none) * summary: Generates a PDF blob for a single interview scorecard. * params: * data — Scorecard data including competencies and rating scale * returns: PDF blob * score: 4 ### function generateSessionCsvTemplate * file: src/cores/hr/utils/oversightSessionCsvTemplate.ts:36 * kind: function * core: hr * spec: (none) * summary: Generates a sample CSV template string for session imports * score: 4 ### function generateWorkEmail * file: src/cores/hr/utils/email-generation.ts:40 * kind: function * core: hr * spec: (none) * summary: Generate a work email from employee name and domain. * params: * firstName — Employee's first name * lastName — Employee's last name * domain — Organization's email domain * returns: Generated email address (firstname.lastnamedomain) * example: | generateWorkEmail('John', 'Doe', 'acme.com')// = 'john.doeacme.com'generateWorkEmail('José', "O'Brien", 'acme.com')// = 'jose.obrienacme.com' * score: 4 ### function GeolocationPrompt * file: src/cores/hr/components/time/GeolocationPrompt.tsx:13 * kind: function * core: hr * spec: (none) * summary: Utility for geolocation prompt. * score: 1 ### function getApprovalStatusVariant * file: src/cores/hr/lib/contractor-workforce-utils.ts:98 * kind: function * core: hr * spec: (none) * summary: Determines the CSS variant for an approval status badge. * params: * status — The approval status. * returns: A variant key suitable for Badge component. * score: 4 ### function getCachedAnalytics * file: src/cores/hr/analytics/utils/analyticsCache.ts:27 * kind: function * core: hr * spec: (none) * summary: Retrieve cached analytics data if not expired. * params: * organizationId — Organization UUID * cacheKey — Unique cache key (e.g., 'dashboard\_summary') * cacheType — Type of cache entry * returns: Cached data or null if not found/expired * score: 4 ### function getCachedCensusData * file: src/cores/hr/lib/staffingCalculationCache.ts:132 * kind: function * core: hr * spec: (none) * summary: Retrieves cached census counts for caller use. * score: 4 ### function getCachedPtoPatterns * file: src/cores/hr/lib/staffingCalculationCache.ts:151 * kind: function * core: hr * spec: (none) * summary: Retrieves cached pto patterns data for caller use. * score: 4 ### function getCachesByType * file: src/cores/hr/analytics/utils/analyticsCache.ts:72 * kind: function * core: hr * spec: (none) * summary: Get all cached entries for an organization by type. * score: 4 ### function getComplianceLabel * file: src/cores/hr/self-service/utils/oversightUtils.ts:29 * kind: function * core: hr * spec: (none) * summary: Returns a human-readable label for a compliance status * score: 4 ### function getComplianceVariant * file: src/cores/hr/self-service/utils/oversightUtils.ts:13 * kind: function * core: hr * spec: (none) * summary: Returns the badge variant for a compliance status * score: 4 ### function getCreditReductionRate * file: src/cores/hr/services/employer-taxes/constants.ts:98 * kind: function * core: hr * spec: (none) * summary: Get the credit reduction rate for a state (0 for most states).NOTE: Only Arizona ('AZ') is explicitly supported (returns 0).For other states in CREDIT\_REDUCTION\_STATES\_2026, implement per-staterates from DOL announcements at:[https://oui.doleta.gov/unemploy/futa\_credit.asp](https://oui.doleta.gov/unemploy/futa_credit.asp) * score: 4 ### function getCustomFieldNumber * file: src/cores/hr/pages/integrations/proliantCustomFields.ts:14 * kind: function * core: hr * spec: (none) * summary: Read a numeric custom field, defaulting to 0 when absent or non-numeric. * score: 4 ### function getCustomFieldString * file: src/cores/hr/pages/integrations/proliantCustomFields.ts:7 * kind: function * core: hr * spec: (none) * summary: Proliant integration accessors. Held in a non-component moduleso exports only components and stays Fast Refreshfriendly. * score: 4 ### function getCycleTypeLabel * file: src/cores/hr/constants/performance.ts:183 * kind: function * core: hr * spec: (none) * summary: Get cycle type label * score: 1 ### function getDefaultBufferRate * file: src/cores/hr/utils/pto-normalization.ts:150 * kind: function * core: hr * spec: (none) * summary: Default buffer rates by day of weekFridays and weekends typically have higher PTO * score: 4 ### function getDefaultOnboardingPhases * file: src/cores/hr/self-service/utils/onboardingUtils.ts:64 * kind: function * core: hr * spec: (none) * summary: Get default onboarding phases/timelineStatus logic:- 'completed' if daysElapsed endDay- 'current' if daysElapsed = startDay && daysElapsed = endDay- 'upcoming' otherwise * score: 4 ### function getDefaultTimesheetPeriod * file: src/cores/hr/lib/time/defaultTimesheetPeriod.ts:52 * kind: function * core: hr * spec: (none) * summary: Default period for new timesheet dialog: current in-progress period, else most recent. * score: 4 ### function getEmployeeListQueryKey * file: src/cores/hr/hooks/employees/useEmployeeList.ts:22 * kind: function * core: hr * spec: (none) * summary: Build the canonical TanStack Query key for .Exported so prefetchers (and tests) can target the same cache entry. * score: 4 ### function getEmployeeProfileId * file: src/cores/hr/employee-relations/utils/notifications.ts:159 * kind: function * core: hr * spec: (none) * summary: Get profile ID from employee IDReturns null if employee not found or on error (logs the error) * score: 4 ### function getEngagementScoreStatus * file: src/cores/hr/engagement/utils/index.ts:64 * kind: function * core: hr * spec: (none) * summary: Get engagement score status label * score: 4 ### function getExceptionDescription * file: src/cores/hr/components/time/ExceptionTypeBadge.tsx:92 * kind: function * core: hr * spec: (none) * summary: Provides get exception description functionality. * score: 4 ### function getExceptionLabel * file: src/cores/hr/components/time/ExceptionTypeBadge.tsx:99 * kind: function * core: hr * spec: (none) * summary: Provides get exception label functionality. * score: 4 ### function getFCRAComplianceStatus * file: src/cores/hr/hooks/ats/useFCRAWorkflow\.ts:272 * kind: function * core: hr * spec: (none) * summary: Calculate FCRA compliance status * score: 4 ### function getGrievanceTargetResolutionDate * file: src/cores/hr/employee-relations/lib/grievanceCustomFields.ts:6 * kind: function * core: hr * spec: (none) * summary: Reads target resolution date stored in grievance custom\_fields (no dedicated column). * score: 4 ### function getGuideSignedUrl * file: src/cores/hr/benefits/hooks/useBenefitsGuides.ts:232 * kind: function * core: hr * spec: (none) * summary: Get a signed URL for a guide's PDF file. * params: * storagePath — The storage path of the guide file. * expiresIn — URL expiration in seconds (default: 3600). * score: 4 ### function getHistoricalPTOPattern * file: src/cores/hr/utils/pto-normalization.ts:106 * kind: function * core: hr * spec: (none) * summary: Get historical PTO pattern for a specific dateMatches by day of week and month for seasonal patterns * score: 4 ### function getInvestigationTargetCompletionDate * file: src/cores/hr/employee-relations/lib/investigationPayload.ts:76 * kind: function * core: hr * spec: (none) * summary: Reads target completion from the row or legacy custom\_fields storage. * score: 4 ### function getLastClosedPayPeriod * file: src/cores/hr/lib/time/defaultTimesheetPeriod.ts:67 * kind: function * core: hr * spec: (none) * summary: Last fully-elapsed pay period: the most recent period whose is strictly before. This is the natural default for the payroll export dialog — you export the periodthat just closed, not the one still accruing punches. With no schedule, falls back to the14-day window immediately PRIOR to the current one (the existing 14-day fallback, shiftedone period back). * score: 4 ### function getNextBusinessDay * file: src/cores/hr/services/pay-schedule-calculator.ts:89 * kind: function * core: hr * spec: (none) * summary: Get the next business day from a given date * score: 4 ### function getOnboardingMilestones * file: src/cores/hr/self-service/utils/onboardingUtils.ts:258 * kind: function * core: hr * spec: (none) * summary: Get 30/60/90 day milestones with status.These are **point-in-time checkpoints**, not date ranges.Each milestone represents a specific day number in the onboarding journey:- Day 1 (day 0): Welcome & orientation- Week 1 (day 7): Setup & training checkpoint- Day 30: First formal check-in- Day 60: Mid-point assessment- Day 90: Final onboarding reviewThe and fields are set to the same value becausemilestones are single-day checkpoints. For range-based phases, see.Status logic uses strict comparison:- : daysElapsed dayNumber- : daysElapsed === dayNumber- : daysElapsed dayNumber * score: 4 ### function getOnboardingQuickActions * file: src/cores/hr/self-service/utils/onboardingUtils.ts:116 * kind: function * core: hr * spec: (none) * summary: Get quick actions based on onboarding statusTask identification priority:1. Check custom\_fields.task\_type if present (e.g., 'I9', 'W4', 'DIRECT\_DEPOSIT')2. Fall back to title/description substring matchingTemplate authors should set custom\_fields.task\_type for deterministic matching. * score: 4 ### function getOrganizationEntraDomain * file: src/cores/hr/utils/email-generation.ts:165 * kind: function * core: hr * spec: (none) * summary: Check if an organization has Entra ID email domain configured. * params: * organizationId — Organization ID * returns: Promise resolving to domain string or null if not configured * score: 4 ### function getPayPeriodStatus * file: src/cores/hr/services/pay-schedule-calculator.ts:293 * kind: function * core: hr * spec: (none) * summary: Get the status of a pay period based on current date * score: 4 ### function getRatingConfig * file: src/cores/hr/constants/performance.ts:176 * kind: function * core: hr * spec: (none) * summary: Get rating configuration by value * score: 4 ### function getRemainingTtl * file: src/cores/hr/analytics/utils/analyticsCache.ts:215 * kind: function * core: hr * spec: (none) * summary: Get remaining TTL in minutes. * score: 1 ### function getRiskLevel * file: src/cores/hr/analytics/utils/retentionRiskScore.ts:155 * kind: function * core: hr * spec: (none) * summary: Determine risk level based on score and configurable threshold. * params: * score — Risk score (0-100) * highThreshold — Score at or above which risk is "high" (default 70) * returns: Risk level classification * score: 4 ### function getRoleForEmployee * file: src/cores/hr/utils/employeeCsvParser.ts:608 * kind: function * core: hr * spec: (none) * summary: Get the assigned role for an employee based on their title and role mappings * score: 4 ### function getStatusConfig * file: src/cores/hr/constants/performance.ts:166 * kind: function * core: hr * spec: (none) * summary: Get status configuration by value * score: 4 ### function getSuggestedTimesheetPeriods * file: src/cores/hr/lib/time/defaultTimesheetPeriod.ts:25 * kind: function * core: hr * spec: (none) * summary: Suggested pay periods for HR admin "New Timesheet" (current + recent). * score: 4 ### function getSurveyDaysRemaining * file: src/cores/hr/engagement/utils/index.ts:98 * kind: function * core: hr * spec: (none) * summary: Calculate days remaining for survey * score: 4 ### function getSurveyStatusFromDates * file: src/cores/hr/engagement/utils/index.ts:46 * kind: function * core: hr * spec: (none) * summary: Get survey status based on dates * score: 4 ### function getUniqueWorkEmail * file: src/cores/hr/utils/email-generation.ts:66 * kind: function * core: hr * spec: (none) * summary: Generate a unique work email, checking for conflicts with existing emails.If the base email is taken, appends incrementing numbers (e.g., john.doe2domain). * params: * firstName — Employee's first name * lastName — Employee's last name * domain — Organization's email domain * organizationId — Organization ID for scoping uniqueness check * returns: Promise resolving to a unique email address * example: | // If john.doeacme.com exists:await getUniqueWorkEmail('John', 'Doe', 'acme.com', 'org-123')// = 'john.doe2acme.com' * score: 4 ### function getUSFederalHolidays * file: src/cores/hr/services/pay-schedule-calculator.ts:322 * kind: function * core: hr * spec: (none) * summary: Get US Federal Holidays for a given yearReturns common holidays that can be imported * score: 4 ### function grievanceAssigneesQueryKey * file: src/cores/hr/employee-relations/hooks/useGrievanceAssignees.ts:29 * kind: function * core: hr * spec: HR-14 * summary: Builds the React Query cache key for a grievance's assignees, scoped byorganization and grievance ID. * params: * grievanceId — The grievance whose assignees are cached. * orgId — The active organization ID, included for tenant scoping. * returns: A stable, readonly query-key tuple. * score: 5 ### function groupTasksByCategory * file: src/cores/hr/self-service/utils/onboardingUtils.ts:26 * kind: function * core: hr * spec: (none) * summary: Group tasks by category * score: 1 ### function hasCreditReduction * file: src/cores/hr/services/employer-taxes/constants.ts:86 * kind: function * core: hr * spec: (none) * summary: Check if a state has FUTA credit reduction.NOTE: Only Arizona ('AZ') is explicitly supported.Other states return false until state-specific rates are implemented. * score: 4 ### function hasDraft * file: src/cores/hr/benefits/utils/enrollmentDraft.ts:72 * kind: function * core: hr * spec: (none) * summary: Check if a draft exists for the given period * score: 4 ### function haversineDistance * file: src/cores/hr/utils/geofence-utils.ts:16 * kind: function * core: hr * spec: (none) * summary: Calculate distance in meters between two lat/lng points using Haversine formula. * score: 4 ### variable hrCaseDocumentsTable * file: src/cores/hr/employee-relations/lib/hrErSupabaseTables.ts:18 * kind: variable * core: hr * spec: HR-14 * summary: Returns a Supabase query builder for the table. Wrapped inan untyped escape hatch because the table is not yet present in the generatedDatabase types. * returns: A Supabase query builder scoped to . * score: 3 ### variable hrGrievanceAssigneesTable * file: src/cores/hr/employee-relations/lib/hrErSupabaseTables.ts:28 * kind: variable * core: hr * spec: HR-14 * summary: Returns a Supabase query builder for the table.Wrapped in an untyped escape hatch because the table is not yet present in thegenerated Database types. * returns: A Supabase query builder scoped to . * score: 3 ### variable identityStepSchema * file: src/cores/hr/components/fingerprint-clearance/wizard/schemas.ts:26 * kind: variable * core: hr * spec: (none) * summary: Step 1 — Identity. cardNumberInput required only in create mode. * score: 2 ### function invalidateCache * file: src/cores/hr/analytics/utils/analyticsCache.ts:110 * kind: function * core: hr * spec: (none) * summary: Request cache invalidation via Edge Function.Note: Direct delete is service\_role only, so this invokes the edge function. * params: * organizationId — Organization UUID * cacheKey — Specific key to invalidate (optional - invalidates all if not provided) * score: 4 ### function invalidateDriverCache * file: src/cores/hr/lib/staffingCalculationCache.ts:172 * kind: function * core: hr * spec: (none) * summary: Invalidates a cached workload-driver configuration for one organization. * score: 4 ### function isBusinessDay * file: src/cores/hr/services/pay-schedule-calculator.ts:35 * kind: function * core: hr * spec: (none) * summary: Check if a date is a business day (not weekend, not holiday) * score: 4 ### function isCacheValid * file: src/cores/hr/analytics/utils/analyticsCache.ts:208 * kind: function * core: hr * spec: (none) * summary: Check if a cache entry is still valid. * score: 4 ### function isContractInRenewalWindow * file: src/cores/hr/lib/contractor-workforce-utils.ts:30 * kind: function * core: hr * spec: (none) * summary: Determines whether a contract is within its renewal notification window. * params: * endDate — The contract end date (ISO string or Date). * renewalNoticeDays — Days before end\_date to trigger renewal notice. * referenceDate — The date to check against (defaults to now). * returns: True if the contract is within the renewal window but not yet expired. * score: 4 ### function isEeocJobCategory * file: src/cores/hr/services/eeo1/jobCategories.ts:78 * kind: function * core: hr * spec: (none) * summary: True for a value that is one of the 10 valid EEOC job categories. * score: 4 ### function isExpirationAfterIssue * file: src/cores/hr/utils/credentialCsvTemplate.ts:157 * kind: function * core: hr * spec: (none) * summary: Validates that expiration date is after issue date * score: 4 ### function isInFlightPhase * file: src/cores/hr/components/wizards/payroll-run/hooks/pollState.ts:32 * kind: function * core: hr * spec: (none) * summary: A run is actively progressing on Proliant and the UI should keep polling. * score: 4 ### function isPunchEdited * file: src/cores/hr/lib/timesheetPunchDisplay.ts:18 * kind: function * core: hr * spec: (none) * summary: True when a punch was manually corrected after the original record. * score: 4 ### function isSkillGap * file: src/cores/hr/services/skills/publishSkillGapIdentifiedEvent.ts:33 * kind: function * core: hr * spec: (none) * summary: Pure gap predicate — a non-passing assessment is a skill gap.Exported for reuse/testing so the emission decision is not duplicated. * score: 4 ### function isSurveyActive * file: src/cores/hr/engagement/utils/index.ts:85 * kind: function * core: hr * spec: (none) * summary: Check if survey is currently active * score: 4 ### function isTerminalPhase * file: src/cores/hr/components/wizards/payroll-run/hooks/pollState.ts:37 * kind: function * core: hr * spec: (none) * summary: A terminal phase — the UI may show completion (posted) or failure (failed). * score: 4 ### function isValidDate * file: src/cores/hr/utils/credentialCsvTemplate.ts:141 * kind: function * core: hr * spec: (none) * summary: Validates a date string in YYYY-MM-DD formatStrict validation prevents rollover dates like 2024-02-30 * score: 4 ### function isValidDate * file: src/cores/hr/utils/oversightSessionCsvTemplate.ts:182 * kind: function * core: hr * spec: (none) * summary: Validates a date string is in YYYY-MM-DD format with strict parsing * score: 4 ### function isValidDuration * file: src/cores/hr/utils/oversightSessionCsvTemplate.ts:205 * kind: function * core: hr * spec: (none) * summary: Validates duration is a positive number * score: 4 ### function isValidRoutingNumber * file: src/cores/hr/utils/routing-number.ts:69 * kind: function * core: hr * spec: (none) * summary: Simple boolean check for routing number validity. * params: * routingNumber — The routing number to validate * returns: true if the routing number is valid * score: 4 ### function isValidSessionType * file: src/cores/hr/utils/oversightSessionCsvTemplate.ts:197 * kind: function * core: hr * spec: (none) * summary: Validates session type is one of the allowed values * score: 4 ### function isWithinExpirationWindow * file: src/cores/hr/lib/contractorNotifications.ts:194 * kind: function * core: hr * spec: (none) * summary: Checks whether a credential's expiration\_date is within the alert window. * params: * expirationDate — Credential expiration date string (ISO). * alertDays — Number of days before expiration to trigger (default 30). * returns: true if expiration\_date is within alertDays from now. * score: 4 ### function isWithinRenewalWindow * file: src/cores/hr/lib/contractorNotifications.ts:178 * kind: function * core: hr * spec: (none) * summary: Checks whether a contract's end\_date is within the renewal notice window. * params: * endDate — Contract end date string (ISO). * noticeDays — Number of days before end\_date to trigger (default 30). * returns: true if end\_date is within noticeDays from now. * score: 4 ### function loadDraft * file: src/cores/hr/benefits/utils/enrollmentDraft.ts:36 * kind: function * core: hr * spec: (none) * summary: Load draft if valid (not expired and same period) * score: 4 ### function localDateFromTimestamp * file: src/cores/hr/lib/time/punchDateTime.ts:23 * kind: function * core: hr * spec: (none) * summary: Local calendar date (YYYY-MM-DD) for a stored punch timestamp. * score: 4 ### function localTimeFromTimestamp * file: src/cores/hr/lib/time/punchDateTime.ts:32 * kind: function * core: hr * spec: (none) * summary: Local HH:mm for a stored punch timestamp (matches value). * score: 4 ### function localWallClockToIso * file: src/cores/hr/lib/time/punchDateTime.ts:14 * kind: function * core: hr * spec: (none) * summary: Convert date + time from / to ISO UTC for storage. * score: 4 ### function logEeo1Export * file: src/cores/hr/services/eeo1/eeo1Service.ts:111 * kind: function * core: hr * spec: (none) * summary: Write a metadata-only audit row for an EEO-1 export (HR-42 AC-PII-03 / SC-004). * score: 4 ### function logPunchCorrectionAudit * file: src/cores/hr/lib/time/timesheetAuditLog.ts:42 * kind: function * core: hr * spec: (none) * summary: PF-04 audit for punch corrections (HR-05-EN-10 / FLSA recordkeeping). * score: 4 ### function maskAccountNumber * file: src/cores/hr/utils/routing-number.ts:91 * kind: function * core: hr * spec: (none) * summary: Masks an account number for display (shows only last 4 digits). * params: * accountNumber — The full account number * returns: Masked account number like "••••1234" * score: 4 ### function MeritIncreaseApprovalActions * file: src/cores/hr/compensation/components/MeritIncreaseApprovalActions.tsx:21 * kind: function * core: hr * spec: (none) * summary: Utility for merit increase approval actions. * score: 1 ### function normalizeOptionalDateValue * file: src/cores/hr/employee-relations/lib/formDates.ts:6 * kind: function * core: hr * spec: (none) * summary: Normalizes react-hook-form date values before validation/API (undefined instead of ""). * score: 4 ### function normalizeReconciliationTolerance * file: src/cores/hr/pages/integrations/proliantCustomFields.ts:25 * kind: function * core: hr * spec: (none) * summary: Normalize a reconciliation-tolerance draft string into the dollar amountpersisted to . Non-numeric ornegative input clamps to 0 (exact-match, the strictest reconciliation gate). * score: 4 ### function notifyCriticalIncident * file: src/cores/hr/employee-relations/utils/notifications.ts:18 * kind: function * core: hr * spec: (none) * summary: Notify HR admins of a critical or serious incident * score: 4 ### function notifyDisciplinaryAction * file: src/cores/hr/employee-relations/utils/notifications.ts:94 * kind: function * core: hr * spec: (none) * summary: Notify an employee of a disciplinary action * score: 4 ### function notifyGrievanceStatusChange * file: src/cores/hr/employee-relations/utils/notifications.ts:62 * kind: function * core: hr * spec: (none) * summary: Notify an employee of their grievance status change * score: 4 ### function notifyInvestigationAssignment * file: src/cores/hr/employee-relations/utils/notifications.ts:126 * kind: function * core: hr * spec: (none) * summary: Notify an investigator of their assignment * score: 4 ### function nullifyEmptyStrings * file: src/cores/hr/employee-relations/utils/nullifyEmptyStrings.ts:12 * kind: function * core: hr * spec: (none) * summary: Convert empty-string ("") values to null before a DB write.shadcn / react-hook-form controls emit "" for cleared OPTIONAL fields. Postgresaccepts "" for text columns but REJECTS it for typed columns (time / uuid / date)with . Required fields are validatednon-empty by the form schema, so the only "" reaching a write is an optionalfield that should be NULL. Apply this to the form payload in theemployee-relations create/update mutations so optional time/site/date/uuidfields persist as NULL instead of failing the insert. * score: 4 ### function optionalDateField * file: src/cores/hr/employee-relations/lib/formDates.ts:14 * kind: function * core: hr * spec: (none) * summary: Zod helper: optional HTML date input (empty → undefined, filled → YYYY-MM-DD). * score: 4 ### function padLeft * file: src/cores/hr/services/nacha/format-utils.ts:35 * kind: function * core: hr * spec: (none) * summary: Pad a string on the left with a character to reach the specified length.Throws if the string is longer than length to prevent data corruption. * params: * str — The string to pad * length — The target length * char — The padding character (default: space) * returns: The padded string * score: 4 ### function padRight * file: src/cores/hr/services/nacha/format-utils.ts:18 * kind: function * core: hr * spec: (none) * summary: Pad a string on the right with a character to reach the specified length.If the string is longer than the length, it will be truncated. * params: * str — The string to pad * length — The target length * char — The padding character (default: space) * returns: The padded/truncated string * score: 4 ### function pairBreakIntervals * file: src/cores/hr/lib/time/timesheetBreakDisplay.ts:10 * kind: function * core: hr * spec: (none) * summary: Pair break\_start / break\_end punches in chronological order for one work day. * score: 4 ### function parseCredentialCsv * file: src/cores/hr/utils/credentialCsvTemplate.ts:66 * kind: function * core: hr * spec: (none) * summary: Parses a CSV string into rows and headers (uses /platform/csv). * score: 4 ### function parseEmployeeCsv * file: src/cores/hr/utils/employeeCsvParser.ts:200 * kind: function * core: hr * spec: (none) * summary: Parse a CSV containing employee roster rows into structured EmployeeRow records and validation stats. * params: * csvText — Raw CSV content to parse. Must include a header row and at least one data row. * extraMappings — Optional additional header→field mappings (e.g. from HRIS auto-detection) that are merged on top of the built-in HEADER\_MAPPINGS. Provider-specific mappings take precedence. * returns: ParseResult with employees, errors, and stats. * score: 4 ### function parseFullName * file: src/cores/hr/utils/email-generation.ts:142 * kind: function * core: hr * spec: (none) * summary: Extract name parts from a full name string. * params: * fullName — Full name (e.g., "John Michael Doe") * returns: Object with firstName and lastName * score: 4 ### function parseSessionCsv * file: src/cores/hr/utils/oversightSessionCsvTemplate.ts:68 * kind: function * core: hr * spec: (none) * summary: Parses a CSV string into rows and headers * score: 4 ### function phaseToStepIndex * file: src/cores/hr/components/wizards/payroll-run/hooks/usePayrollRunWizard.ts:43 * kind: function * core: hr * spec: (none) * summary: Map a run-state phase to the wizard step index. Terminal phases(posted/failed) and submitted/posting land on Results; draft / no run yetlands on the calendar-select step. * score: 4 ### function pollIntervalMs * file: src/cores/hr/components/wizards/payroll-run/hooks/pollState.ts:42 * kind: function * core: hr * spec: (none) * summary: Bounded exponential backoff for the run-status poll (NFR-5, FR-8). * score: 4 ### function prefetchEmployeeList * file: src/cores/hr/hooks/employees/useEmployeeList.ts:124 * kind: function * core: hr * spec: (none) * summary: Warm the cache for the default view (filters=, page=1,pageSize=50). Safe to call from route prefetchers — TanStack short-circuits while data is still . * score: 4 ### function publishCandidateHiredEvent * file: src/cores/hr/services/hiring/publishCandidateHiredEvent.ts:39 * kind: function * core: hr * spec: (none) * summary: Publish candidate\_hired event when an offer is accepted and employee created. * example: | await publishCandidateHiredEvent( organization\_id: offer.organization\_id, application\_id: offer.application\_id, candidate\_id: application.candidate\_id, employee\_id: newEmployee.id, offer\_id: offer.id, hire\_date: offer.start\_date,); * score: 4 ### function publishCompensationCostAllocatedEvent * file: src/cores/hr/services/compensation/publishCompensationCostAllocatedEvent.ts:42 * kind: function * core: hr * spec: (none) * summary: Publish on total-compensation statement finalize(HR-15 → FA-15).Non-blocking by contract: returns and never throws. * score: 4 ### function publishEmployerTaxLiabilityEvent * file: src/cores/hr/services/employer-taxes/publish-tax-event.ts:22 * kind: function * core: hr * spec: (none) * summary: Publish employer tax liability event to hr\_events channel.This event is consumed by the Finance core (FA) to createcorresponding GL journal entries for payroll tax liabilities. * params: * payload — The tax liability data to publish * score: 4 ### function publishIncidentReportedEvent * file: src/cores/hr/services/employee-relations/publishIncidentReportedEvent.ts:35 * kind: function * core: hr * spec: (none) * summary: Publish on incident creation (HR-14 → GR-03/06).Non-blocking by contract: returns and never throws. * score: 4 ### function publishMeritIncreaseApprovedEvent * file: src/cores/hr/services/compensation/publishMeritIncreaseApprovedEvent.ts:35 * kind: function * core: hr * spec: (none) * summary: Publish when a merit increase is approved (HR-15 → FA-15/FA-08).Non-blocking by contract: returns and never throws — callsites fire-and-forget () so an event-publish failure doesnot break the approval mutation. * score: 4 ### function publishSkillGapIdentifiedEvent * file: src/cores/hr/services/skills/publishSkillGapIdentifiedEvent.ts:43 * kind: function * core: hr * spec: (none) * summary: Publish when an assessment surfaces a below-requiredproficiency (HR-13 → GR-02).Non-blocking by contract: returns and never throws. * score: 4 ### function punchEditedByLabel * file: src/cores/hr/lib/timesheetPunchDisplay.ts:29 * kind: function * core: hr * spec: (none) * summary: Display name for who last edited the punch. * score: 4 ### function punchLoggedByLabel * file: src/cores/hr/lib/timesheetPunchDisplay.ts:23 * kind: function * core: hr * spec: (none) * summary: Display name for who created the punch record (self-service clock or missed-punch entry). * score: 4 ### function pushCompletedOnboardingToProliant * file: src/cores/hr/services/proliantOnboardingPushService.ts:37 * kind: function * core: hr * spec: (none) * summary: HR-44-EN-03 AC-7 — push a new hire to ReadyPay when their HR onboardingcompletes.Onboarding completion is DB-trigger driven (flips to when the last taskcompletes), so the caller (the task-completion mutation) cannot know locallywhether THIS completion was the last one — this service re-reads theinstance and only acts when it is actually completed.Gating: requires the org's ACTIVE row with enabled; anything else is a silent skip (orgs without theintegration must see zero behavior change). The push itself is theproliant-sync scope, ALWAYS scoped to the one new hire( — never bulk; AC-8); the server side re-appliesthe duplicate-guard, required-field, capability, and idempotency gates.Never throws: a payroll-push problem must never fail or block the HRonboarding flow itself (fire-and-toast at the call site). * score: 4 ### function reconCleared * file: src/cores/hr/components/wizards/payroll-run/hooks/reconciliationView\.ts:56 * kind: function * core: hr * spec: (none) * summary: Submit may proceed only when reconciliation passed OR was overridden. * score: 4 ### function refreshCache * file: src/cores/hr/analytics/utils/analyticsCache.ts:140 * kind: function * core: hr * spec: (none) * summary: Trigger cache refresh via Edge Function. * params: * organizationId — Organization UUID * cacheTypes — Types of caches to refresh * score: 4 ### function regenerateCalendarEvents * file: src/cores/hr/services/pay-calendar-events.ts:116 * kind: function * core: hr * spec: (none) * summary: Regenerate calendar events for a schedule (atomic: delete non-completed + insert in one transaction) * score: 4 ### function regeneratePayStub * file: src/cores/hr/services/createPayStubsFromRun.ts:383 * kind: function * core: hr * spec: (none) * summary: Regenerate a single pay stub (useful for corrections). * score: 4 ### function registerHRWizardSteps * file: src/cores/hr/components/wizards/registerHRWizardSteps.ts:15 * kind: function * core: hr * spec: (none) * summary: Register all HR wizard steps with the platform registry.Should be called once during app initialization. * score: 4 ### function requiredDateField * file: src/cores/hr/employee-relations/lib/formDates.ts:19 * kind: function * core: hr * spec: (none) * summary: Zod helper: required HTML date input. * score: 4 ### function requiresAcknowledgment * file: src/cores/hr/components/wizards/payroll-run/hooks/reconciliationView\.ts:51 * kind: function * core: hr * spec: (none) * summary: Any out-of-tolerance dimension forces an audit-logged justification before submit. * score: 4 ### function resolveEmployee * file: src/cores/hr/utils/employeeNameMatcher.ts:67 * kind: function * core: hr * spec: (none) * summary: Attempts to resolve an employee using multi-strategy deterministic matching. * params: * employeeName — The CSV "Employee" column value * signableName — The CSV "Signable name" column value (optional) * employeeMap — Exact-match lookup map * employeesByLastName — Last-name indexed map for fuzzy matching * returns: Match result with employee ID and strategy, or null if unresolved * score: 4 ### function resolveTimesheetForExceptionDate * file: src/cores/hr/lib/time/timesheetRpc.ts:60 * kind: function * core: hr * spec: (none) * summary: Resolve a timesheet row covering an exception date (HR-05-EN-10 US-5). * score: 4 ### function roundACAFTEForStorage * file: src/cores/hr/benefits/lib/acaFte.ts:20 * kind: function * core: hr * spec: (none) * summary: Persistable FTE rounded to two decimal places (matches NUMERIC(10,2) column). * score: 4 ### function roundToCents * file: src/cores/hr/services/employer-taxes/constants.ts:149 * kind: function * core: hr * spec: (none) * summary: Round a number to cents (2 decimal places).Uses epsilon adjustment to handle floating-point representation issues(e.g., 1.005 \* 100 = 100.49999... without adjustment).NOTE: For long-term reliability, consider performing all calculations ininteger cents throughout the tax calculation pipeline. * score: 4 ### function sanitizeAlphanumeric * file: src/cores/hr/services/nacha/format-utils.ts:132 * kind: function * core: hr * spec: (none) * summary: Sanitize a string for NACHA alphanumeric fields.Removes or replaces invalid characters. * params: * str — The string to sanitize * returns: Sanitized uppercase string with only valid NACHA characters * score: 4 ### function sanitizeNameForEmail * file: src/cores/hr/utils/email-generation.ts:17 * kind: function * core: hr * spec: (none) * summary: Sanitize a name string for use in email address.Removes special characters and converts to lowercase. * score: 4 ### function saveDraft * file: src/cores/hr/benefits/utils/enrollmentDraft.ts:24 * kind: function * core: hr * spec: (none) * summary: Save wizard state to localforage * score: 4 ### function selectPayrollRunSurface * file: src/cores/hr/lib/payroll/selectPayrollRunSurface.ts:17 * kind: function * core: hr * spec: (none) * summary: Decide the payroll-run surface from the org's Proliant integration health. requires a live, configured connection — an integration row thatis active AND carries a Proliant . This mirrors the gate already enforces, so the entry point never routes to awizard that would immediately render its own "set a company id" empty state.Everything else (no row, inactive, missing company id) falls back to — the approved-timesheet CSV break-glass for non-Proliant tenants (design D5). * score: 4 ### function send1099NECNotifications * file: src/cores/hr/services/1099-nec/nec-1099-distribution.ts:88 * kind: function * core: hr * spec: (none) * summary: Send notifications to contractors that their 1099-NEC is available. * score: 4 ### function sendClassificationReviewNotification * file: src/cores/hr/lib/contractorNotifications.ts:97 * kind: function * core: hr * spec: (none) * summary: Sends a classification review notification.Non-blocking — caller should catch errors. * score: 4 ### function sendContractRenewalNotification * file: src/cores/hr/lib/contractorNotifications.ts:63 * kind: function * core: hr * spec: (none) * summary: Sends a contract renewal notification.Non-blocking — caller should catch errors. * score: 4 ### function sendCredentialExpirationNotification * file: src/cores/hr/lib/contractorNotifications.ts:131 * kind: function * core: hr * spec: (none) * summary: Sends a credential expiration notification.Non-blocking — caller should catch errors. * score: 4 ### function sendPerformanceFeedbackNotifications * file: src/cores/hr/services/performanceFeedbackNotificationService.ts:292 * kind: function * core: hr * spec: (none) * summary: Fire-and-forget: send all three notification signals for a new feedback request.Each signal is attempted independently; failure of one does not abort the others.Usage: void sendPerformanceFeedbackNotifications(params).catch(err = logger.warn(...)) * score: 4 ### function sendPerformanceFeedbackReminder * file: src/cores/hr/services/performanceFeedbackNotificationService.ts:327 * kind: function * core: hr * spec: (none) * summary: Awaitable: send a reminder to the feedback provider via in-app notification and DM.Does NOT create a new task — the original task from the initial request is preserved.Each channel is attempted independently so one failure does not block the other.Name hints from an already-joined query row are used when available to avoid extraDB round-trips. Falls back to a lookup if a hint is absent or blank. * score: 4 ### function sendScorecardAssignedNotification * file: src/cores/hr/services/scorecardNotificationService.ts:41 * kind: function * core: hr * spec: (none) * summary: Notify an interviewer that a scorecard has been assigned to them. * score: 4 ### function sendScorecardReminderNotification * file: src/cores/hr/services/scorecardNotificationService.ts:97 * kind: function * core: hr * spec: (none) * summary: Send a reminder to an interviewer who has not yet submitted their scorecard. * score: 4 ### function sendScorecardSubmittedNotification * file: src/cores/hr/services/scorecardNotificationService.ts:68 * kind: function * core: hr * spec: (none) * summary: Notify relevant stakeholders that a scorecard has been submitted. * score: 4 ### function sendTaskAssignmentNotification * file: src/cores/hr/services/onboardingNotificationService.ts:19 * kind: function * core: hr * spec: (none) * summary: HR-03-EN1: Insert a task-assignment notification into pf\_notifications.Non-blocking — caller should catch errors and NOT revert the assignment. * score: 4 ### function sendW2Notifications * file: src/cores/hr/services/w2/w2-distribution.ts:128 * kind: function * core: hr * spec: (none) * summary: Send notifications to employees that their W-2 is available. * params: * supabase — Supabase client * organizationId — Organization ID * employeeIds — Employee IDs to notify * taxYear — Tax year of the W-2 * score: 4 ### function setCachedCensusData * file: src/cores/hr/lib/staffingCalculationCache.ts:139 * kind: function * core: hr * spec: (none) * summary: Stores cached census counts in cache or state. * score: 4 ### function setCachedPtoPatterns * file: src/cores/hr/lib/staffingCalculationCache.ts:161 * kind: function * core: hr * spec: (none) * summary: Stores cached pto patterns data in cache or state. * score: 4 ### function sortStatesByCode * file: src/cores/hr/services/w2-state-aggregation.ts:82 * kind: function * core: hr * spec: (none) * summary: Sort state data alphabetically by state code for W-2 PDF rendering. * score: 4 ### function subtractBusinessDays * file: src/cores/hr/services/pay-schedule-calculator.ts:106 * kind: function * core: hr * spec: (none) * summary: Subtract business days from a date * score: 4 ### function suggestRoleForTitle * file: src/cores/hr/utils/employeeCsvParser.ts:389 * kind: function * core: hr * spec: (none) * summary: Suggest a V2 system role based on job title and department.Uses keyword matching to provide intelligent defaults for specialized roles. * score: 4 ### function toInvestigationDbPayload * file: src/cores/hr/employee-relations/lib/investigationPayload.ts:36 * kind: function * core: hr * spec: (none) * summary: Normalizes investigation form values before insert/update.Omits empty strings and invalid source UUIDs so PostgREST receives valid payloads. * score: 4 ### function TrendChart * file: src/cores/hr/analytics/components/TrendChart.tsx:51 * kind: function * core: hr * spec: (none) * summary: Utility for trend chart. * score: 1 ### function triggerCsvDownload * file: src/cores/hr/lib/time/triggerCsvDownload.ts:43 * kind: function * core: hr * spec: (none) * summary: Build a CSV Blob from an invoke result and trigger an immediate browserdownload via an anchor click (HR-05 AC-40). The filename comes from theedge-function envelope, falling back to . * score: 4 ### function updateCalendarEventStatus * file: src/cores/hr/services/pay-calendar-events.ts:140 * kind: function * core: hr * spec: (none) * summary: Update the status of a calendar event * score: 4 ### function upsertCalendarEvents * file: src/cores/hr/services/pay-calendar-events.ts:76 * kind: function * core: hr * spec: (none) * summary: Upsert calendar events to database (idempotent by org\_id + schedule\_id + period\_start) * score: 4 ### function validate1099NECData * file: src/cores/hr/services/1099-nec/nec-1099-form-builder.ts:62 * kind: function * core: hr * spec: (none) * summary: Validate contractor data has required fields for 1099-NEC. * score: 4 ### function validateEmailDomain * file: src/cores/hr/utils/email-generation.ts:132 * kind: function * core: hr * spec: (none) * summary: Validate that an email matches the expected domain. * params: * email — Email address to validate * domain — Expected domain * returns: True if email ends with domain * score: 4 ### function validateRoutingNumber * file: src/cores/hr/utils/routing-number.ts:28 * kind: function * core: hr * spec: (none) * summary: Validates an ABA routing number using the standard checksum algorithm. * params: * routingNumber — The 9-digit routing number to validate * returns: Validation result with isValid flag and optional error message * score: 4 ### function validateTransition * file: src/cores/hr/utils/internalMobility/transitionStatus.ts:51 * kind: function * core: hr * spec: (none) * summary: Pre-flight guard for a status change. Returns with auser-safe reason for any UI-blocking validation. Server-side validationis enforced by the trigger. * score: 4 ### function validateW2FormData * file: src/cores/hr/services/w2/w2-form-builder.ts:179 * kind: function * core: hr * spec: (none) * summary: Validate W-2 form data for completeness and consistency. * score: 4 ### function validateW3Totals * file: src/cores/hr/services/w2/w3-calculator.ts:208 * kind: function * core: hr * spec: (none) * summary: Validate that W-3 totals match the sum of W-2 forms. * params: * w3 — W-3 form data to validate * w2Forms — Array of W-2 forms that should sum to W-3 * returns: Validation result with any discrepancies * score: 4 ### function verifyBlocksSubmit * file: src/cores/hr/components/wizards/payroll-run/hooks/runGuards.ts:15 * kind: function * core: hr * spec: (none) * summary: AC-3: any failed-and-unapproved Proliant verification test blocks forward nav. * score: 4 # it — Public API surface Source: https://docs.encoreos.io/api/it Per-symbol API documentation for the it area, generated from TSDoc blocks. Refresh with `npm run docs:api:generate`. # it — Public API surface ## Types & interfaces ### interface AssetLicense * file: src/cores/it/hooks/useAssetLicenses.ts:28 * kind: interface * core: it * spec: IT-04 * summary: A software license assigned to a specific IT asset, flattened for displaywith the license name, vendor, type, expiration, compliance status, andassignment metadata. * score: 5 ### interface AssetTagConfig * file: src/cores/it/utils/assetTagGenerator.ts:6 * kind: interface * core: it * spec: (none) * summary: IT-01: Asset Tag GeneratorGenerates unique asset tags based on organization settings * score: 2 ### type ContractFormData * file: src/cores/it/components/vendors/ContractForm.tsx:80 * kind: type * core: it * spec: IT-03 * summary: Validated form values for creating or editing an IT vendor contract, inferredfrom the contract form's zod schema (name/number, contract type, status,vendor reference, term dates, auto-renew flag, and financial fields). * score: 5 ### interface ContractRiskInput * file: src/cores/it/hooks/useContractRiskClassify.ts:36 * kind: interface * core: it * spec: (none) * summary: The contract metadata fields fed to the classifier (no PDF, no PHI). * score: 2 ### interface EnrichedAsset * file: src/cores/it/hooks/useAsset.ts:17 * kind: interface * core: it * spec: IT-01 * summary: An IT asset enriched with its resolved site name for display, extending thebase row with the joined value. * score: 5 ### interface ExpiringContract * file: src/cores/it/hooks/useITDashboardStats.ts:73 * kind: interface * core: it * spec: IT-07 * summary: A vendor contract approaching expiration, surfaced on the IT dashboard withits name, owning vendor, expiration date, and days remaining. * score: 5 ### interface ExpiringLicense * file: src/cores/it/hooks/useLicenseCompliance.ts:56 * kind: interface * core: it * spec: IT-04 * summary: A software license nearing expiry, surfaced for renewal planning with itsexpiry date, days remaining, seat utilization, and renewal cost. * score: 5 ### interface ITChangeApproval * file: src/cores/it/hooks/useITChanges.ts:65 * kind: interface * core: it * spec: IT-09 * summary: An approval record attached to a change request, capturing the approvalstatus and the approver's user id. * score: 5 ### interface ITChangeDetail * file: src/cores/it/hooks/useITChanges.ts:108 * kind: interface * core: it * spec: IT-09 * summary: Full detail bundle for one change request: the request itself plus itsassociated approval and implementation records. * see: * ITChangeRequest * score: 5 ### interface ITChangeImplementation * file: src/cores/it/hooks/useITChanges.ts:86 * kind: interface * core: it * spec: IT-09 * summary: An implementation step recorded against a change request, tracking its statusand free-text execution notes. * score: 5 ### interface ITChangeRequest * file: src/cores/it/hooks/useITChanges.ts:32 * kind: interface * core: it * spec: IT-09 * summary: A single IT change request returned by the RPC, includingits CR number, classification (type/category/status/risk), scheduling window,and resolved requester/implementer names. * score: 5 ### interface ITDashboardStats * file: src/cores/it/hooks/useITDashboardStats.ts:36 * kind: interface * core: it * spec: IT-07 * summary: Aggregated IT dashboard metrics for an organization, grouped into vendor,procurement, and license statistics (counts, totals, averages, and30/60/90-day expiring-item tallies). * score: 5 ### interface ITDashboardSummary * file: src/cores/it/hooks/useITDashboardSummary.ts:25 * kind: interface * core: it * spec: IT-07 * summary: Headline IT dashboard summary counters returned by the RPC: open/critical tickets, asset totals andassignment count, 30-day expiring licenses and contracts, and pendingonboarding/offboarding queues. * score: 5 ### interface ITLicense * file: src/cores/it/hooks/useLicenses.ts:56 * kind: interface * core: it * spec: IT-04 * summary: A software license row from : identity and software details,license type/status, seat counts, key dates, financials, vendor/contractreferences, and derived compliance status. Carries fortenant scoping and a extension bag. * score: 5 ### type ITLicenseInsert * file: src/cores/it/hooks/useLicenseMutations.ts:17 * kind: type * core: it * spec: IT-04 * summary: Payload shape for creating a software license: an minus theserver-managed fields (, timestamps, , and derived). * see: * ITLicense * score: 5 ### type ITLicenseUpdate * file: src/cores/it/hooks/useLicenseMutations.ts:28 * kind: type * core: it * spec: IT-04 * summary: Payload shape for updating a software license: a partial excluding immutable identity/ownership fields and server-derived values. * see: * ITLicense * score: 5 ### interface KBArticleVersion * file: src/cores/it/hooks/useKnowledgeBaseArticleHistory.ts:23 * kind: interface * core: it * spec: IT-10 * summary: A historical version snapshot of a knowledge-base article, capturing theversion number, title, category, and authoring metadata at that revision. * score: 5 ### interface LicenseAssignment * file: src/cores/it/hooks/useLicenseAssignments.ts:32 * kind: interface * core: it * spec: IT-04 * summary: A software-license seat assignment to a user or asset, including assignmentand revocation audit fields plus enriched user/asset display values. Carries for tenant scoping and a extension bag. * score: 5 ### interface LicenseComplianceStats * file: src/cores/it/hooks/useLicenseCompliance.ts:26 * kind: interface * core: it * spec: IT-04 * summary: Organization-wide software-license compliance metrics: license and seatcounts, seat-utilization percentage, annual cost, 30-day expiring count, andthe number of non-compliant licenses. * score: 5 ### interface LicenseFilters * file: src/cores/it/hooks/useLicenses.ts:23 * kind: interface * core: it * spec: IT-04 * summary: Query filters for the software-license list: status, license-type, andcompliance-status multi-selects, an expiring-within-days window, and afree-text search term. * score: 5 ### type LicenseFormData * file: src/cores/it/components/licenses/LicenseForm.tsx:63 * kind: type * core: it * spec: IT-04 * summary: Validated form values for creating or editing a software license, inferredfrom the license form's zod schema (name, software details, license type,status, seat count, key dates, and cost fields). * score: 5 ### interface MyAssetWithAssignment * file: src/cores/it/hooks/useMyAssets.ts:27 * kind: interface * core: it * spec: IT-01 * summary: An IT asset assigned to the current user, extending the base with atrimmed assignment record (assignment date and notes) or when noactive assignment exists. * score: 5 ### interface PurchaseRequest * file: src/cores/it/hooks/usePurchaseRequests.ts:30 * kind: interface * core: it * spec: IT-06 * summary: An IT procurement purchase request from : requestnumber, item/cost details, approval workflow fields, vendor and budgetreferences, and fulfillment (purchase-order/received) metadata. Carries for tenant scoping and a extension bag. * score: 5 ### interface PurchaseRequestFilters * file: src/cores/it/hooks/usePurchaseRequests.ts:80 * kind: interface * core: it * spec: IT-06 * summary: Query filters for the purchase-request list: status, approval-status,request-type, and priority multi-selects plus requester, urgency, a daterange, and a free-text search term. * score: 5 ### interface PurchaseRequestFilterState * file: src/cores/it/components/procurement/PurchaseRequestFilterBar.tsx:25 * kind: interface * core: it * spec: IT-06 * summary: Active filter selections for the purchase-request list: a free-text searchterm plus optional single-value status, request-type, and priority filters( meaning "no filter applied"). * score: 5 ### interface ReportDefinitionFilters * file: src/cores/it/hooks/useReportDefinitions.ts:28 * kind: interface * core: it * spec: IT-07 * summary: Query filters for the IT report-definition list: a report-type filter, aschedule-enabled toggle, and a free-text search term. * score: 5 ### interface TicketDeflectionArticle * file: src/cores/it/hooks/useTicketKBDeflection.ts:30 * kind: interface * core: it * spec: (none) * summary: Minimal article shape passed as grounding context (no PHI; org's own KB). * score: 2 ### type TicketFormData * file: src/cores/it/components/tickets/TicketForm.tsx:56 * kind: type * core: it * spec: IT-02 * summary: Validated form values for creating an IT support ticket, inferred from theticket form's zod schema (type, category, priority, subject, description, andoptional site / linked-asset references). * score: 5 ### interface TriggerReportParams * file: src/cores/it/hooks/useReportRuns.ts:174 * kind: interface * core: it * spec: IT-07 * summary: Parameters for triggering an on-demand IT report run: either a saved or an ad-hoc , plus runtime and an output (pdf, xlsx, or csv). * score: 5 ### interface UseAssetResult * file: src/cores/it/hooks/useAsset.ts:32 * kind: interface * core: it * spec: IT-01 * summary: Aggregated result returned by : the enriched asset plus itscurrent assignment, full assignment history, recent and complete maintenancerecords, and query loading/error state. * score: 5 ### type VendorFormData * file: src/cores/it/components/vendors/VendorForm.tsx:56 * kind: type * core: it * spec: IT-03 * summary: Validated form values for creating or editing an IT vendor, inferred from thevendor form's zod schema (name, vendor type, status, notes, contact details,and mailing address fields). * score: 5 ### interface VulnerabilityAssetLink * file: src/cores/it/hooks/useVulnerabilityAssets.ts:31 * kind: interface * core: it * spec: IT-05 * summary: A link row joining a security vulnerability to an affected IT asset, withoptional notes and an embedded asset summary for display. Carries for tenant scoping. * score: 5 ## Hooks ### hook useAccessAccount * file: src/cores/it/hooks/useAccessAccounts.ts:69 * kind: hook * core: it * spec: (none) * summary: Provides access account queries and mutation actions scoped to the current organization. * score: 4 ### hook useAccessAccountMutations * file: src/cores/it/hooks/useAccessAccountMutations.ts:37 * kind: hook * core: it * spec: (none) * summary: Hook for managing access account mutations. * score: 1 ### hook useAccessAccounts * file: src/cores/it/hooks/useAccessAccounts.ts:11 * kind: hook * core: it * spec: (none) * summary: Provides access accounts queries and mutation actions scoped to the current organization. * score: 4 ### hook useActiveAccountsByType * file: src/cores/it/hooks/useAccessAccounts.ts:98 * kind: hook * core: it * spec: (none) * summary: Provides active accounts by type queries and mutation actions scoped to the current organization. * score: 4 ### hook useActiveIncidents * file: src/cores/it/hooks/useSecurityIncidents.ts:104 * kind: hook * core: it * spec: (none) * summary: Hook for managing active incidents. * score: 1 ### hook useApprovalHistory * file: src/cores/it/hooks/useChangeApprovals.ts:102 * kind: hook * core: it * spec: (none) * summary: Fetch approval history for a change request * score: 4 ### hook useAsset * file: src/cores/it/hooks/useAsset.ts:45 * kind: hook * core: it * spec: (none) * summary: Hook for managing asset. * score: 1 ### hook useAssetAssignment * file: src/cores/it/hooks/useAssetAssignment.ts:57 * kind: hook * core: it * spec: (none) * summary: Hook for managing asset assignment. * score: 1 ### hook useAssetCategories * file: src/cores/it/hooks/useAssetCategories.ts:19 * kind: hook * core: it * spec: (none) * summary: Hook that loads IT asset categories from picklist with fallback to enum * example: | const items, isLoading, source = useAssetCategories();// Use in a select:items.map(item = option value=item.valueitem.label/option) * score: 4 ### hook useAssetLicenses * file: src/cores/it/hooks/useAssetLicenses.ts:50 * kind: hook * core: it * spec: (none) * summary: Hook for managing asset licenses. * score: 1 ### hook useAssetMutations * file: src/cores/it/hooks/useAssetMutations.ts:25 * kind: hook * core: it * spec: (none) * summary: Hook for managing asset mutations. * score: 1 ### hook useAssetPatchStatus * file: src/cores/it/hooks/usePatchDeployments.ts:78 * kind: hook * core: it * spec: (none) * summary: Hook for managing asset patch status. * score: 1 ### hook useAssets * file: src/cores/it/hooks/useAssets.ts:28 * kind: hook * core: it * spec: (none) * summary: Hook for managing assets. * score: 1 ### hook useAssetTypes * file: src/cores/it/hooks/useAssetTypes.ts:19 * kind: hook * core: it * spec: (none) * summary: Hook that loads IT asset types from picklist with fallback to enum * example: | const items, isLoading, source = useAssetTypes();// Use in a select:items.map(item = option value=item.valueitem.label/option) * score: 4 ### hook useAssetVulnerabilities * file: src/cores/it/hooks/useVulnerabilityAssets.ts:111 * kind: hook * core: it * spec: (none) * summary: Fetch vulnerabilities affecting a specific asset * score: 4 ### hook useAutoSaveDraft * file: src/cores/it/hooks/useProcurementDraft.ts:141 * kind: hook * core: it * spec: (none) * summary: Hook for managing auto save draft. * score: 1 ### hook useBlackoutPeriods * file: src/cores/it/hooks/useChangeCalendar.ts:63 * kind: hook * core: it * spec: (none) * summary: Fetch blackout periods in a date range * score: 4 ### hook useChangeApprovalMutations * file: src/cores/it/hooks/useChangeApprovalMutations.ts:12 * kind: hook * core: it * spec: (none) * summary: Hook for managing change approval mutations. * score: 1 ### hook useChangeBlackoutMutations * file: src/cores/it/hooks/useChangeBlackoutMutations.ts:13 * kind: hook * core: it * spec: (none) * summary: Hook for managing change blackout mutations. * score: 1 ### hook useChangeCalendarEvents * file: src/cores/it/hooks/useChangeCalendar.ts:102 * kind: hook * core: it * spec: (none) * summary: Fetch calendar events (changes + blackouts) for a date range * score: 4 ### hook useChangeRequest * file: src/cores/it/hooks/useChangeRequests.ts:98 * kind: hook * core: it * spec: (none) * summary: Fetch a single change request with full details * score: 4 ### hook useChangeRequestMutations * file: src/cores/it/hooks/useChangeRequestMutations.ts:19 * kind: hook * core: it * spec: (none) * summary: Hook for managing change request mutations. * score: 1 ### hook useChangeRequests * file: src/cores/it/hooks/useChangeRequests.ts:22 * kind: hook * core: it * spec: (none) * summary: Fetch all change requests with optional filtering * score: 4 ### hook useChangeTaskMutations * file: src/cores/it/hooks/useChangeTaskMutations.ts:13 * kind: hook * core: it * spec: (none) * summary: Hook for managing change task mutations. * score: 1 ### hook useChangeTemplate * file: src/cores/it/hooks/useChangeTemplates.ts:62 * kind: hook * core: it * spec: (none) * summary: Fetch a single change template by ID * score: 4 ### hook useChangeTemplateMutations * file: src/cores/it/hooks/useChangeTemplateMutations.ts:19 * kind: hook * core: it * spec: (none) * summary: Hook for managing change template mutations. * score: 1 ### hook useChangeTemplates * file: src/cores/it/hooks/useChangeTemplates.ts:20 * kind: hook * core: it * spec: (none) * summary: Fetch all change templates with optional filtering * score: 4 ### hook useComplianceByFramework * file: src/cores/it/hooks/useComplianceRequirements.ts:93 * kind: hook * core: it * spec: (none) * summary: Provides compliance by framework queries and mutation actions scoped to the current organization. * score: 4 ### hook useComplianceRequirement * file: src/cores/it/hooks/useComplianceRequirements.ts:62 * kind: hook * core: it * spec: (none) * summary: Provides compliance requirement queries and mutation actions scoped to the current organization. * score: 4 ### hook useComplianceRequirementMutations * file: src/cores/it/hooks/useComplianceRequirementMutations.ts:50 * kind: hook * core: it * spec: (none) * summary: Hook for managing compliance requirement mutations. * score: 1 ### hook useComplianceRequirements * file: src/cores/it/hooks/useComplianceRequirements.ts:15 * kind: hook * core: it * spec: (none) * summary: Provides compliance requirements queries and mutation actions scoped to the current organization. * score: 4 ### hook useConflictingChanges * file: src/cores/it/hooks/useChangeCalendar.ts:166 * kind: hook * core: it * spec: (none) * summary: Check for conflicting changes in a time window * score: 4 ### hook useCRApprovals * file: src/cores/it/hooks/useChangeApprovals.ts:14 * kind: hook * core: it * spec: (none) * summary: Fetch approvals for a specific change request * score: 4 ### hook useCreateComment * file: src/cores/it/hooks/useCreateComment.ts:25 * kind: hook * core: it * spec: (none) * summary: Hook for managing create comment. * score: 1 ### hook useCRTasks * file: src/cores/it/hooks/useChangeTasks.ts:15 * kind: hook * core: it * spec: (none) * summary: Fetch tasks for a specific change request * score: 4 ### hook useDashboardPreferences * file: src/cores/it/hooks/useDashboardPreferences.ts:43 * kind: hook * core: it * spec: (none) * summary: Hook for managing dashboard preferences. * score: 1 ### hook useDashboardPreferencesMutations * file: src/cores/it/hooks/useDashboardPreferences.ts:94 * kind: hook * core: it * spec: (none) * summary: Hook for managing dashboard preferences mutations. * score: 1 ### hook useEmployeeAccounts * file: src/cores/it/hooks/useAccessAccounts.ts:62 * kind: hook * core: it * spec: (none) * summary: Provides employee accounts queries and mutation actions scoped to the current organization. * score: 4 ### hook useExpiringContracts * file: src/cores/it/hooks/useITDashboardStats.ts:262 * kind: hook * core: it * spec: (none) * summary: Fetches contracts that will expire within the next days for the current organization. Queries the backend for up to 10 active vendor contracts whose falls between today and today + , ordered by soonest expiration. Each result is mapped to an with computed as the ceiling of the day difference. If there is no current organization or the query fails, an empty array is returned. * params: * daysAhead — Number of days from today to include in the search window (default: 90). * returns: ExpiringContract\[] An array of expiring contracts containing , , , , and . * example: | // Fetch contracts expiring in the next 60 daysconst data: expiring = useExpiringContracts(60); * score: 4 ### hook useExpiringLicenses * file: src/cores/it/hooks/useLicenseCompliance.ts:135 * kind: hook * core: it * spec: (none) * summary: Hook for managing expiring licenses. * score: 1 ### hook useITChangeDetail * file: src/cores/it/hooks/useITChanges.ts:138 * kind: hook * core: it * spec: (none) * summary: Hook for managing itchange detail. * score: 1 ### hook useITChanges * file: src/cores/it/hooks/useITChanges.ts:117 * kind: hook * core: it * spec: (none) * summary: Hook for managing itchanges. * score: 1 ### hook useITDashboardStats * file: src/cores/it/hooks/useITDashboardStats.ts:94 * kind: hook * core: it * spec: (none) * summary: Provides aggregated IT dashboard statistics for the current organization. Fetches counts, averages, totals, and expiring-item metrics for vendors, contracts, purchase requests, procurements, and licenses scoped to the current organization. When no organization is selected the hook returns a default stats object populated with zeros. * returns: UseQueryResultITDashboardStats, unknown - React Query result containing an ITDashboardStats object with fields such as totalVendors, activeVendors, avgSatisfactionRating, expiringContracts30/60/90, totalContractValue, pendingRequests, draftRequests, approvedRequests, totalProcurementValue, totalLicenses, and expiringLicenses30. * example: | const data, isLoading, error = useITDashboardStats();if (!isLoading && data) console.log('Total vendors:', data.totalVendors); * score: 4 ### hook useITDashboardSummary * file: src/cores/it/hooks/useITDashboardSummary.ts:39 * kind: hook * core: it * spec: (none) * summary: Hook for managing itdashboard summary. * score: 1 ### hook useITModuleSettings * file: src/cores/it/hooks/useITModuleSettings.ts:20 * kind: hook * core: it * spec: (none) * summary: Hook for managing itmodule settings. * score: 1 ### hook useKnowledgeBaseArticle * file: src/cores/it/hooks/useKnowledgeBase.ts:133 * kind: hook * core: it * spec: (none) * summary: Hook to fetch a single knowledge base article by ID * score: 4 ### hook useKnowledgeBaseArticleHistory * file: src/cores/it/hooks/useKnowledgeBaseArticleHistory.ts:35 * kind: hook * core: it * spec: (none) * summary: Hook for managing knowledge base article history. * score: 1 ### hook useKnowledgeBaseArticles * file: src/cores/it/hooks/useKnowledgeBase.ts:30 * kind: hook * core: it * spec: (none) * summary: Hook to fetch knowledge base articles with filters and pagination * score: 4 ### hook useKnowledgeBaseMutations * file: src/cores/it/hooks/useKnowledgeBaseMutations.ts:32 * kind: hook * core: it * spec: (none) * summary: Hook for managing knowledge base mutations. * score: 1 ### hook useLicense * file: src/cores/it/hooks/useLicense.ts:16 * kind: hook * core: it * spec: (none) * summary: Hook for managing license. * score: 1 ### hook useLicenseAssignmentMutations * file: src/cores/it/hooks/useLicenseAssignmentMutations.ts:24 * kind: hook * core: it * spec: (none) * summary: Hook for managing license assignment mutations. * score: 1 ### hook useLicenseAssignments * file: src/cores/it/hooks/useLicenseAssignments.ts:70 * kind: hook * core: it * spec: (none) * summary: Hook for managing license assignments. * score: 1 ### hook useLicenseCompliance * file: src/cores/it/hooks/useLicenseCompliance.ts:82 * kind: hook * core: it * spec: (none) * summary: Hook for managing license compliance. * score: 1 ### hook useLicenseMutations * file: src/cores/it/hooks/useLicenseMutations.ts:68 * kind: hook * core: it * spec: (none) * summary: Hook for managing license mutations. * score: 1 ### hook useLicenses * file: src/cores/it/hooks/useLicenses.ts:107 * kind: hook * core: it * spec: (none) * summary: Hook for managing licenses. * score: 1 ### hook useMaintenanceLog * file: src/cores/it/hooks/useMaintenanceLog.ts:58 * kind: hook * core: it * spec: (none) * summary: Hook for managing maintenance log. * score: 1 ### hook useMyAssets * file: src/cores/it/hooks/useMyAssets.ts:35 * kind: hook * core: it * spec: (none) * summary: Hook to fetch assets assigned to the current user.Queries it\_asset\_assignments where is\_active = true and employee\_id matches current user's profile. * score: 4 ### hook useMyChangeRequests * file: src/cores/it/hooks/useChangeRequests.ts:172 * kind: hook * core: it * spec: (none) * summary: Fetch current user's change requests * score: 4 ### hook useMyChangeTasks * file: src/cores/it/hooks/useChangeTasks.ts:51 * kind: hook * core: it * spec: (none) * summary: Fetch tasks assigned to current user * score: 4 ### hook useMyPendingApprovals * file: src/cores/it/hooks/useChangeApprovals.ts:51 * kind: hook * core: it * spec: (none) * summary: Fetch current user's pending approvals * score: 4 ### hook useMyTickets * file: src/cores/it/hooks/useMyTickets.ts:23 * kind: hook * core: it * spec: (none) * summary: Hook for managing my tickets. * score: 1 ### hook useNextAssetTag * file: src/cores/it/hooks/useNextAssetTag.ts:15 * kind: hook * core: it * spec: (none) * summary: Hook for managing next asset tag. * score: 1 ### hook useOnboardingInstance * file: src/cores/it/hooks/useOnboardingInstances.ts:69 * kind: hook * core: it * spec: (none) * summary: Provides onboarding instance queries and mutation actions scoped to the current organization. * score: 4 ### hook useOnboardingInstanceMutations * file: src/cores/it/hooks/useOnboardingInstanceMutations.ts:49 * kind: hook * core: it * spec: (none) * summary: Hook for managing onboarding instance mutations. * score: 1 ### hook useOnboardingInstances * file: src/cores/it/hooks/useOnboardingInstances.ts:11 * kind: hook * core: it * spec: (none) * summary: Provides onboarding instances queries and mutation actions scoped to the current organization. * score: 4 ### hook useOnboardingStats * file: src/cores/it/hooks/useOnboardingInstances.ts:131 * kind: hook * core: it * spec: (none) * summary: Provides onboarding stats queries and mutation actions scoped to the current organization. * score: 4 ### hook useOnboardingTaskInstanceMutations * file: src/cores/it/hooks/useOnboardingTaskInstanceMutations.ts:49 * kind: hook * core: it * spec: (none) * summary: Hook for managing onboarding task instance mutations. * score: 1 ### hook useOnboardingTaskInstances * file: src/cores/it/hooks/useOnboardingTaskInstances.ts:14 * kind: hook * core: it * spec: (none) * summary: Hook for managing onboarding task instances. * score: 1 ### hook useOnboardingTemplate * file: src/cores/it/hooks/useOnboardingTemplates.ts:65 * kind: hook * core: it * spec: (none) * summary: Hook for managing onboarding template. * score: 1 ### hook useOnboardingTemplateMutations * file: src/cores/it/hooks/useOnboardingTemplateMutations.ts:37 * kind: hook * core: it * spec: (none) * summary: Hook for managing onboarding template mutations. * score: 1 ### hook useOnboardingTemplates * file: src/cores/it/hooks/useOnboardingTemplates.ts:14 * kind: hook * core: it * spec: (none) * summary: Hook for managing onboarding templates. * score: 1 ### hook useOpenVulnerabilities * file: src/cores/it/hooks/useVulnerabilities.ts:97 * kind: hook * core: it * spec: (none) * summary: Hook for managing open vulnerabilities. * score: 1 ### hook useOverdueTaskInstances * file: src/cores/it/hooks/useOnboardingTaskInstances.ts:51 * kind: hook * core: it * spec: (none) * summary: Hook for managing overdue task instances. * score: 1 ### hook usePatchDeploymentMutations * file: src/cores/it/hooks/usePatchDeploymentMutations.ts:59 * kind: hook * core: it * spec: (none) * summary: Hook for managing patch deployment mutations. * score: 1 ### hook usePatchDeployments * file: src/cores/it/hooks/usePatchDeployments.ts:23 * kind: hook * core: it * spec: (none) * summary: Hook for managing patch deployments. * score: 1 ### hook usePatchDeploymentSummary * file: src/cores/it/hooks/usePatchDeployments.ts:57 * kind: hook * core: it * spec: (none) * summary: Hook for managing patch deployment summary. * score: 1 ### hook usePatchesWithDeploymentStats * file: src/cores/it/hooks/usePatchesWithDeploymentStats.ts:23 * kind: hook * core: it * spec: (none) * summary: Hook for managing patches with deployment stats. * score: 1 ### hook usePendingCABReview * file: src/cores/it/hooks/useChangeRequests.ts:212 * kind: hook * core: it * spec: (none) * summary: Fetch change requests pending CAB review * score: 4 ### hook usePendingOffboarding * file: src/cores/it/hooks/useOnboardingInstances.ts:121 * kind: hook * core: it * spec: (none) * summary: Provides pending offboarding queries and mutation actions scoped to the current organization. * score: 4 ### hook usePendingOnboarding * file: src/cores/it/hooks/useOnboardingInstances.ts:111 * kind: hook * core: it * spec: (none) * summary: Provides pending onboarding queries and mutation actions scoped to the current organization. * score: 4 ### hook usePopularArticles * file: src/cores/it/hooks/useKnowledgeBase.ts:233 * kind: hook * core: it * spec: (none) * summary: Hook to fetch popular articles by view count * score: 4 ### hook useProcurementDraft * file: src/cores/it/hooks/useProcurementDraft.ts:40 * kind: hook * core: it * spec: (none) * summary: Hook for managing procurement draft. * score: 1 ### hook usePublishedArticles * file: src/cores/it/hooks/useKnowledgeBase.ts:191 * kind: hook * core: it * spec: (none) * summary: Hook to fetch published articles for self-service portal * score: 4 ### hook usePurchaseRequest * file: src/cores/it/hooks/usePurchaseRequest.ts:17 * kind: hook * core: it * spec: (none) * summary: Hook for managing purchase request. * score: 1 ### hook usePurchaseRequestMutations * file: src/cores/it/hooks/usePurchaseRequestMutations.ts:72 * kind: hook * core: it * spec: (none) * summary: Hook for managing purchase request mutations. * score: 1 ### hook usePurchaseRequests * file: src/cores/it/hooks/usePurchaseRequests.ts:111 * kind: hook * core: it * spec: (none) * summary: Hook for managing purchase requests. * score: 1 ### hook useReportDefinition * file: src/cores/it/hooks/useReportDefinitions.ts:101 * kind: hook * core: it * spec: (none) * summary: Hook for managing report definition. * score: 1 ### hook useReportDefinitionMutations * file: src/cores/it/hooks/useReportDefinitions.ts:140 * kind: hook * core: it * spec: (none) * summary: Hook for managing report definition mutations. * score: 1 ### hook useReportDefinitions * file: src/cores/it/hooks/useReportDefinitions.ts:48 * kind: hook * core: it * spec: (none) * summary: Hook for managing report definitions. * score: 1 ### hook useReportRun * file: src/cores/it/hooks/useReportRuns.ts:101 * kind: hook * core: it * spec: (none) * summary: Hook for managing report run. * score: 1 ### hook useReportRunMutations * file: src/cores/it/hooks/useReportRuns.ts:184 * kind: hook * core: it * spec: (none) * summary: Hook for managing report run mutations. * score: 1 ### hook useReportRuns * file: src/cores/it/hooks/useReportRuns.ts:49 * kind: hook * core: it * spec: (none) * summary: Hook for managing report runs. * score: 1 ### hook useScheduledChanges * file: src/cores/it/hooks/useChangeCalendar.ts:22 * kind: hook * core: it * spec: (none) * summary: Fetch scheduled changes in a date range * score: 4 ### hook useSearchKnowledgeBase * file: src/cores/it/hooks/useKnowledgeBase.ts:275 * kind: hook * core: it * spec: (none) * summary: Hook to search knowledge base articles * score: 4 ### hook useSecurityDashboardStats * file: src/cores/it/hooks/useSecurityDashboardStats.ts:15 * kind: hook * core: it * spec: (none) * summary: Hook for managing security dashboard stats. * score: 1 ### hook useSecurityIncident * file: src/cores/it/hooks/useSecurityIncidents.ts:70 * kind: hook * core: it * spec: (none) * summary: Hook for managing security incident. * score: 1 ### hook useSecurityIncidentMutations * file: src/cores/it/hooks/useSecurityIncidentMutations.ts:63 * kind: hook * core: it * spec: (none) * summary: Hook for managing security incident mutations. * score: 1 ### hook useSecurityIncidents * file: src/cores/it/hooks/useSecurityIncidents.ts:14 * kind: hook * core: it * spec: (none) * summary: Hook for managing security incidents. * score: 1 ### hook useSecurityPatch * file: src/cores/it/hooks/useSecurityPatches.ts:70 * kind: hook * core: it * spec: (none) * summary: Hook for managing security patch. * score: 1 ### hook useSecurityPatches * file: src/cores/it/hooks/useSecurityPatches.ts:14 * kind: hook * core: it * spec: (none) * summary: Hook for managing security patches. * score: 1 ### hook useSecurityPatchMutations * file: src/cores/it/hooks/useSecurityPatchMutations.ts:62 * kind: hook * core: it * spec: (none) * summary: Hook for managing security patch mutations. * score: 1 ### hook useSuggestedKnowledgeBaseArticles * file: src/cores/it/hooks/useSuggestedKnowledgeBaseArticles.ts:17 * kind: hook * core: it * spec: (none) * summary: Hook for managing suggested knowledge base articles. * score: 1 ### hook useTicket * file: src/cores/it/hooks/useTicket.ts:30 * kind: hook * core: it * spec: (none) * summary: Retrieve a single IT ticket enriched with related entities and metadata scoped to the current organization. Fetches the ticket identified by and augments it with requester and assignee profiles, site, linked asset, and comment count. The query is scoped to the current organization and uses React Query for caching and lifecycle management. * params: * ticketId — The ID of the ticket to retrieve; when , the hook will be disabled. * returns: UseTicketResult containing: - : the ticket with relations and typed fields () or if not loaded, - : while the query is in flight, - : an object if the query failed, otherwise . * example: | const ticket, isLoading, error = useTicket('ticket-uuid'); * score: 4 ### hook useTicketComments * file: src/cores/it/hooks/useTicketComments.ts:16 * kind: hook * core: it * spec: (none) * summary: Hook for managing ticket comments. * score: 1 ### hook useTicketMutations * file: src/cores/it/hooks/useTicketMutations.ts:13 * kind: hook * core: it * spec: (none) * summary: Hook for managing ticket mutations. * score: 1 ### hook useTickets * file: src/cores/it/hooks/useTickets.ts:25 * kind: hook * core: it * spec: (none) * summary: Hook for managing tickets. * score: 1 ### hook useTicketSecurityIncidents * file: src/cores/it/hooks/useTicketSecurityIncidents.ts:14 * kind: hook * core: it * spec: (none) * summary: Fetch security incidents linked to a specific ticket * score: 4 ### hook useUpcomingAssessments * file: src/cores/it/hooks/useComplianceRequirements.ts:130 * kind: hook * core: it * spec: (none) * summary: Provides upcoming assessments queries and mutation actions scoped to the current organization. * score: 4 ### hook useVendor * file: src/cores/it/hooks/useVendor.ts:16 * kind: hook * core: it * spec: (none) * summary: Hook for managing vendor. * score: 1 ### hook useVendorContract * file: src/cores/it/hooks/useVendorContract.ts:16 * kind: hook * core: it * spec: (none) * summary: Hook for managing vendor contract. * score: 1 ### hook useVendorContractMutations * file: src/cores/it/hooks/useVendorContractMutations.ts:42 * kind: hook * core: it * spec: (none) * summary: Hook for managing vendor contract mutations. * score: 1 ### hook useVendorContracts * file: src/cores/it/hooks/useVendorContracts.ts:25 * kind: hook * core: it * spec: (none) * summary: Hook for managing vendor contracts. * score: 1 ### hook useVendorMutations * file: src/cores/it/hooks/useVendorMutations.ts:32 * kind: hook * core: it * spec: (none) * summary: Hook for managing vendor mutations. * score: 1 ### hook useVendors * file: src/cores/it/hooks/useVendors.ts:25 * kind: hook * core: it * spec: (none) * summary: Hook for managing vendors. * score: 1 ### hook useVulnerabilities * file: src/cores/it/hooks/useVulnerabilities.ts:14 * kind: hook * core: it * spec: (none) * summary: Hook for managing vulnerabilities. * score: 1 ### hook useVulnerability * file: src/cores/it/hooks/useVulnerabilities.ts:66 * kind: hook * core: it * spec: (none) * summary: Hook for managing vulnerability. * score: 1 ### hook useVulnerabilityAssetMutations * file: src/cores/it/hooks/useVulnerabilityAssets.ts:145 * kind: hook * core: it * spec: (none) * summary: Mutations for linking/unlinking assets to vulnerabilities * score: 4 ### hook useVulnerabilityAssets * file: src/cores/it/hooks/useVulnerabilityAssets.ts:77 * kind: hook * core: it * spec: (none) * summary: Fetch assets linked to a specific vulnerability * score: 4 ### hook useVulnerabilityMutations * file: src/cores/it/hooks/useVulnerabilityMutations.ts:67 * kind: hook * core: it * spec: (none) * summary: Hook for managing vulnerability mutations. * score: 1 ## Components ### component AccountStatusBadge * file: src/cores/it/components/onboarding/AccountStatusBadge.tsx:31 * kind: component * core: it * spec: IT-08 * summary: Badge rendering an onboarding account-provisioning status (e.g. pending,provisioned, disabled) with a semantic variant. * params: * props — The account status to render. * score: 5 ### component AddCommentForm * file: src/cores/it/components/tickets/AddCommentForm.tsx:38 * kind: component * core: it * spec: IT-02 * summary: Form for adding a comment to an IT support ticket, optionally letting agentsmark the comment as internal-only. * params: * props — The target ticket id, an optional flag to show the internal-comment toggle, and optional ticket context that enables the AI "Draft reply" affordance. * score: 5 ### component AffectedAssetsCard * file: src/cores/it/components/security/AffectedAssetsCard.tsx:45 * kind: component * core: it * spec: IT-05 * summary: Card listing the IT assets affected by a security vulnerability, each taggedwith its operational status, with an action to link more assets. * params: * props — The vulnerability id whose affected assets are shown. * score: 5 ### component ApprovalWorkflowCard * file: src/cores/it/components/change-management/ApprovalWorkflowCard.tsx:44 * kind: component * core: it * spec: IT-09 * summary: Card visualizing a change request's approval workflow as an ordered list ofapproval steps, each with a status icon (pending, approved, rejected,delegated, skipped). * params: * props — The approval step records and an optional . * score: 5 ### component ArticleVersionHistory * file: src/cores/it/components/knowledge-base/ArticleVersionHistory.tsx:25 * kind: component * core: it * spec: IT-10 * summary: List of a knowledge-base article's version history, rendering loading anderror states and each revision's version number, title, and author. * params: * props — The article versions plus loading and error state. * score: 5 ### component AskAIBeforeFilingCard * file: src/cores/it/components/tickets/AskAIBeforeFilingCard.tsx:27 * kind: component * core: it * spec: (none) * summary: IT clean-ops: "Ask AI before you file" panel on the New Ticket page (RAG-lite).Synthesizes a cited answer to the requester's subject+description from theknowledge-base articles already retrieved by useSuggestedKnowledgeBaseArticles— no embeddings/vector/cron. Renders nothing unless IT AI is enabled.Suggest-not-save: this is advisory only. The user still files the ticket viathe existing TicketForm if the AI answer doesn't resolve their request; whendeflected=true we surface the resolution so they can self-serve instead. * score: 2 ### component AssetAssignmentCard * file: src/cores/it/components/onboarding/AssetAssignmentCard.tsx:30 * kind: component * core: it * spec: IT-08 * summary: Card for an onboarding task that assigns an asset to the new hire, offering apicker of available assets and invoking the assign callback. * params: * props — The task id, an assign handler, optional available assets, a loading flag, and an optional . * score: 5 ### component AssetAssignmentDialog * file: src/cores/it/components/assets/AssetAssignmentDialog.tsx:44 * kind: component * core: it * spec: IT-01 * summary: Modal dialog for assigning an IT asset to an employee and site, submittingthrough the asset-assignment hook and surfacing the asset's current statusand type badges. * params: * props — Open state, change handler, and the asset being assigned. * score: 5 ### component AssetAssignmentHistory * file: src/cores/it/components/assets/AssetAssignmentHistory.tsx:32 * kind: component * core: it * spec: IT-01 * summary: Data table listing an asset's past and current assignments, showing assignedemployee, site, dates, and return condition for each assignment record. * params: * props — The asset assignment records to render. * score: 5 ### component AssetCreatePage * file: src/cores/it/pages/assets/AssetCreatePage.tsx:13 * kind: component * core: it * spec: (none) * summary: Utility for asset create page. * score: 1 ### component AssetCreationWizard * file: src/cores/it/components/wizards/AssetCreationWizard.tsx:59 * kind: component * core: it * spec: (none) * summary: Utility for asset creation wizard. * score: 1 ### component AssetDetailPage * file: src/cores/it/pages/assets/AssetDetailPage.tsx:52 * kind: component * core: it * spec: (none) * summary: Utility for asset detail page. * score: 1 ### component AssetDetailsStep * file: src/cores/it/components/wizard-steps/AssetDetailsStep.tsx:15 * kind: component * core: it * spec: (none) * summary: Utility for asset details step. * score: 1 ### component AssetLicensesCard * file: src/cores/it/components/assets/AssetLicensesCard.tsx:59 * kind: component * core: it * spec: IT-04 * summary: Card listing the software licenses assigned to a given asset, with eachlicense's compliance status and an action to assign or revoke a license. * params: * props — The asset id whose license assignments are displayed. * score: 5 ### component AssetMaintenanceHistory * file: src/cores/it/components/assets/AssetMaintenanceHistory.tsx:27 * kind: component * core: it * spec: IT-01 * summary: Data table of an asset's maintenance records (type, date, cost, notes) withan optional action to log a new maintenance event. * params: * props — The maintenance records plus an optional log-maintenance callback. * score: 5 ### component AssetReturnDialog * file: src/cores/it/components/assets/AssetReturnDialog.tsx:41 * kind: component * core: it * spec: IT-01 * summary: Modal dialog for returning (unassigning) an asset from its current holder,capturing the return condition and notes before unassigning. * params: * props — Open state, change handler, the asset, and its current assignment. * score: 5 ### component AssetReviewStep * file: src/cores/it/components/wizard-steps/AssetReviewStep.tsx:23 * kind: component * core: it * spec: (none) * summary: Utility for asset review step. * score: 1 ### component AssetStatusBadge * file: src/cores/it/components/assets/AssetStatusBadge.tsx:34 * kind: component * core: it * spec: IT-01 * summary: Colored status badge for an IT asset lifecycle state (e.g. available,assigned, in repair, retired, lost, stolen) using semantic token variants. * params: * props — The asset status to render. * score: 5 ### component AssetTypeBadge * file: src/cores/it/components/assets/AssetTypeBadge.tsx:38 * kind: component * core: it * spec: IT-01 * summary: Badge displaying an asset's type with a matching lucide icon, resolving thelabel from the org's asset-type picklist (falling back to default labels). * params: * props — The asset type to render. * score: 5 ### component AssignLicenseToAssetDialog * file: src/cores/it/components/assets/AssignLicenseToAssetDialog.tsx:36 * kind: component * core: it * spec: IT-04 * summary: Modal dialog for assigning a software license to an asset, offering asearchable license picker and submitting through the license-assignmentmutations hook. * params: * props — The target asset id plus dialog open state and change handler. * score: 5 ### component BlackoutPeriodCard * file: src/cores/it/components/change-management/BlackoutPeriodCard.tsx:28 * kind: component * core: it * spec: IT-09 * summary: Card summarizing a change-management blackout period (its window and reason),with an optional delete action gated by the flag. * params: * props — The blackout record, an optional delete handler, a delete-permission flag, and an optional . * score: 5 ### component BlackoutPeriodsPage * file: src/cores/it/pages/changes/BlackoutPeriodsPage.tsx:24 * kind: component * core: it * spec: (none) * summary: Utility for blackout periods page. * score: 1 ### component BudgetJustificationStep * file: src/cores/it/components/procurement-wizard/BudgetJustificationStep.tsx:24 * kind: component * core: it * spec: IT-06 * summary: Procurement wizard step capturing the budget code and justification for apurchase request, reading and writing the shared wizard form context. * score: 5 ### component CABReviewPage * file: src/cores/it/pages/changes/CABReviewPage.tsx:19 * kind: component * core: it * spec: (none) * summary: Utility for cabreview page. * score: 1 ### component ChangeApprovalInboxPage * file: src/cores/it/pages/changes/ChangeApprovalInboxPage.tsx:21 * kind: component * core: it * spec: (none) * summary: Utility for change approval inbox page. * score: 1 ### component ChangeCalendarPage * file: src/cores/it/pages/changes/ChangeCalendarPage.tsx:30 * kind: component * core: it * spec: (none) * summary: Utility for change calendar page. * score: 1 ### component ChangeCalendarWidget * file: src/cores/it/components/change-management/ChangeCalendarWidget.tsx:28 * kind: component * core: it * spec: IT-09 * summary: Calendar widget plotting scheduled change events by date, invoking a callbackwhen the user selects a day to drill into its changes. * params: * props — The change calendar events, an optional date-select handler, and an optional . * score: 5 ### component ChangeRequestDetailPage * file: src/cores/it/pages/changes/ChangeRequestDetailPage.tsx:30 * kind: component * core: it * spec: (none) * summary: Utility for change request detail page. * score: 1 ### component ChangeRequestListPage * file: src/cores/it/pages/changes/ChangeRequestListPage.tsx:19 * kind: component * core: it * spec: (none) * summary: Utility for change request list page. * score: 1 ### component ChangeStatusBadge * file: src/cores/it/components/change-management/ChangeStatusBadge.tsx:40 * kind: component * core: it * spec: IT-09 * summary: Badge rendering a change request's workflow status (e.g. implementing,verification, completed, rolled back, cancelled) with a semantic variant. * params: * props — The change status and an optional . * score: 5 ### component ChangeTemplateDetailPage * file: src/cores/it/pages/changes/ChangeTemplateDetailPage.tsx:22 * kind: component * core: it * spec: (none) * summary: Utility for change template detail page. * score: 1 ### component ChangeTemplatesPage * file: src/cores/it/pages/changes/ChangeTemplatesPage.tsx:20 * kind: component * core: it * spec: (none) * summary: Utility for change templates page. * score: 1 ### component ComplianceDashboardPage * file: src/cores/it/pages/security/compliance/ComplianceDashboardPage.tsx:30 * kind: component * core: it * spec: (none) * summary: Utility for compliance dashboard page. * score: 1 ### component ComplianceRequirementListPage * file: src/cores/it/pages/security/compliance/ComplianceRequirementListPage.tsx:43 * kind: component * core: it * spec: (none) * summary: Utility for compliance requirement list page. * score: 1 ### component ComplianceStatusBadge * file: src/cores/it/components/licenses/ComplianceStatusBadge.tsx:30 * kind: component * core: it * spec: IT-04 * summary: Badge rendering a software license's compliance status (e.g. compliant,over-deployed, expiring) with a semantic variant. * params: * props — The compliance status and an optional . * score: 5 ### component ContractCard * file: src/cores/it/components/vendors/ContractCard.tsx:21 * kind: component * core: it * spec: (none) * summary: Utility for contract card. * score: 1 ### component ContractDetailPage * file: src/cores/it/pages/vendors/ContractDetailPage.tsx:20 * kind: component * core: it * spec: (none) * summary: Utility for contract detail page. * score: 1 ### component ContractForm * file: src/cores/it/components/vendors/ContractForm.tsx:111 * kind: component * core: it * spec: IT-03 * summary: Renders the tabbed IT vendor contract form (basic info, terms, financial, andnotes) for creating or editing a contract, emitting validated values via. Pre-fills from an existing when editing and locks thecontract number in edit mode. * params: * props — Optional to edit, available , submit andcancel handlers, an optional submitting flag, and an optional default vendor id. * score: 5 ### component ContractListPage * file: src/cores/it/pages/vendors/ContractListPage.tsx:20 * kind: component * core: it * spec: (none) * summary: Utility for contract list page. * score: 1 ### component ContractStatusBadge * file: src/cores/it/components/vendors/ContractStatusBadge.tsx:24 * kind: component * core: it * spec: (none) * summary: Utility for contract status badge. * score: 1 ### component ContractTable * file: src/cores/it/components/vendors/ContractTable.tsx:28 * kind: component * core: it * spec: (none) * summary: Utility for contract table. * score: 1 ### component CreatedAssetsCard * file: src/cores/it/components/procurement/CreatedAssetsCard.tsx:29 * kind: component * core: it * spec: IT-06 * summary: Card listing the IT assets created from a fulfilled purchase request, linkingprocurement to the resulting asset records. * params: * props — The purchase request id whose created assets are shown. * score: 5 ### component CreateSecurityIncidentFromTicketDialog * file: src/cores/it/components/tickets/CreateSecurityIncidentFromTicketDialog.tsx:62 * kind: component * core: it * spec: IT-02 * summary: Modal dialog for escalating an IT support ticket into a linked securityincident, mapping ticket priority to incident severity. * params: * props — Dialog open state and change handler plus the source ticket. * score: 5 ### component CreateTicketFromChangeDialog * file: src/cores/it/components/changes/CreateTicketFromChangeDialog.tsx:35 * kind: component * core: it * spec: IT-09 * summary: Modal dialog for spawning a linked IT support ticket from a change request,prefilling context and letting the user set the new ticket's priority. * params: * props — The source change request id plus dialog open state and change handler. * score: 5 ### component DeploymentProgressBar * file: src/cores/it/components/security/DeploymentProgressBar.tsx:27 * kind: component * core: it * spec: IT-05 * summary: Progress bar visualizing patch/remediation deployment coverage as a ratio ofdeployed to total targets, with an optional textual label. * params: * props — The deployed count, the total count, an optional show-label flag, and an optional . * score: 5 ### component EditChangeRequestPage * file: src/cores/it/pages/changes/EditChangeRequestPage.tsx:23 * kind: component * core: it * spec: (none) * summary: Utility for edit change request page. * score: 1 ### component EditComplianceRequirementPage * file: src/cores/it/pages/security/compliance/EditComplianceRequirementPage.tsx:26 * kind: component * core: it * spec: (none) * summary: Utility for edit compliance requirement page. * score: 1 ### component EditContractPage * file: src/cores/it/pages/vendors/EditContractPage.tsx:17 * kind: component * core: it * spec: (none) * summary: Utility for edit contract page. * score: 1 ### component EditIncidentPage * file: src/cores/it/pages/security/incidents/EditIncidentPage.tsx:26 * kind: component * core: it * spec: (none) * summary: Utility for edit incident page. * score: 1 ### component EditKnowledgeBaseArticlePage * file: src/cores/it/pages/knowledge-base/EditKnowledgeBaseArticlePage.tsx:18 * kind: component * core: it * spec: (none) * summary: Utility for edit knowledge base article page. * score: 1 ### component EditLicensePage * file: src/cores/it/pages/licenses/EditLicensePage.tsx:12 * kind: component * core: it * spec: (none) * summary: Utility for edit license page. * score: 1 ### component EditPatchPage * file: src/cores/it/pages/security/patches/EditPatchPage.tsx:26 * kind: component * core: it * spec: (none) * summary: Utility for edit patch page. * score: 1 ### component EditPurchaseRequestPage * file: src/cores/it/pages/procurement/EditPurchaseRequestPage.tsx:13 * kind: component * core: it * spec: (none) * summary: Utility for edit purchase request page. * score: 1 ### component EditReportPage * file: src/cores/it/pages/reports/EditReportPage.tsx:38 * kind: component * core: it * spec: (none) * summary: Utility for edit report page. * score: 1 ### component EditVendorPage * file: src/cores/it/pages/vendors/EditVendorPage.tsx:16 * kind: component * core: it * spec: (none) * summary: Utility for edit vendor page. * score: 1 ### component EditVulnerabilityPage * file: src/cores/it/pages/security/vulnerabilities/EditVulnerabilityPage.tsx:26 * kind: component * core: it * spec: (none) * summary: Utility for edit vulnerability page. * score: 1 ### component EmployeeITProfilePage * file: src/cores/it/pages/onboarding/EmployeeITProfilePage.tsx:23 * kind: component * core: it * spec: (none) * summary: Utility for employee itprofile page. * score: 1 ### component ImplementationChecklist * file: src/cores/it/components/change-management/ImplementationChecklist.tsx:60 * kind: component * core: it * spec: IT-09 * summary: Checklist of a change request's implementation tasks grouped by phase(pre-implementation through rollback), with per-task status and start/completeactions. * params: * props — The implementation tasks plus start/complete callbacks. * score: 5 ### component IncidentDetailPage * file: src/cores/it/pages/security/incidents/IncidentDetailPage.tsx:42 * kind: component * core: it * spec: (none) * summary: Utility for incident detail page. * score: 1 ### component IncidentListPage * file: src/cores/it/pages/security/incidents/IncidentListPage.tsx:46 * kind: component * core: it * spec: (none) * summary: Utility for incident list page. * score: 1 ### component ITAssetTable * file: src/cores/it/components/assets/ITAssetTable.tsx:43 * kind: component * core: it * spec: IT-01 * summary: Data table of IT assets (enriched with site name) showing type, status, andexpiry warnings, with row navigation to each asset's detail page. * params: * props — The assets to render and a loading flag for the skeleton state. * score: 5 ### component ITDashboard * file: src/cores/it/pages/ITDashboard.tsx:34 * kind: component * core: it * spec: (none) * summary: IT Dashboard - IT-07: IT Dashboard & ReportingReal-time overview of IT operations with live widgets. * score: 2 ### component ITModuleSettingsForm * file: src/cores/it/components/settings/ITModuleSettingsForm.tsx:127 * kind: component * core: it * spec: none * summary: Form for editing IT module configuration settings, prefilled from the currentsettings and reporting dirty state and submissions to the parent. * params: * props — The current settings, a submit handler, a submitting flag, and a dirty-state callback. * score: 5 ### component ITOverview * file: src/cores/it/pages/ITOverview\.tsx:31 * kind: component * core: it * spec: (none) * summary: Utility for itoverview. * score: 1 ### component ITSettingsPage * file: src/cores/it/pages/ITSettingsPage.tsx:15 * kind: component * core: it * spec: (none) * summary: IT Settings Page — module configuration (). * score: 2 ### component ITTicketTable * file: src/cores/it/components/tickets/ITTicketTable.tsx:35 * kind: component * core: it * spec: IT-02 * summary: Data table of IT support tickets showing number, subject, type, priority,status, and SLA state, rendering a skeleton while loading. * params: * props — The tickets to render and a loading flag. * score: 5 ### component KBArticleCard * file: src/cores/it/components/knowledge-base/KBArticleCard.tsx:27 * kind: component * core: it * spec: IT-10 * summary: Card preview of a knowledge-base article showing its title, category, andstatus, with an optional layout for dense lists. * params: * props — The article to preview and an optional compact-layout flag. * score: 5 ### component KBArticleForm * file: src/cores/it/components/knowledge-base/KBArticleForm.tsx:55 * kind: component * core: it * spec: IT-10 * summary: Create/edit form for a knowledge-base article (title, category, body, status),prefilling from an existing article when editing. * params: * props — The optional article being edited, a submit handler, and a submitting flag. * score: 5 ### component KBArticleTable * file: src/cores/it/components/knowledge-base/KBArticleTable.tsx:36 * kind: component * core: it * spec: IT-10 * summary: Data table of knowledge-base articles with per-row archive and deleteactions, rendering a skeleton while loading. * params: * props — The articles, a loading flag, and archive/delete callbacks. * score: 5 ### component KBCategoryBadge * file: src/cores/it/components/knowledge-base/KBCategoryBadge.tsx:22 * kind: component * core: it * spec: IT-10 * summary: Badge rendering a knowledge-base article's category label with a consistentstyle. * params: * props — The category value and an optional . * score: 5 ### component KBFilterBar * file: src/cores/it/components/knowledge-base/KBFilterBar.tsx:24 * kind: component * core: it * spec: IT-10 * summary: Filter bar for the knowledge-base list, letting the user narrow articles bycategory and status and emitting the updated filter selections. * params: * props — The current filter selections and a change handler. * score: 5 ### component KBHelpfulButtons * file: src/cores/it/components/knowledge-base/KBHelpfulButtons.tsx:30 * kind: component * core: it * spec: IT-10 * summary: Helpful / not-helpful voting buttons for a knowledge-base article, showingthe running counts and persisting the visitor's vote in local storage toprevent duplicate voting. * params: * props — The article id, current vote counts, a vote handler, and a voting-in-progress flag. * score: 5 ### component KBSearchBar * file: src/cores/it/components/knowledge-base/KBSearchBar.tsx:27 * kind: component * core: it * spec: IT-10 * summary: Controlled search input for the knowledge base, emitting the query string asthe user types with a configurable placeholder. * params: * props — The current value, a change handler, an optional placeholder, and an optional . * score: 5 ### component KBStatusBadge * file: src/cores/it/components/knowledge-base/KBStatusBadge.tsx:28 * kind: component * core: it * spec: IT-10 * summary: Badge rendering a knowledge-base article's publication status (e.g. draft,published, archived) with a semantic variant. * params: * props — The article status and an optional . * score: 5 ### component KnowledgeBaseAnalyticsPage * file: src/cores/it/pages/knowledge-base/KnowledgeBaseAnalyticsPage.tsx:39 * kind: component * core: it * spec: (none) * summary: Utility for knowledge base analytics page. * score: 1 ### component KnowledgeBaseArticlePage * file: src/cores/it/pages/knowledge-base/KnowledgeBaseArticlePage.tsx:26 * kind: component * core: it * spec: (none) * summary: Utility for knowledge base article page. * score: 1 ### component KnowledgeBaseListPage * file: src/cores/it/pages/knowledge-base/KnowledgeBaseListPage.tsx:17 * kind: component * core: it * spec: (none) * summary: Utility for knowledge base list page. * score: 1 ### component KnowledgeBasePortalPage * file: src/cores/it/pages/knowledge-base/KnowledgeBasePortalPage.tsx:17 * kind: component * core: it * spec: (none) * summary: Utility for knowledge base portal page. * score: 1 ### component LicenseAssignmentDialog * file: src/cores/it/components/licenses/LicenseAssignmentDialog.tsx:50 * kind: component * core: it * spec: IT-04 * summary: Modal dialog for assigning a software license seat to a user or asset,submitting the assignment for the selected license. * params: * props — Dialog open state, change handler, and the license being assigned. * score: 5 ### component LicenseAssignmentTable * file: src/cores/it/components/licenses/LicenseAssignmentTable.tsx:28 * kind: component * core: it * spec: IT-04 * summary: Data table of a license's seat assignments (assignee, date, status) with aper-row revoke action, rendering a skeleton while loading. * params: * props — The assignment records, a loading flag, and a revoke callback. * score: 5 ### component LicenseCard * file: src/cores/it/components/licenses/LicenseCard.tsx:29 * kind: component * core: it * spec: IT-04 * summary: Summary card for a software license showing its name, type, seat utilization,and status/compliance badges. * params: * props — The license to display. * score: 5 ### component LicenseCompliancePage * file: src/cores/it/pages/licenses/LicenseCompliancePage.tsx:33 * kind: component * core: it * spec: (none) * summary: Utility for license compliance page. * score: 1 ### component LicenseDetailPage * file: src/cores/it/pages/licenses/LicenseDetailPage.tsx:25 * kind: component * core: it * spec: (none) * summary: Utility for license detail page. * score: 1 ### component LicenseFilterBar * file: src/cores/it/components/licenses/LicenseFilterBar.tsx:37 * kind: component * core: it * spec: IT-04 * summary: Filter bar for the software-license list, letting the user narrow by status,license type, and compliance status and emitting the updated filters. * params: * props — The current selections and a change handler. * score: 5 ### component LicenseForm * file: src/cores/it/components/licenses/LicenseForm.tsx:84 * kind: component * core: it * spec: IT-04 * summary: Tabbed create/edit form for a software license (basic info, license details,dates, financials, settings), prefilling from an existing license whenediting and emitting validated on submit. * params: * props — The optional license being edited, submit/cancel handlers, and a submitting flag. * score: 5 ### component LicenseListPage * file: src/cores/it/pages/licenses/LicenseListPage.tsx:16 * kind: component * core: it * spec: (none) * summary: Utility for license list page. * score: 1 ### component LicenseStatusBadge * file: src/cores/it/components/licenses/LicenseStatusBadge.tsx:32 * kind: component * core: it * spec: IT-04 * summary: Badge rendering a software license's lifecycle status (active, expired,cancelled, pending) with a semantic variant. * params: * props — The license status and an optional . * score: 5 ### component LicenseTable * file: src/cores/it/components/licenses/LicenseTable.tsx:35 * kind: component * core: it * spec: IT-04 * summary: Data table of software licenses showing software, type, seat usage, status,and compliance, rendering a skeleton while loading. * params: * props — The licenses to render and an optional loading flag. * score: 5 ### component LicenseTypeBadge * file: src/cores/it/components/licenses/LicenseTypeBadge.tsx:21 * kind: component * core: it * spec: IT-04 * summary: Badge rendering a software license's type (e.g. perpetual, subscription,concurrent, named user, site, enterprise) with a consistent style. * params: * props — The license type and an optional . * score: 5 ### component LinkAssetToTicketDialog * file: src/cores/it/components/tickets/LinkAssetToTicketDialog.tsx:35 * kind: component * core: it * spec: IT-02 * summary: Modal dialog for linking an IT asset to a support ticket, offering an assetpicker and associating the chosen asset with the ticket. * params: * props — The target ticket id plus dialog open state and change handler. * score: 5 ### component LinkAssetToVulnerabilityDialog * file: src/cores/it/components/security/LinkAssetToVulnerabilityDialog.tsx:46 * kind: component * core: it * spec: IT-05 * summary: Modal dialog for linking IT assets to a security vulnerability, offering anasset picker that excludes already-linked assets. * params: * props — Dialog open state and change handler, the vulnerability id, and the asset ids to exclude. * score: 5 ### component LinkedSecurityIncidents * file: src/cores/it/components/tickets/LinkedSecurityIncidents.tsx:46 * kind: component * core: it * spec: IT-02 * summary: Card listing the security incidents linked to an IT support ticket, each withits status, plus an action to create a new linked incident. * params: * props — The ticket id and a callback to create a new incident. * score: 5 ### component LinkedTicketCard * file: src/cores/it/components/changes/LinkedTicketCard.tsx:42 * kind: component * core: it * spec: IT-09 * summary: Card showing the IT support ticket linked to a change request, fetching therelated ticket by id and rendering a loading state while it resolves. * params: * props — The change request id and the related ticket id (or when unlinked). * score: 5 ### component LocationStep * file: src/cores/it/components/wizard-steps/LocationStep.tsx:14 * kind: component * core: it * spec: (none) * summary: Utility for location step. * score: 1 ### component MaintenanceLogDialog * file: src/cores/it/components/assets/MaintenanceLogDialog.tsx:46 * kind: component * core: it * spec: IT-01 * summary: Modal dialog for logging a maintenance event against an asset (type, date,cost, notes), submitting through the maintenance-log hook. * params: * props — Open state, change handler, and the asset being serviced. * score: 5 ### component MaintenanceTypeBadge * file: src/cores/it/components/assets/MaintenanceTypeBadge.tsx:36 * kind: component * core: it * spec: IT-01 * summary: Badge rendering an asset maintenance type (e.g. repair, upgrade, inspection,preventive) with a matching semantic variant and label. * params: * props — The maintenance type to render. * score: 5 ### component MyAssetsPage * file: src/cores/it/pages/assets/MyAssetsPage.tsx:119 * kind: component * core: it * spec: (none) * summary: Utility for my assets page. * score: 1 ### component MyChangeRequestsPage * file: src/cores/it/pages/changes/MyChangeRequestsPage.tsx:19 * kind: component * core: it * spec: (none) * summary: Utility for my change requests page. * score: 1 ### component MyTicketsPage * file: src/cores/it/pages/tickets/MyTicketsPage.tsx:15 * kind: component * core: it * spec: (none) * summary: Utility for my tickets page. * score: 1 ### component NewChangeRequestPage * file: src/cores/it/pages/changes/NewChangeRequestPage.tsx:23 * kind: component * core: it * spec: (none) * summary: Utility for new change request page. * score: 1 ### component NewChangeTemplatePage * file: src/cores/it/pages/changes/NewChangeTemplatePage.tsx:20 * kind: component * core: it * spec: (none) * summary: Utility for new change template page. * score: 1 ### component NewComplianceRequirementPage * file: src/cores/it/pages/security/compliance/NewComplianceRequirementPage.tsx:22 * kind: component * core: it * spec: (none) * summary: Utility for new compliance requirement page. * score: 1 ### component NewContractPage * file: src/cores/it/pages/vendors/NewContractPage.tsx:15 * kind: component * core: it * spec: (none) * summary: Utility for new contract page. * score: 1 ### component NewIncidentPage * file: src/cores/it/pages/security/incidents/NewIncidentPage.tsx:22 * kind: component * core: it * spec: (none) * summary: Utility for new incident page. * score: 1 ### component NewKnowledgeBaseArticlePage * file: src/cores/it/pages/knowledge-base/NewKnowledgeBaseArticlePage.tsx:12 * kind: component * core: it * spec: (none) * summary: Utility for new knowledge base article page. * score: 1 ### component NewLicensePage * file: src/cores/it/pages/licenses/NewLicensePage.tsx:11 * kind: component * core: it * spec: (none) * summary: Utility for new license page. * score: 1 ### component NewPatchPage * file: src/cores/it/pages/security/patches/NewPatchPage.tsx:23 * kind: component * core: it * spec: (none) * summary: Utility for new patch page. * score: 1 ### component NewProvisioningTemplatePage * file: src/cores/it/pages/onboarding/NewProvisioningTemplatePage.tsx:37 * kind: component * core: it * spec: (none) * summary: Utility for new provisioning template page. * score: 1 ### component NewPurchaseRequestPage * file: src/cores/it/pages/procurement/NewPurchaseRequestPage.tsx:10 * kind: component * core: it * spec: (none) * summary: Utility for new purchase request page. * score: 1 ### component NewReportPage * file: src/cores/it/pages/reports/NewReportPage.tsx:36 * kind: component * core: it * spec: (none) * summary: Utility for new report page. * score: 1 ### component NewTicketPage * file: src/cores/it/pages/tickets/NewTicketPage.tsx:20 * kind: component * core: it * spec: (none) * summary: Utility for new ticket page. * score: 1 ### component NewVendorPage * file: src/cores/it/pages/vendors/NewVendorPage.tsx:14 * kind: component * core: it * spec: (none) * summary: Utility for new vendor page. * score: 1 ### component NewVulnerabilityPage * file: src/cores/it/pages/security/vulnerabilities/NewVulnerabilityPage.tsx:22 * kind: component * core: it * spec: (none) * summary: Utility for new vulnerability page. * score: 1 ### component OffboardingDashboardPage * file: src/cores/it/pages/onboarding/OffboardingDashboardPage.tsx:27 * kind: component * core: it * spec: (none) * summary: Utility for offboarding dashboard page. * score: 1 ### component OffboardingInstanceDetailPage * file: src/cores/it/pages/onboarding/OffboardingInstanceDetailPage.tsx:24 * kind: component * core: it * spec: (none) * summary: Utility for offboarding instance detail page. * score: 1 ### component OnboardingDashboardPage * file: src/cores/it/pages/onboarding/OnboardingDashboardPage.tsx:28 * kind: component * core: it * spec: (none) * summary: Utility for onboarding dashboard page. * score: 1 ### component OnboardingInstanceDetailPage * file: src/cores/it/pages/onboarding/OnboardingInstanceDetailPage.tsx:24 * kind: component * core: it * spec: (none) * summary: Utility for onboarding instance detail page. * score: 1 ### component OnboardingProgressCard * file: src/cores/it/components/onboarding/OnboardingProgressCard.tsx:25 * kind: component * core: it * spec: IT-08 * summary: Card summarizing an onboarding/offboarding instance's task-completionprogress, with an optional layout. * params: * props — The onboarding instance, an optional , and a compact-layout flag. * score: 5 ### component OnboardingSLAIndicator * file: src/cores/it/components/onboarding/OnboardingSLAIndicator.tsx:25 * kind: component * core: it * spec: IT-08 * summary: Indicator comparing an onboarding task's target date against its status toshow whether it is on track, due soon, or breached. * params: * props — The SLA target date, the current status, and an optional . * score: 5 ### component PatchDetailPage * file: src/cores/it/pages/security/patches/PatchDetailPage.tsx:27 * kind: component * core: it * spec: (none) * summary: Utility for patch detail page. * score: 1 ### component PatchListPage * file: src/cores/it/pages/security/patches/PatchListPage.tsx:34 * kind: component * core: it * spec: (none) * summary: Utility for patch list page. * score: 1 ### component PriorityBadge * file: src/cores/it/components/procurement/PriorityBadge.tsx:31 * kind: component * core: it * spec: IT-06 * summary: Badge rendering a purchase request's priority (e.g. low, medium, high,critical) with a semantic variant. * params: * props — The priority value and an optional . * score: 5 ### component ProcurementReviewStep * file: src/cores/it/components/procurement-wizard/ProcurementReviewStep.tsx:33 * kind: component * core: it * spec: IT-06 * summary: Final procurement wizard step that summarizes the entered request details andrequires the user to confirm before submission. * params: * props — The confirmation state and a handler invoked when it changes. * score: 5 ### component ProcurementWizard * file: src/cores/it/components/procurement-wizard/ProcurementWizard.tsx:70 * kind: component * core: it * spec: IT-06 * summary: Multi-step wizard that walks a user through creating a purchase request(request details, vendor selection, budget justification, review), invokingcallbacks on completion or exit. * params: * props — Completion and exit handlers plus an optional . * score: 5 ### component ProvisioningTemplateDetailPage * file: src/cores/it/pages/onboarding/ProvisioningTemplateDetailPage.tsx:42 * kind: component * core: it * spec: (none) * summary: Utility for provisioning template detail page. * score: 1 ### component ProvisioningTemplatesPage * file: src/cores/it/pages/onboarding/ProvisioningTemplatesPage.tsx:24 * kind: component * core: it * spec: (none) * summary: Utility for provisioning templates page. * score: 1 ### component PurchaseInfoStep * file: src/cores/it/components/wizard-steps/PurchaseInfoStep.tsx:11 * kind: component * core: it * spec: (none) * summary: Utility for purchase info step. * score: 1 ### component PurchaseRequestDetailPage * file: src/cores/it/pages/procurement/PurchaseRequestDetailPage.tsx:28 * kind: component * core: it * spec: (none) * summary: Utility for purchase request detail page. * score: 1 ### component PurchaseRequestFilterBar * file: src/cores/it/components/procurement/PurchaseRequestFilterBar.tsx:51 * kind: component * core: it * spec: IT-06 * summary: Renders the purchase-request list filter bar: a debounced free-text searchinput plus status, request-type, and priority selects, with a clear-filtersbutton shown when any filter is active. Emits the next filter state through. * params: * props — The current state and an callbackinvoked with the updated filter selections. * score: 5 ### component PurchaseRequestListPage * file: src/cores/it/pages/procurement/PurchaseRequestListPage.tsx:22 * kind: component * core: it * spec: (none) * summary: Utility for purchase request list page. * score: 1 ### component PurchaseRequestStatusBadge * file: src/cores/it/components/procurement/PurchaseRequestStatusBadge.tsx:45 * kind: component * core: it * spec: IT-06 * summary: Badge rendering a purchase request's approval status (e.g. draft, pending,approved, rejected, received) with a semantic variant. * params: * props — The status value and an optional . * score: 5 ### component PurchaseRequestTable * file: src/cores/it/components/procurement/PurchaseRequestTable.tsx:32 * kind: component * core: it * spec: IT-06 * summary: Data table of purchase requests showing number, title, type, priority, cost,and approval status, rendering a skeleton while loading. * params: * props — The purchase requests to render and a loading flag. * score: 5 ### component ReceiveItemsDialog * file: src/cores/it/components/procurement/ReceiveItemsDialog.tsx:33 * kind: component * core: it * spec: IT-06 * summary: Modal dialog for marking a purchase request's items as received, which cancreate the corresponding IT asset records. * params: * props — The purchase request being received plus dialog open state and change handler. * score: 5 ### component ReportDetailPage * file: src/cores/it/pages/reports/ReportDetailPage.tsx:59 * kind: component * core: it * spec: (none) * summary: Utility for report detail page. * score: 1 ### component ReportListPage * file: src/cores/it/pages/reports/ReportListPage.tsx:40 * kind: component * core: it * spec: (none) * summary: Utility for report list page. * score: 1 ### component RequestDetailsStep * file: src/cores/it/components/procurement-wizard/RequestDetailsStep.tsx:24 * kind: component * core: it * spec: IT-06 * summary: Procurement wizard step capturing the core request details (title,description, type, priority, quantity), reading and writing the shared wizardform context. * score: 5 ### component RequestTypeBadge * file: src/cores/it/components/procurement/RequestTypeBadge.tsx:30 * kind: component * core: it * spec: IT-06 * summary: Badge rendering a purchase request's type (e.g. hardware, software, service)with a consistent style. * params: * props — The request type and an optional . * score: 5 ### component RiskAssessmentForm * file: src/cores/it/components/change-management/RiskAssessmentForm.tsx:37 * kind: component * core: it * spec: IT-09 * summary: Controlled form for scoring a change request's risk along impact, likelihood,and rollback-difficulty dimensions, emitting changes to the parent. * params: * props — The current risk values, a change handler, an optional disabled flag, and an optional . * score: 5 ### component RiskLevelBadge * file: src/cores/it/components/change-management/RiskLevelBadge.tsx:37 * kind: component * core: it * spec: IT-09 * summary: Badge rendering a change request's risk level (low, medium, high) with asemantic variant and an optional severity icon. * params: * props — The risk level, an optional show-icon flag, and an optional . * score: 5 ### component SecurityComplianceStatusBadge * file: src/cores/it/components/security/ComplianceStatusBadge.tsx:34 * kind: component * core: it * spec: IT-05 * summary: Badge rendering a security control's compliance status (e.g. compliant,non-compliant, in remediation) with a semantic variant. * params: * props — The compliance status and an optional . * score: 5 ### component SecurityDashboardPage * file: src/cores/it/pages/security/SecurityDashboardPage.tsx:21 * kind: component * core: it * spec: (none) * summary: Utility for security dashboard page. * score: 1 ### component SeverityBadge * file: src/cores/it/components/security/SeverityBadge.tsx:37 * kind: component * core: it * spec: IT-05 * summary: Badge rendering a security vulnerability's severity (critical, high, medium,low) with a semantic variant. * params: * props — The severity value and an optional . * score: 5 ### component SLATrackingCard * file: src/cores/it/components/tickets/SLATrackingCard.tsx:24 * kind: component * core: it * spec: IT-02 * summary: Card summarizing a ticket's SLA tracking — response/resolution targets,elapsed time, and breach status. * params: * props — The ticket whose SLA state is displayed. * score: 5 ### component SuggestedArticlesCard * file: src/cores/it/components/tickets/SuggestedArticlesCard.tsx:32 * kind: component * core: it * spec: IT-02 * summary: Card surfacing knowledge-base articles suggested for a ticket to aidself-service resolution, with loading and error states. * params: * props — The suggested articles plus loading and error state. * score: 5 ### component TaskChecklist * file: src/cores/it/components/onboarding/TaskChecklist.tsx:55 * kind: component * core: it * spec: IT-08 * summary: Interactive checklist of onboarding/offboarding tasks with complete, skip, andblock actions per task, switchable to a read-only display. * params: * props — The tasks plus complete/skip/block callbacks, a readonly flag, and an optional . * score: 5 ### component TicketAssignmentDialog * file: src/cores/it/components/tickets/TicketAssignmentDialog.tsx:41 * kind: component * core: it * spec: IT-02 * summary: Modal dialog for assigning an IT support ticket to an agent or team. * params: * props — Dialog open state and change handler plus the ticket being assigned. * score: 5 ### component TicketCommentList * file: src/cores/it/components/tickets/TicketCommentList.tsx:25 * kind: component * core: it * spec: IT-02 * summary: Chronological list of a ticket's comments, distinguishing internal notes frompublic replies, with a loading state. * params: * props — The comments to render and a loading flag. * score: 5 ### component TicketDetailPage * file: src/cores/it/pages/tickets/TicketDetailPage.tsx:41 * kind: component * core: it * spec: (none) * summary: Utility for ticket detail page. * score: 1 ### component TicketDetailsCard * file: src/cores/it/components/tickets/TicketDetailsCard.tsx:68 * kind: component * core: it * spec: (none) * summary: Utility for ticket details card. * score: 1 ### component TicketFilterBar * file: src/cores/it/components/tickets/TicketFilterBar.tsx:23 * kind: component * core: it * spec: (none) * summary: Utility for ticket filter bar. * score: 1 ### component TicketForm * file: src/cores/it/components/tickets/TicketForm.tsx:84 * kind: component * core: it * spec: IT-02 * summary: Renders the IT support ticket form (type, category, priority, subject, anddescription fields) and surfaces validated values through . Watchessubject and category to drive optional knowledge-base suggestion callbacks. * params: * props — Submit handler, optional submitting flag, default values, andoptional subject/category change callbacks for live KB suggestions. * score: 5 ### component TicketListPage * file: src/cores/it/pages/tickets/TicketListPage.tsx:22 * kind: component * core: it * spec: (none) * summary: Utility for ticket list page. * score: 1 ### component TicketPriorityBadge * file: src/cores/it/components/tickets/TicketPriorityBadge.tsx:20 * kind: component * core: it * spec: (none) * summary: Utility for ticket priority badge. * score: 1 ### component TicketStatusBadge * file: src/cores/it/components/tickets/TicketStatusBadge.tsx:25 * kind: component * core: it * spec: (none) * summary: Utility for ticket status badge. * score: 1 ### component TicketStatusChangeDialog * file: src/cores/it/components/tickets/TicketStatusChangeDialog.tsx:39 * kind: component * core: it * spec: (none) * summary: Utility for ticket status change dialog. * score: 1 ### component TicketTypeBadge * file: src/cores/it/components/tickets/TicketTypeBadge.tsx:20 * kind: component * core: it * spec: (none) * summary: Utility for ticket type badge. * score: 1 ### component VendorCard * file: src/cores/it/components/vendors/VendorCard.tsx:18 * kind: component * core: it * spec: (none) * summary: Utility for vendor card. * score: 1 ### component VendorContractList * file: src/cores/it/components/vendors/VendorContractList.tsx:17 * kind: component * core: it * spec: (none) * summary: Utility for vendor contract list. * score: 1 ### component VendorDetailPage * file: src/cores/it/pages/vendors/VendorDetailPage.tsx:16 * kind: component * core: it * spec: (none) * summary: Utility for vendor detail page. * score: 1 ### component VendorFilterBar * file: src/cores/it/components/vendors/VendorFilterBar.tsx:19 * kind: component * core: it * spec: (none) * summary: Utility for vendor filter bar. * score: 1 ### component VendorForm * file: src/cores/it/components/vendors/VendorForm.tsx:84 * kind: component * core: it * spec: IT-03 * summary: Renders the tabbed IT vendor form (basic info, contact, and address) forcreating or editing a vendor, emitting validated values via . Thevendor-type select sources options from the picklist with anenum-label fallback, and the form pre-fills from when editing. * params: * props — Optional to edit, submit and cancel handlers, and anoptional submitting flag. * score: 5 ### component VendorListPage * file: src/cores/it/pages/vendors/VendorListPage.tsx:17 * kind: component * core: it * spec: (none) * summary: Utility for vendor list page. * score: 1 ### component VendorSelectionStep * file: src/cores/it/components/procurement-wizard/VendorSelectionStep.tsx:24 * kind: component * core: it * spec: IT-06 * summary: Procurement wizard step for selecting the vendor for a purchase request,reading and writing the shared wizard form context. * score: 5 ### component VendorStatusBadge * file: src/cores/it/components/vendors/VendorStatusBadge.tsx:20 * kind: component * core: it * spec: (none) * summary: Utility for vendor status badge. * score: 1 ### component VendorTable * file: src/cores/it/components/vendors/VendorTable.tsx:24 * kind: component * core: it * spec: (none) * summary: Utility for vendor table. * score: 1 ### component VendorTypeBadge * file: src/cores/it/components/vendors/VendorTypeBadge.tsx:14 * kind: component * core: it * spec: (none) * summary: Utility for vendor type badge. * score: 1 ### component VulnerabilityDetailPage * file: src/cores/it/pages/security/vulnerabilities/VulnerabilityDetailPage.tsx:32 * kind: component * core: it * spec: (none) * summary: Utility for vulnerability detail page. * score: 1 ### component VulnerabilityListPage * file: src/cores/it/pages/security/vulnerabilities/VulnerabilityListPage.tsx:31 * kind: component * core: it * spec: (none) * summary: Utility for vulnerability list page. * score: 1 ### component WarrantySupportStep * file: src/cores/it/components/wizard-steps/WarrantySupportStep.tsx:14 * kind: component * core: it * spec: (none) * summary: Utility for warranty support step. * score: 1 ## Functions & utilities ### function buildAssetInventoryContent * file: src/cores/it/templates/asset-inventory-content.ts:42 * kind: function * core: it * spec: (none) * summary: Provides build asset inventory content functionality. * score: 4 ### function buildTicketSummaryContent * file: src/cores/it/templates/ticket-summary-content.ts:10 * kind: function * core: it * spec: (none) * summary: Provides build ticket summary content functionality. * score: 4 ### function generateAssetTag * file: src/cores/it/utils/assetTagGenerator.ts:15 * kind: function * core: it * spec: (none) * summary: Generate the next asset tag based on configFormat: prefixsequence e.g., "IT-1001" * score: 4 ### function getNextSequence * file: src/cores/it/utils/assetTagGenerator.ts:31 * kind: function * core: it * spec: (none) * summary: Get the next sequence number from existing tags * score: 4 ### function parseAssetTag * file: src/cores/it/utils/assetTagGenerator.ts:22 * kind: function * core: it * spec: (none) * summary: Parse an existing asset tag to extract prefix and sequence * score: 4 ### function SLAIndicator * file: src/cores/it/components/tickets/SLAIndicator.tsx:101 * kind: function * core: it * spec: IT-02 * summary: Renders a ticket's SLA status indicator, computing on-track / due-soon /breached state from the SLA timing fields and falling back to a legacyrenderer when only the legacy SLA props are available. * params: * props — Organization and ticket ids plus SLA timing fields (breach flag, due/start times, target hours) and an optional compact-layout flag. * returns: The SLA status badge element, or a "No SLA" placeholder when no SLA applies. * score: 5 # jurisdiction profiles — system reference Source: https://docs.encoreos.io/api/jurisdiction-profiles Flat per-rule jurisdiction-profile reference (PF-96) for AI/RAG retrieval, generated from the seeded default profiles. # Jurisdiction Profiles Reference (system defaults) jurisdiction us-federal-baseline billing cob\_medicaid\_position payer\_of\_last\_resort jurisdiction us-federal-baseline billing x12\_transaction\_support 837P, 837I, 835, 270, 271, 276, 277, 278 jurisdiction us-federal-baseline clinical sud\_confidentiality\_standard 42cfr\_part2 jurisdiction us-federal-baseline clinical uscdi\_version v3 jurisdiction us-federal-baseline compliance onc\_certification\_target hti\_1 jurisdiction az-ahcccs billing filing\_deadline\_days 365 jurisdiction az-ahcccs billing member\_id\_label AHCCCS Member ID jurisdiction az-ahcccs billing min\_billable\_minutes 8 jurisdiction az-ahcccs billing timed\_code\_unit\_minutes 15 jurisdiction az-ahcccs clinical assessment\_element\_count 18 jurisdiction az-ahcccs clinical documentation\_timeliness\_hours 24 jurisdiction az-ahcccs clinical minor\_consent\_age 12 jurisdiction az-ahcccs clinical treatment\_plan\_review\_days 90 jurisdiction az-ahcccs compliance licensing\_board AZBBHE jurisdiction az-ahcccs compliance quality\_measure\_sets ahcccs\_vbp, hedis, samhsa\_noms jurisdiction az-ahcccs compliance state\_regulatory\_body AHCCCS / AZDHS jurisdiction ca-medi-cal billing filing\_deadline\_days 365 jurisdiction ca-medi-cal billing min\_billable\_minutes 8 jurisdiction ca-medi-cal clinical documentation\_timeliness\_hours 48 jurisdiction ca-medi-cal compliance mandatory\_note\_validation Yes jurisdiction tx-medicaid billing min\_billable\_minutes 15 jurisdiction tx-medicaid clinical documentation\_timeliness\_hours 72 jurisdiction tx-medicaid compliance mandatory\_note\_validation No # lo — Public API surface Source: https://docs.encoreos.io/api/lo Per-symbol API documentation for the lo area, generated from TSDoc blocks. Refresh with `npm run docs:api:generate`. # lo — Public API surface ## Types & interfaces ### interface ActionNodeData * file: src/cores/lo/components/dependency-graph/ActionNode.tsx:34 * kind: interface * core: lo * spec: LO-14 * summary: Data payload attached to a React Flow node representing a single action inthe action dependency graph: its title, workflow status, optional assignee,whether it is currently blocked by upstream dependencies, and how manydownstream actions it blocks. * score: 5 ### type ActionNodeType * file: src/cores/lo/components/dependency-graph/ActionNode.tsx:50 * kind: type * core: lo * spec: LO-14 * summary: Concrete React Flow node type for action nodes, pairing with the node-type discriminator used by the graph renderer. * ## see: * score: 5 ### interface AnalyticsFilters * file: src/cores/lo/hooks/useGoalQualityAnalytics.ts:166 * kind: interface * core: lo * spec: LO-12 * summary: Optional filter criteria for narrowing the goal-quality analytics view bygoal category and SMART-score range. * score: 5 ### interface GoalQualityAnalytics * file: src/cores/lo/hooks/useGoalQualityAnalytics.ts:143 * kind: interface * core: lo * spec: LO-12 * summary: Full SMART goal-quality analytics result: organization-wide totals,average score, excellent/needs-improvement counts, the score-distributionhistogram, per-type rollups, and the list of low-scoring goals, plus aloading flag for the underlying goal queries. * score: 5 ### interface GoalsByType * file: src/cores/lo/hooks/useGoalQualityAnalytics.ts:85 * kind: interface * core: lo * spec: LO-12 * summary: Aggregated SMART-quality rollup for one goal category (e.g. strategic vs.quarterly): the average score across scored goals plus total and scoredcounts, used to compare quality between goal types. * score: 5 ### type GoalTimeframe * file: src/cores/lo/utils/validateSMARTGoal.ts:139 * kind: type * core: lo * spec: (none) * summary: Goal type for adjusting validation rules * score: 2 ### interface KnowledgeAnswerArticle * file: src/cores/lo/hooks/useKnowledgePortalAnswer.ts:24 * kind: interface * core: lo * spec: (none) * summary: Minimal article shape passed as grounding context (no PHI; org's own docs). * score: 2 ### interface LODashboardMetrics * file: src/cores/lo/hooks/useLODashboardMetrics.ts:52 * kind: interface * core: lo * spec: none * summary: Live counts and trend data backing the LO overview dashboard cards: rock(90-day priority) completion progress, open issues, pending to-dos, andupcoming meetings, plus week-over-week trends for issues, completed to-dos,and meetings. * score: 5 ### type LOModuleSettingsFormValues * file: src/cores/lo/components/LOSettingsForm.tsx:79 * kind: type * core: lo * spec: none * summary: Validated value shape for the Leadership Operating System module settingsform, inferred from the Zod schema. Groups optional toggles and thresholdsacross Vision, Goals (rock-prefixed DB columns), SMART validation, GWC,Meetings, Scorecards, Issues, and Knowledge. * score: 5 ### interface LowScoreGoal * file: src/cores/lo/hooks/useGoalQualityAnalytics.ts:111 * kind: interface * core: lo * spec: LO-12 * summary: A goal flagged as needing improvement: identity, its goal type and label,the failing SMART score, and the single most impactful SMART dimension toaddress (). Drives the low-score remediation table. * score: 5 ### interface ScoreDistribution * file: src/cores/lo/hooks/useGoalQualityAnalytics.ts:61 * kind: interface * core: lo * spec: LO-12 * summary: A single bucket in the SMART-score histogram: one quality band (e.g."Excellent") with the count of goals that fall in it, its share of allscored goals, and a chart color token. * score: 5 ### interface TrendData * file: src/cores/lo/hooks/useLODashboardMetrics.ts:23 * kind: interface * core: lo * spec: none * summary: A week-over-week trend indicator for a dashboard metric: the direction ofchange, the absolute percent magnitude, and a human-readable comparisonlabel (e.g. "vs last week"). * score: 5 ### interface ValidateSMARTOptions * file: src/cores/lo/utils/validateSMARTGoal.ts:292 * kind: interface * core: lo * spec: (none) * summary: Options for SMART goal validation * score: 2 ## Hooks ### hook useAccountabilityChart * file: src/cores/lo/hooks/useAccountabilityChart.ts:22 * kind: hook * core: lo * spec: LO-02 * summary: Fetches the active accountability chart for the current organization. * returns: A TanStack Query result whose is the active (or null if none exists), with /; disabled until an organization is resolved. * score: 5 ### hook useAccountabilityChartMutation * file: src/cores/lo/hooks/useAccountabilityChart.ts:58 * kind: hook * core: lo * spec: LO-02 * summary: Provides create and update mutations for the current organization'saccountability chart, with success/error toasts and automatic queryinvalidation. * returns: An object with and mutate functions plus / pending flags. * score: 5 ### hook useActionDependencyChain * file: src/cores/lo/hooks/useActionDependencyChain.ts:18 * kind: hook * core: lo * spec: (none) * summary: Fetches the complete dependency chain for an action * params: * actionId — The action to get dependencies for * returns: Upstream (depends on) and downstream (blocks) chains * score: 4 ### hook useActiveAssessments * file: src/cores/lo/hooks/useAssessments.ts:114 * kind: hook * core: lo * spec: LO-09 * summary: Convenience wrapper over that returns only activeassessments for the current organization. * returns: A TanStack Query result whose is an array of active records. * score: 5 ### hook useActiveSeatAssignments * file: src/cores/lo/hooks/useSeatAssignments.ts:90 * kind: hook * core: lo * spec: LO-02 * summary: Convenience wrapper over that returns only activeseat assignments for the current organization. * returns: A TanStack Query result whose is an array of active records. * score: 5 ### hook useAssessment * file: src/cores/lo/hooks/useAssessments.ts:75 * kind: hook * core: lo * spec: LO-09 * summary: Fetches a single assessment by id, including its linked form and itsdistribution schedules. * params: * assessmentId — The assessment id to fetch, or undefined to disable the query. * returns: A TanStack Query result whose is the (with and relations), or null when inputs are missing. * score: 5 ### hook useAssessmentMutation * file: src/cores/lo/hooks/useAssessments.ts:126 * kind: hook * core: lo * spec: LO-09 * summary: Provides create, update, and delete mutations for assessments scoped to thecurrent organization, with success/error toasts and query invalidation. * returns: An object with async , , and functions plus // pending flags. * score: 5 ### hook useAssessmentResponseMutation * file: src/cores/lo/hooks/useAssessmentResponses.ts:135 * kind: hook * core: lo * spec: (none) * summary: Provides assessment response mutation queries and mutation actions scoped to the current organization. * score: 4 ### hook useAssessmentResponses * file: src/cores/lo/hooks/useAssessmentResponses.ts:21 * kind: hook * core: lo * spec: (none) * summary: Provides assessment responses queries and mutation actions scoped to the current organization. * score: 4 ### hook useAssessments * file: src/cores/lo/hooks/useAssessments.ts:25 * kind: hook * core: lo * spec: LO-09 * summary: Fetches the current organization's assessments (with their linked form),optionally filtered by type, active state, form, or name search. * params: * filters — Optional (assessment type, active flag, form id, search text). * returns: A TanStack Query result whose is an array of (each with its relation); disabled until an organization is resolved. * score: 5 ### hook useAssessmentSchedule * file: src/cores/lo/hooks/useAssessmentSchedules.ts:66 * kind: hook * core: lo * spec: (none) * summary: Provides assessment schedule queries and mutation actions scoped to the current organization. * score: 4 ### hook useAssessmentScheduleMutation * file: src/cores/lo/hooks/useAssessmentSchedules.ts:139 * kind: hook * core: lo * spec: (none) * summary: Provides assessment schedule mutation queries and mutation actions scoped to the current organization. * score: 4 ### hook useAssessmentSchedules * file: src/cores/lo/hooks/useAssessmentSchedules.ts:18 * kind: hook * core: lo * spec: (none) * summary: Provides assessment schedules queries and mutation actions scoped to the current organization. * score: 4 ### hook useBlockedActions * file: src/cores/lo/hooks/useBlockedActions.ts:17 * kind: hook * core: lo * spec: (none) * summary: Fetches all blocked actions for the organization * params: * goalId — Optional goal ID to filter by * score: 4 ### hook useCategoryTree * file: src/cores/lo/hooks/useKnowledgeCategories.ts:91 * kind: hook * core: lo * spec: (none) * summary: Provides category tree queries and mutation actions scoped to the current organization. * score: 4 ### hook useCurrentQuarterGoals * file: src/cores/lo/hooks/useQuarterlyGoals.ts:96 * kind: hook * core: lo * spec: (none) * summary: Fetches quarterly goals scoped to the current fiscal year and quarter. * returns: The React Query result containing quarterly goals filtered to the current quarter (–) and current year * score: 4 ### hook useCurrentWeekScorecard * file: src/cores/lo/hooks/useScorecards.ts:88 * kind: hook * core: lo * spec: (none) * summary: Provides current week scorecard queries and mutation actions scoped to the current organization. * score: 4 ### hook useFeaturedArticles * file: src/cores/lo/hooks/useKnowledgeArticles.ts:117 * kind: hook * core: lo * spec: (none) * summary: Provides featured articles queries and mutation actions scoped to the current organization. * score: 4 ### hook useFeedback * file: src/cores/lo/hooks/useFeedback.ts:18 * kind: hook * core: lo * spec: (none) * summary: Fetch feedback with optional filters * score: 4 ### hook useFeedbackMutation * file: src/cores/lo/hooks/useFeedback.ts:134 * kind: hook * core: lo * spec: (none) * summary: Create, update, delete feedback * score: 4 ### hook useGivenFeedback * file: src/cores/lo/hooks/useFeedback.ts:104 * kind: hook * core: lo * spec: (none) * summary: Fetch feedback provided by current user * score: 4 ### hook useGoalActionMutation * file: src/cores/lo/hooks/useGoalActions.ts:159 * kind: hook * core: lo * spec: (none) * summary: Provide create, update, and delete mutations for goal actions scoped to the current organization, with cache invalidation and user toasts. * returns: An object with the following properties:- - Trigger a create mutation for a goal action.- - Trigger a create mutation and return the created action.- - Trigger an update mutation for an existing goal action.- - Trigger an update mutation and return the updated action.- - Trigger a delete mutation for a goal action by id.- - when a create mutation is in progress, otherwise.- - when an update mutation is in progress, otherwise.- - when a delete mutation is in progress, otherwise. * score: 4 ### hook useGoalActions * file: src/cores/lo/hooks/useGoalActions.ts:72 * kind: hook * core: lo * spec: (none) * summary: Fetches goal actions for the current organization scoped to the given goal. * params: * goalId — The goal's id to filter actions; when omitted the query is disabled * filters — Optional filters for status, priority, assignee, etc. * returns: An array of objects for the specified goal (empty array if none) * score: 4 ### hook useGoalAssignmentMutation * file: src/cores/lo/hooks/useGoalAssignments.ts:132 * kind: hook * core: lo * spec: (none) * summary: Provides mutations to create, update, and delete goal assignments and performs cache invalidation and user toast feedback. * returns: An object containing:- create: function to create a goal assignment- createAsync: async version of - update: function to update a goal assignment- delete: function to delete a goal assignment- isCreating: while a create operation is pending, otherwise- isUpdating: while an update operation is pending, otherwise- isDeleting: while a delete operation is pending, otherwise * score: 4 ### hook useGoalAssignments * file: src/cores/lo/hooks/useGoalAssignments.ts:24 * kind: hook * core: lo * spec: (none) * summary: Fetches goal assignments for the current organization, optionally filtered by a specific goal and other criteria. * params: * goalId — Optional goal ID to restrict assignments to a single goal * filters — Optional filters: , , and * returns: A React Query result whose is an array of objects matching the provided filters (or an empty array when no assignments or organization is available) * score: 4 ### hook useGoalQualityAnalytics * file: src/cores/lo/hooks/useGoalQualityAnalytics.ts:185 * kind: hook * core: lo * spec: (none) * summary: Aggregate SMART-score analytics across strategic (3-year and 1-year) goals and quarterly rocks, applying optional filters. * params: * filters — Optional AnalyticsFilters to restrict which goals are included (for example, by ). * returns: A GoalQualityAnalytics object containing totalGoals, scoredGoals, averageScore, excellentCount, excellentPercentage, needsImprovementCount, scoreDistribution, goalsByType, lowScoreGoals, and . * score: 4 ### hook useGoalReview * file: src/cores/lo/hooks/useGoalReview\.ts:44 * kind: hook * core: lo * spec: (none) * summary: Provides mutations and status flags for completing and reviewing a goal. * returns: An object containing mutation entrypoints and status flags:- — Function to trigger marking a goal as complete with optional date and notes.- — Function that performs the completion and returns the updated goal record.- — Function to trigger submitting a review score and optional notes for a goal.- — Function that performs the review and returns the updated goal record.- — Boolean flag indicating whether a completion mutation is in progress.- — Boolean flag indicating whether a review mutation is in progress. * score: 4 ### hook useGWCAssessmentMutation * file: src/cores/lo/hooks/useGWCAssessments.ts:123 * kind: hook * core: lo * spec: LO-02 * summary: Provides create and update mutations for GWC assessments scoped to thecurrent organization, with success/error toasts and query invalidation. * returns: An object with and mutate functions plus / pending flags. * score: 5 ### hook useGWCAssessments * file: src/cores/lo/hooks/useGWCAssessments.ts:25 * kind: hook * core: lo * spec: LO-02 * summary: Fetches GWC (Get-it / Want-it / Capacity) assessments for the currentorganization, joined to their seat assignment and assessor, optionallyfiltered by seat, assessor, recommendation, or date range. * params: * filters — Optional (seat assignment, assessor, recommendation, date range). * returns: A TanStack Query result whose is an array of (with and relations), newest first. * score: 5 ### hook useIssue * file: src/cores/lo/hooks/useIssues.ts:67 * kind: hook * core: lo * spec: (none) * summary: Fetch single issue with discussions * score: 4 ### hook useIssueDiscussionMutation * file: src/cores/lo/hooks/useIssueDiscussions.ts:61 * kind: hook * core: lo * spec: LO-07 * summary: Provides create, update, and delete mutations for issue discussion entries(the IDR thread), scoped and validated against the current organization,with success/error toasts and query invalidation. * returns: An object with async , , and functions plus // pending flags. * score: 5 ### hook useIssueDiscussions * file: src/cores/lo/hooks/useIssueDiscussions.ts:25 * kind: hook * core: lo * spec: LO-07 * summary: Fetches the ordered discussion thread (the IDR comments and author profiles)for a single issue, scoped to the current organization. Returns an emptyarray when no organization or issue id is available and stays disabled untilboth are present. * params: * issueId — Id of the issue whose discussion entries to load; when the query is disabled and resolves to an empty array. * returns: A TanStack Query result whose is an (each with its joined author profile) ordered oldest-first, alongside , , and the other standard query fields. * score: 5 ### hook useIssueMutation * file: src/cores/lo/hooks/useIssues.ts:164 * kind: hook * core: lo * spec: (none) * summary: Issue mutations (create, update, delete) * score: 4 ### hook useIssues * file: src/cores/lo/hooks/useIssues.ts:17 * kind: hook * core: lo * spec: (none) * summary: Fetch issues with optional filters * score: 4 ### hook useKnowledgeArticle * file: src/cores/lo/hooks/useKnowledgeArticles.ts:94 * kind: hook * core: lo * spec: (none) * summary: Provides knowledge article queries and mutation actions scoped to the current organization. * score: 4 ### hook useKnowledgeArticleMutation * file: src/cores/lo/hooks/useKnowledgeArticles.ts:191 * kind: hook * core: lo * spec: (none) * summary: Provides knowledge article mutation queries and mutation actions scoped to the current organization. * score: 4 ### hook useKnowledgeArticles * file: src/cores/lo/hooks/useKnowledgeArticles.ts:65 * kind: hook * core: lo * spec: (none) * summary: Provides knowledge articles queries and mutation actions scoped to the current organization. * score: 4 ### hook useKnowledgeArticleVersion * file: src/cores/lo/hooks/useKnowledgeArticleVersions.ts:70 * kind: hook * core: lo * spec: LO-10 * summary: Fetches a single knowledge-article version by id, joined to its author. * params: * versionId — The article-version id to fetch. * returns: A TanStack Query result whose is the (with author); disabled until a version id is provided. * score: 5 ### hook useKnowledgeArticleVersions * file: src/cores/lo/hooks/useKnowledgeArticleVersions.ts:41 * kind: hook * core: lo * spec: LO-10 * summary: Fetches the saved version history of a knowledge-portal article, eachversion joined to its author, ordered newest version first. * params: * articleId — The article whose version history to fetch. * returns: A TanStack Query result whose is an array of (with author); disabled until an article id is provided. * score: 5 ### hook useKnowledgeCategories * file: src/cores/lo/hooks/useKnowledgeCategories.ts:33 * kind: hook * core: lo * spec: (none) * summary: Provides knowledge categories queries and mutation actions scoped to the current organization. * score: 4 ### hook useKnowledgeCategory * file: src/cores/lo/hooks/useKnowledgeCategories.ts:73 * kind: hook * core: lo * spec: (none) * summary: Provides knowledge category queries and mutation actions scoped to the current organization. * score: 4 ### hook useKnowledgeCategoryMutation * file: src/cores/lo/hooks/useKnowledgeCategories.ts:124 * kind: hook * core: lo * spec: (none) * summary: Provides knowledge category mutation queries and mutation actions scoped to the current organization. * score: 4 ### hook useLatestGWCAssessment * file: src/cores/lo/hooks/useGWCAssessments.ts:86 * kind: hook * core: lo * spec: LO-02 * summary: Fetches the most recent GWC assessment for a single seat assignment in thecurrent organization. * params: * seatAssignmentId — The seat assignment to fetch the latest GWC assessment for. * returns: A TanStack Query result whose is the latest (or null if none); disabled until organization and seat are resolved. * score: 5 ### hook useLODashboardMetrics * file: src/cores/lo/hooks/useLODashboardMetrics.ts:225 * kind: hook * core: lo * spec: none * summary: Fetches live counts and week-over-week trends for the LO overview dashboardcards, scoped to the current organization and signed-in user. Runs parallelSupabase queries for rocks, open issues, pending to-dos, and upcomingmeetings; refetches every 5 minutes. * returns: A TanStack Query result whose is , with the usual / flags; disabled until both organization and user are resolved. * score: 5 ### hook useLOModuleSettings * file: src/cores/lo/hooks/useLOModuleSettings.ts:28 * kind: hook * core: lo * spec: (none) * summary: Manage Leadership Operating System module settings for the current organization. * returns: An object containing: - : the current for the organization or if none exist - : while the settings are being fetched - : the error thrown during fetch, if any - : a function that accepts to create or update settings - : while the upsert mutation is pending - : function to manually refetch settings * score: 4 ### hook useMeeting * file: src/cores/lo/hooks/useMeetings.ts:70 * kind: hook * core: lo * spec: LO-06 * summary: Fetches a single meeting by id with its attendees and action items. * params: * meetingId — The meeting id to fetch, or undefined to disable the query. * returns: A TanStack Query result whose is a (including and ), or null when inputs are missing. * score: 5 ### hook useMeetingActionItemMutation * file: src/cores/lo/hooks/useMeetingActionItems.ts:77 * kind: hook * core: lo * spec: LO-06 * summary: Provides create, update, delete, and convert-to-to-do mutations for meetingaction items, scoped to the current user and organization, with toasts andquery invalidation (including the to-dos cache on conversion). * returns: An object with async , , , and functions plus /// pending flags. * score: 5 ### hook useMeetingActionItems * file: src/cores/lo/hooks/useMeetingActionItems.ts:28 * kind: hook * core: lo * spec: LO-06 * summary: Fetches a meeting's action items joined to their assignee, and hydrates eachitem that has been converted to a to-do with its linked record. * params: * meetingId — The meeting whose action items to fetch, or undefined to disable the query. * returns: A TanStack Query result whose is an array of (each with and an optional linked ). * score: 5 ### hook useMeetingAttendeeMutation * file: src/cores/lo/hooks/useMeetingAttendees.ts:53 * kind: hook * core: lo * spec: LO-06 * summary: Provides mutations to add an attendee to a meeting, update their attendancestatus, and remove them, scoped to the current user and organization, withtoasts and query invalidation. * returns: An object with async , , and functions plus // pending flags. * score: 5 ### hook useMeetingAttendees * file: src/cores/lo/hooks/useMeetingAttendees.ts:26 * kind: hook * core: lo * spec: LO-06 * summary: Fetches a meeting's attendee roster, each row joined to the attendee'sprofile, ordered by when they were added. * params: * meetingId — The meeting whose attendees to fetch, or undefined to disable the query. * returns: A TanStack Query result whose is an array of (with profile relation). * score: 5 ### hook useMeetingMutation * file: src/cores/lo/hooks/useMeetings.ts:133 * kind: hook * core: lo * spec: LO-06 * summary: Provides create, update, and delete mutations for meetings scoped to thecurrent user and organization, with success/error toasts and queryinvalidation. * returns: An object with async , , and functions plus // pending flags. * score: 5 ### hook useMeetings * file: src/cores/lo/hooks/useMeetings.ts:35 * kind: hook * core: lo * spec: LO-06 * summary: Fetches the current organization's structured meetings, optionally filteredby type, status, date range, or title search, newest scheduled first. * params: * filters — Optional (meeting type, status, date range, title search). * returns: A TanStack Query result whose is an array of ; disabled until an organization is resolved. * score: 5 ### hook useMetricsByRole * file: src/cores/lo/hooks/useScorecardMetrics.ts:69 * kind: hook * core: lo * spec: LO-05 * summary: Fetches the active scorecard metrics owned by a single role in the currentorganization, each joined to any linked strategic goal, ordered by displayorder. * params: * roleId — The owning role to fetch metrics for, or undefined to disable the query. * returns: A TanStack Query result whose is an array of active (with ). * score: 5 ### hook useMyCompletedAssessments * file: src/cores/lo/hooks/useAssessmentResponses.ts:98 * kind: hook * core: lo * spec: (none) * summary: Provides my completed assessments queries and mutation actions scoped to the current organization. * score: 4 ### hook useMyGoalAssignments * file: src/cores/lo/hooks/useGoalAssignments.ts:77 * kind: hook * core: lo * spec: (none) * summary: Fetches the current user's goal assignments within the active organization.If there is no active organization or no authenticated user, the query yields an empty array. * returns: An array of objects for the current user in the active organization * score: 4 ### hook useMyIssues * file: src/cores/lo/hooks/useIssues.ts:134 * kind: hook * core: lo * spec: (none) * summary: Fetch issues assigned to current user * score: 4 ### hook useMyOneOnOnes * file: src/cores/lo/hooks/useOneOnOnes.ts:95 * kind: hook * core: lo * spec: (none) * summary: Fetch one-on-ones where current user is manager or employee * score: 4 ### hook useMyPendingAssessments * file: src/cores/lo/hooks/useAssessmentResponses.ts:61 * kind: hook * core: lo * spec: (none) * summary: Provides my pending assessments queries and mutation actions scoped to the current organization. * score: 4 ### hook useNeedsReviewActions * file: src/cores/lo/hooks/useNeedsReviewActions.ts:17 * kind: hook * core: lo * spec: (none) * summary: Fetches all actions needing review for the organization * params: * goalId — Optional goal ID to filter by * score: 4 ### hook useOneOnOne * file: src/cores/lo/hooks/useOneOnOnes.ts:66 * kind: hook * core: lo * spec: (none) * summary: Fetch a single one-on-one by ID with feedback * score: 4 ### hook useOneOnOneMutation * file: src/cores/lo/hooks/useOneOnOnes.ts:156 * kind: hook * core: lo * spec: (none) * summary: Create, update, delete one-on-ones * score: 4 ### hook useOneOnOnes * file: src/cores/lo/hooks/useOneOnOnes.ts:18 * kind: hook * core: lo * spec: (none) * summary: Fetch one-on-ones with optional filters * score: 4 ### hook useOnHoldActions * file: src/cores/lo/hooks/useOnHoldActions.ts:17 * kind: hook * core: lo * spec: (none) * summary: Fetches all on-hold actions for the organization * params: * goalId — Optional goal ID to filter by * score: 4 ### hook useOpenIssues * file: src/cores/lo/hooks/useIssues.ts:105 * kind: hook * core: lo * spec: (none) * summary: Fetch open issues (for meeting agenda) * score: 4 ### hook useQuarterlyGoalMutation * file: src/cores/lo/hooks/useQuarterlyGoals.ts:115 * kind: hook * core: lo * spec: (none) * summary: Provide mutations for creating, updating, and deleting quarterly goals with automatic cache invalidation and user notifications. * returns: An object containing mutation functions and pending-state flags:- — function to create a new quarterly goal.- — function to update an existing quarterly goal by id.- — function to delete a quarterly goal by id.- — if a create mutation is pending, otherwise.- — if an update mutation is pending, otherwise.- — if a delete mutation is pending, otherwise. * score: 4 ### hook useQuarterlyGoals * file: src/cores/lo/hooks/useQuarterlyGoals.ts:35 * kind: hook * core: lo * spec: (none) * summary: Fetches quarterly goals for the current organization, applying optional filters. * params: * filters — Optional criteria to narrow results. Supported keys: , , , , , and (matches title or description, case-insensitive). * returns: The React Query result whose data is an array of QuarterlyGoal items (returns an empty array when no organization is available or no goals match). * score: 4 ### hook useReceivedFeedback * file: src/cores/lo/hooks/useFeedback.ts:74 * kind: hook * core: lo * spec: (none) * summary: Fetch feedback received by current user * score: 4 ### hook useRecentArticles * file: src/cores/lo/hooks/useKnowledgeArticles.ts:142 * kind: hook * core: lo * spec: (none) * summary: Provides recent articles queries and mutation actions scoped to the current organization. * score: 4 ### hook useRestoreArticleVersion * file: src/cores/lo/hooks/useKnowledgeArticleVersions.ts:99 * kind: hook * core: lo * spec: LO-10 * summary: Provides a mutation that restores a knowledge-portal article to an earliersaved version (snapshotting the current content as a new version first). * returns: A TanStack result; call / with , with / flags. * score: 5 ### hook useRoleDefinitionMutation * file: src/cores/lo/hooks/useRoleDefinitions.ts:104 * kind: hook * core: lo * spec: LO-02 * summary: Provides create, update, and delete mutations for accountability-chart roledefinitions scoped to the current organization, with toasts and queryinvalidation. * returns: An object with , , and mutate functions plus // pending flags. * score: 5 ### hook useRoleDefinitions * file: src/cores/lo/hooks/useRoleDefinitions.ts:51 * kind: hook * core: lo * spec: LO-02 * summary: Fetches accountability-chart role definitions for the current organization,each joined to its parent role and with normalized, orderedby display order; optionally scoped to a chart and filtered by department orsearch. * params: * chartId — Optional accountability-chart id to scope roles to. * filters — Optional (department, search text). * returns: A TanStack Query result whose is an array of (with ); disabled until an organization is resolved. * score: 5 ### hook useScorecard * file: src/cores/lo/hooks/useScorecards.ts:54 * kind: hook * core: lo * spec: (none) * summary: Provides scorecard queries and mutation actions scoped to the current organization. * score: 4 ### hook useScorecardMetricMutation * file: src/cores/lo/hooks/useScorecardMetrics.ts:105 * kind: hook * core: lo * spec: LO-05 * summary: Provides create, update, and remove mutations for scorecard metrics scopedto the current organization and user, with toasts and invalidation of boththe metrics and by-role caches. * returns: An object exposing the , , and TanStack results (each with / and ). * score: 5 ### hook useScorecardMetrics * file: src/cores/lo/hooks/useScorecardMetrics.ts:22 * kind: hook * core: lo * spec: LO-05 * summary: Fetches the current organization's scorecard metrics (KPIs), each joined toits owning role and any linked strategic goal, ordered by display order;optionally filtered by role, active state, or strategic goal. * params: * filters — Optional (role id, active flag, strategic goal id). * returns: A TanStack Query result whose is an array of (with and ); disabled until an organization is resolved. * score: 5 ### hook useScorecardMutation * file: src/cores/lo/hooks/useScorecards.ts:133 * kind: hook * core: lo * spec: (none) * summary: Provides scorecard mutation queries and mutation actions scoped to the current organization. * score: 4 ### hook useScorecards * file: src/cores/lo/hooks/useScorecards.ts:14 * kind: hook * core: lo * spec: (none) * summary: Provides scorecards queries and mutation actions scoped to the current organization. * score: 4 ### hook useScorecardValueMutation * file: src/cores/lo/hooks/useScorecardValues.ts:57 * kind: hook * core: lo * spec: LO-05 * summary: Provides single and bulk upsert mutations plus a remove mutation forscorecard values, scoped to the current organization and user, with toastsand invalidation of both the values and scorecards caches. * returns: An object exposing the , , and TanStack results (each with / and ). * score: 5 ### hook useScorecardValues * file: src/cores/lo/hooks/useScorecardValues.ts:22 * kind: hook * core: lo * spec: LO-05 * summary: Fetches the recorded weekly values for a scorecard in the currentorganization, each joined to its metric, ordered by creation time. * params: * scorecardId — The scorecard whose values to fetch, or undefined to disable the query. * returns: A TanStack Query result whose is an array of (with relation); disabled until scorecard and organization are resolved. * score: 5 ### hook useSearchArticles * file: src/cores/lo/hooks/useKnowledgeArticles.ts:166 * kind: hook * core: lo * spec: (none) * summary: Provides search articles queries and mutation actions scoped to the current organization. * score: 4 ### hook useSeatAssignmentMutation * file: src/cores/lo/hooks/useSeatAssignments.ts:102 * kind: hook * core: lo * spec: LO-02 * summary: Provides create, update, and delete mutations for accountability-chart seatassignments scoped to the current organization, with toasts and queryinvalidation. * returns: An object with , , and mutate functions plus // pending flags. * score: 5 ### hook useSeatAssignments * file: src/cores/lo/hooks/useSeatAssignments.ts:31 * kind: hook * core: lo * spec: LO-02 * summary: Fetches accountability-chart seat assignments for the current organization,each joined to the assigned profile and role definition, newest start datefirst; optionally filtered by role, person, active state, or assignmenttype. * params: * filters — Optional (role id, profile id, active flag, assignment type). * returns: A TanStack Query result whose is an array of (with and ); disabled until an organization is resolved. * score: 5 ### hook useSMARTValidation * file: src/cores/lo/hooks/useSMARTValidation.ts:56 * kind: hook * core: lo * spec: (none) * summary: Provides SMART validation helpers and related settings derived from the LO module configuration.Exposes a validator for SMART goals, threshold and feature flags from module settings, a helper todetermine whether a goal can be created based on a SMART score, a score-category mapper, and thesettings loading state. * returns: An object containing:- — Function that validates a goal object and returns a .- — if SMART validation is required by settings, otherwise.- — Numeric minimum SMART score required to create a goal when validation is required.- — if the SMART wizard is enabled by settings, otherwise.- — Function that accepts a score and returns if creation is allowed under current settings.- — Function that maps a numeric score to its score category.- — while module settings are still loading, otherwise. * score: 4 ### hook useStrategicGoalMutation * file: src/cores/lo/hooks/useStrategicGoals.ts:89 * kind: hook * core: lo * spec: (none) * summary: Hook for managing strategic goal mutation. * score: 1 ### hook useStrategicGoals * file: src/cores/lo/hooks/useStrategicGoals.ts:27 * kind: hook * core: lo * spec: (none) * summary: Fetches strategic goals for the current organization, optionally filtered by the provided criteria. * params: * filters — Optional filters to narrow results by , , , , or a term matched against title and description * returns: A React Query result whose data is an array of objects matching the current organization and filters; if no organization is set the data will be an empty array * score: 4 ### hook useStrategicGoalsByType * file: src/cores/lo/hooks/useStrategicGoals.ts:82 * kind: hook * core: lo * spec: (none) * summary: Hook for managing strategic goals by type. * score: 1 ### hook useUpcomingMeetings * file: src/cores/lo/hooks/useMeetings.ts:100 * kind: hook * core: lo * spec: LO-06 * summary: Fetches the current organization's next scheduled or in-progress meetings(from now forward), ordered soonest first. * params: * limit — Maximum number of upcoming meetings to return (default 5). * returns: A TanStack Query result whose is an array of upcoming ; disabled until an organization is resolved. * score: 5 ### hook useUpcomingOneOnOnes * file: src/cores/lo/hooks/useOneOnOnes.ts:125 * kind: hook * core: lo * spec: (none) * summary: Fetch upcoming scheduled one-on-ones * score: 4 ### hook useUpcomingSchedules * file: src/cores/lo/hooks/useAssessmentSchedules.ts:106 * kind: hook * core: lo * spec: (none) * summary: Provides upcoming schedules queries and mutation actions scoped to the current organization. * score: 4 ### hook useVisionDocument * file: src/cores/lo/hooks/useVisionDocument.ts:34 * kind: hook * core: lo * spec: (none) * summary: Hook for managing vision document. * score: 1 ### hook useVisionDocumentMutation * file: src/cores/lo/hooks/useVisionDocument.ts:74 * kind: hook * core: lo * spec: (none) * summary: Hook for managing vision document mutation. * score: 1 ## Components ### component AccountabilityChartPage * file: src/cores/lo/pages/AccountabilityChartPage.tsx:26 * kind: component * core: lo * spec: (none) * summary: Utility for accountability chart page. * score: 1 ### component AccountabilitySummaryWidget * file: src/cores/lo/components/dashboard/AccountabilitySummaryWidget.tsx:26 * kind: component * core: lo * spec: LO-02 * summary: LO dashboard widget summarizing the accountability chart: seat fill rate(filled vs. defined roles) shown as a progress bar, with a link to the fullchart. Takes no props; reads roles and active seat assignments for thecurrent organization. Renders a skeleton while loading. * score: 5 ### component ActionChainView * file: src/cores/lo/components/ActionChainView\.tsx:26 * kind: component * core: lo * spec: (none) * summary: Displays the dependency chain for an action:- Upstream: what this action depends on- Current: this action- Downstream: what depends on this action * score: 2 ### component ActionDependencyGraph * file: src/cores/lo/components/ActionDependencyGraph.tsx:40 * kind: component * core: lo * spec: (none) * summary: Visual dependency graph for goal actions.Uses React Flow to render actions as nodes with edges showing dependencies. * score: 2 ### component ActionDependencyIndicator * file: src/cores/lo/components/ActionDependencyIndicator.tsx:30 * kind: component * core: lo * spec: (none) * summary: Shows dependency info for an action:- If blocked: warning + "Blocked by: \[title]"- If has dependency: arrow + "\[title]"- If blocks others: count badge * score: 2 ### component ActionDependencySelect * file: src/cores/lo/components/ActionDependencySelect.tsx:35 * kind: component * core: lo * spec: (none) * summary: Searchable dropdown for selecting action dependencies.Excludes current action and shows status/assignee info. * score: 2 ### component ActionFilterBar * file: src/cores/lo/components/ActionFilterBar.tsx:47 * kind: component * core: lo * spec: LO-15 * summary: Toolbar for filtering an action (to-do) list by status, priority, and adebounced text search. Renders active-filter badges and emits the updated via ; each control section can betoggled off. * params: * props — Current filters, the change handler, and optional flags to show/hide the search, priority, and status controls. * score: 5 ### component ActionStatusBadge * file: src/cores/lo/components/ActionStatusBadge.tsx:51 * kind: component * core: lo * spec: LO-15 * summary: Renders a colored badge for an action's workflow status (not-started,in-progress, blocked, on-hold, needs-review, complete) with an optionalstatus icon and label at small or medium size. * params: * props — The action plus optional , , , and . * score: 5 ### component ActionStatusSelect * file: src/cores/lo/components/ActionStatusSelect.tsx:34 * kind: component * core: lo * spec: LO-15 * summary: Status dropdown for changing an action's workflow status, enforcing theallowed state-machine transitions from (invalid targets aredisabled) and marking the current value. * params: * props — Selected , the action's (transition source), an handler, and optional //. * score: 5 ### component ActionStatusSelectInline * file: src/cores/lo/components/ActionStatusSelect.tsx:90 * kind: component * core: lo * spec: LO-15 * summary: Inline, badge-triggered variant of the action status selector for use indense table rows: clicking the status badge opens a dropdown of validtransition targets. Falls back to a static badge when no transitions areavailable. * params: * props — Selected , the action's (transition source), an handler, and optional . * score: 5 ### component ArticleTableOfContents * file: src/cores/lo/components/ArticleTableOfContents.tsx:34 * kind: component * core: lo * spec: LO-10 * summary: Sidebar table of contents for a knowledge-portal article: parses level 1-3Markdown headings from the article body, renders anchor links, and highlightsthe section currently in view, scrolling to a heading on click. * params: * props — The Markdown to extract headings from, plus an optional . * score: 5 ### component ArticleTypeBadge * file: src/cores/lo/components/ArticleTypeBadge.tsx:47 * kind: component * core: lo * spec: LO-10 * summary: Renders a labeled, optionally iconed badge for a knowledge-article type(process, best practice, training, FAQ, policy, general). Built on theshared factory. * params: * props — The article and optional (default true). * score: 5 ### component ArticleVersionHistory * file: src/cores/lo/components/ArticleVersionHistory.tsx:46 * kind: component * core: lo * spec: LO-10 * summary: Collapsible panel listing the saved version history of a knowledge-portalarticle, with per-version author and timestamp, a sanitized preview dialog,and a confirm-to-restore action that reverts the article to an earlierversion. * params: * props — The , tenant , acting , and an optional callback fired after a successful restore. * score: 5 ### component AssessmentCard * file: src/cores/lo/components/AssessmentCard.tsx:31 * kind: component * core: lo * spec: LO-09 * summary: Summary card for an organizational assessment/survey definition, showing itsname, type badge, and active/inactive state, with an overflow menu exposingview, edit, and delete actions. * params: * props — The to render plus optional , , and handlers. * score: 5 ### component AssessmentDetailPage * file: src/cores/lo/pages/AssessmentDetailPage.tsx:30 * kind: component * core: lo * spec: (none) * summary: Utility for assessment detail page. * score: 1 ### component AssessmentFormDialog * file: src/cores/lo/components/AssessmentFormDialog.tsx:42 * kind: component * core: lo * spec: LO-09 * summary: Modal dialog for creating or editing an assessment/survey definition (name,type, description, active flag). Operates in edit mode when an existing is supplied, otherwise creates a new one via the assessmentmutation hook. * params: * props — Dialog state, its handler, and an optional to edit (omit to create). * score: 5 ### component AssessmentResponsesTable * file: src/cores/lo/components/AssessmentResponsesTable.tsx:45 * kind: component * core: lo * spec: LO-09 * summary: DataTable of individual respondent rows for a distributed assessment,showing each response's status (pending, in-progress, submitted, skipped)with row actions to send a reminder or mark a response skipped. * params: * props — The to list, optional / row handlers, and an flag. * score: 5 ### component AssessmentScheduleDetailPage * file: src/cores/lo/pages/AssessmentScheduleDetailPage.tsx:27 * kind: component * core: lo * spec: (none) * summary: Utility for assessment schedule detail page. * score: 1 ### component AssessmentScheduleDialog * file: src/cores/lo/components/AssessmentScheduleDialog.tsx:44 * kind: component * core: lo * spec: LO-09 * summary: Modal dialog for scheduling distribution of an assessment: sets the sendand due dates and the audience scope (all employees, by role, or bydepartment). Edits an existing when provided, otherwise createsone. * params: * props — Dialog state and handler, the target , and an optional existing to edit. * score: 5 ### component AssessmentsPage * file: src/cores/lo/pages/AssessmentsPage.tsx:26 * kind: component * core: lo * spec: (none) * summary: Utility for assessments page. * score: 1 ### component AssessmentTypeBadge * file: src/cores/lo/components/AssessmentTypeBadge.tsx:34 * kind: component * core: lo * spec: LO-09 * summary: Renders a badge labeling an assessment's type (organizational health,engagement, culture, or custom). Built on the shared factory. * params: * props — The assessment and an optional . * score: 5 ### component CategoryTree * file: src/cores/lo/components/CategoryTree.tsx:98 * kind: component * core: lo * spec: LO-10 * summary: Collapsible tree navigator for knowledge-portal categories, rendering nestedcategories with expand/collapse controls and a selectable "All" option;invokes with the chosen category (or null for "All"). * params: * props — The tree, the to highlight, an handler, and optional /. * score: 5 ### component CoreValuesEditor * file: src/cores/lo/components/CoreValuesEditor.tsx:32 * kind: component * core: lo * spec: LO-01 * summary: Editor for an organization's EOS core values (3-7 recommended): add, edit,reorder, and remove values with name and description, persisting changes tothe vision document via its mutation hook. * params: * props — The whose are edited and saved. * score: 5 ### component FeedbackCard * file: src/cores/lo/components/FeedbackCard.tsx:37 * kind: component * core: lo * spec: LO-08 * summary: Card displaying a single piece of feedback (praise, concern, or suggestion)with its type badge, message, and optionally the recipient and provider;the whole card is clickable when an handler is supplied. * params: * props — The to render, optional / toggles, and an optional handler. * score: 5 ### component FeedbackFormDialog * file: src/cores/lo/components/FeedbackFormDialog.tsx:44 * kind: component * core: lo * spec: LO-08 * summary: Modal dialog for giving or editing feedback: select recipient, type(praise/concern/suggestion), and message, optionally tied to a 1-on-1.Operates in edit mode when an existing is passed, otherwisecreates new feedback. * params: * props — Dialog open state and handler, tenant , selectable /, the acting , an optional existing , and optional / context. * score: 5 ### component FeedbackPage * file: src/cores/lo/pages/FeedbackPage.tsx:26 * kind: component * core: lo * spec: (none) * summary: Utility for feedback page. * score: 1 ### component FeedbackTypeBadge * file: src/cores/lo/components/FeedbackTypeBadge.tsx:35 * kind: component * core: lo * spec: LO-08 * summary: Renders a colored, iconed badge for a feedback type (praise, concern, orsuggestion). Built on the shared factory. * params: * props — The feedback and an optional . * score: 5 ### component GoalActionsEditor * file: src/cores/lo/components/GoalActionsEditor.tsx:37 * kind: component * core: lo * spec: (none) * summary: Inline editor for viewing and managing actions associated with a goal.LO-14: Added dependency selection and graph visualization. * score: 2 ### component GoalAssignmentEditor * file: src/cores/lo/components/GoalAssignmentEditor.tsx:26 * kind: component * core: lo * spec: (none) * summary: Render an inline editor for managing team members assigned to a goal. * params: * goalId — The identifier of the goal whose team assignments are being managed * returns: A React element containing the assignment list, add-member dialog, and controls for adding, removing, and toggling primary ownership * score: 2 ### component GoalCompletionDialog * file: src/cores/lo/components/GoalCompletionDialog.tsx:34 * kind: component * core: lo * spec: (none) * summary: Render a dialog that lets the user mark a quarterly goal as complete.The dialog shows a completion date (defaulting to today) and an optional notes field,and submits the selected date and notes to complete the goal. On successful completion,the dialog is closed and notes are cleared. * params: * open — Whether the dialog is visible * onOpenChange — Callback to update the dialog visibility * goal — The quarterly goal to mark as complete * returns: The dialog element for completing the specified goal * score: 2 ### component GoalDashboardPage * file: src/cores/lo/pages/GoalDashboardPage.tsx:44 * kind: component * core: lo * spec: (none) * summary: Renders the Goals Dashboard page showing quarterly goals, summary statistics, and controls to filter by quarter and year.The page fetches goals for the selected quarter and fiscal year, displays loading skeletons while fetching, shows summary cards(total, completed, at risk, average progress), an at-risk alert when applicable, a list of goals with status, owner, due date and progress,and a dialog to add a new quarterly goal. * returns: The rendered Goals Dashboard React element. * score: 2 ### component GoalDetailPage * file: src/cores/lo/pages/GoalDetailPage.tsx:70 * kind: component * core: lo * spec: (none) * summary: Render the Goal detail page with progress, actions, team assignments, SMART score, and edit/complete/review dialogs.The component fetches the current quarterly goal and related actions/assignments, displays loading skeletons while data loads,shows a not-found card if the goal is missing, and provides UI to revalidate SMART scoring, edit the goal, mark it complete, and add a review. * returns: The React element for the Goal detail page; renders skeletons while loading or a "Goal not found" card when the goal cannot be found. * score: 2 ### component GoalQualityDashboardPage * file: src/cores/lo/pages/GoalQualityDashboardPage.tsx:26 * kind: component * core: lo * spec: (none) * summary: Renders the Goal Quality Analytics dashboard page with filters, summary metrics, charts, and a low-score goals table.The page provides a goal-type filter and displays summary cards (total goals, average score, excellent percentage, needs-improvement count), a score distribution chart, a goals-by-type chart, and a table of low-scoring goals, using analytics data from the hook. * returns: A React element rendering the Goal Quality Analytics dashboard. * score: 2 ### component GoalQualitySummaryCards * file: src/cores/lo/components/analytics/GoalQualitySummaryCards.tsx:28 * kind: component * core: lo * spec: (none) * summary: Render a responsive grid of four summary cards showing goal quality metrics or skeletons while loading. * params: * totalGoals — Total number of goals to display * averageScore — Average score value to display * excellentPercentage — Percentage of excellent goals (0–100); displayed with a trailing * needsImprovementCount — Number of goals needing improvement; also controls the visual emphasis of that card when greater than zero * isLoading — If , render skeleton placeholders instead of metric cards * returns: A JSX element containing a responsive 2–4 column grid of the four metric cards or loading skeletons * score: 2 ### component GoalQualityWidget * file: src/cores/lo/components/dashboard/GoalQualityWidget.tsx:24 * kind: component * core: lo * spec: (none) * summary: Renders a "Goal Quality" dashboard widget that displays goal-quality analytics.Shows a loading placeholder while analytics are being fetched. When data is available,presents either an empty-state message if no goals have been scored or the average SMART score,its qualitative category, a progress bar, and summary statistics, plus a link to the full analytics page. * returns: A JSX element containing the Goal Quality card widget. * score: 2 ### component GoalReviewDialog * file: src/cores/lo/components/GoalReviewDialog.tsx:33 * kind: component * core: lo * spec: (none) * summary: Render a dialog for reviewing and submitting a numeric score and optional notes for a completed quarterly goal.The dialog lets the user choose a score (1–10), enter optional review notes, and submit the review. On successful submission the dialog is closed and the local score and notes are reset. While submission is in progress the submit button is disabled and shows a saving state. * params: * open — Whether the dialog is visible * onOpenChange — Callback invoked with the new open state when the dialog should be opened or closed * goal — The quarterly goal being reviewed * returns: The review dialog element * score: 2 ### component GoalsByTypeChart * file: src/cores/lo/components/analytics/GoalsByTypeChart.tsx:31 * kind: component * core: lo * spec: (none) * summary: Renders a card that shows average SMART scores by goal type as a vertical bar chart.Filters out goal types with equal to 0 and displays one of:- a loading skeleton when is true,- an empty-state message when no scored data remains,- or a vertical bar chart with per-type colors and a tooltip formatted as . - data: Array of goal-type entries (each should include , , and ) - isLoading: When true, shows a loading placeholder instead of the chart * returns: A Card containing either a loading skeleton, an empty-state message, or a vertical bar chart of average scores by goal type * score: 2 ### component GoalsProgressWidget * file: src/cores/lo/components/dashboard/GoalsProgressWidget.tsx:24 * kind: component * core: lo * spec: (none) * summary: Displays a card summarizing current quarter goals and their progress.Shows a loading skeleton while goals are being fetched. When data is available,presents the average progress, badges for completed, on-track, and at-risk counts,up to four goal entries with per-goal progress and links to each goal, and a link to view all goals.If there are no goals for the quarter, shows a centered message and a link to create the first goal. * returns: A JSX element containing the goals progress widget for the current quarter. * score: 2 ### component GWCAssessmentCard * file: src/cores/lo/components/GWCAssessmentCard.tsx:42 * kind: component * core: lo * spec: LO-02 * summary: Card summarizing a GWC (Get-it / Want-it / Capacity) people assessment for aseat holder, including the keep/develop/move/replace recommendation badge.Shows an empty "No GWC assessment" prompt when is null;clickable when is provided. * params: * props — The (or null for the empty state), an optional layout flag, and an optional handler. * score: 5 ### component GWCAssessmentDialog * file: src/cores/lo/components/GWCAssessmentDialog.tsx:45 * kind: component * core: lo * spec: LO-02 * summary: Modal dialog for recording a GWC (Get-it / Want-it / Capacity) assessmentagainst a seat assignment, capturing the three ratings plus akeep/develop/move/replace recommendation. Edits an whensupplied, otherwise creates a new one. * params: * props — Dialog open state and handler, the target (or null), and an optional to edit. * score: 5 ### component IssueCard * file: src/cores/lo/components/IssueCard.tsx:28 * kind: component * core: lo * spec: LO-07 * summary: Summary card for an EOS issue (IDR list item) showing its title, owner,priority and status badges, navigating to the issue detail on click. * params: * props — The to render. * score: 5 ### component IssueDetailPage * file: src/cores/lo/pages/IssueDetailPage.tsx:35 * kind: component * core: lo * spec: (none) * summary: Utility for issue detail page. * score: 1 ### component IssueDiscussionThread * file: src/cores/lo/components/IssueDiscussionThread.tsx:34 * kind: component * core: lo * spec: LO-07 * summary: Threaded discussion panel for an issue's IDR (Identify-Discuss-Resolve)process, listing discussion entries with authors and supporting add, edit,and delete of comments. * params: * props — The , tenant , and acting . * score: 5 ### component IssueFormDialog * file: src/cores/lo/components/IssueFormDialog.tsx:46 * kind: component * core: lo * spec: LO-07 * summary: Modal dialog for creating or editing an EOS issue (title, description,priority, owner), optionally associating it with a meeting. Edits anexisting when supplied, otherwise creates a new one. * params: * props — Dialog open state and handler, tenant , acting , an optional to edit, and an optional to link the issue to. * score: 5 ### component IssuePriorityBadge * file: src/cores/lo/components/IssuePriorityBadge.tsx:37 * kind: component * core: lo * spec: LO-07 * summary: Renders a colored badge for an issue's priority (high, medium, or low) atdefault or small size. Built on the shared factory. * params: * props — The issue and an optional . * score: 5 ### component IssueResolutionForm * file: src/cores/lo/components/IssueResolutionForm.tsx:31 * kind: component * core: lo * spec: LO-07 * summary: Form for resolving an EOS issue by capturing its root cause and resolutionnotes, then marking the issue resolved via the issue mutation hook. * params: * props — The being resolved, the acting , and an optional callback fired after a successful resolution. * score: 5 ### component IssuesPage * file: src/cores/lo/pages/IssuesPage.tsx:24 * kind: component * core: lo * spec: (none) * summary: Utility for issues page. * score: 1 ### component IssueStatusBadge * file: src/cores/lo/components/IssueStatusBadge.tsx:34 * kind: component * core: lo * spec: LO-07 * summary: Renders a badge for an issue's IDR status (open, discussing, resolved, orclosed) at default or small size. * params: * props — The issue and an optional . * score: 5 ### component KnowledgeArticleCard * file: src/cores/lo/components/KnowledgeArticleCard.tsx:31 * kind: component * core: lo * spec: LO-10 * summary: Card preview for a knowledge-portal article, showing its title, type badge,author, and optionally its category, in a full or compact layout. * params: * props — The to render, plus optional and layout flags. * score: 5 ### component KnowledgeArticleEditorPage * file: src/cores/lo/pages/KnowledgeArticleEditorPage.tsx:39 * kind: component * core: lo * spec: (none) * summary: Utility for knowledge article editor page. * score: 1 ### component KnowledgeArticlePage * file: src/cores/lo/pages/KnowledgeArticlePage.tsx:26 * kind: component * core: lo * spec: (none) * summary: Utility for knowledge article page. * score: 1 ### component KnowledgeCategoriesPage * file: src/cores/lo/pages/KnowledgeCategoriesPage.tsx:27 * kind: component * core: lo * spec: (none) * summary: Utility for knowledge categories page. * score: 1 ### component KnowledgePortalAskAI * file: src/cores/lo/components/KnowledgePortalAskAI.tsx:23 * kind: component * core: lo * spec: (none) * summary: LO clean-ops: "Ask AI" over the knowledge portal (RAG-lite). Retrieves theorg's published articles as grounding context and synthesizes a cited answer.Renders nothing unless LO AI is enabled. Answers strictly from the articles(no hallucination); shows which articles were cited. * score: 2 ### component KnowledgePortalPage * file: src/cores/lo/pages/KnowledgePortalPage.tsx:25 * kind: component * core: lo * spec: (none) * summary: Utility for knowledge portal page. * score: 1 ### component KnowledgeSearchBar * file: src/cores/lo/components/KnowledgeSearchBar.tsx:34 * kind: component * core: lo * spec: LO-10 * summary: Type-ahead search input for the knowledge portal that queries articles forthe given organization and shows matching results (with type badges) in apopover for quick navigation. * params: * props — The tenant to scope the search, plus optional and . * score: 5 ### component LOOverview * file: src/cores/lo/pages/LOOverview\.tsx:49 * kind: component * core: lo * spec: (none) * summary: Utility for looverview. * score: 1 ### component LOSettingsForm * file: src/cores/lo/components/LOSettingsForm.tsx:107 * kind: component * core: lo * spec: none * summary: Render the Leadership Operating System settings form with tabs for Vision,Goals, SMART, People, Meetings, Scorecards, Issues, and Knowledge.Renders a multi-tab form driven by a Zod-validated react-hook-form instanceand pre-populated default values; submitting the form invokes the providedcallback with validated settings. * params: * props — Form props: (partial settings used to seed fields, with sensible defaults for anything omitted), (callback invoked with the validated values on submit), and (disables the submit button and switches its label to a saving state while true). * score: 5 ### component LOSettingsPage * file: src/cores/lo/pages/LOSettingsPage.tsx:24 * kind: component * core: lo * spec: (none) * summary: Utility for losettings page. * score: 1 ### component LowScoreGoalsTable * file: src/cores/lo/components/analytics/LowScoreGoalsTable.tsx:33 * kind: component * core: lo * spec: LO-12 * summary: DataTable card listing goals with low SMART scores, showing each goal'stitle, type, SMART-score badge, and primary issue, with a link out to thegoal for remediation. Used on the goal-quality analytics view. * params: * props — The to display (see ) and an flag for the skeleton state. * score: 5 ### component MeetingActionItemsPanel * file: src/cores/lo/components/MeetingActionItemsPanel.tsx:48 * kind: component * core: lo * spec: LO-06 * summary: Panel for managing a meeting's action items: lists existing items and letsusers add new ones with a description, assignee, and due date, capturingfollow-ups that come out of a structured meeting. * params: * props — The whose action items are listed and edited. * score: 5 ### component MeetingAgendaEditor * file: src/cores/lo/components/MeetingAgendaEditor.tsx:31 * kind: component * core: lo * spec: LO-06 * summary: Editor for a meeting's agenda: add, edit, reorder, and check off agendaitems (each with a title and time-box duration), persisting changes to themeeting via its mutation hook. * params: * props — The whose items are edited and saved. * score: 5 ### component MeetingAttendeesManager * file: src/cores/lo/components/MeetingAttendeesManager.tsx:57 * kind: component * core: lo * spec: LO-06 * summary: Manager for a meeting's attendee roster: lists current attendees and letsusers add organization members (via a picker dialog) or remove them. * params: * props — The whose attendees are managed. * score: 5 ### component MeetingCard * file: src/cores/lo/components/MeetingCard.tsx:46 * kind: component * core: lo * spec: LO-06 * summary: Summary card for a structured meeting (Level 10, quarterly, annual, etc.)showing its type, scheduled date, and status, in a full or compact layout;clickable when is provided. * params: * props — The to render, plus optional layout and handler. * score: 5 ### component MeetingDetailPage * file: src/cores/lo/pages/MeetingDetailPage.tsx:51 * kind: component * core: lo * spec: (none) * summary: Utility for meeting detail page. * score: 1 ### component MeetingFormDialog * file: src/cores/lo/components/MeetingFormDialog.tsx:55 * kind: component * core: lo * spec: LO-06 * summary: Modal dialog for scheduling or editing a structured meeting (title, type,date, duration). Edits an existing when supplied, otherwisecreates a new one via the meeting mutation hook. * params: * props — Dialog state, its handler, and an optional to edit (omit to create). * score: 5 ### component MeetingNotesEditor * file: src/cores/lo/components/MeetingNotesEditor.tsx:33 * kind: component * core: lo * spec: LO-06 * summary: Editor for a meeting's notes and recorded decisions: free-form meeting notesplus an add/remove list of decisions, persisting changes to the meeting viaits mutation hook. * params: * props — The whose notes and decisions are edited and saved. * score: 5 ### component MeetingsPage * file: src/cores/lo/pages/MeetingsPage.tsx:30 * kind: component * core: lo * spec: (none) * summary: Utility for meetings page. * score: 1 ### component MetricFormDialog * file: src/cores/lo/components/MetricFormDialog.tsx:54 * kind: component * core: lo * spec: LO-05 * summary: Modal dialog for creating or editing a scorecard metric (KPI): name, owningrole, goal/target, measurement, and display order. Edits an existing when supplied, otherwise creates a new one. * params: * props — Dialog open state and handler, the to edit (or null to create), and the selectable owner . * score: 5 ### component MyAssessmentsPage * file: src/cores/lo/pages/MyAssessmentsPage.tsx:25 * kind: component * core: lo * spec: (none) * summary: Utility for my assessments page. * score: 1 ### component MyTodosWidget * file: src/cores/lo/components/dashboard/MyTodosWidget.tsx:32 * kind: component * core: lo * spec: LO-04 * summary: LO dashboard widget listing the signed-in user's pending and overdue to-doswith priority and due-date cues, inline completion checkboxes, and reordersupport. Takes no props; reads tasks assigned to the current user in theactive organization. Renders a skeleton while loading. * score: 5 ### component OneOnOneCard * file: src/cores/lo/components/OneOnOneCard.tsx:28 * kind: component * core: lo * spec: LO-08 * summary: Summary card for a scheduled 1-on-1 meeting showing its participants, date,and status badge; clickable when is provided. * params: * props — The to render and an optional handler. * score: 5 ### component OneOnOneDetailPage * file: src/cores/lo/pages/OneOnOneDetailPage.tsx:43 * kind: component * core: lo * spec: (none) * summary: Utility for one on one detail page. * score: 1 ### component OneOnOneFormDialog * file: src/cores/lo/components/OneOnOneFormDialog.tsx:49 * kind: component * core: lo * spec: LO-08 * summary: Modal dialog for scheduling or editing a 1-on-1 meeting between a managerand a report (participants, date). Edits an existing whensupplied, otherwise creates a new one. * params: * props — Dialog open state and handler, tenant , selectable , the acting , and an optional existing to edit. * score: 5 ### component OneOnOneNotesEditor * file: src/cores/lo/components/OneOnOneNotesEditor.tsx:33 * kind: component * core: lo * spec: LO-08 * summary: Editor for the discussion notes captured during a 1-on-1 meeting,persisting changes via the 1-on-1 mutation hook. Renders read-only when theviewer is not the note owner. * params: * props — The whose notes are edited, the acting , and an optional flag. * score: 5 ### component OneOnOnesPage * file: src/cores/lo/pages/OneOnOnesPage.tsx:26 * kind: component * core: lo * spec: (none) * summary: Utility for one on ones page. * score: 1 ### component OneOnOnesSummaryWidget * file: src/cores/lo/components/dashboard/OneOnOnesSummaryWidget.tsx:28 * kind: component * core: lo * spec: LO-08 * summary: LO dashboard widget listing the current organization's upcoming 1-on-1meetings (from today forward) with participant avatars and relative dates,linking to the 1-on-1s view. Takes no props. Renders a skeleton whileloading. * score: 5 ### component OneOnOneStatusBadge * file: src/cores/lo/components/OneOnOneStatusBadge.tsx:35 * kind: component * core: lo * spec: LO-08 * summary: Renders an iconed badge for a 1-on-1 meeting's status (scheduled, completed,cancelled, or no-show). * params: * props — The 1-on-1 and an optional . * score: 5 ### component OpenIssuesWidget * file: src/cores/lo/components/dashboard/OpenIssuesWidget.tsx:25 * kind: component * core: lo * spec: LO-07 * summary: LO dashboard widget surfacing the current organization's open issues groupedby priority, linking to the issues (IDR) list. Takes no props. Renders askeleton while loading. * score: 5 ### component OrgChartTree * file: src/cores/lo/components/OrgChartTree.tsx:67 * kind: component * core: lo * spec: LO-02 * summary: Visual accountability-chart tree rendering the role hierarchy with seatholders and per-seat GWC (Get-it / Want-it / Capacity) indicators, exposingactions to edit a role, assign a seat, or run a GWC assessment. * params: * props — The (parent/child hierarchy) and seat , plus , , and optional action handlers. * score: 5 ### component PendingAssessmentsWidget * file: src/cores/lo/components/dashboard/PendingAssessmentsWidget.tsx:24 * kind: component * core: lo * spec: LO-09 * summary: LO dashboard widget listing assessment/survey responses the signed-in userstill owes, linking to complete them. Takes no props; reads the currentuser's pending assessment responses. Renders a skeleton while loading. * score: 5 ### component QuarterlyGoalDialog * file: src/cores/lo/components/QuarterlyGoalDialog.tsx:64 * kind: component * core: lo * spec: (none) * summary: Render a dialog for creating or editing a quarterly goal (90-day priority).The dialog manages local form state, integrates SMART validation and an optional SMART wizard,supports selecting quarter, year, dates, status, executive sponsor and progress, and performscreate, update, and delete mutations via the quarterly goal mutation hook. * params: * open — Controls whether the dialog is visible * onOpenChange — Callback invoked when the dialog open state should change * goal — If provided, the dialog loads this goal for editing; if null, the dialog creates a new goal * returns: The QuarterlyGoal dialog React element * score: 2 ### component QuarterlyGoalsSection * file: src/cores/lo/components/QuarterlyGoalsSection.tsx:47 * kind: component * core: lo * spec: (none) * summary: Render the Quarterly Goals section: header with current quarter, overall progress summary,a list of goals (or empty state), and a dialog for adding or editing a goal.When is true a skeleton placeholder is rendered instead of the content. * params: * goals — The list of quarterly goals to display. * isLoading — Whether the section is in a loading state. * returns: A React element containing the quarterly goals overview, goals list (or empty state), and the add/edit goal dialog. * score: 2 ### component ResponseRateCard * file: src/cores/lo/components/ResponseRateCard.tsx:35 * kind: component * core: lo * spec: LO-09 * summary: Stat card summarizing assessment distribution response rates: totalrecipients and counts of pending, started, submitted, and skippedresponses, with the derived completion rate. * params: * props — The plus , , , and for the distribution. * score: 5 ### component RichContentEditor * file: src/cores/lo/components/RichContentEditor.tsx:34 * kind: component * core: lo * spec: LO-10 * summary: Controlled rich-text content editor used for authoring knowledge-portalarticle bodies, emitting the edited content via . * params: * props — The controlled , an handler, and optional , , and . * score: 5 ### component RoleDefinitionDialog * file: src/cores/lo/components/RoleDefinitionDialog.tsx:41 * kind: component * core: lo * spec: LO-02 * summary: Modal dialog for creating, editing, or deleting an accountability-chart roledefinition, including its name, parent role, and key functions/roles. Editsan existing when supplied, otherwise creates a new one under thegiven chart. * params: * props — Dialog open state and handler, the owning , and the to edit (or null to create). * score: 5 ### component ScheduleStatusBadge * file: src/cores/lo/components/ScheduleStatusBadge.tsx:33 * kind: component * core: lo * spec: LO-09 * summary: Renders a badge for an assessment schedule's status (scheduled,distributed, or closed). * params: * props — The schedule and an optional . * score: 5 ### component ScorecardDetailPage * file: src/cores/lo/pages/ScorecardDetailPage.tsx:36 * kind: component * core: lo * spec: (none) * summary: Utility for scorecard detail page. * score: 1 ### component ScorecardMetricsPage * file: src/cores/lo/pages/ScorecardMetricsPage.tsx:19 * kind: component * core: lo * spec: (none) * summary: Utility for scorecard metrics page. * score: 1 ### component ScorecardsPage * file: src/cores/lo/pages/ScorecardsPage.tsx:27 * kind: component * core: lo * spec: (none) * summary: Utility for scorecards page. * score: 1 ### component ScorecardsTrendWidget * file: src/cores/lo/components/dashboard/ScorecardsTrendWidget.tsx:24 * kind: component * core: lo * spec: LO-05 * summary: LO dashboard widget giving a high-level overview of the currentorganization's scorecards and their metrics, linking to the full scorecardview. Takes no props. Renders a skeleton while loading. * score: 5 ### component ScorecardTable * file: src/cores/lo/components/ScorecardTable.tsx:93 * kind: component * core: lo * spec: LO-05 * summary: Weekly scorecard matrix: renders metrics as rows and recent weeks ascolumns, color-coding each cell against the metric's target andwarning/critical thresholds (respecting ) and formattingvalues by metric type (currency, percentage, or number). * params: * props — The (rows), the providing weekly values, and an optional count (default 8). * score: 5 ### component ScorecardValueEditor * file: src/cores/lo/components/ScorecardValueEditor.tsx:34 * kind: component * core: lo * spec: LO-05 * summary: Inline editor for one week's value of a scorecard metric, capturing theactual value, trend direction, and an optional note, emitting per-fieldchanges via . * params: * props — The being recorded, the current state, an field handler, and an optional flag. * score: 5 ### component ScoreDistributionChart * file: src/cores/lo/components/analytics/ScoreDistributionChart.tsx:23 * kind: component * core: lo * spec: (none) * summary: Render a card that displays score distribution as a pie chart, or a loading / empty state when appropriate. * params: * data — Array of score distribution entries; entries with less than or equal to 0 are ignored. * isLoading — When , show a skeleton placeholder instead of chart content. * returns: The card element: a loading skeleton when is , a centered "No scored goals yet" message when no entries remain after filtering, or a pie chart that visualizes counts per category with colored slices, labels, tooltip, and legend. * score: 2 ### component SeatAssignmentDialog * file: src/cores/lo/components/SeatAssignmentDialog.tsx:46 * kind: component * core: lo * spec: LO-02 * summary: Modal dialog for assigning a person to an accountability-chart seat (role),choosing the assignment type (primary, secondary, or interim). * params: * props — Dialog open state and handler, plus the target (or null) to assign a seat for. * score: 5 ### component SMARTAIFeedbackCard * file: src/cores/lo/components/SMARTAIFeedbackCard.tsx:24 * kind: component * core: lo * spec: (none) * summary: LO Lane Q: optional AI coaching on a goal's SMART quality, surfaced on thewizard review step. Advisory only (the heuristic score still governs creation);renders nothing unless LO AI is enabled for the org. * score: 2 ### component SMARTCriterionFeedback * file: src/cores/lo/components/SMARTCriterionFeedback.tsx:27 * kind: component * core: lo * spec: (none) * summary: Render validation feedback for a single SMART criterion. * params: * label — Visible label for the criterion * result — Object with the criterion's , , flag, and textual * icon — Optional leading icon to display next to the label * className — Optional additional class names applied to the outer container * returns: A JSX element that displays the criterion label, score (as ), a status icon, a progress bar reflecting the score percentage, and the feedback text * score: 2 ### component SMARTGoalWizard * file: src/cores/lo/components/SMARTGoalWizard.tsx:52 * kind: component * core: lo * spec: (none) * summary: Displays a six-step modal wizard for creating and validating a SMART goal.The wizard walks through Specific, Measurable, Achievable, Relevant, Time-bound, and Review steps,enforces validation rules from useSMARTValidation, and exposes navigation, skip, and completion actions. * params: * open — Whether the wizard dialog is visible * onOpenChange — Callback invoked when the dialog visibility should change * onComplete — Callback invoked when the user completes the wizard; receives the created goal (partial QuarterlyGoal) and the SMART validation result * initialGoal — Optional partial QuarterlyGoal used to prefill the wizard fields * returns: The rendered SMART Goal Wizard component * score: 2 ### component SMARTScoreBadge * file: src/cores/lo/components/SMARTScoreBadge.tsx:46 * kind: component * core: lo * spec: (none) * summary: Render a colored SMART score badge with an optional category label and tooltip breakdown.When is provided the badge is wrapped in a tooltip that shows per-dimension(Specific, Measurable, Achievable, Relevant, Time-bound) scores. * params: * score — The SMART score value (0–100) to display inside the badge * validation — Optional SMART validation object; when present enables the tooltip breakdown * size — Visual size of the badge; one of (default: ) * showLabel — If , append the category label next to the score (default: ) * className — Additional CSS classes to apply to the badge container * returns: A React element containing the colored score badge, or the badge wrapped in a tooltip with the SMART score breakdown when is provided * score: 2 ### component SMARTStepAchievable * file: src/cores/lo/components/smart-wizard/SMARTStepAchievable.tsx:25 * kind: component * core: lo * spec: (none) * summary: Renders the "Achievable" step of a SMART goals wizard, including start/end date inputs, a computed duration display when both dates are provided, practical tips, and an Achievable criterion feedback block. * returns: The JSX element for the Achievable step: start and end date controls, an optional duration summary, a tips panel, and a SMART criterion feedback component. * score: 2 ### component SMARTStepMeasurable * file: src/cores/lo/components/smart-wizard/SMARTStepMeasurable.tsx:28 * kind: component * core: lo * spec: (none) * summary: Render the "Make it Measurable" step UI for the SMART wizard.Displays the current goal title, an editable metrics textarea with helper text and examples,and a feedback row computed from . * params: * title — The current goal title to display (shows "No title yet" if empty) * description — The metrics / success-criteria text bound to the textarea * onDescriptionChange — Called with the updated description when the textarea changes * returns: The rendered React element for the measurable step * score: 2 ### component SMARTStepRelevant * file: src/cores/lo/components/smart-wizard/SMARTStepRelevant.tsx:27 * kind: component * core: lo * spec: (none) * summary: Render the "Make it Relevant" step UI that lets users link a SMART goal to a strategic goal.Displays a select populated with available strategic goals, shows a contextual confirmationor guidance panel depending on whether a goal is selected, and renders relevance feedback. * params: * strategicGoalId — The currently selected strategic goal id (empty string when not linked) * onStrategicGoalChange — Callback invoked with the new strategic goal id when the selection changes * returns: The step's JSX element containing the select control, informational panels, and feedback component * score: 2 ### component SMARTStepReview * file: src/cores/lo/components/smart-wizard/SMARTStepReview\.tsx:31 * kind: component * core: lo * spec: (none) * summary: Render a SMART score review UI for a goal, showing the total score, category badge,optional creation status (when required), and a breakdown of each SMART criterion. * params: * title — The goal's title; displays "Untitled Goal" when empty * description — Optional goal description displayed below the title * validation — SMARTValidationResult containing and per-criterion results * minimumScore — Minimum score required to allow creation; defaults to 70 * required — When true, enforces and displays a status message * returns: The JSX element for the SMART score review panel * score: 2 ### component SMARTStepSpecific * file: src/cores/lo/components/smart-wizard/SMARTStepSpecific.tsx:30 * kind: component * core: lo * spec: (none) * summary: Render the "Specific" step UI for the SMART goals flow\.Validates the provided title and description and displays input fields and feedback for the "Specific" criterion. * params: * title — Current goal title value * description — Current goal description value describing what defines "done" * onTitleChange — Callback invoked with the new title when the title input changes * onDescriptionChange — Callback invoked with the new description when the description textarea changes * returns: The React element for the "Specific" step, including title and description inputs and validation feedback * score: 2 ### component SMARTStepTimeBound * file: src/cores/lo/components/smart-wizard/SMARTStepTimeBound.tsx:21 * kind: component * core: lo * spec: (none) * summary: Render a "Time-bound Review" step that displays start/end dates, a computed timeline status (starts soon, active with days remaining, or expired), deadline best-practices, and SMART time-bound feedback. * params: * startDate — Start date string parseable by ; pass a falsy value to indicate the start date is not set * endDate — End date string parseable by ; pass a falsy value to indicate the end date is not set * returns: The JSX element for the Time-bound review UI * score: 2 ### component StrategicGoalDialog * file: src/cores/lo/components/StrategicGoalDialog.tsx:60 * kind: component * core: lo * spec: (none) * summary: Render a dialog for creating or editing a strategic goal with live SMART validation, sponsor selection, and category/status/target controls. * params: * open — Whether the dialog is open * onOpenChange — Callback invoked with the new open state * goal — Existing goal to edit, or to create a new goal * goalType — Determines the goal horizon displayed (e.g., one-year vs three-year) * returns: The dialog element for creating or editing a strategic goal * score: 2 ### component StrategicGoalsSection * file: src/cores/lo/components/StrategicGoalsSection.tsx:44 * kind: component * core: lo * spec: (none) * summary: Render the strategic goals section with separate 3-year and 1-year lists, add buttons, and editable goal rows.Renders skeletons when loading, shows SMART score badges when present, and opens the goal dialog for adding or editing goals. * params: * goals — Array of strategic goals to display. Individual goals may include optional SMART fields (, ) which will be shown when present. * isLoading — If true, displays loading placeholders instead of the goal lists. * returns: The JSX element for the Strategic Goals section. * score: 2 ### component TodoCard * file: src/cores/lo/components/TodoCard.tsx:52 * kind: component * core: lo * spec: (none) * summary: Renders a todo item as an interactive card showing title, description, priority, due date, linked goal, and assignee.Clicking the card navigates to the todo detail page; the status toggle updates the todo's completion status. * params: * todo — The todo item to display * returns: The rendered Todo card element * score: 2 ### component TodoCardSwipeable * file: src/cores/lo/components/TodoCardSwipeable.tsx:26 * kind: component * core: lo * spec: (none) * summary: Renders a wrapped with mobile swipe actions:left → toggle complete/reopen, right → delete. * score: 2 ### component TodoCommentThread * file: src/cores/lo/components/TodoCommentThread.tsx:33 * kind: component * core: lo * spec: LO-04 * summary: Comment thread for a to-do, listing existing comments (mapped from theplatform tasks domain) with authors and providing an input to add new ones. * params: * props — The whose comments are shown and the tenant . * score: 5 ### component TodoDetailPage * file: src/cores/lo/pages/TodoDetailPage.tsx:46 * kind: component * core: lo * spec: (none) * summary: Renders the Todo detail page showing a single to-do's metadata, actions, comments, and linked goal.Displays a loading skeleton while the to-do is being fetched, a "To-do not found" message if the item does not exist, and the full detail view when data is available. The detail view includes title, status/priority/overdue badges, description, comment thread, assignee, dates, linked goal, and action controls for completing, starting, cancelling, editing, and deleting the to-do. * returns: The page UI for viewing and managing a single to-do item * score: 2 ### component TodoFormDialog * file: src/cores/lo/components/TodoFormDialog.tsx:67 * kind: component * core: lo * spec: (none) * summary: A modal form used to create or edit a to-do item.Renders a dialog containing a validated form for title, description, status, priority, due date,and an optional link to a quarterly goal. Submitting the form creates or updates the to-do viamutations and closes the dialog on success. * params: * open — Whether the dialog is visible * onOpenChange — Callback invoked when the dialog's open state should change * organizationId — Organization identifier used when creating a new to-do; if omitted, submissions are ignored * todo — Optional existing to-do to edit; when provided the form is populated with its values * returns: The dialog element containing the to-do form * score: 2 ### component TodosPage * file: src/cores/lo/pages/TodosPage.tsx:29 * kind: component * core: lo * spec: (none) * summary: Utility for todos page. * score: 1 ### component UpcomingMeetingsWidget * file: src/cores/lo/components/dashboard/UpcomingMeetingsWidget.tsx:26 * kind: component * core: lo * spec: LO-06 * summary: LO dashboard widget listing the next scheduled structured meetings (Level10, quarterly, etc.) with relative dates, linking to the meetings view\.Takes no props; reads upcoming meetings for the current organization.Renders a skeleton while loading. * score: 5 ### component VisionDashboardWidget * file: src/cores/lo/components/dashboard/VisionDashboardWidget.tsx:27 * kind: component * core: lo * spec: (none) * summary: Render a compact Vision & Goals dashboard card showing core values, mission statement, and current-quarter goals.Displays skeleton placeholders while vision or goals data load. Once loaded, shows:- up to five core value badges (with a "+N" indicator for additional values),- a two-line mission preview,- the current quarter/year goals summary with average progress, top three goals, and completed/total count,- a prompt to create a vision document if none exists. * returns: A JSX element representing the Vision & Goals dashboard widget. * score: 2 ### component VisionExport * file: src/cores/lo/components/VisionExport.tsx:39 * kind: component * core: lo * spec: (none) * summary: Render a modal dialog that previews a Vision & Strategy (V/TO) document and provides a print/save PDF action. * params: * open — Whether the dialog is visible * onOpenChange — Callback invoked with the new open state to toggle the dialog * visionDoc — The vision document data to populate sections like core values, mission, and targets * strategicGoals — Strategic goals used to populate the 3-year and 1-year sections * goals — Quarterly goals used to populate the current quarter's goals section * returns: The dialog JSX element containing the preview and print functionality * score: 2 ### component VisionForm * file: src/cores/lo/components/VisionForm.tsx:31 * kind: component * core: lo * spec: LO-01 * summary: Form for editing an organization's V/TO vision narrative (mission, niche,long-term target, marketing strategy, and similar fields), persistingchanges to the vision document via its mutation hook. * params: * props — The whose vision fields are edited and saved. * score: 5 ### component VisionPage * file: src/cores/lo/pages/VisionPage.tsx:34 * kind: component * core: lo * spec: (none) * summary: Render the Vision & Strategy page for viewing and managing the organization's Vision/Traction Organizer,including mission statement, 10-year target, core values, strategic goals, and current-quarter goals.Renders skeleton placeholders while the vision document is loading. If no vision document exists,shows a prompt to create one. When a vision document exists, presents tabbed sections for Overview,Core Values, Strategic Goals, and Quarterly Goals, and provides an Export dialog. * returns: The component's JSX element representing the Vision & Strategy page. * score: 2 ## Functions & utilities ### function buildDependencyChain * file: src/cores/lo/utils/dependencyUtils.ts:57 * kind: function * core: lo * spec: (none) * summary: Builds the dependency chain for an actionReturns both upstream (what it depends on) and downstream (what depends on it) * score: 4 ### function buildMeetingAgendaContent * file: src/cores/lo/templates/meeting-agenda-content.ts:10 * kind: function * core: lo * spec: (none) * summary: Provides build meeting agenda content functionality. * score: 4 ### function buildQuarterlyReportContent * file: src/cores/lo/templates/quarterly-report-content.ts:10 * kind: function * core: lo * spec: (none) * summary: Provides build quarterly report content functionality. * score: 4 ### function buildStrategicPlanContent * file: src/cores/lo/templates/strategic-plan-content.ts:10 * kind: function * core: lo * spec: (none) * summary: Provides build strategic plan content functionality. * score: 4 ### function calculateGraphLayout * file: src/cores/lo/utils/dependencyGraphLayout.ts:31 * kind: function * core: lo * spec: (none) * summary: Calculate node positions using a simple layered layout algorithm.Actions with no dependencies go at the top, then their dependents below. * score: 4 ### function countDependentActions * file: src/cores/lo/utils/dependencyUtils.ts:89 * kind: function * core: lo * spec: (none) * summary: Counts how many actions depend on a given action (directly) * score: 4 ### function detectDependencyCycle * file: src/cores/lo/utils/dependencyUtils.ts:17 * kind: function * core: lo * spec: (none) * summary: Detects if setting a dependency would create a cycleUses DFS to traverse the dependency chain * params: * actions — All actions in the goal * actionId — The action being updated * newDependencyId — The proposed dependency * returns: true if cycle would be created * score: 4 ### function getScoreCategory * file: src/cores/lo/utils/validateSMARTGoal.ts:395 * kind: function * core: lo * spec: (none) * summary: Map a numeric SMART score to a descriptive label and UI color category. * params: * score — Numeric score (typically 0–100) used to determine category * returns: An object with describing the score and indicating the UI category:- - - - - - - - * score: 4 ### function isBlockedByDependency * file: src/cores/lo/utils/dependencyUtils.ts:96 * kind: function * core: lo * spec: (none) * summary: Checks if an action is blocked by an incomplete dependency * score: 4 ### function mapTaskCommentToTodoComment * file: src/cores/lo/utils/taskAdapters.ts:65 * kind: function * core: lo * spec: LO-04 * summary: Adapts a platform record into the LO shape, remapping to and to while preserving the author relation. * params: * comment — Platform task comment (with author relation) from the unified tasks domain. * returns: An LO with field names aligned to the LO to-do model. * score: 5 ### function mapTaskToTodo * file: src/cores/lo/utils/taskAdapters.ts:27 * kind: function * core: lo * spec: LO-04 * summary: Adapts a platform record into the LO shape,normalizing status (collapsing to ) and priority, androuting the task's polymorphic to the matching LO foreign key(, , or ) based on . * params: * task — Platform task record (with assignee/assigner relations) sourced from the unified tasks domain. * returns: An LO with mapped status, priority, and source linkage; the joined relation is left null for the caller to hydrate. * score: 5 ### function validateAchievable * file: src/cores/lo/utils/validateSMARTGoal.ts:159 * kind: function * core: lo * spec: (none) * summary: Scores how achievable a goal is within an expected timeframe and returns targeted feedback.Evaluates provided start/end dates against timeframe-specific duration ranges, rewards sufficientplanning detail (description length and presence of action/milestone indicators), and recordsissues when dates are missing or durations fall outside expected bounds. * params: * title — Goal title used with description to detect action or milestone indicators * description — Optional goal description; longer, detailed descriptions increase score * startDate — Optional ISO date string representing the planned start of the goal * endDate — Optional ISO date string representing the planned end or target date of the goal * goalTimeframe — Expected scope of the goal; affects duration ranges ('quarterly', 'one\_year', 'three\_year') * returns: An object with: - : points awarded (0–20), - : maximum possible points (20), - : if the criterion meets the threshold for achievability, - : a short issue or a positive note about achievability * score: 4 ### function validateMeasurable * file: src/cores/lo/utils/validateSMARTGoal.ts:104 * kind: function * core: lo * spec: (none) * summary: Assess whether a goal contains measurable success criteria and compute a score up to 20. * params: * title — The goal title to evaluate * description — Optional detailed goal description to include in the evaluation * returns: An object with: - : points awarded for measurability, - : , - : if is greater than or equal to , otherwise, - : a short issue message when measurability is lacking or a confirmation that measurable success criteria are present * score: 4 ### function validateRelevant * file: src/cores/lo/utils/validateSMARTGoal.ts:229 * kind: function * core: lo * spec: (none) * summary: Assess whether a goal is aligned with organizational strategy.Awards full relevance when a is provided; otherwise grants partial creditand suggests linking the goal to a strategic priority. * params: * strategicGoalId — Optional identifier of a related strategic goal * returns: Validation result containing , (20), ( if score is 10 or greater), and a message * score: 4 ### function validateSMARTGoal * file: src/cores/lo/utils/validateSMARTGoal.ts:304 * kind: function * core: lo * spec: (none) * summary: Validate a goal against all SMART criteria and compute an aggregate SMART score. * params: * options — Optional settings: overrides the default timeframe used by achievable validation; , when true, treats the goal as a strategic goal (implies full relevance) and allows to serve as the end date if is missing. * returns: An object with individual validation results for , , , , and , the aggregated , (100), and (ISO timestamp). * score: 4 ### function validateSpecific * file: src/cores/lo/utils/validateSMARTGoal.ts:58 * kind: function * core: lo * spec: (none) * summary: Assess the goal's Specific criterion and produce a scored evaluation.Evaluates title and optional description for descriptiveness, avoidance of vague language,presence of action verbs, and a clear outcome; aggregates points into a 20-point score. * params: * title — The goal title to evaluate * description — Optional longer description of the goal * returns: An object with (points awarded for specificity), (20), ( if score is 15 or higher), and (the first detected issue or a positive message) * score: 4 ### function validateStrategicGoal * file: src/cores/lo/utils/validateSMARTGoal.ts:359 * kind: function * core: lo * spec: (none) * summary: Validate a strategic goal using the SMART validators, with the current date as the implied start.The function treats the provided goal as strategic (relevance implied) and maps to a timeframe used by the Achievable validator. * params: * goal — The strategic goal to validate: - : goal title - : optional detailed description - : optional ISO date string for the goal's target/end date - : either or , which selects the validation timeframe * returns: A SMARTValidationResult containing individual criterion results, the aggregated total score, the maximum possible score, and a validation timestamp * score: 4 ### function validateTimeBound * file: src/cores/lo/utils/validateSMARTGoal.ts:256 * kind: function * core: lo * spec: (none) * summary: Assess whether a goal is time-bound and assign points based on provided start/end dates and whether the deadline is in the future. * params: * startDate — Optional ISO 8601 start date for the goal (e.g., "2025-12-31") * endDate — Optional ISO 8601 end date / deadline for the goal * returns: An object containing (points earned out of 20), (20), ( if is at least 15), and a message describing any issue or a positive summary * score: 4 # permissions — permission key catalogue Source: https://docs.encoreos.io/api/permissions Flat list of every permission key for AI/RAG retrieval, generated from the permissions constants. Refresh with `npm run docs:permissions:generate`. # Permission Keys Reference ```text theme={null} permission hr.acknowledgments.exempt hr acknowledgments exempt permission hr.acknowledgments.submit hr acknowledgments submit permission hr.acknowledgments.view hr acknowledgments view permission hr.ats.admin hr ats admin permission hr.ats.analytics.view hr ats.analytics view permission hr.ats.applications.create hr ats.applications create permission hr.ats.applications.edit hr ats.applications edit permission hr.ats.applications.view hr ats.applications view permission hr.ats.candidates.edit hr ats.candidates edit permission hr.ats.candidates.view hr ats.candidates view permission hr.ats.dashboard.view hr ats.dashboard view permission hr.ats.interviews.edit hr ats.interviews edit permission hr.ats.interviews.view hr ats.interviews view permission hr.ats.job-postings.create hr ats.job-postings create permission hr.ats.job-postings.edit hr ats.job-postings edit permission hr.ats.job-postings.view hr ats.job-postings view permission hr.ats.offers.create hr ats.offers create permission hr.ats.offers.edit hr ats.offers edit permission hr.ats.offers.view hr ats.offers view permission hr.ats.scorecard.submit hr ats.scorecard submit permission hr.ats.scorecard.view_own hr ats.scorecard view_own permission hr.ats.scorecard.view_requisition_aggregates hr ats.scorecard view_requisition_aggregates permission hr.ats.scorecard_template.archive hr ats.scorecard_template archive permission hr.ats.scorecard_template.create hr ats.scorecard_template create permission hr.ats.scorecard_template.edit hr ats.scorecard_template edit permission hr.ats.scorecard_template.view hr ats.scorecard_template view permission hr.background_checks.create hr background_checks create permission hr.background_checks.delete hr background_checks delete permission hr.background_checks.edit hr background_checks edit permission hr.background_checks.view hr background_checks view permission hr.benefits.admin hr benefits admin permission hr.benefits.manage hr benefits manage permission hr.benefits.view hr benefits view permission hr.capacity.view hr capacity view permission hr.compensation.admin hr compensation admin permission hr.compensation.approve hr compensation approve permission hr.compensation.create hr compensation create permission hr.compensation.view hr compensation view permission hr.compliance.admin hr compliance admin permission hr.compliance.view hr compliance view permission hr.contractor.classification.manage hr contractor.classification manage permission hr.contractor.manage hr contractor manage permission hr.contractor.read hr contractor read permission hr.contractor.tax_id.read hr contractor.tax_id read permission hr.contractor.time.approve hr contractor.time approve permission hr.credentials.admin hr credentials admin permission hr.credentials.approve hr credentials approve permission hr.credentials.create hr credentials create permission hr.credentials.edit hr credentials edit permission hr.credentials.verify hr credentials verify permission hr.credentials.view hr credentials view permission hr.dashboard.view hr dashboard view permission hr.deduction_types.manage hr deduction_types manage permission hr.deduction_types.view hr deduction_types view permission hr.departments.admin hr departments admin permission hr.departments.view hr departments view permission hr.distributions.create hr distributions create permission hr.distributions.manage hr distributions manage permission hr.distributions.view hr distributions view permission hr.earning_types.manage hr earning_types manage permission hr.earning_types.view hr earning_types view permission hr.employee_deductions.manage hr employee_deductions manage permission hr.employee_deductions.view hr employee_deductions view permission hr.employee_relations.admin hr employee_relations admin permission hr.employee_relations.create hr employee_relations create permission hr.employee_relations.edit hr employee_relations edit permission hr.employee_relations.reports hr employee_relations reports permission hr.employee_relations.view hr employee_relations view permission hr.employee_relations.view_own hr employee_relations view_own permission hr.employee_skills.manage hr employee_skills manage permission hr.employees.admin hr employees admin permission hr.employees.create hr employees create permission hr.employees.delete hr employees delete permission hr.employees.edit hr employees edit permission hr.employees.export hr employees export permission hr.employees.manage hr employees manage permission hr.employees.view hr employees view permission hr.everify.config hr everify config permission hr.everify.manage hr everify manage permission hr.everify.view hr everify view permission hr.final_paycheck.approve hr final_paycheck approve permission hr.final_paycheck.manage hr final_paycheck manage permission hr.final_paycheck.report hr final_paycheck report permission hr.final_paycheck.view hr final_paycheck view permission hr.fingerprint_clearance.manage hr fingerprint_clearance manage permission hr.fingerprint_clearance.verify hr fingerprint_clearance verify permission hr.fingerprint_clearance.view hr fingerprint_clearance view permission hr.fmla.admin hr fmla admin permission hr.fmla.view hr fmla view permission hr.geofence.create hr geofence create permission hr.geofence.delete hr geofence delete permission hr.geofence.update hr geofence update permission hr.geofence.view hr geofence view permission hr.handbook_bundle.manage hr handbook_bundle manage permission hr.handbook_compliance.export hr handbook_compliance export permission hr.handbook_compliance.view hr handbook_compliance view permission hr.internal_application.report hr internal_application report permission hr.investigations.edit hr investigations edit permission hr.leave.accrual_run hr leave accrual_run permission hr.leave.admin hr leave admin permission hr.leave.approve hr leave approve permission hr.leave.create hr leave create permission hr.leave.delete hr leave delete permission hr.leave.edit hr leave edit permission hr.leave.manage hr leave manage permission hr.leave.policies.admin hr leave.policies admin permission hr.leave.policies.view hr leave.policies view permission hr.leave.view hr leave view permission hr.offboarding.view hr offboarding view permission hr.onboarding.view hr onboarding view permission hr.org-chart.view hr org-chart view permission hr.pay_schedules.manage hr pay_schedules manage permission hr.payment_checks.manage hr payment_checks manage permission hr.payment_checks.print hr payment_checks print permission hr.payroll.admin hr payroll admin permission hr.payroll.approve hr payroll approve permission hr.payroll.create hr payroll create permission hr.payroll.edit hr payroll edit permission hr.payroll.export hr payroll export permission hr.payroll.view hr payroll view permission hr.payroll_run.approve hr payroll_run approve permission hr.payroll_run.create hr payroll_run create permission hr.payroll_run.manage hr payroll_run manage permission hr.payroll_run.view hr payroll_run view permission hr.performance_review.update hr performance_review update permission hr.policies.create hr policies create permission hr.policies.delete hr policies delete permission hr.policies.edit hr policies edit permission hr.policies.view hr policies view permission hr.positions.approve hr positions approve permission hr.positions.assign hr positions assign permission hr.positions.close hr positions close permission hr.positions.edit hr positions edit permission hr.positions.freeze hr positions freeze permission hr.proliant-integration.resolve-conflicts hr proliant-integration resolve-conflicts permission hr.proliant-payroll.override-reconciliation hr proliant-payroll override-reconciliation permission hr.proliant-payroll.run hr proliant-payroll run permission hr.proliant_integration.manage hr proliant_integration manage permission hr.proliant_integration.sync hr proliant_integration sync permission hr.proliant_integration.view hr proliant_integration view permission hr.reports.admin hr reports admin permission hr.reports.benefits_census.export hr reports.benefits_census export permission hr.reports.eeo.export hr reports.eeo export permission hr.reports.export hr reports export permission hr.reports.schedule hr reports schedule permission hr.reports.view hr reports view permission hr.scheduling.admin hr scheduling admin permission hr.scheduling.create hr scheduling create permission hr.scheduling.delete hr scheduling delete permission hr.scheduling.edit hr scheduling edit permission hr.scheduling.view hr scheduling view permission hr.settings.admin hr settings admin permission hr.settings.view hr settings view permission hr.skills.create hr skills create permission hr.skills.update hr skills update permission hr.staffing-forecasts.view hr staffing-forecasts view permission hr.staffing_agency.manage hr staffing_agency manage permission hr.tax_forms.manage hr tax_forms manage permission hr.tax_info.manage hr tax_info manage permission hr.tax_info.view hr tax_info view permission hr.tax_tables.manage hr tax_tables manage permission hr.tax_tables.view hr tax_tables view permission hr.teams.admin hr teams admin permission hr.teams.view hr teams view permission hr.time-clock.view hr time-clock view permission hr.time.approve hr time approve permission hr.timesheets.admin hr timesheets admin permission hr.timesheets.approve hr timesheets approve permission hr.timesheets.create hr timesheets create permission hr.timesheets.edit hr timesheets edit permission hr.timesheets.team.edit hr timesheets.team edit permission hr.timesheets.team.view hr timesheets.team view permission hr.timesheets.view hr timesheets view permission hr.workload-drivers.view hr workload-drivers view permission rh.attendance.create rh attendance create permission rh.attendance.edit rh attendance edit permission rh.audits.view rh audits view permission rh.beds.admin rh beds admin permission rh.beds.edit rh beds edit permission rh.beds.view rh beds view permission rh.census.export rh census export permission rh.census.view rh census view permission rh.charges.create rh charges create permission rh.charges.edit rh charges edit permission rh.charges.view rh charges view permission rh.chores.create rh chores create permission rh.compliance.create rh compliance create permission rh.compliance.view rh compliance view permission rh.curfew-checks.create rh curfew-checks create permission rh.dashboard.view rh dashboard view permission rh.episodes.create rh episodes create permission rh.episodes.edit rh episodes edit permission rh.grievances.create rh grievances create permission rh.grievances.view rh grievances view permission rh.med-audits.create rh med-audits create permission rh.notes.create rh notes create permission rh.notes.edit rh notes edit permission rh.notes.view rh notes view permission rh.outcomes.assessments.create rh outcomes.assessments create permission rh.passes.approve rh passes approve permission rh.passes.create rh passes create permission rh.passes.view rh passes view permission rh.programs.admin rh programs admin permission rh.programs.edit rh programs edit permission rh.programs.view rh programs view permission rh.residences.admin rh residences admin permission rh.residences.create rh residences create permission rh.residences.edit rh residences edit permission rh.residences.view rh residences view permission rh.residents.create rh residents create permission rh.residents.discharge rh residents discharge permission rh.residents.edit rh residents edit permission rh.residents.view rh residents view permission rh.schedule-templates.create rh schedule-templates create permission rh.schedule-templates.view rh schedule-templates view permission rh.settings.admin rh settings admin permission rh.settings.view rh settings view permission rh.significant-events.create rh significant-events create permission rh.significant-events.edit rh significant-events edit permission rh.staff-operations.create rh staff-operations create permission rh.staff-operations.view rh staff-operations view permission rh.transport.create rh transport create permission rh.transport.view rh transport view permission rh.uds-tests.create rh uds-tests create permission rh.uds-tests.edit rh uds-tests edit permission cl.988_transfers.create cl 988_transfers create permission cl.988_transfers.edit cl 988_transfers edit permission cl.988_transfers.view cl 988_transfers view permission cl.aftercare-plans.create cl aftercare-plans create permission cl.aftercare-plans.edit cl aftercare-plans edit permission cl.aftercare-plans.view cl aftercare-plans view permission cl.ai_documentation.admin cl ai_documentation admin permission cl.ai_documentation.use cl ai_documentation use permission cl.allergies.confirm_nka cl allergies confirm_nka permission cl.allergies.create cl allergies create permission cl.allergies.delete cl allergies delete permission cl.allergies.edit cl allergies edit permission cl.allergies.export_fhir cl allergies export_fhir permission cl.allergies.manage cl allergies manage permission cl.allergies.override_alert cl allergies override_alert permission cl.allergies.view cl allergies view permission cl.ambient.approve cl ambient approve permission cl.ambient.create cl ambient create permission cl.ambient.settings cl ambient settings permission cl.ambient.view cl ambient view permission cl.ambient.view_all cl ambient view_all permission cl.appeals.create cl appeals create permission cl.appeals.manage cl appeals manage permission cl.assessment.cosign cl assessment cosign permission cl.assessment.create cl assessment create permission cl.assessment.manage cl assessment manage permission cl.assessment.sign cl assessment sign permission cl.assessment.view cl assessment view permission cl.assessment_template.create cl assessment_template create permission cl.assessment_template.manage cl assessment_template manage permission cl.assessment_template.update cl assessment_template update permission cl.assessment_template.view cl assessment_template view permission cl.audit_dashboard.break_glass_review cl audit_dashboard break_glass_review permission cl.audit_dashboard.view cl audit_dashboard view permission cl.between-session-checkins.view cl between-session-checkins view permission cl.billing_overrides.manage cl billing_overrides manage permission cl.billing_overrides.view cl billing_overrides view permission cl.biometrics.manage cl biometrics manage permission cl.biometrics.view cl biometrics view permission cl.care-gaps.close cl care-gaps close permission cl.care-gaps.view cl care-gaps view permission cl.care-team.manage cl care-team manage permission cl.care-team.view cl care-team view permission cl.cda.endpoints.manage cl cda.endpoints manage permission cl.cda.generate cl cda generate permission cl.cda.transmit cl cda transmit permission cl.cda.view cl cda view permission cl.cds_alerts.view cl cds_alerts view permission cl.cds_rules.manage cl cds_rules manage permission cl.cds_rules.view cl cds_rules view permission cl.charts.break_glass cl charts break_glass permission cl.charts.export cl charts export permission cl.charts.view cl charts view permission cl.cod_assessments.create cl cod_assessments create permission cl.cod_assessments.edit cl cod_assessments edit permission cl.cod_assessments.view cl cod_assessments view permission cl.cod_progress_notes.view_sud cl cod_progress_notes view_sud permission cl.cod_treatment_plan.manage cl cod_treatment_plan manage permission cl.cohort.archive cl cohort archive permission cl.cohort.create cl cohort create permission cl.cohort.edit_definition cl cohort edit_definition permission cl.cohort.view cl cohort view permission cl.compliance_report.view cl compliance_report view permission cl.compliance_settings.manage cl compliance_settings manage permission cl.consents.create cl consents create permission cl.consents.revoke cl consents revoke permission cl.consents.view cl consents view permission cl.ddi-alerts.suppress cl ddi-alerts suppress permission cl.ddi-overrides.cosign cl ddi-overrides cosign permission cl.ddi-overrides.create cl ddi-overrides create permission cl.ddi-overrides.view cl ddi-overrides view permission cl.designated_contacts.create cl designated_contacts create permission cl.designated_contacts.delete cl designated_contacts delete permission cl.designated_contacts.edit cl designated_contacts edit permission cl.designated_contacts.view cl designated_contacts view permission cl.disclosure_log.create cl disclosure_log create permission cl.disclosure_log.export cl disclosure_log export permission cl.disclosure_log.view cl disclosure_log view permission cl.electronic-consent.create cl electronic-consent create permission cl.electronic-consent.revoke cl electronic-consent revoke permission cl.electronic-consent.view cl electronic-consent view permission cl.environmental_assessment.create cl environmental_assessment create permission cl.environmental_assessment.edit cl environmental_assessment edit permission cl.environmental_assessment.view cl environmental_assessment view permission cl.family_notifications.trigger cl family_notifications trigger permission cl.family_notifications.view cl family_notifications view permission cl.follow-up-contacts.create cl follow-up-contacts create permission cl.follow-up-contacts.view cl follow-up-contacts view permission cl.group-encounter-generation.approve cl group-encounter-generation approve permission cl.group-encounter-generation.edit cl group-encounter-generation edit permission cl.group-encounter-generation.view cl group-encounter-generation view permission cl.group.virtual.attend cl group.virtual attend permission cl.group.virtual.host cl group.virtual host permission cl.group_attendance.document cl group_attendance document permission cl.group_attendance.edit cl group_attendance edit permission cl.group_attendance.view cl group_attendance view permission cl.group_curricula.manage cl group_curricula manage permission cl.group_curricula.view cl group_curricula view permission cl.group_sessions.create cl group_sessions create permission cl.group_sessions.delete cl group_sessions delete permission cl.group_sessions.edit cl group_sessions edit permission cl.group_sessions.view cl group_sessions view permission cl.hedis-tracking.export cl hedis-tracking export permission cl.hedis-tracking.view cl hedis-tracking view permission cl.inbasket.assign cl inbasket assign permission cl.inbasket.escalate cl inbasket escalate permission cl.inbasket.manage cl inbasket manage permission cl.inbasket.view cl inbasket view permission cl.incidents.create cl incidents create permission cl.incidents.delete cl incidents delete permission cl.incidents.update cl incidents update permission cl.incidents.view cl incidents view permission cl.inventory.admin cl inventory admin permission cl.inventory.create cl inventory create permission cl.inventory.delete cl inventory delete permission cl.inventory.edit cl inventory edit permission cl.inventory.reconcile cl inventory reconcile permission cl.inventory.view cl inventory view permission cl.lethal_means_assessment.create cl lethal_means_assessment create permission cl.lethal_means_assessment.view cl lethal_means_assessment view permission cl.loc_assessment.create cl loc_assessment create permission cl.loc_assessment.override cl loc_assessment override permission cl.loc_assessment.report cl loc_assessment report permission cl.loc_assessment.sign cl loc_assessment sign permission cl.loc_assessment.view cl loc_assessment view permission cl.marketplace.browse cl marketplace browse permission cl.marketplace.import cl marketplace import permission cl.marketplace.manage cl marketplace manage permission cl.marketplace.publish cl marketplace publish permission cl.medications.create cl medications create permission cl.medications.delete cl medications delete permission cl.medications.update cl medications update permission cl.medications.view cl medications view permission cl.metabolic_monitoring.manage cl metabolic_monitoring manage permission cl.metabolic_monitoring.view cl metabolic_monitoring view permission cl.moud.enroll cl moud enroll permission cl.moud.medication-event.create cl moud.medication-event create permission cl.moud.monitoring.manage cl moud.monitoring manage permission cl.moud.report.view cl moud.report view permission cl.moud.view cl moud view permission cl.multi_party.host cl multi_party host permission cl.multi_party.view cl multi_party view permission cl.note_940_validation.override cl note_940_validation override permission cl.note_templates.manage cl note_templates manage permission cl.notification_audit.export cl notification_audit export permission cl.notification_audit.view cl notification_audit view permission cl.notification_event.acknowledge cl notification_event acknowledge permission cl.notification_event.view cl notification_event view permission cl.notification_policy.manage cl notification_policy manage permission cl.notification_policy.view cl notification_policy view permission cl.order_results.review cl order_results review permission cl.order_results.view cl order_results view permission cl.order_sets.activate cl order_sets activate permission cl.order_sets.manage cl order_sets manage permission cl.order_sets.view cl order_sets view permission cl.order_templates.manage cl order_templates manage permission cl.order_templates.view cl order_templates view permission cl.orders.cancel cl orders cancel permission cl.orders.create cl orders create permission cl.orders.edit cl orders edit permission cl.orders.manage cl orders manage permission cl.orders.update cl orders update permission cl.orders.view cl orders view permission cl.outcome_episode.manage cl outcome_episode manage permission cl.outcome_episode.view cl outcome_episode view permission cl.outcome_followup_rate.view cl outcome_followup_rate view permission cl.outcome_measures.create cl outcome_measures create permission cl.outcome_measures.update cl outcome_measures update permission cl.outcome_measures.view cl outcome_measures view permission cl.pathways.enroll cl pathways enroll permission cl.pathways.manage cl pathways manage permission cl.pathways.track cl pathways track permission cl.pathways.view_dashboard cl pathways view_dashboard permission cl.patient-submissions.review cl patient-submissions review permission cl.patient-submissions.view cl patient-submissions view permission cl.pdmp.configuration.manage cl pdmp.configuration manage permission cl.pdmp.queries.create cl pdmp.queries create permission cl.pdmp.queries.view cl pdmp.queries view permission cl.peer_encounter.create cl peer_encounter create permission cl.peer_encounter.delete cl peer_encounter delete permission cl.peer_encounter.edit cl peer_encounter edit permission cl.peer_encounter.view cl peer_encounter view permission cl.peer_supervision.create cl peer_supervision create permission cl.peer_supervision.view cl peer_supervision view permission cl.pharmacies.manage cl pharmacies manage permission cl.pharmacies.view cl pharmacies view permission cl.population-dashboard.view cl population-dashboard view permission cl.prescribing_adapter.manage cl prescribing_adapter manage permission cl.prescriptions.cancel cl prescriptions cancel permission cl.prescriptions.create cl prescriptions create permission cl.prescriptions.view cl prescriptions view permission cl.problems.create cl problems create permission cl.problems.delete cl problems delete permission cl.problems.manage cl problems manage permission cl.problems.update cl problems update permission cl.problems.view cl problems view permission cl.program_enrollments.create cl program_enrollments create permission cl.program_enrollments.edit cl program_enrollments edit permission cl.program_enrollments.view cl program_enrollments view permission cl.program_outcomes.manage cl program_outcomes manage permission cl.program_outcomes.view cl program_outcomes view permission cl.program_schedules.create cl program_schedules create permission cl.program_schedules.edit cl program_schedules edit permission cl.program_schedules.view cl program_schedules view permission cl.progress_note.cosign cl progress_note cosign permission cl.progress_note.create cl progress_note create permission cl.progress_note.manage cl progress_note manage permission cl.progress_note.sign cl progress_note sign permission cl.progress_note.view cl progress_note view permission cl.quality-measures.export cl quality-measures export permission cl.quality-measures.view cl quality-measures view permission cl.readmission-risk.create cl readmission-risk create permission cl.readmission-risk.view cl readmission-risk view permission cl.reconciliation.perform cl reconciliation perform permission cl.records.export cl records export permission cl.redisclosure-log.create cl redisclosure-log create permission cl.redisclosure-log.view cl redisclosure-log view permission cl.reference_labs.manage cl reference_labs manage permission cl.reference_labs.view cl reference_labs view permission cl.reference_ranges.manage cl reference_ranges manage permission cl.reference_ranges.view cl reference_ranges view permission cl.referral_directory.search cl referral_directory search permission cl.referral_status.manage cl referral_status manage permission cl.referral_status.view cl referral_status view permission cl.report_definitions.create cl report_definitions create permission cl.report_definitions.delete cl report_definitions delete permission cl.report_definitions.view cl report_definitions view permission cl.report_runs.run cl report_runs run permission cl.report_runs.view cl report_runs view permission cl.results.enter cl results enter permission cl.results.manage cl results manage permission cl.results.review cl results review permission cl.results.view cl results view permission cl.reviews.configure cl reviews configure permission cl.reviews.create cl reviews create permission cl.reviews.manage cl reviews manage permission cl.reviews.view cl reviews view permission cl.risk-stratifications.view cl risk-stratifications view permission cl.risk_screening.create cl risk_screening create permission cl.risk_screening.delete cl risk_screening delete permission cl.risk_screening.edit cl risk_screening edit permission cl.risk_screening.view cl risk_screening view permission cl.safety_plan.create cl safety_plan create permission cl.safety_plan.edit cl safety_plan edit permission cl.safety_plan.sign cl safety_plan sign permission cl.safety_plan.view cl safety_plan view permission cl.safety_plan_share.create cl safety_plan_share create permission cl.safety_plan_share.view cl safety_plan_share view permission cl.sdoh_screenings.create cl sdoh_screenings create permission cl.sdoh_screenings.view cl sdoh_screenings view permission cl.social_referrals.create cl social_referrals create permission cl.social_referrals.update cl social_referrals update permission cl.social_referrals.view cl social_referrals view permission cl.standing_orders.execute cl standing_orders execute permission cl.standing_orders.manage cl standing_orders manage permission cl.standing_orders.review cl standing_orders review permission cl.standing_orders.view cl standing_orders view permission cl.tefca.exchange cl tefca exchange permission cl.tefca.manage cl tefca manage permission cl.tefca.query cl tefca query permission cl.tefca.view cl tefca view permission cl.telehealth_compliance.audit cl telehealth_compliance audit permission cl.telehealth_consents.create cl telehealth_consents create permission cl.telehealth_consents.revoke cl telehealth_consents revoke permission cl.telehealth_consents.view cl telehealth_consents view permission cl.telehealth_sessions.create cl telehealth_sessions create permission cl.telehealth_sessions.edit cl telehealth_sessions edit permission cl.telehealth_sessions.view cl telehealth_sessions view permission cl.transitions.manage cl transitions manage permission cl.transitions.view cl transitions view permission cl.treatment_plan.caregiver_tracking cl treatment_plan caregiver_tracking permission cl.treatment_plan.cosign cl treatment_plan cosign permission cl.treatment_plan.create cl treatment_plan create permission cl.treatment_plan.event_automation cl treatment_plan event_automation permission cl.treatment_plan.manage cl treatment_plan manage permission cl.treatment_plan.patient_sign cl treatment_plan patient_sign permission cl.treatment_plan.progress_viz cl treatment_plan progress_viz permission cl.treatment_plan.sign cl treatment_plan sign permission cl.treatment_plan.template_library cl treatment_plan template_library permission cl.treatment_plan.view cl treatment_plan view permission cl.uds_interpretation_notes.create cl uds_interpretation_notes create permission cl.uds_interpretation_notes.view cl uds_interpretation_notes view permission cl.uds_orders.create cl uds_orders create permission cl.uds_orders.delete cl uds_orders delete permission cl.uds_orders.edit cl uds_orders edit permission cl.uds_orders.view cl uds_orders view permission cl.uds_results.create cl uds_results create permission cl.uds_results.edit cl uds_results edit permission cl.uds_results.update cl uds_results update permission cl.uds_results.view cl uds_results view permission cl.um.dashboard cl um dashboard permission cl.vitals.create cl vitals create permission cl.vitals.update cl vitals update permission cl.vitals.view cl vitals view permission cl.warm-handoffs.create cl warm-handoffs create permission cl.warm-handoffs.view cl warm-handoffs view permission pm.ai.fairness.view pm ai.fairness view permission pm.ai_coding.review pm ai_coding review permission pm.ai_coding.suggest pm ai_coding suggest permission pm.appeals.escalate pm appeals escalate permission pm.appeals.submit pm appeals submit permission pm.appointments.confirm pm appointments confirm permission pm.appointments.create pm appointments create permission pm.audit.view pm audit view permission pm.auth_appeal.manage pm auth_appeal manage permission pm.auth_review.manage pm auth_review manage permission pm.batch.charge_approve pm batch charge_approve permission pm.batch.claim_generate pm batch claim_generate permission pm.batch.claim_submit pm batch claim_submit permission pm.batch.eligibility pm batch eligibility permission pm.benefits.manage pm benefits manage permission pm.benefits.view pm benefits view permission pm.capitation.manage pm capitation manage permission pm.capitation.view pm capitation view permission pm.care_mgmt.kill_switch.manage pm care_mgmt.kill_switch manage permission pm.care_mgmt.payer_policy.manage pm care_mgmt.payer_policy manage permission pm.care_mgmt.worklist.post pm care_mgmt.worklist post permission pm.care_mgmt.worklist.view pm care_mgmt.worklist view permission pm.caseload.view pm caseload view permission pm.charge_recon.manage pm charge_recon manage permission pm.charge_recon.view pm charge_recon view permission pm.charges.approve pm charges approve permission pm.charges.create pm charges create permission pm.charges.delete pm charges delete permission pm.charges.edit pm charges edit permission pm.charges.view pm charges view permission pm.checkin.eligibility.manage pm checkin.eligibility manage permission pm.checkin.eligibility.view pm checkin.eligibility view permission pm.claims.create pm claims create permission pm.claims.submit pm claims submit permission pm.claims.update pm claims update permission pm.claims.view pm claims view permission pm.claims.void pm claims void permission pm.clearance-metrics.view pm clearance-metrics view permission pm.clearinghouse.admin pm clearinghouse admin permission pm.clearinghouse.create pm clearinghouse create permission pm.clearinghouse.edit pm clearinghouse edit permission pm.clearinghouse.failover.manage pm clearinghouse.failover manage permission pm.clearinghouse.view pm clearinghouse view permission pm.cob.manage pm cob manage permission pm.cob.view pm cob view permission pm.collections.manage pm collections manage permission pm.collections.view pm collections view permission pm.compliance.disposition pm compliance disposition permission pm.compliance.reports pm compliance reports permission pm.compliance.review pm compliance review permission pm.contracts.manage pm contracts manage permission pm.contracts.view pm contracts view permission pm.coordinator_workbench.export pm coordinator_workbench export permission pm.coordinator_workbench.manage pm coordinator_workbench manage permission pm.coordinator_workbench.view pm coordinator_workbench view permission pm.cost-estimates.create pm cost-estimates create permission pm.cost-estimates.delete pm cost-estimates delete permission pm.cost-estimates.edit pm cost-estimates edit permission pm.cost-estimates.view pm cost-estimates view permission pm.cost_accounting.manage pm cost_accounting manage permission pm.cost_accounting.view pm cost_accounting view permission pm.credentialing.manage pm credentialing manage permission pm.credentialing.override pm credentialing override permission pm.credentialing.validate pm credentialing validate permission pm.credentialing.view pm credentialing view permission pm.dashboard.view pm dashboard view permission pm.denial-predictions.dashboard pm denial-predictions dashboard permission pm.denial-predictions.manage pm denial-predictions manage permission pm.denial-predictions.settings pm denial-predictions settings permission pm.denial-predictions.view pm denial-predictions view permission pm.denials.manage pm denials manage permission pm.denials.view pm denials view permission pm.edi-enrollment.create pm edi-enrollment create permission pm.edi-enrollment.delete pm edi-enrollment delete permission pm.edi-enrollment.update pm edi-enrollment update permission pm.edi-enrollment.update-eft pm edi-enrollment update-eft permission pm.edi-enrollment.view pm edi-enrollment view permission pm.eligibility.run pm eligibility run permission pm.era-reconciliation.appeal pm era-reconciliation appeal permission pm.era-reconciliation.manage pm era-reconciliation manage permission pm.era-reconciliation.settings pm era-reconciliation settings permission pm.era-reconciliation.view pm era-reconciliation view permission pm.era.orphan.resolve pm era.orphan resolve permission pm.era.orphan.view pm era.orphan view permission pm.estimates.create pm estimates create permission pm.estimates.view pm estimates view permission pm.fee_schedules.create pm fee_schedules create permission pm.fee_schedules.delete pm fee_schedules delete permission pm.fee_schedules.edit pm fee_schedules edit permission pm.fee_schedules.view pm fee_schedules view permission pm.fhir.app.manage pm fhir.app manage permission pm.fhir.consent.revoke pm fhir.consent revoke permission pm.fhir.consent.view pm fhir.consent view permission pm.financial-clearance.manage pm financial-clearance manage permission pm.financial-clearance.override pm financial-clearance override permission pm.financial_assessment.manage pm financial_assessment manage permission pm.financial_assessment.view pm financial_assessment view permission pm.financial_assistance.create pm financial_assistance create permission pm.financial_assistance.review pm financial_assistance review permission pm.financial_assistance.view pm financial_assistance view permission pm.financial_counseling.approve_charity pm financial_counseling approve_charity permission pm.financial_counseling.manage pm financial_counseling manage permission pm.financial_counseling.view pm financial_counseling view permission pm.gfe.create pm gfe create permission pm.gfe.manage pm gfe manage permission pm.gfe.view pm gfe view permission pm.group_definitions.create pm group_definitions create permission pm.group_definitions.delete pm group_definitions delete permission pm.group_definitions.edit pm group_definitions edit permission pm.group_definitions.view pm group_definitions view permission pm.group_enrollments.create pm group_enrollments create permission pm.group_enrollments.delete pm group_enrollments delete permission pm.group_enrollments.edit pm group_enrollments edit permission pm.group_enrollments.view pm group_enrollments view permission pm.group_schedule.create pm group_schedule create permission pm.group_schedule.delete pm group_schedule delete permission pm.group_schedule.edit pm group_schedule edit permission pm.group_schedule.view pm group_schedule view permission pm.institutional-claims.create pm institutional-claims create permission pm.institutional-claims.generate-837i pm institutional-claims generate-837i permission pm.institutional-claims.read pm institutional-claims read permission pm.institutional-claims.update pm institutional-claims update permission pm.insurance.manage pm insurance manage permission pm.insurance.view pm insurance view permission pm.intake_funnel.view pm intake_funnel view permission pm.intake_match.configure pm intake_match configure permission pm.intake_match.override pm intake_match override permission pm.intake_match.view pm intake_match view permission pm.kiosk.manage pm kiosk manage permission pm.kiosk.view pm kiosk view permission pm.managed_care_auth.create pm managed_care_auth create permission pm.managed_care_auth.edit pm managed_care_auth edit permission pm.managed_care_auth.override pm managed_care_auth override permission pm.managed_care_auth.validate pm managed_care_auth validate permission pm.managed_care_auth.view pm managed_care_auth view permission pm.messages.manage pm messages manage permission pm.messages.send pm messages send permission pm.messages.view pm messages view permission pm.otp.manage pm otp manage permission pm.otp.view pm otp view permission pm.patients.create pm patients create permission pm.patients.merge pm patients merge permission pm.patients.update pm patients update permission pm.patients.view pm patients view permission pm.payer-modifier-rules.manage pm payer-modifier-rules manage permission pm.payer-modifier-rules.view pm payer-modifier-rules view permission pm.payer-performance.view pm payer-performance view permission pm.payer_enrollments.create pm payer_enrollments create permission pm.payer_enrollments.edit pm payer_enrollments edit permission pm.payer_enrollments.view pm payer_enrollments view permission pm.payers.manage pm payers manage permission pm.payers.view pm payers view permission pm.payment-plans.create pm payment-plans create permission pm.payment-plans.delete pm payment-plans delete permission pm.payment-plans.edit pm payment-plans edit permission pm.payment-plans.report pm payment-plans report permission pm.payment-plans.view pm payment-plans view permission pm.payment_plans.create pm payment_plans create permission pm.payment_plans.delete pm payment_plans delete permission pm.payment_plans.edit pm payment_plans edit permission pm.payment_plans.view pm payment_plans view permission pm.payments.create pm payments create permission pm.payments.edit pm payments edit permission pm.payments.post pm payments post permission pm.payments.view pm payments view permission pm.portal.manage pm portal manage permission pm.portal.packets.manage pm portal.packets manage permission pm.portal.packets.send-reminder pm portal.packets send-reminder permission pm.portal.packets.view pm portal.packets view permission pm.portal.view pm portal view permission pm.preadmission.manage pm preadmission manage permission pm.preadmission.view pm preadmission view permission pm.preadmission_templates.manage pm preadmission_templates manage permission pm.preadmission_templates.view pm preadmission_templates view permission pm.prior_auth.appeal pm prior_auth appeal permission pm.prior_auth.create pm prior_auth create permission pm.prior_auth.edit pm prior_auth edit permission pm.prior_auth.submit pm prior_auth submit permission pm.prior_auth.view pm prior_auth view permission pm.rcm-log.override pm rcm-log override permission pm.rcm-log.view pm rcm-log view permission pm.rcm-queue.claim pm rcm-queue claim permission pm.rcm-queue.manage pm rcm-queue manage permission pm.rcm-queue.view pm rcm-queue view permission pm.rcm-rules.activate pm rcm-rules activate permission pm.rcm-rules.create pm rcm-rules create permission pm.rcm-rules.delete pm rcm-rules delete permission pm.rcm-rules.director-override pm rcm-rules director-override permission pm.rcm-rules.edit pm rcm-rules edit permission pm.rcm-rules.execute pm rcm-rules execute permission pm.rcm-rules.override pm rcm-rules override permission pm.rcm-rules.simulate pm rcm-rules simulate permission pm.rcm-rules.view pm rcm-rules view permission pm.rcm_dashboard.view pm rcm_dashboard view permission pm.rcm_reports.schedule pm rcm_reports schedule permission pm.rcm_reports.view pm rcm_reports view permission pm.referrals.create pm referrals create permission pm.referrals.reports pm referrals reports permission pm.referrals.update pm referrals update permission pm.referrals.view pm referrals view permission pm.revenue-code-mappings.manage pm revenue-code-mappings manage permission pm.rooms.manage pm rooms manage permission pm.rooms.view pm rooms view permission pm.rpa-bots.admin pm rpa-bots admin permission pm.rpa-bots.create pm rpa-bots create permission pm.rpa-bots.delete pm rpa-bots delete permission pm.rpa-bots.edit pm rpa-bots edit permission pm.rpa-bots.execute pm rpa-bots execute permission pm.rpa-bots.update pm rpa-bots update permission pm.rpa-bots.view pm rpa-bots view permission pm.rpa-executions.create pm rpa-executions create permission pm.rpa-executions.view pm rpa-executions view permission pm.rpa-settings.manage pm rpa-settings manage permission pm.rpa-settings.view pm rpa-settings view permission pm.rpa-staged-docs.process pm rpa-staged-docs process permission pm.rpa-staged-docs.view pm rpa-staged-docs view permission pm.rpa-staged.manage pm rpa-staged manage permission pm.rpa-staged.view pm rpa-staged view permission pm.schedule.create pm schedule create permission pm.schedule.delete pm schedule delete permission pm.schedule.edit pm schedule edit permission pm.schedule.view pm schedule view permission pm.scheduling.create pm scheduling create permission pm.scheduling.delete pm scheduling delete permission pm.scheduling.edit pm scheduling edit permission pm.scheduling.override_double_booking pm scheduling override_double_booking permission pm.scheduling.view pm scheduling view permission pm.settings.manage pm settings manage permission pm.settings.scrub_rules pm settings scrub_rules permission pm.settings.scrub_rules.payer pm settings.scrub_rules payer permission pm.settings.view pm settings view permission pm.sfds.manage pm sfds manage permission pm.sfds.view pm sfds view permission pm.sites_billing.manage pm sites_billing manage permission pm.sites_billing.transfer_create pm sites_billing transfer_create permission pm.sites_billing.transfer_view pm sites_billing transfer_view permission pm.sites_billing.view pm sites_billing view permission pm.statements.generate pm statements generate permission pm.statements.manage pm statements manage permission pm.statements.view pm statements view permission pm.superbill.generate pm superbill generate permission pm.superbill.view pm superbill view permission pm.telehealth.operations pm telehealth operations permission pm.telehealth_configuration.admin pm telehealth_configuration admin permission pm.telehealth_sessions.create pm telehealth_sessions create permission pm.telehealth_sessions.view pm telehealth_sessions view permission pm.time_off.approve pm time_off approve permission pm.time_off.create pm time_off create permission pm.time_off.edit pm time_off edit permission pm.time_off.view pm time_off view permission pm.transaction_batches.create pm transaction_batches create permission pm.transaction_batches.view pm transaction_batches view permission pm.transaction_log.view pm transaction_log view permission pm.vbp.manage pm vbp manage permission pm.vbp.view pm vbp view permission pm.waitlist.analytics pm waitlist analytics permission pm.waitlist.create pm waitlist create permission pm.waitlist.update pm waitlist update permission pm.waitlist.view pm waitlist view permission pm.write_offs.approve pm write_offs approve permission pm.write_offs.view pm write_offs view permission pm.writeoffs.approve pm writeoffs approve permission pm.writeoffs.create pm writeoffs create permission pm.writeoffs.view pm writeoffs view permission fa.accounts.admin fa accounts admin permission fa.accounts.create fa accounts create permission fa.accounts.edit fa accounts edit permission fa.accounts.view fa accounts view permission fa.analytics.configure fa analytics configure permission fa.analytics.kpis.view fa analytics.kpis view permission fa.analytics.trends.view fa analytics.trends view permission fa.analytics.variance.view fa analytics.variance view permission fa.anomalies.view fa anomalies view permission fa.approval-settings.admin fa approval-settings admin permission fa.approvals.view fa approvals view permission fa.assets.admin fa assets admin permission fa.assets.create fa assets create permission fa.assets.dispose fa assets dispose permission fa.assets.edit fa assets edit permission fa.assets.transfer fa assets transfer permission fa.assets.view fa assets view permission fa.audit.export fa audit export permission fa.audit.view fa audit view permission fa.bad_debt.view fa bad_debt view permission fa.balance_definitions.view fa balance_definitions view permission fa.bank-accounts.admin fa bank-accounts admin permission fa.bank-accounts.view fa bank-accounts view permission fa.bank-statements.create fa bank-statements create permission fa.bank-statements.view fa bank-statements view permission fa.bank-transactions.post fa bank-transactions post permission fa.bank-transactions.view fa bank-transactions view permission fa.banking.admin fa banking admin permission fa.bills.approve fa bills approve permission fa.bills.create fa bills create permission fa.bills.edit fa bills edit permission fa.bills.view fa bills view permission fa.budget-alerts.admin fa budget-alerts admin permission fa.budget_scenarios.create fa budget_scenarios create permission fa.budget_scenarios.edit fa budget_scenarios edit permission fa.budget_scenarios.view fa budget_scenarios view permission fa.budget_templates.create fa budget_templates create permission fa.budget_templates.edit fa budget_templates edit permission fa.budget_templates.view fa budget_templates view permission fa.budgets.approve fa budgets approve permission fa.budgets.create fa budgets create permission fa.budgets.edit fa budgets edit permission fa.budgets.view fa budgets view permission fa.cash_management.create fa cash_management create permission fa.cash_management.edit fa cash_management edit permission fa.cash_management.view fa cash_management view permission fa.category-mappings.create fa category-mappings create permission fa.category-mappings.delete fa category-mappings delete permission fa.category-mappings.edit fa category-mappings edit permission fa.category-mappings.view fa category-mappings view permission fa.close.create fa close create permission fa.close.manage fa close manage permission fa.close.view fa close view permission fa.collections.manage fa collections manage permission fa.collections.view fa collections view permission fa.consolidation.run fa consolidation run permission fa.credit-memos.create fa credit-memos create permission fa.credit-memos.view fa credit-memos view permission fa.credit_lines.view fa credit_lines view permission fa.custom-report-builder.create fa custom-report-builder create permission fa.custom-report-builder.view fa custom-report-builder view permission fa.customer-payments.create fa customer-payments create permission fa.customer-payments.view fa customer-payments view permission fa.customers.create fa customers create permission fa.customers.edit fa customers edit permission fa.customers.view fa customers view permission fa.dashboard.manage fa dashboard manage permission fa.dashboard.view fa dashboard view permission fa.deferred_revenue.manage fa deferred_revenue manage permission fa.deferred_revenue.view fa deferred_revenue view permission fa.departments.admin fa departments admin permission fa.depreciation.export fa depreciation export permission fa.depreciation.retry fa depreciation retry permission fa.depreciation.run fa depreciation run permission fa.depreciation.view fa depreciation view permission fa.distributions.create fa distributions create permission fa.entities.create fa entities create permission fa.entities.delete fa entities delete permission fa.entities.edit fa entities edit permission fa.entities.view fa entities view permission fa.entity_hierarchy.manage fa entity_hierarchy manage permission fa.entity_hierarchy.view fa entity_hierarchy view permission fa.expense-policies.view fa expense-policies view permission fa.expense_policies.manage fa expense_policies manage permission fa.expense_policies.view fa expense_policies view permission fa.expenses.admin fa expenses admin permission fa.expenses.create fa expenses create permission fa.expenses.edit fa expenses edit permission fa.expenses.process fa expenses process permission fa.expenses.view fa expenses view permission fa.funds.admin fa funds admin permission fa.funds.view fa funds view permission fa.gl-migration.manage fa gl-migration manage permission fa.idc.approve fa idc approve permission fa.idc.create fa idc create permission fa.idc.manage fa idc manage permission fa.idc.view fa idc view permission fa.inter-fund-transfer.create fa inter-fund-transfer create permission fa.investments.view fa investments view permission fa.invoices.approve fa invoices approve permission fa.invoices.create fa invoices create permission fa.invoices.edit fa invoices edit permission fa.invoices.view fa invoices view permission fa.journal-entries.approve fa journal-entries approve permission fa.journal-entries.create fa journal-entries create permission fa.journal-entries.delete fa journal-entries delete permission fa.journal-entries.edit fa journal-entries edit permission fa.journal-entries.import fa journal-entries import permission fa.journal-entries.view fa journal-entries view permission fa.journal_entries.create fa journal_entries create permission fa.ledger.view fa ledger view permission fa.payment_plans.create fa payment_plans create permission fa.payment_plans.edit fa payment_plans edit permission fa.payment_plans.view fa payment_plans view permission fa.payments.approve fa payments approve permission fa.payments.create fa payments create permission fa.payments.view fa payments view permission fa.payments.view_sensitive fa payments view_sensitive permission fa.period-close.manage fa period-close manage permission fa.periods.admin fa periods admin permission fa.periods.view fa periods view permission fa.programs.admin fa programs admin permission fa.programs.view fa programs view permission fa.projects.create fa projects create permission fa.projects.edit fa projects edit permission fa.projects.view fa projects view permission fa.purchase-orders.approve fa purchase-orders approve permission fa.purchase-orders.create fa purchase-orders create permission fa.purchase-orders.view fa purchase-orders view permission fa.ramp.connect fa ramp connect permission fa.ramp.settings fa ramp settings permission fa.ramp.sync fa ramp sync permission fa.ramp.view_transactions fa ramp view_transactions permission fa.receipts.approve fa receipts approve permission fa.receipts.create fa receipts create permission fa.receipts.view fa receipts view permission fa.reconciliation.ai.configure fa reconciliation.ai configure permission fa.reconciliation.ai.use fa reconciliation.ai use permission fa.reconciliations.approve fa reconciliations approve permission fa.reconciliations.create fa reconciliations create permission fa.reconciliations.view fa reconciliations view permission fa.recurring-entries.admin fa recurring-entries admin permission fa.recurring-entries.view fa recurring-entries view permission fa.recurring-transaction-templates.create fa recurring-transaction-templates create permission fa.recurring-transaction-templates.delete fa recurring-transaction-templates delete permission fa.recurring-transaction-templates.edit fa recurring-transaction-templates edit permission fa.recurring-transaction-templates.view fa recurring-transaction-templates view permission fa.recurring_invoices.create fa recurring_invoices create permission fa.recurring_invoices.edit fa recurring_invoices edit permission fa.recurring_invoices.view fa recurring_invoices view permission fa.report-annotations.create fa report-annotations create permission fa.report-annotations.delete fa report-annotations delete permission fa.report-api.access fa report-api access permission fa.reports.aging.view fa reports.aging view permission fa.reports.export fa reports export permission fa.reports.view fa reports view permission fa.revenue_contracts.manage fa revenue_contracts manage permission fa.revenue_contracts.view fa revenue_contracts view permission fa.revenue_milestones.achieve fa revenue_milestones achieve permission fa.revenue_milestones.manage fa revenue_milestones manage permission fa.revenue_milestones.view fa revenue_milestones view permission fa.revenue_recognitions.process fa revenue_recognitions process permission fa.revenue_recognitions.view fa revenue_recognitions view permission fa.revenue_schedules.manage fa revenue_schedules manage permission fa.revenue_schedules.view fa revenue_schedules view permission fa.rolling_forecasts.create fa rolling_forecasts create permission fa.rolling_forecasts.edit fa rolling_forecasts edit permission fa.rolling_forecasts.view fa rolling_forecasts view permission fa.settings.admin fa settings admin permission fa.settings.edit fa settings edit permission fa.settings.view fa settings view permission fa.statement-templates.create fa statement-templates create permission fa.statement-templates.preview fa statement-templates preview permission fa.statement-templates.update fa statement-templates update permission fa.suggested-rules.manage fa suggested-rules manage permission fa.suggested-rules.view fa suggested-rules view permission fa.tax.admin fa tax admin permission fa.tax.close fa tax close permission fa.tax.distribute fa tax distribute permission fa.tax.generate fa tax generate permission fa.tax.view fa tax view permission fa.transaction-rules.create fa transaction-rules create permission fa.transaction-rules.delete fa transaction-rules delete permission fa.transaction-rules.edit fa transaction-rules edit permission fa.transaction-rules.view fa transaction-rules view permission fa.trial-balance.view fa trial-balance view permission fa.vendors.admin fa vendors admin permission fa.vendors.create fa vendors create permission fa.vendors.edit fa vendors edit permission fa.vendors.view fa vendors view permission gr.accreditation-tracer.admin gr accreditation-tracer admin permission gr.accreditation-tracer.export gr accreditation-tracer export permission gr.accreditation-tracer.manage gr accreditation-tracer manage permission gr.accreditation-tracer.view gr accreditation-tracer view permission gr.accreditations.view gr accreditations view permission gr.ai.view gr ai view permission gr.ai_state_compliance.manage_kb gr ai_state_compliance manage_kb permission gr.ai_state_compliance.use gr ai_state_compliance use permission gr.ai_state_compliance.view_gaps gr ai_state_compliance view_gaps permission gr.audits.admin gr audits admin permission gr.audits.manage gr audits manage permission gr.audits.view gr audits view permission gr.board.approve gr board approve permission gr.board.manage gr board manage permission gr.board.view gr board view permission gr.coi.attest gr coi attest permission gr.coi.manage gr coi manage permission gr.coi.view gr coi view permission gr.compliance-dashboard.configure gr compliance-dashboard configure permission gr.compliance-dashboard.view gr compliance-dashboard view permission gr.compliance.admin gr compliance admin permission gr.compliance.export gr compliance export permission gr.compliance.regulatory_change.approve gr compliance.regulatory_change approve permission gr.compliance.regulatory_change.view gr compliance.regulatory_change view permission gr.compliance.regulatory_source.admin gr compliance.regulatory_source admin permission gr.compliance.view gr compliance view permission gr.contracts.admin gr contracts admin permission gr.contracts.approve gr contracts approve permission gr.contracts.create gr contracts create permission gr.contracts.delete gr contracts delete permission gr.contracts.edit gr contracts edit permission gr.contracts.view gr contracts view permission gr.dashboard.view gr dashboard view permission gr.governance.admin gr governance admin permission gr.incident_regulatory_reports.acknowledge gr incident_regulatory_reports acknowledge permission gr.incident_regulatory_reports.update gr incident_regulatory_reports update permission gr.incident_regulatory_reports.view gr incident_regulatory_reports view permission gr.incidents.close gr incidents close permission gr.incidents.investigate gr incidents investigate permission gr.incidents.manage gr incidents manage permission gr.incidents.report gr incidents report permission gr.incidents.reports gr incidents reports permission gr.incidents.view gr incidents view permission gr.policies.acknowledgment-forms.manage gr policies.acknowledgment-forms manage permission gr.policies.admin gr policies admin permission gr.policies.approve gr policies approve permission gr.policies.custom-fields.manage gr policies.custom-fields manage permission gr.policies.deprecate gr policies deprecate permission gr.policies.review gr policies review permission gr.policies.view gr policies view permission gr.procedure-analytics.benchmark.opt-in gr procedure-analytics.benchmark opt-in permission gr.procedure-analytics.benchmark.view gr procedure-analytics.benchmark view permission gr.procedure-analytics.export gr procedure-analytics export permission gr.procedure-analytics.manage gr procedure-analytics manage permission gr.procedure-analytics.view gr procedure-analytics view permission gr.procedure_executions.create gr procedure_executions create permission gr.procedure_executions.view gr procedure_executions view permission gr.procedure_templates.contribute gr procedure_templates contribute permission gr.procedure_templates.manage gr procedure_templates manage permission gr.procedure_templates.view gr procedure_templates view permission gr.procedures.create gr procedures create permission gr.procedures.edit gr procedures edit permission gr.procedures.manage gr procedures manage permission gr.procedures.view gr procedures view permission gr.qi.admin gr qi admin permission gr.qi.draft.review gr qi.draft review permission gr.qi.view gr qi view permission gr.regulation_accreditation_map.read gr regulation_accreditation_map read permission gr.regulation_accreditation_map.write gr regulation_accreditation_map write permission gr.regulation_requirement_map.read gr regulation_requirement_map read permission gr.regulation_requirement_map.write gr regulation_requirement_map write permission gr.reporting_rules.manage gr reporting_rules manage permission gr.reporting_rules.view gr reporting_rules view permission gr.risks.admin gr risks admin permission gr.risks.view gr risks view permission gr.training.admin gr training admin permission gr.training.view gr training view permission gr.whistleblower.manage gr whistleblower manage permission gr.whistleblower.view gr whistleblower view permission fm.assets.view fm assets view permission fm.dashboard.view fm dashboard view permission fm.fleet.admin fm fleet admin permission fm.fleet.create fm fleet create permission fm.fleet.delete fm fleet delete permission fm.fleet.edit fm fleet edit permission fm.fleet.reservations.manage fm fleet.reservations manage permission fm.fleet.reserve fm fleet reserve permission fm.fleet.view fm fleet view permission fm.inspections.view fm inspections view permission fm.inventory.create fm inventory create permission fm.inventory.edit fm inventory edit permission fm.inventory.view fm inventory view permission fm.pm-schedules.admin fm pm-schedules admin permission fm.pm-schedules.view fm pm-schedules view permission fm.pm-templates.admin fm pm-templates admin permission fm.pm-templates.view fm pm-templates view permission fm.vendors.create fm vendors create permission fm.vendors.edit fm vendors edit permission fm.vendors.view fm vendors view permission fm.work-orders.approve fm work-orders approve permission fm.work-orders.create fm work-orders create permission fm.work-orders.edit fm work-orders edit permission fm.work-orders.view fm work-orders view permission fw.alerts.admin fw alerts admin permission fw.analytics.view fw analytics view permission fw.approval_routing.manage fw approval_routing manage permission fw.approval_routing.view fw approval_routing view permission fw.approvals.approve fw approvals approve permission fw.approvals.view fw approvals view permission fw.approvals.view_all fw approvals view_all permission fw.audit.export fw audit export permission fw.audit.export_restricted fw audit export_restricted permission fw.audit.settings fw audit settings permission fw.audit.view fw audit view permission fw.automations.admin fw automations admin permission fw.business_calendars.manage fw business_calendars manage permission fw.business_calendars.view fw business_calendars view permission fw.calendar_holidays.manage fw calendar_holidays manage permission fw.calendar_holidays.view fw calendar_holidays view permission fw.chains.create fw chains create permission fw.chains.edit fw chains edit permission fw.chains.view fw chains view permission fw.dead-letter-queue.discard fw dead-letter-queue discard permission fw.dead-letter-queue.retry fw dead-letter-queue retry permission fw.dead-letter-queue.view fw dead-letter-queue view permission fw.dead_letter_queue.discard fw dead_letter_queue discard permission fw.dead_letter_queue.retry fw dead_letter_queue retry permission fw.dead_letter_queue.settings fw dead_letter_queue settings permission fw.dead_letter_queue.view fw dead_letter_queue view permission fw.decision_tables.manage fw decision_tables manage permission fw.decision_tables.view fw decision_tables view permission fw.delegations.admin fw delegations admin permission fw.dependencies.maintain fw dependencies maintain permission fw.dependencies.view fw dependencies view permission fw.events.deprecate fw events deprecate permission fw.events.migrate fw events migrate permission fw.events.view fw events view permission fw.execution_worker.manage fw execution_worker manage permission fw.execution_worker.view fw execution_worker view permission fw.forms.admin fw forms admin permission fw.forms.configure_prefill fw forms configure_prefill permission fw.forms.create fw forms create permission fw.forms.delete fw forms delete permission fw.forms.edit fw forms edit permission fw.forms.pages.edit fw forms.pages edit permission fw.forms.pages.permissions fw forms.pages permissions permission fw.forms.pages.view fw forms.pages view permission fw.forms.view fw forms view permission fw.healthcare_patterns.manage fw healthcare_patterns manage permission fw.healthcare_patterns.view fw healthcare_patterns view permission fw.kpi.manage fw kpi manage permission fw.kpi.view fw kpi view permission fw.optimization.manage fw optimization manage permission fw.optimization.view fw optimization view permission fw.rate_limits.manage fw rate_limits manage permission fw.rate_limits.view fw rate_limits view permission fw.schedules.create fw schedules create permission fw.schedules.delete fw schedules delete permission fw.schedules.edit fw schedules edit permission fw.schedules.view fw schedules view permission fw.settings.manage fw settings manage permission fw.settings.view fw settings view permission fw.subflows.create fw subflows create permission fw.subflows.edit fw subflows edit permission fw.subflows.view fw subflows view permission fw.submissions.export fw submissions export permission fw.submissions.view fw submissions view permission fw.submissions.view_encrypted fw submissions view_encrypted permission fw.templates.create fw templates create permission fw.templates.edit fw templates edit permission fw.templates.publish fw templates publish permission fw.templates.view fw templates view permission fw.webhooks.manage fw webhooks manage permission fw.webhooks.replay fw webhooks replay permission fw.webhooks.secrets.rotate fw webhooks.secrets rotate permission fw.webhooks.test fw webhooks test permission fw.webhooks.view fw webhooks view permission fw.workflow-executions.replay fw workflow-executions replay permission fw.workflow-executions.retry fw workflow-executions retry permission fw.workflows.admin fw workflows admin permission fw.workflows.create fw workflows create permission fw.workflows.delete fw workflows delete permission fw.workflows.edit fw workflows edit permission fw.workflows.view fw workflows view permission lo.accountability.create lo accountability create permission lo.accountability.view lo accountability view permission lo.assessments.create lo assessments create permission lo.assessments.view lo assessments view permission lo.dashboard.view lo dashboard view permission lo.feedback.create lo feedback create permission lo.goals.create lo goals create permission lo.goals.edit lo goals edit permission lo.goals.view lo goals view permission lo.issues.create lo issues create permission lo.issues.edit lo issues edit permission lo.issues.view lo issues view permission lo.knowledge.create lo knowledge create permission lo.knowledge.view lo knowledge view permission lo.meetings.admin lo meetings admin permission lo.meetings.create lo meetings create permission lo.meetings.view lo meetings view permission lo.one-on-ones.create lo one-on-ones create permission lo.scorecard.edit lo scorecard edit permission lo.scorecard.view lo scorecard view permission lo.settings.admin lo settings admin permission lo.todos.create lo todos create permission lo.todos.edit lo todos edit permission lo.todos.view lo todos view permission lo.vision.edit lo vision edit permission lo.vision.view lo vision view permission it.assets.create it assets create permission it.assets.delete it assets delete permission it.assets.edit it assets edit permission it.assets.view it assets view permission it.changes.approve it changes approve permission it.changes.cab it changes cab permission it.changes.create it changes create permission it.changes.manage it changes manage permission it.changes.view it changes view permission it.contracts.create it contracts create permission it.contracts.edit it contracts edit permission it.contracts.view it contracts view permission it.knowledge_base.create it knowledge_base create permission it.knowledge_base.edit it knowledge_base edit permission it.knowledge_base.manage it knowledge_base manage permission it.knowledge_base.view it knowledge_base view permission it.licenses.create it licenses create permission it.licenses.delete it licenses delete permission it.licenses.edit it licenses edit permission it.licenses.view it licenses view permission it.offboarding.manage it offboarding manage permission it.offboarding.view it offboarding view permission it.onboarding.manage it onboarding manage permission it.onboarding.view it onboarding view permission it.procurement.approve it procurement approve permission it.procurement.create it procurement create permission it.procurement.view it procurement view permission it.reports.create it reports create permission it.reports.view it reports view permission it.security.view it security view permission it.settings.admin it settings admin permission it.tickets.assign it tickets assign permission it.tickets.create it tickets create permission it.tickets.delete it tickets delete permission it.tickets.edit it tickets edit permission it.tickets.view it tickets view permission it.vendors.create it vendors create permission it.vendors.edit it vendors edit permission it.vendors.view it vendors view permission ce.activities.create ce activities create permission ce.analytics.campaigns ce analytics campaigns permission ce.analytics.export ce analytics export permission ce.analytics.view ce analytics view permission ce.calendar.connect ce calendar connect permission ce.calendar.schedule ce calendar schedule permission ce.calendar.view ce calendar view permission ce.calendar.view-all ce calendar view-all permission ce.calls.create ce calls create permission ce.campaigns.create ce campaigns create permission ce.campaigns.delete ce campaigns delete permission ce.campaigns.edit ce campaigns edit permission ce.campaigns.view ce campaigns view permission ce.cards.capture ce cards capture permission ce.cards.manage ce cards manage permission ce.cards.manage_own ce cards manage_own permission ce.cards.view ce cards view permission ce.compliance.export ce compliance export permission ce.compliance.view ce compliance view permission ce.consent_evidence.create ce consent_evidence create permission ce.consent_evidence.view ce consent_evidence view permission ce.contact_relationships.manage ce contact_relationships manage permission ce.contact_relationships.read ce contact_relationships read permission ce.contacts.create ce contacts create permission ce.contacts.documents.ai_extract ce contacts.documents ai_extract permission ce.contacts.documents.delete ce contacts.documents delete permission ce.contacts.documents.upload ce contacts.documents upload permission ce.contacts.documents.view ce contacts.documents view permission ce.contacts.history.sensitive_view ce contacts.history sensitive_view permission ce.contacts.history.view ce contacts.history view permission ce.contacts.insurance.edit ce contacts.insurance edit permission ce.contacts.insurance.view_detail ce contacts.insurance view_detail permission ce.contacts.merge ce contacts merge permission ce.contacts.tags.edit ce contacts.tags edit permission ce.contacts.tags.view ce contacts.tags view permission ce.contacts.view ce contacts view permission ce.contacts.view_dob ce contacts view_dob permission ce.contracts.create ce contracts create permission ce.contracts.manage ce contracts manage permission ce.contracts.view ce contracts view permission ce.crisis.manage ce crisis manage permission ce.crisis.view ce crisis view permission ce.dashboard.view ce dashboard view permission ce.dnc.import ce dnc import permission ce.enrollments.create ce enrollments create permission ce.enrollments.edit ce enrollments edit permission ce.enrollments.view ce enrollments view permission ce.events.check_in ce events check_in permission ce.events.create ce events create permission ce.events.edit ce events edit permission ce.events.manage_attendees ce events manage_attendees permission ce.events.view ce events view permission ce.hubspot.manage ce hubspot manage permission ce.hubspot.view ce hubspot view permission ce.lead-conversions.create ce lead-conversions create permission ce.lead-conversions.view ce lead-conversions view permission ce.lead-conversions.view-all ce lead-conversions view-all permission ce.leads.admin ce leads admin permission ce.leads.admit ce leads admit permission ce.leads.assign ce leads assign permission ce.leads.close ce leads close permission ce.leads.edit ce leads edit permission ce.leads.insurance.edit ce leads.insurance edit permission ce.leads.insurance.view_detail ce leads.insurance view_detail permission ce.leads.view ce leads view permission ce.leads.view_all ce leads view_all permission ce.oncall.manage ce oncall manage permission ce.oncall.view ce oncall view permission ce.partner_documents.create ce partner_documents create permission ce.partner_documents.delete ce partner_documents delete permission ce.partner_progress.view ce partner_progress view permission ce.partners.create ce partners create permission ce.partners.delete ce partners delete permission ce.partners.edit ce partners edit permission ce.partners.view ce partners view permission ce.pipeline.export ce pipeline export permission ce.pipeline.view ce pipeline view permission ce.pipeline.view_bed_board ce pipeline view_bed_board permission ce.pipeline_tracks.manage ce pipeline_tracks manage permission ce.prior_auth.manage_credentials ce prior_auth manage_credentials permission ce.prior_auth.submit ce prior_auth submit permission ce.prior_auth.update_status ce prior_auth update_status permission ce.prior_auth.view ce prior_auth view permission ce.referral_attempts.create ce referral_attempts create permission ce.referral_attempts.delete ce referral_attempts delete permission ce.referral_attempts.edit ce referral_attempts edit permission ce.referral_attempts.view ce referral_attempts view permission ce.referral_sources.admin ce referral_sources admin permission ce.referral_sources.create ce referral_sources create permission ce.referral_sources.delete ce referral_sources delete permission ce.referral_sources.edit ce referral_sources edit permission ce.referral_sources.view ce referral_sources view permission ce.scorecard.export ce scorecard export permission ce.scorecard.view ce scorecard view permission ce.screening.create ce screening create permission ce.screening.manage ce screening manage permission ce.screening.view ce screening view permission ce.segments.create ce segments create permission ce.segments.delete ce segments delete permission ce.segments.edit ce segments edit permission ce.segments.view ce segments view permission ce.sequences.create ce sequences create permission ce.sequences.delete ce sequences delete permission ce.sequences.edit ce sequences edit permission ce.sequences.view ce sequences view permission ce.settings.pipeline.configure ce settings.pipeline configure permission ce.settings.tags.manage ce settings.tags manage permission ce.sms.admin ce sms admin permission ce.sms.routing.manage ce sms.routing manage permission ce.suppressions.create ce suppressions create permission ce.suppressions.delete ce suppressions delete permission ce.suppressions.edit ce suppressions edit permission ce.suppressions.import ce suppressions import permission ce.suppressions.manage ce suppressions manage permission ce.suppressions.view ce suppressions view permission ce.web_forms.admin ce web_forms admin permission ce.web_forms.create ce web_forms create permission ce.web_forms.edit ce web_forms edit permission ce.web_forms.view ce web_forms view permission pf.agent.memory.manage pf agent.memory manage permission pf.agent.memory.read pf agent.memory read permission pf.agent.memory.write pf agent.memory write permission pf.agent_actions.approve pf agent_actions approve permission pf.agent_actions.approve_clinical pf agent_actions approve_clinical permission pf.agent_actions.govern pf agent_actions govern permission pf.agent_actions.view pf agent_actions view permission pf.agent_principals.manage pf agent_principals manage permission pf.agents.run pf agents run permission pf.agents.runs.manage pf agents.runs manage permission pf.agents.runs.view pf agents.runs view permission pf.ai_skills.approve pf ai_skills approve permission pf.ai_skills.manage pf ai_skills manage permission pf.ai_skills.view pf ai_skills view permission pf.analytics.admin pf analytics admin permission pf.analytics.connectors.manage pf analytics.connectors manage permission pf.analytics.create pf analytics create permission pf.analytics.data.manage pf analytics.data manage permission pf.analytics.embed.manage pf analytics.embed manage permission pf.analytics.schedule pf analytics schedule permission pf.analytics.share pf analytics share permission pf.analytics.view pf analytics view permission pf.api_credentials.audit pf api_credentials audit permission pf.api_credentials.manage pf api_credentials manage permission pf.api_credentials.view pf api_credentials view permission pf.artifact.create pf artifact create permission pf.artifact.manage pf artifact manage permission pf.artifact.verify pf artifact verify permission pf.artifact.view pf artifact view permission pf.audit.analytics.view pf audit.analytics view permission pf.audit.export pf audit export permission pf.audit.phi_access.view pf audit.phi_access view permission pf.audit.realtime.view pf audit.realtime view permission pf.audit.view pf audit view permission pf.audit.view-analytics pf audit view-analytics permission pf.audit.view-realtime pf audit view-realtime permission pf.bed_board.view pf bed_board view permission pf.bulk_operations.create pf bulk_operations create permission pf.bulk_operations.hard_delete pf bulk_operations hard_delete permission pf.bulk_operations.rollback pf bulk_operations rollback permission pf.business_processes.discover pf business_processes discover permission pf.business_processes.manage pf business_processes manage permission pf.business_processes.settings pf business_processes settings permission pf.business_processes.view pf business_processes view permission pf.chatbot.manage_settings pf chatbot manage_settings permission pf.chatbot.view_sessions pf chatbot view_sessions permission pf.codes.admin pf codes admin permission pf.codes.read pf codes read permission pf.compliance.dashboard.view pf compliance.dashboard view permission pf.compliance.drift.manage pf compliance.drift manage permission pf.compliance.evidence.generate pf compliance.evidence generate permission pf.compliance.phi.classify pf compliance.phi classify permission pf.condition-evaluation.view-metrics pf condition-evaluation view-metrics permission pf.connectors.approve pf connectors approve permission pf.cowork.agent.manage pf cowork.agent manage permission pf.cowork.manage pf cowork manage permission pf.cowork.participate pf cowork participate permission pf.dashboard.admin pf dashboard admin permission pf.data-retention.manage pf data-retention manage permission pf.data_lineage.view pf data_lineage view permission pf.devices.revoke_trust pf devices revoke_trust permission pf.devices.trust pf devices trust permission pf.devices.view pf devices view permission pf.documents.analytics-view pf documents analytics-view permission pf.documents.view pf documents view permission pf.email_signatures.customize pf email_signatures customize permission pf.email_signatures.manage pf email_signatures manage permission pf.email_signatures.view pf email_signatures view permission pf.export_requests.admin pf export_requests admin permission pf.export_requests.create pf export_requests create permission pf.export_requests.view pf export_requests view permission pf.export_templates.manage pf export_templates manage permission pf.feature_flags.manage pf feature_flags manage permission pf.feature_flags.view pf feature_flags view permission pf.google_workspace.admin pf google_workspace admin permission pf.google_workspace.configure pf google_workspace configure permission pf.google_workspace.connect pf google_workspace connect permission pf.google_workspace.provision pf google_workspace provision permission pf.google_workspace.view pf google_workspace view permission pf.import.execute pf import execute permission pf.import.rollback pf import rollback permission pf.import.templates pf import templates permission pf.import.upload pf import upload permission pf.integrations.manage pf integrations manage permission pf.integrations.sharepoint_documents.upload pf integrations.sharepoint_documents upload permission pf.integrations.teams_notifications.manage pf integrations.teams_notifications manage permission pf.integrations.teams_notifications.view pf integrations.teams_notifications view permission pf.integrations.view pf integrations view permission pf.ip_lists.manage pf ip_lists manage permission pf.jurisdiction.admin pf jurisdiction admin permission pf.jurisdiction.profiles.manage pf jurisdiction.profiles manage permission pf.jurisdiction.view pf jurisdiction view permission pf.legal-holds.manage pf legal-holds manage permission pf.messaging.admin pf messaging admin permission pf.messaging.create pf messaging create permission pf.messaging.create_channel pf messaging create_channel permission pf.messaging.create_group pf messaging create_group permission pf.messaging.delete pf messaging delete permission pf.messaging.view pf messaging view permission pf.notifications.templates.manage pf notifications.templates manage permission pf.notifications.templates.view pf notifications.templates view permission pf.onboarding.manage pf onboarding manage permission pf.org_data_sync.retry pf org_data_sync retry permission pf.org_data_sync.view pf org_data_sync view permission pf.picklists.admin pf picklists admin permission pf.portal_bot.manage pf portal_bot manage permission pf.portal_bot.run pf portal_bot run permission pf.portal_bot.view pf portal_bot view permission pf.query_performance.apply_recommendation pf query_performance apply_recommendation permission pf.quota.manage pf quota manage permission pf.quota.view pf quota view permission pf.rate-limits.manage pf rate-limits manage permission pf.rate-limits.view_usage pf rate-limits view_usage permission pf.reports.edit pf reports edit permission pf.reports.view pf reports view permission pf.security_alerts.manage pf security_alerts manage permission pf.security_events.view pf security_events view permission pf.sessions.terminate_org pf sessions terminate_org permission pf.sessions.terminate_own pf sessions terminate_own permission pf.sessions.view pf sessions view permission pf.sla.definition.manage pf sla.definition manage permission pf.sla.definition.view pf sla.definition view permission pf.sla.instance.manage pf sla.instance manage permission pf.sla.settings.manage pf sla.settings manage permission pf.sla.view pf sla view permission pf.sso.manage pf sso manage permission pf.subdomain.manage pf subdomain manage permission pf.swim-lane-diagrams.create pf swim-lane-diagrams create permission pf.swim-lane-diagrams.delete pf swim-lane-diagrams delete permission pf.swim-lane-diagrams.export pf swim-lane-diagrams export permission pf.swim-lane-diagrams.update pf swim-lane-diagrams update permission pf.swim-lane-diagrams.view pf swim-lane-diagrams view permission pf.task_analytics.view pf task_analytics view permission pf.task_automation.manage pf task_automation manage permission pf.task_automation.view pf task_automation view permission pf.task_reports.view pf task_reports view permission pf.task_templates.create pf task_templates create permission pf.task_templates.delete pf task_templates delete permission pf.task_templates.edit pf task_templates edit permission pf.task_templates.view pf task_templates view permission pf.teams_notifications.create pf teams_notifications create permission pf.teams_notifications.delete pf teams_notifications delete permission pf.teams_notifications.edit pf teams_notifications edit permission pf.teams_notifications.view pf teams_notifications view permission pf.templates.manage pf templates manage permission pf.templates.view pf templates view permission pf.theme.manage pf theme manage permission pf.theme.view pf theme view permission pf.tools.manage pf tools manage permission pf.transcription.audio.delete pf transcription.audio delete permission pf.transcription.audit.view pf transcription.audit view permission pf.transcription.consent.manage pf transcription.consent manage permission pf.transcription.cost.view pf transcription.cost view permission pf.transcription.deletion-request.process pf transcription.deletion-request process permission pf.transcription.drafts.attest pf transcription.drafts attest permission pf.transcription.drafts.edit pf transcription.drafts edit permission pf.transcription.drafts.generate pf transcription.drafts generate permission pf.transcription.drafts.view pf transcription.drafts view permission pf.transcription.review_queue.assign pf transcription.review_queue assign permission pf.transcription.review_queue.view pf transcription.review_queue view permission pf.transcription.sessions.create pf transcription.sessions create permission pf.transcription.sessions.delete pf transcription.sessions delete permission pf.transcription.sessions.end pf transcription.sessions end permission pf.transcription.sessions.view pf transcription.sessions view permission pf.transcription.settings.manage pf transcription.settings manage permission pf.transcription.settings.view pf transcription.settings view permission pf.transcription.templates.manage pf transcription.templates manage permission pf.transcription.templates.view pf transcription.templates view permission pf.transcription.vendors.manage pf transcription.vendors manage permission pf.users.manage pf users manage permission pf.validation_rules.create pf validation_rules create permission pf.validation_rules.delete pf validation_rules delete permission pf.validation_rules.update pf validation_rules update permission pf.validation_rules.view pf validation_rules view permission pf.wizards.admin pf wizards admin permission pf.wizards.clone pf wizards clone permission pf.wizards.create pf wizards create permission pf.wizards.edit pf wizards edit permission pf.wizards.view pf wizards view permission system.organizations.admin system organizations admin permission system.organizations.view system organizations view permission system.platform.admin system platform admin permission system.roles.create system roles create permission system.roles.edit system roles edit permission system.roles.view system roles view permission system.users.create system users create permission system.users.edit system users edit permission system.users.view system users view permission admin.deleted_records.manage other deleted_records manage permission clinical.intake.amend other intake amend permission clinical.intake.compliance_dashboard other intake compliance_dashboard permission clinical.intake.create other intake create permission clinical.intake.finalize other intake finalize permission clinical.intake.read other intake read permission clinical.intake.update other intake update permission clinical.peer_encounter.create other peer_encounter create permission clinical.peer_encounter.review other peer_encounter review permission platform.automation.observability.manage other automation.observability manage permission platform.automation.observability.view other automation.observability view permission platform.headshots.generate other headshots generate permission platform.headshots.manage other headshots manage permission platform.headshots.settings other headshots settings permission platform.provisioning.create other provisioning create permission platform.provisioning.manage-templates other provisioning manage-templates permission platform.provisioning.view other provisioning view permission platform.sessions.view other sessions view permission platform.system_health.manage other system_health manage ``` # picklists — system default reference Source: https://docs.encoreos.io/api/picklists Flat per-value picklist defaults for AI/RAG retrieval, generated from the picklist default tables. Refresh with `npm run docs:reference:generate`. # Picklist Reference (system defaults) ```text theme={null} picklist.employee_levels.executive Executive hr picklist.employee_levels.senior_manager Senior Manager hr picklist.employee_levels.manager Manager hr picklist.employee_levels.team_lead Team Lead hr picklist.employee_levels.senior_ic Senior Individual Contributor hr picklist.employee_levels.ic Individual Contributor hr picklist.gr.accreditation.compliance_status.pending Pending gr picklist.gr.accreditation.compliance_status.compliant Compliant gr picklist.gr.accreditation.compliance_status.non_compliant Non-Compliant gr picklist.gr.accreditation.compliance_status.in_progress In Progress gr picklist.gr.accreditation.compliance_status.not_applicable Not Applicable gr picklist.gr.accreditation.standard_category.governance Governance gr picklist.gr.accreditation.standard_category.operations Operations gr picklist.gr.accreditation.standard_category.clinical Clinical gr picklist.gr.accreditation.standard_category.safety Safety gr picklist.gr.accreditation.standard_category.staffing Staffing gr picklist.gr.accreditation.standard_category.documentation Documentation gr picklist.gr.accreditation.standard_category.quality Quality gr picklist.gr.accreditation.standard_category.rights Rights gr picklist.gr.accreditation.standard_priority.critical Critical gr picklist.gr.accreditation.standard_priority.high High gr picklist.gr.accreditation.standard_priority.medium Medium gr picklist.gr.accreditation.standard_priority.low Low gr picklist.gr.accreditation.status.pending Pending gr picklist.gr.accreditation.status.active Active gr picklist.gr.accreditation.status.provisional Provisional gr picklist.gr.accreditation.status.expired Expired gr picklist.gr.accreditation.status.revoked Revoked gr picklist.gr.accreditation.survey_type.initial Initial gr picklist.gr.accreditation.survey_type.renewal Renewal gr picklist.gr.accreditation.survey_type.follow_up Follow-up gr picklist.gr.accreditation.survey_type.unannounced Unannounced gr picklist.gr.accreditation.survey_type.complaint Complaint gr picklist.gr.accreditation.survey_type.mock Mock gr picklist.gr.audit.evidence_type.document Document gr picklist.gr.audit.evidence_type.photo Photo gr picklist.gr.audit.evidence_type.form Form gr picklist.gr.audit.evidence_type.report Report gr picklist.gr.audit.evidence_type.other Other gr picklist.gr.audit.finding_category.staffing Staffing gr picklist.gr.audit.finding_category.documentation Documentation gr picklist.gr.audit.finding_category.safety Safety gr picklist.gr.audit.finding_category.outcomes Outcomes gr picklist.gr.audit.finding_category.quality Quality gr picklist.gr.audit.finding_category.financial Financial gr picklist.gr.audit.finding_category.other Other gr picklist.gr.audit.finding_severity.critical Critical gr picklist.gr.audit.finding_severity.high High gr picklist.gr.audit.finding_severity.medium Medium gr picklist.gr.audit.finding_severity.low Low gr picklist.gr.audit.scope.organization_wide Organization-Wide gr picklist.gr.audit.scope.site_specific Site-Specific gr picklist.gr.audit.scope.department_specific Department-Specific gr picklist.gr.audit.team_role.lead_auditor Lead Auditor gr picklist.gr.audit.team_role.auditor Auditor gr picklist.gr.audit.team_role.observer Observer gr picklist.gr.audit.team_role.support_staff Support Staff gr picklist.gr.audit.type.internal Internal gr picklist.gr.audit.type.external External gr picklist.gr.audit.type.regulatory Regulatory gr picklist.gr.audit.type.accreditation Accreditation gr picklist.gr.audit.type.financial Financial gr picklist.gr.audit.type.operational Operational gr picklist.gr.compliance.check_type.scheduled Scheduled gr picklist.gr.compliance.check_type.ad_hoc Ad Hoc gr picklist.gr.compliance.check_type.audit Audit gr picklist.gr.compliance.check_type.self_assessment Self Assessment gr picklist.gr.compliance.check_type.external_review External Review gr picklist.gr.compliance.evidence_type.document Document gr picklist.gr.compliance.evidence_type.form Form gr picklist.gr.compliance.evidence_type.report Report gr picklist.gr.compliance.evidence_type.policy Policy gr picklist.gr.compliance.evidence_type.training Training gr picklist.gr.compliance.evidence_type.photo Photo gr picklist.gr.compliance.evidence_type.signature Signature gr picklist.gr.compliance.evidence_type.other Other gr picklist.gr.compliance.remediation_severity.critical Critical gr picklist.gr.compliance.remediation_severity.high High gr picklist.gr.compliance.remediation_severity.medium Medium gr picklist.gr.compliance.remediation_severity.low Low gr picklist.gr.contract.obligation_type.payment Payment gr picklist.gr.contract.obligation_type.deliverable Deliverable gr picklist.gr.contract.obligation_type.review Review gr picklist.gr.contract.obligation_type.report Report gr picklist.gr.contract.obligation_type.compliance Compliance gr picklist.gr.contract.obligation_type.other Other gr picklist.gr.contract.renewal_type.auto Auto gr picklist.gr.contract.renewal_type.manual Manual gr picklist.gr.contract.renewal_type.none None gr picklist.gr.contract.type.vendor Vendor gr picklist.gr.contract.type.service Service gr picklist.gr.contract.type.lease Lease gr picklist.gr.contract.type.employment Employment gr picklist.gr.contract.type.compliance Compliance gr picklist.gr.contract.type.partnership Partnership gr picklist.gr.contract.type.licensing Licensing gr picklist.gr.contract.type.other Other gr picklist.gr.incident.category.safety Safety gr picklist.gr.incident.category.compliance Compliance gr picklist.gr.incident.category.operational Operational gr picklist.gr.incident.category.clinical Clinical gr picklist.gr.incident.category.other Other gr picklist.gr.incident.finding_category.staffing Staffing gr picklist.gr.incident.finding_category.documentation Documentation gr picklist.gr.incident.finding_category.safety Safety gr picklist.gr.incident.finding_category.outcomes Outcomes gr picklist.gr.incident.finding_category.quality Quality gr picklist.gr.incident.finding_category.other Other gr picklist.gr.incident.severity.critical Critical gr picklist.gr.incident.severity.high High gr picklist.gr.incident.severity.medium Medium gr picklist.gr.incident.severity.low Low gr picklist.gr.policy.category.clinical Clinical gr picklist.gr.policy.category.operational Operational gr picklist.gr.policy.category.safety Safety gr picklist.gr.policy.category.hr HR gr picklist.gr.policy.category.financial Financial gr picklist.gr.policy.category.it IT gr picklist.gr.policy.category.other Other gr picklist.gr.procedure.category.clinical Clinical gr picklist.gr.procedure.category.operational Operational gr picklist.gr.procedure.category.safety Safety gr picklist.gr.procedure.category.hr HR gr picklist.gr.procedure.category.financial Financial gr picklist.gr.procedure.category.it IT gr picklist.gr.procedure.category.emergency Emergency gr picklist.gr.procedure.category.other Other gr picklist.gr.qi.measurement_frequency.daily Daily gr picklist.gr.qi.measurement_frequency.weekly Weekly gr picklist.gr.qi.measurement_frequency.monthly Monthly gr picklist.gr.qi.measurement_frequency.quarterly Quarterly gr picklist.gr.qi.measurement_frequency.annual Annual gr picklist.gr.qi.metric_category.clinical_outcomes Clinical Outcomes gr picklist.gr.qi.metric_category.patient_satisfaction Patient Satisfaction gr picklist.gr.qi.metric_category.safety Safety gr picklist.gr.qi.metric_category.compliance Compliance gr picklist.gr.qi.project_category.clinical Clinical gr picklist.gr.qi.project_category.operational Operational gr picklist.gr.qi.project_category.safety Safety gr picklist.gr.qi.project_category.compliance Compliance gr picklist.gr.qi.project_category.outcomes Outcomes gr picklist.gr.regulatory.deadline_type.calendar_hours Calendar Hours gr picklist.gr.regulatory.deadline_type.business_hours Business Hours gr picklist.gr.regulatory.report_type.initial Initial gr picklist.gr.regulatory.report_type.follow_up Follow-up gr picklist.gr.regulatory.report_type.final Final gr picklist.gr.regulatory.report_type.amendment Amendment gr picklist.gr.risk.category.operational Operational gr picklist.gr.risk.category.financial Financial gr picklist.gr.risk.category.clinical Clinical gr picklist.gr.risk.category.safety Safety gr picklist.gr.risk.category.compliance Compliance gr picklist.gr.risk.category.reputational Reputational gr picklist.gr.risk.category.other Other gr picklist.gr.risk.mitigation_strategy.avoid Avoid gr picklist.gr.risk.mitigation_strategy.reduce Reduce gr picklist.gr.risk.mitigation_strategy.transfer Transfer gr picklist.gr.risk.mitigation_strategy.accept Accept gr picklist.gr.risk.rating.low Low gr picklist.gr.risk.rating.medium Medium gr picklist.gr.risk.rating.high High gr picklist.gr.risk.rating.critical Critical gr picklist.gr.training.category.clinical Clinical gr picklist.gr.training.category.safety Safety gr picklist.gr.training.category.compliance Compliance gr picklist.gr.training.category.professional_development Professional Development gr picklist.gr.training.category.regulatory Regulatory gr picklist.gr.training.category.other Other gr picklist.gr.training.ceu_credit_type.state_licensing State Licensing gr picklist.gr.training.ceu_credit_type.professional_certification Professional Certification gr picklist.gr.training.ceu_credit_type.internal Internal gr picklist.gr.training.ceu_credit_type.other Other gr picklist.gr.training.ceu_source.internal Internal gr picklist.gr.training.ceu_source.external External gr picklist.gr.training.ceu_source.conference Conference gr picklist.gr.training.ceu_source.certification Certification gr picklist.gr.training.ceu_source.manual Manual gr picklist.gr.training.course_type.in_person In Person gr picklist.gr.training.course_type.online Online gr picklist.gr.training.course_type.webinar Webinar gr picklist.gr.training.course_type.self_paced Self-Paced gr picklist.gr.training.course_type.on_the_job On the Job gr picklist.gr.training.delivery_method.online Online gr picklist.gr.training.delivery_method.in_person In Person gr picklist.gr.training.delivery_method.blended Blended gr picklist.gr.training.delivery_method.self_paced Self-Paced gr picklist.gr.training.verification_method.system System gr picklist.gr.training.verification_method.instructor Instructor gr picklist.gr.training.verification_method.supervisor Supervisor gr picklist.gr.training.verification_method.certificate Certificate gr picklist.gr.training.verification_method.self_reported Self-Reported gr picklist.gr.training.verification_method.assessment Assessment gr picklist.hr_employment_status.active Active hr picklist.hr_employment_status.on_leave On Leave hr picklist.hr_employment_status.suspended Suspended hr picklist.hr_employment_status.terminated Terminated hr picklist.rh_discharge_destination.independent_living Independent Living rh picklist.rh_discharge_destination.sober_living Sober Living rh picklist.rh_discharge_destination.family Family/Friends rh picklist.rh_discharge_destination.shelter Shelter rh picklist.rh_discharge_destination.higher_care Higher Level of Care rh picklist.rh_discharge_destination.lower_care Lower Level of Care rh picklist.rh_discharge_destination.unknown Unknown rh picklist.rh_discharge_type.planned Planned Completion rh picklist.rh_discharge_type.administrative Administrative rh picklist.rh_discharge_type.ama AMA (Against Medical Advice) rh picklist.rh_discharge_type.transfer Transfer rh picklist.rh_discharge_type.deceased Deceased rh picklist.rh_document_type.discharge_summary Discharge Summary rh picklist.rh_document_type.aftercare_plan Aftercare Plan rh picklist.rh_document_type.referral_letter Referral Letter rh picklist.rh_document_type.medication_list Medication List rh picklist.rh_document_type.consent_form Consent Form rh picklist.rh_document_type.other Other rh ``` # platform — Public API surface Source: https://docs.encoreos.io/api/platform Per-symbol API documentation for the platform area, generated from TSDoc blocks. Refresh with `npm run docs:api:generate`. # platform — Public API surface ## Types & interfaces ### interface ActiveLeadForConversion * file: src/platform/ce/useActiveLeadsForConversion.ts:14 * kind: interface * core: platform * spec: (none) * summary: Shape of an active lead with joined contact data for conversion selection. * score: 2 ### type AgentFormValues * file: src/platform/cowork/ui/AgentFormSheet.tsx:37 * kind: type * core: platform * spec: (none) * summary: Validated values produced by the agent create/edit form, inferred from. Mirrors the writable subset of a row theadmin UI exposes (name, description, default skill, model-routing hint,agent-principal UUID, and active/paused status) — the parent maps these ontothe create or update mutation. * score: 2 ### interface AgentMemoryForgetArgs * file: src/platform/ai/agentic/agent-memory-types.ts:51 * kind: interface * core: platform * spec: (none) * summary: Hard-delete request (TTL expiry, org/thread purge, consent revocation). * score: 2 ### interface AgentMemoryRecallQuery * file: src/platform/ai/agentic/agent-memory-types.ts:33 * kind: interface * core: platform * spec: (none) * summary: A scoped semantic recall request. Scope keys gate which rows the RPC may return. * score: 2 ### interface AgentMemoryRecallRow * file: src/platform/ai/agentic/agent-memory-types.ts:42 * kind: interface * core: platform * spec: (none) * summary: A recalled, prompt-safe memory row. Carries ONLY the redacted projection — never raw . * score: 2 ### interface AgentMemoryWriteEntry * file: src/platform/ai/agentic/agent-memory-types.ts:14 * kind: interface * core: platform * spec: (none) * summary: A learned-context fact to persist. may carry PHI; the adapter computes its redacted twin. * score: 2 ### interface AgentMessageBadgeProps * file: src/platform/cowork/components/AgentMessageBadge.tsx:27 * kind: interface * core: platform * spec: (none) * summary: Props for — the agent and authorizing human to attribute, plus an optional admin-only principal label. Carries display strings only; never the raw principal UUID. * score: 2 ### interface AiFairnessMonitoredSurface * file: src/platform/ai/constants/ai-fairness-surfaces.ts:33 * kind: interface * core: platform * spec: (none) * summary: A production AI surface tracked under fairness/bias governance. * score: 2 ### interface AIMappingSuggestionCellSuggestion * file: src/platform/ai/components/AIMappingSuggestionCell.tsx:21 * kind: interface * core: platform * spec: (none) * summary: A suggestion to render in the cell. * score: 2 ### interface AiOnboardingWizardData * file: src/platform/ai/constants/ai-onboarding.ts:120 * kind: interface * core: platform * spec: (none) * summary: Wizard form-data shape (see spec Data Model § Wizard form data shape). * score: 2 ### type AllowedTable * file: src/platform/dashboard/hooks/useCustomWidgets.ts:26 * kind: type * core: platform * spec: (none) * summary: Union of table names the custom-widget builder UX offers; the pf\_widget\_query broker is the authoritative server-side allowlist, so this type is for the picker, not a security boundary. * score: 2 ### interface AnalyticsQuerySpec * file: src/platform/analytics/hooks/useAnalyticsQuery.ts:21 * kind: interface * core: platform * spec: (none) * summary: A no-SQL query spec — registry keys only, never raw SQL (compiled server-side). * score: 2 ### interface AnalyticsQuerySpec * file: src/platform/analytics/semantic-compiler.ts:46 * kind: interface * core: platform * spec: (none) * summary: What the client requests — never raw SQL; only registry keys. * score: 2 ### interface AnalyticsRunResult * file: src/platform/analytics/hooks/useAnalyticsQuery.ts:44 * kind: interface * core: platform * spec: (none) * summary: The Tier-2 RPC envelope ( returns this jsonb). * score: 2 ### type AnalyticsSurface * file: src/platform/analytics/hooks/useAnalyticsQuery.ts:18 * kind: type * core: platform * spec: (none) * summary: Surfaces the audit log distinguishes (FR-9). The in-app builder uses . * score: 2 ### interface AnomalyConfig * file: src/platform/query-performance/anomaly-rules.ts:22 * kind: interface * core: platform * spec: (none) * summary: Configuration for anomaly detection * score: 2 ### interface AnomalyDetectionResult * file: src/platform/query-performance/anomaly-rules.ts:12 * kind: interface * core: platform * spec: (none) * summary: Result of anomaly evaluation * score: 1 ### type AnomalyRuleType * file: src/platform/query-performance/anomaly-rules.ts:9 * kind: type * core: platform * spec: (none) * summary: Anomaly rule types * score: 1 ### type AnyPermission * file: src/platform/permissions/constants.ts:2452 * kind: type * core: platform * spec: (none) * summary: Union of every permission key across all modules. * score: 2 ### type ArtifactScreenFn * file: src/platform/ai/agentic/artifact-prompt-context.ts:59 * kind: type * core: platform * spec: (none) * summary: A screen function: returns the prompt-safe text, or THROWS to fail closed. * score: 2 ### interface ArtifactVersionForPrompt * file: src/platform/ai/agentic/artifact-prompt-context.ts:34 * kind: interface * core: platform * spec: (none) * summary: Minimal projection of a row needed for prompt reuse. Deliberately omitsthe raw PHI — a prompt may only ever see the redacted projection, so it is not even inscope here. * score: 2 ### interface AsamContinuumPolicy * file: src/platform/clinical/loc/asam-continuum.ts:19 * kind: interface * core: platform * spec: (none) * summary: Resolved jurisdiction policy for the ASAM CONTINUUM tool. * score: 2 ### interface AsamLocAssessment * file: src/platform/clinical/blocks/asam-loc-adapter.ts:58 * kind: interface * core: platform * spec: (none) * summary: The asam\_loc block's form-value shape (field\_schema keys). Ratings are codedstrings '0'–'4' (PF-15 ); LOC codes bind to the value set; / are read-only echoes of theunderlying row so renderers can show lifecycle state (never written back). * score: 2 ### interface AsyncValidationResult * file: src/platform/wizards/utils/async-validation.ts:29 * kind: interface * core: platform * spec: (none) * summary: Result of async validation * score: 1 ### interface AsyncValidationRule * file: src/platform/wizards/utils/async-validation.ts:10 * kind: interface * core: platform * spec: (none) * summary: Async validation rule configuration * score: 2 ### interface AuthorOrgProfileDraftInput * file: src/platform/knowledge/hooks/use-seed-org-knowledge.ts:45 * kind: interface * core: platform * spec: (none) * summary: Inputs for the author branch — admin/wizard-supplied narrative, no source document. * score: 2 ### type BatchFrequency * file: src/platform/notifications/utils/retry.ts:111 * kind: type * core: platform * spec: (none) * summary: Batch frequency types. * score: 1 ### interface BedCensusSummary * file: src/platform/census/fetchBedCensusSummary.ts:13 * kind: interface * core: platform * spec: (none) * summary: Aggregate bed counts for an organization, partitioned by state (occupied /available / reserved / maintenance) with as occupied ÷ total.Returned by for dashboard census widgets. * score: 2 ### interface BenefitsIntegrationStatus * file: src/platform/onboarding/integrations/benefitsIntegration.ts:31 * kind: interface * core: platform * spec: (none) * summary: Enhanced benefits status with urgency and actionable recommendations * score: 2 ### interface BenefitsOnboardingTask * file: src/platform/onboarding/integrations/benefitsIntegration.ts:140 * kind: interface * core: platform * spec: (none) * summary: Generate onboarding task for benefits enrollment * score: 2 ### type BenefitsUrgency * file: src/platform/onboarding/integrations/benefitsIntegration.ts:26 * kind: type * core: platform * spec: (none) * summary: Benefits enrollment urgency levels * score: 2 ### interface BrandVoice * file: src/platform/ai/constants/ai-onboarding.ts:111 * kind: interface * core: platform * spec: (none) * summary: Structured brand-voice object stored in pf\_module\_settings.brand\_voice. * score: 2 ### interface BundleInstallRow * file: src/platform/ai/hooks/useBundleInstalls.ts:14 * kind: interface * core: platform * spec: (none) * summary: Matches the pf\_bundle\_installs columns (partial — governance\_decision is JSONB). * score: 2 ### interface CalendarEventInput * file: src/platform/integrations/google-workspace.ts:17 * kind: interface * core: platform * spec: (none) * summary: Input for : the target org and Workspacesubject (whose calendar the event lands on), the calendar id, the event body(summary/description should already be PHI-redacted by the caller), and anoptional Meet-link request plus attendee-notification policy. * score: 2 ### interface CalendarEventResult * file: src/platform/integrations/google-workspace.ts:37 * kind: interface * core: platform * spec: (none) * summary: Result of : the created Google event id,its , an optional Meet join link (when was set), andthe redacted correlation id for tracing the originating sync run. * score: 2 ### interface CallMetrics * file: src/platform/telephony/hooks/useEmbeddableCall.ts:18 * kind: interface * core: platform * spec: (none) * summary: Call connection metrics (T19) * score: 1 ### interface CaptureTarget * file: src/platform/automation/portal/recorder/compile.ts:20 * kind: interface * core: platform * spec: (none) * summary: A captured DOM target — the recorder emits the richest set of identifiers it sees. * score: 2 ### interface CcbhcMeasureAggregate * file: src/platform/clinical/measures/useClinicalMeasureAggregates.ts:27 * kind: interface * core: platform * spec: (none) * summary: One de-identified CCBHC clinic-collected measure result, e.g. , .Counts only — no patient ids or row-level data ever cross the platform boundary. * score: 2 ### interface CcbhcMeasureAggregatesInput * file: src/platform/clinical/measures/useClinicalMeasureAggregates.ts:42 * kind: interface * core: platform * spec: (none) * summary: Input parameters for CCBHC measure aggregate queries. * score: 2 ### type CeemBasisType * file: src/platform/clinical/ceem/disclosure-gate.contract.ts:30 * kind: type * core: platform * spec: (none) * summary: Basis on which a disclosure was permitted (FR-2). * score: 2 ### type CeemDenyReason * file: src/platform/clinical/ceem/disclosure-gate.contract.ts:23 * kind: type * core: platform * spec: (none) * summary: Machine-readable deny reasons (FR-3). * score: 2 ### type CeemRecipientKind * file: src/platform/clinical/ceem/disclosure-gate.contract.ts:20 * kind: type * core: platform * spec: (none) * summary: Permitted recipient classes for a CEEM exemption disclosure (no free-text recipient PHI). * score: 2 ### type CEPermission * file: src/platform/permissions/constants.ts:2439 * kind: type * core: platform * spec: (none) * summary: Union of every Community Engagement (CE) permission key. * score: 2 ### interface ChatNotificationInput * file: src/platform/integrations/google-workspace.ts:216 * kind: interface * core: platform * spec: (none) * summary: Input for : the target org, the approvedPF-10 to render, the identifying the mappedChat space, and optional short (≤256-char) string variable substitutions.There is intentionally no free-text body field — PHI is always blocked in Chat. * score: 2 ### interface ChatNotificationResult * file: src/platform/integrations/google-workspace.ts:227 * kind: interface * core: platform * spec: (none) * summary: Result of : the created Chat messageresource name and the redacted correlation id for the sync run. * score: 2 ### interface ClientFilter * file: src/platform/table-v2/utils/filter/client.ts:14 * kind: interface * core: platform * spec: (none) * summary: A client-side filter predicate. * score: 2 ### type CLPermission * file: src/platform/permissions/constants.ts:2443 * kind: type * core: platform * spec: (none) * summary: Union of every Clinical (CL) permission key. * score: 2 ### interface CoCMRegistryResult * file: src/platform/clinical/cocm-registry.ts:21 * kind: interface * core: platform * spec: (none) * summary: Result shape returned by .When , all other fields are meaningless and the gate enginemust withhold auto-post for CoCM enrollments (graceful degrade per A-1). * score: 2 ### interface CompiledQuery * file: src/platform/analytics/semantic-compiler.ts:82 * kind: interface * core: platform * spec: (none) * summary: The validated, normalized plan. Runtime-agnostic. * score: 2 ### interface CompletenessAlertPayload * file: src/platform/clinical/completeness/completenessAlert.ts:29 * kind: interface * core: platform * spec: (none) * summary: A PHI-free completeness/timeliness alert payload (allow-listed keys only). * score: 2 ### interface CompletenessDeps * file: src/platform/clinical/completeness/getSurfaceDocumentationCompleteness.ts:35 * kind: interface * core: platform * spec: (none) * summary: Injected dependencies (client/registry/clock) so the read path is testable. * score: 2 ### type ConditionalClauseFormData * file: src/platform/field-config/schemas/conditional-rules.schema.ts:48 * kind: type * core: platform * spec: (none) * summary: Inferred type for conditional clause * score: 2 ### type ConditionalOperatorFormData * file: src/platform/field-config/schemas/conditional-rules.schema.ts:43 * kind: type * core: platform * spec: (none) * summary: Inferred type for conditional operator * score: 2 ### type ConditionalRulesFormData * file: src/platform/field-config/schemas/conditional-rules.schema.ts:53 * kind: type * core: platform * spec: (none) * summary: Inferred type for conditional rules configuration * score: 2 ### interface ConditionalValidationRule * file: src/platform/wizards/utils/validation-executor.ts:38 * kind: interface * core: platform * spec: (none) * summary: Conditional validation rule - only applied when conditions are met * score: 2 ### type ConfidenceBadgeVariant * file: src/platform/ai/utils/confidence.ts:13 * kind: type * core: platform * spec: (none) * summary: Badge variant names shared by suggestion surfaces (subset of the Badge variants). * score: 2 ### type ConfidenceLevel * file: src/platform/ai/utils/confidence.ts:10 * kind: type * core: platform * spec: (none) * summary: Shared confidence → presentation helpers for AI suggestions.Centralizes the 0.8 / 0.5 tier thresholds so every AI suggestion surface(cards, table cells) renders confidence consistently. platform/ai/utils/confidence * score: 2 ### interface ConvertLeadFromPMInput * file: src/platform/ce/useConvertLeadFromPM.ts:19 * kind: interface * core: platform * spec: (none) * summary: Input for converting a lead from the PM patient registration flow. * score: 2 ### interface CorePrimaryAction * file: src/platform/modules/module-registry.ts:6 * kind: interface * core: platform * spec: (none) * summary: Primary contextual action per core — derived from the first registry quick action. * score: 2 ### interface CoreRailProps * file: src/platform/navigation/primitives/CoreRail.tsx:79 * kind: interface * core: platform * spec: (none) * summary: Props for the primitive — the left-edge vertical navigationrail that lists the cores a user can access, surfaces pin/reorder controls,and hosts the theme toggle and user menu. * score: 2 ### interface CosignOverdueInput * file: src/platform/clinical/plan/plan-cadence.ts:41 * kind: interface * core: platform * spec: (none) * summary: Inputs to the BHT cosign-overdue determination. * score: 2 ### interface CoverageReport * file: src/platform/import/mapping/auditValueCoverage.ts:19 * kind: interface * core: platform * spec: (none) * summary: The data-quality summary for one source column against one binding. * score: 2 ### interface CreateAgentInput * file: src/platform/cowork/agentsService.ts:27 * kind: interface * core: platform * spec: (none) * summary: Fields an admin may set when creating an agent. organization\_id is supplied separately. * score: 2 ### interface CreatedProvider * file: src/platform/auth/sso/useSsoSetup.ts:26 * kind: interface * core: platform * spec: (none) * summary: Result of creating an SSO provider + domain claim: the new provider/claimids plus the verification token and the DNS TXT host the admin must publishto prove domain ownership. * score: 2 ### interface CreateOrgProfileDraftFromDocumentInput * file: src/platform/knowledge/hooks/use-seed-org-knowledge.ts:33 * kind: interface * core: platform * spec: (none) * summary: Inputs for the import branch — content comes from a selection. * score: 2 ### interface CreateWorkspaceInput * file: src/platform/navigation/workspaces/admin/useWorkspaceMutations.ts:116 * kind: interface * core: platform * spec: (none) * summary: Caller-supplied fields for creating a workspace. Excludes (taken from the active org context) and audit columns (/, stamped from the current user); defaults to . * score: 2 ### interface CrisisLines * file: src/platform/clinical/blocks/suicide/crisis-lines.ts:16 * kind: interface * core: platform * spec: (none) * summary: Resolved crisis-line numbers for a safety plan. * score: 2 ### interface CrossFieldRule * file: src/platform/wizards/utils/validation-executor.ts:21 * kind: interface * core: platform * spec: (none) * summary: Cross-field validation rule * score: 1 ### type DateFormatPreset * file: src/platform/formatting/utils.ts:86 * kind: type * core: platform * spec: (none) * summary: Semantic date format presets for consistent display * score: 2 ### interface DebouncedFunction * file: src/platform/wizards/utils/async-validation.ts:97 * kind: interface * core: platform * spec: (none) * summary: Debounced function interface with cancel method * score: 2 ### interface DegradationDecision * file: src/platform/ai/lib/aiDegradation.ts:40 * kind: interface * core: platform * spec: (none) * summary: The outcome of . is only populated when . * score: 2 ### type DegradationMode * file: src/platform/ai/lib/aiDegradation.ts:33 * kind: type * core: platform * spec: (none) * summary: The three degradation modes + a hard-block for PHI / payment guard.- — a real retry queue will replay the request once capacity is restored (use only where the queue exists).- — AI is down; surface the manual workflow so work can continue. **Phase-0 default for all clinical/billing callsites.**- — serve a cached or rule-based result as a best-effort substitute (use where a plausible cached answer is better than blocking the user).- — do not attempt AI and do not surface a fallback hint (PHI detection, payment gate, or error = null meaning AI was never invoked). * score: 2 ### type DeliveryStatus * file: src/platform/notifications/utils/retry.ts:101 * kind: type * core: platform * spec: (none) * summary: Notification delivery status types. * score: 2 ### interface DeviceInfo * file: src/platform/sessions/utils/deviceFingerprint.ts:6 * kind: interface * core: platform * spec: (none) * summary: PF-49: Device Fingerprinting UtilityGenerates a SHA-256 hash from browser metadata for device identification. * score: 2 ### interface DiffLine * file: src/platform/documents/utils/documentDiff.ts:13 * kind: interface * core: platform * spec: (none) * summary: A single line in a side-by-side diff view * score: 2 ### interface DischargeChecklistState * file: src/platform/clinical/blocks/discharge/discharge-summary-adapter.ts:42 * kind: interface * core: platform * spec: (none) * summary: Read-only composed state of the chart's discharge checklist (CL-29). * score: 2 ### interface DischargeMedication * file: src/platform/clinical/blocks/discharge/discharge-summary-adapter.ts:35 * kind: interface * core: platform * spec: (none) * summary: One medication ordered at discharge (R9-10-709(G)(1)(d) snapshot entry). * score: 2 ### interface DischargeRequiredness * file: src/platform/clinical/blocks/discharge/requiredness.ts:25 * kind: interface * core: platform * spec: (none) * summary: Which discharge-summary fields are required for the current context. * score: 2 ### interface DischargeRequirednessInput * file: src/platform/clinical/blocks/discharge/requiredness.ts:17 * kind: interface * core: platform * spec: (none) * summary: Inputs that drive the discharge summary's conditional field requiredness. * score: 2 ### interface DischargeSummary * file: src/platform/clinical/blocks/discharge/discharge-summary-adapter.ts:48 * kind: interface * core: platform * spec: (none) * summary: The discharge\_summary block's form-value shape (field\_schema keys). * score: 2 ### interface DocumentAnalyticsData * file: src/platform/documents/hooks/useDocumentAnalytics.ts:18 * kind: interface * core: platform * spec: (none) * summary: Aggregated document analytics data * score: 2 ### interface DocumentAnalyticsResult * file: src/platform/documents/hooks/useDocumentAnalytics.ts:36 * kind: interface * core: platform * spec: (none) * summary: Return type for the analytics hook * score: 2 ### type DomainClaimStatus * file: src/platform/auth/sso/useSsoSetup.ts:19 * kind: type * core: platform * spec: (none) * summary: Lifecycle of an SSO domain-ownership claim: (DNS TXT not yetconfirmed), (ownership proven, provider may be activated), or (verification could not be completed). * score: 2 ### interface DriveSyncInput * file: src/platform/integrations/google-workspace.ts:163 * kind: interface * core: platform * spec: (none) * summary: Input for : the target org, and an optional to scope the sync to a single shared drive's folders (omit to listall shared drives and their folders). * score: 2 ### interface DriveSyncResult * file: src/platform/integrations/google-workspace.ts:173 * kind: interface * core: platform * spec: (none) * summary: Result of : counts of shared drives andfolders whose metadata was upserted into ,plus the redacted correlation id for the sync run. * score: 2 ### interface EdgeApiDeprecationMetricRow * file: src/platform/health/edge-api-deprecation-metrics.ts:15 * kind: interface * core: platform * spec: (none) * summary: A single row in the Edge API deprecation usage metrics view\.Used by PF-36 health dashboard widgets. * score: 2 ### type EdgeInvokeFn * file: src/platform/ai/agentic/intake-model-adapter.ts:27 * kind: type * core: platform * spec: (none) * summary: The injected (narrowed to what we use). * score: 2 ### interface EmailSignatureSettings * file: src/platform/email-signatures/hooks/useEmailSignatureSettings.ts:10 * kind: interface * core: platform * spec: (none) * summary: Email signature-related settings from pf\_module\_settings * score: 2 ### interface EmbeddableMetrics * file: src/platform/telephony/components/EmbeddableProvider.tsx:72 * kind: interface * core: platform * spec: (none) * summary: Performance metrics for monitoring (T19) * score: 2 ### interface EmployeeCreatedPayload * file: src/platform/hr/useEmployeeEvents.ts:10 * kind: interface * core: platform * spec: (none) * summary: Payload for employee\_created: new employee row (minimal). * score: 2 ### interface EmployeeTerminatedPayload * file: src/platform/hr/useEmployeeEvents.ts:18 * kind: interface * core: platform * spec: (none) * summary: Payload for employee\_terminated: employee row at termination. * score: 2 ### type EncoreTargetTable * file: src/platform/settings/pages/data-migration/constants.ts:30 * kind: type * core: platform * spec: (none) * summary: Type for valid Encore target table names. * score: 2 ### interface EnforceResult * file: src/platform/ai/phi-two-path-enforcer.ts:54 * kind: interface * core: platform * spec: (none) * summary: The enforcer's verdict — the text that may be dispatched, and whether it was redacted. * score: 2 ### interface EnqueueWorkflowExecutionInput * file: src/platform/workflow/execution.ts:23 * kind: interface * core: platform * spec: (none) * summary: Input for . * score: 1 ### interface EnqueueWorkflowExecutionResult * file: src/platform/workflow/execution.ts:48 * kind: interface * core: platform * spec: (none) * summary: Result of . * score: 1 ### type EntraAppMode * file: src/platform/integrations/hooks/useEntraSetup.ts:23 * kind: type * core: platform * spec: (none) * summary: Shared Encore app vs bring-your-own Entra app registration. * score: 2 ### type EntraConsentStatus * file: src/platform/integrations/hooks/useEntraSetup.ts:20 * kind: type * core: platform * spec: (none) * summary: Admin-consent state for the org's Entra connection (from ). * score: 2 ### type EntraHealthStatus * file: src/platform/integrations/entra-health.ts:8 * kind: type * core: platform * spec: (none) * summary: Headline integration status for badges and hub cards. * score: 2 ### interface EntraOrgSettings * file: src/platform/integrations/hooks/useEntraConfig.ts:13 * kind: interface * core: platform * spec: (none) * summary: Org-level settings JSON: Entra and Gmail email sender configuration * score: 2 ### interface EntraSetupWizardProps * file: src/platform/integrations/components/EntraSetupWizard.tsx:60 * kind: interface * core: platform * spec: (none) * summary: Props for . * score: 1 ### interface EntraSubscribedSku * file: src/platform/integrations/entra-skus.ts:12 * kind: interface * core: platform * spec: (none) * summary: PF-63-EN-01 FR-3 — Entra license SKU catalog helpers.The edge function's action returns thetenant's subscribed SKUs from Microsoft Graph (). Thesepure helpers normalize that payload for the role-license editor and validateSKU input against the catalog, degrading to a GUID-format check when thecatalog is unavailable (no credentials / consent yet) so configuration isnever dead-ended. * score: 2 ### interface EventCatalogEntry * file: src/platform/events/events-catalog.ts:10 * kind: interface * core: platform * spec: (none) * summary: Domain-event catalog — the SINGLE SOURCE OF TRUTH for known events.Edit here, then run to regenerate the TS union(known-events.generated.ts) and the DB seed (10\_fw\_workflow\_events.sql).Metadata was name-derived at bootstrap; enrich per-spec as needed.owning\_core ∈ pf|hr|rh|fa|fw|fm|lo|gr|cl|pm|ce|it; category matches thefw\_workflow\_events\_category\_check (lifecycle|financial|operational|form|messaging|interoperability|clinical|platform). * score: 2 ### type EventPayloadSchemaJson * file: src/platform/events/eventPayloadValidation.ts:27 * kind: type * core: platform * spec: (none) * summary: JSON Schema object shape (subset used in event definitions). * score: 2 ### interface ExamFinding * file: src/platform/clinical/blocks/exam-adapter.ts:18 * kind: interface * core: platform * spec: (none) * summary: One row: a body system's exam status (+ abnormal narrative). * score: 2 ### interface ExamOverlayContext * file: src/platform/clinical/blocks/ros-exam/full-hp-gate.ts:37 * kind: interface * core: platform * spec: (none) * summary: The overlay context that drives the exam gate. * score: 2 ### interface ExcelSheet * file: src/platform/export/utils/excelExport.ts:8 * kind: interface * core: platform * spec: (none) * summary: PF-44: Excel Export UtilityGenerates .xlsx files using wekanteam/exceljs with multi-sheet support.ExcelJS is loaded dynamically to avoid pulling vendor-excel into every consumer. * score: 2 ### interface ExemptionAttestation * file: src/platform/clinical/ceem/disclosure-gate.contract.ts:61 * kind: interface * core: platform * spec: (none) * summary: Minimum-necessary attestation (FR-4). Only a yes/no exemption status plusdates, jurisdiction id, and a verification token leave the gate. Theexemption category is omitted by default (FR-4a, CLAR-1 legal-approved2026-06-03) and present only when the resolved PF-96 profile explicitlypermits it. NEVER carries SUD diagnosis, episode, ASAM/LOCUS, or narrative. * score: 2 ### interface ExemptionDisclosureGateRequest * file: src/platform/clinical/ceem/disclosure-gate.contract.ts:36 * kind: interface * core: platform * spec: (none) * summary: Server-side gate request. points at the CL-70 determination,NOT its content — the gate never receives SUD record bodies. * score: 2 ### interface ExemptionDisclosureGateResponse * file: src/platform/clinical/ceem/disclosure-gate.contract.ts:73 * kind: interface * core: platform * spec: (none) * summary: Gate response. is present only on permit. * score: 2 ### interface ExportedJsonSchema * file: src/platform/forms/utils/schemaExport.ts:40 * kind: interface * core: platform * spec: (none) * summary: Exported JSON Schema result * score: 1 ### interface ExternalModelStep * file: src/platform/ai/phi-two-path-enforcer.ts:41 * kind: interface * core: platform * spec: (none) * summary: A single external-model-reaching step to evaluate. * score: 2 ### type ExternalStepType * file: src/platform/ai/phi-two-path-enforcer.ts:26 * kind: type * core: platform * spec: (none) * summary: Every external-model-reaching step type subject to the two-path rule (FR-9/FR-10). * score: 2 ### type FairnessMonitoringStatus * file: src/platform/ai/constants/ai-fairness-surfaces.ts:26 * kind: type * core: platform * spec: (none) * summary: Whether bias/fairness monitoring is LIVE for a surface. * score: 2 ### type FAPermission * file: src/platform/permissions/constants.ts:2427 * kind: type * core: platform * spec: (none) * summary: Union of every Finance (FA) permission key. * score: 2 ### interface FileUploadFieldSettings * file: src/platform/forms/components/fields/FileUploadField.tsx:28 * kind: interface * core: platform * spec: (none) * summary: Settings that can be configured per-field by form builders. * score: 2 ### interface FileUploadFieldValue * file: src/platform/forms/components/fields/FileUploadField.tsx:19 * kind: interface * core: platform * spec: (none) * summary: Shape of a file upload field value stored in submission\_data. * score: 2 ### interface FileValidationResult * file: src/platform/documents/utils/fileValidation.ts:84 * kind: interface * core: platform * spec: (none) * summary: Result of file validation * score: 1 ### interface FilterColumnMeta * file: src/platform/data-lookup/lookupTables.ts:11 * kind: interface * core: platform * spec: (none) * summary: Metadata about a filterable column for the builder UI. * score: 2 ### type FilterErrorCode * file: src/platform/table-v2/utils/filter/errors.ts:10 * kind: type * core: platform * spec: (none) * summary: Error codes for filter operations. * score: 2 ### interface FilterPreset * file: src/platform/data-lookup/lookupTables.ts:96 * kind: interface * core: platform * spec: (none) * summary: Quick-apply presets for common filter combinations. * score: 2 ### interface FleetUsageRollupRow * file: src/platform/fleet/hooks/useFleetUsageRollup.ts:14 * kind: interface * core: platform * spec: (none) * summary: A single row returned by pf\_agent\_usage\_rollup * score: 2 ### type FMPermission * file: src/platform/permissions/constants.ts:2435 * kind: type * core: platform * spec: (none) * summary: Union of every Facilities (FM) permission key. * score: 2 ### interface FormCompletionStatus * file: src/platform/onboarding/integrations/payrollIntegration.ts:20 * kind: interface * core: platform * spec: (none) * summary: Individual form status * score: 1 ### interface FreeBusyInput * file: src/platform/integrations/google-workspace.ts:92 * kind: interface * core: platform * spec: (none) * summary: Input for : the target org and Workspace subject,the RFC3339 window, the calendar ids to probe, and anoptional time zone for the response windows. * score: 2 ### type FWPermission * file: src/platform/permissions/constants.ts:2431 * kind: type * core: platform * spec: (none) * summary: Union of every Forms & Workflow (FW) permission key. * score: 2 ### interface GesturePoint * file: src/platform/gestures/registry/CustomGestureRegistry.ts:6 * kind: interface * core: platform * spec: (none) * summary: PF-37 Phase 3: Custom Gesture Registry In-memory registry for custom gesture patterns using \$1 recognizer approach. * score: 2 ### interface GetThrottleStatusArgs * file: src/platform/workflow/execution.ts:111 * kind: interface * core: platform * spec: (none) * summary: Arguments for . * score: 1 ### interface GraphPermissionItem * file: src/platform/integrations/entra-permissions.ts:6 * kind: interface * core: platform * spec: (none) * summary: Shared Microsoft Graph permission metadata for Entra ID integration.Keeps UI (EntraIDSettingsCard) and client/edge logic in sync. * score: 2 ### interface GroupedRowsToolbarProps * file: src/platform/table-v2/components/GroupedRows.tsx:114 * kind: interface * core: platform * spec: (none) * summary: Toolbar controls for expand/collapse all groups.Per CONTEXT: small text links (text-xs text-muted-foreground). * score: 2 ### type GRPermission * file: src/platform/permissions/constants.ts:2437 * kind: type * core: platform * spec: (none) * summary: Union of every Governance (GR) permission key. * score: 2 ### type HapticType * file: src/platform/gestures/utils/haptics.ts:15 * kind: type * core: platform * spec: (none) * summary: PF-37 Phase 8.4: Haptic Feedback UtilitiesCentralized haptic feedback for gesture interactions.Respects reduced motion preferences and device capabilities.SSR-safe: guards against server-side rendering environments.⚠️ PLATFORM LIMITATION: is NOT supported on iOS Safari. All haptic calls silently return on iPhones / iPads. Do NOT rely on haptic feedback as the sole indicator of an action — always pair with a visual cue (animation, color change, etc.). See: [https://caniuse.com/vibration](https://caniuse.com/vibration) * score: 2 ### type HRPermission * file: src/platform/permissions/constants.ts:2425 * kind: type * core: platform * spec: (none) * summary: Union of every HR (HR) permission key. * score: 2 ### interface IApiCallTracker * file: src/platform/quota/api-call-tracker.ts:9 * kind: interface * core: platform * spec: (none) * summary: Interface for tracking API call usage. * score: 2 ### type ImportAuditAction * file: src/platform/import/hooks/useImportAudit.ts:14 * kind: type * core: platform * spec: (none) * summary: Import audit event types. * score: 1 ### interface ImportConflict * file: src/platform/ai/hooks/useImportAISkill.ts:25 * kind: interface * core: platform * spec: (none) * summary: Conflict details when a skill\_code already exists. * score: 2 ### type ImportConflictResolution * file: src/platform/ai/hooks/useImportAISkill.ts:19 * kind: type * core: platform * spec: (none) * summary: Conflict resolution strategy. * score: 1 ### interface ImportProgress * file: src/platform/import/hooks/useImportProgress.ts:13 * kind: interface * core: platform * spec: (none) * summary: Progress data returned by the hook. * score: 2 ### interface ImportResult * file: src/platform/ai/hooks/useImportAISkill.ts:37 * kind: interface * core: platform * spec: (none) * summary: Full import result after processing. * score: 2 ### type ImportState * file: src/platform/ai/hooks/useImportAISkill.ts:22 * kind: type * core: platform * spec: (none) * summary: Import state for UI rendering. * score: 2 ### type IndustryFilter * file: src/platform/templates/utils/templateIndustry.ts:6 * kind: type * core: platform * spec: (none) * summary: PF-64: Template Industry Detection UtilityShared logic for detecting industry category from template metadata * score: 2 ### type InjectionDirectiveClass * file: src/platform/ai/prompt-safety.ts:118 * kind: type * core: platform * spec: (none) * summary: A guardrail-override directive class detected by . * score: 2 ### interface InjectionScreenResult * file: src/platform/ai/prompt-safety.ts:127 * kind: interface * core: platform * spec: (none) * summary: Result of the author-time prompt-injection / jailbreak screen. * score: 2 ### interface IntakeAuditSurface * file: src/platform/ai/agentic/intake-audit-surface.ts:63 * kind: interface * core: platform * spec: (none) * summary: The full content-free audit surface for a single intake thread. * score: 2 ### interface IntakeGovernanceApproval * file: src/platform/ai/agentic/intake-audit-surface.ts:32 * kind: interface * core: platform * spec: (none) * summary: One PF-126 governance-approval audit row (payload\_digest intentionally NOT surfaced). * score: 2 ### interface IntakePhiAccess * file: src/platform/ai/agentic/intake-audit-surface.ts:48 * kind: interface * core: platform * spec: (none) * summary: One PF-111-EN-01 PHI-access audit row (resource\_ref + phi\_category are content-free labels). * score: 2 ### interface IntakeReadSources * file: src/platform/ai/agentic/intake-read-tools.ts:21 * kind: interface * core: platform * spec: (none) * summary: The CE/PM read functions the dispatcher calls (production: authenticated reads). * score: 2 ### interface IntakeSourcesClient * file: src/platform/ai/agentic/intake-sources.ts:21 * kind: interface * core: platform * spec: (none) * summary: Structural Supabase surface these reads need (production: the RLS-bounded staff client). * score: 2 ### interface IntakeToolInvocation * file: src/platform/ai/agentic/intake-audit-surface.ts:18 * kind: interface * core: platform * spec: (none) * summary: One PF-127 tool-invocation audit row (content-free). * score: 2 ### interface IntakeVerticalDeps * file: src/platform/ai/agentic/intake-vertical.ts:33 * kind: interface * core: platform * spec: (none) * summary: Dependencies for . * score: 1 ### interface IntakeVerticalResult * file: src/platform/ai/agentic/intake-vertical.ts:50 * kind: interface * core: platform * spec: (none) * summary: Terminal result of the 2b read vertical. * score: 2 ### type InvokeExemptionDisclosureGate * file: src/platform/clinical/ceem/disclosure-gate.contract.ts:84 * kind: type * core: platform * spec: (none) * summary: Server-side invocation signature (service-role / server context only). * score: 2 ### type ITPermission * file: src/platform/permissions/constants.ts:2441 * kind: type * core: platform * spec: (none) * summary: Union of every IT (IT) permission key. * score: 2 ### interface JurisdictionProfileOption * file: src/platform/jurisdiction/hooks/useJurisdictionProfiles.ts:14 * kind: interface * core: platform * spec: (none) * summary: Minimal profile shape for the selector. * score: 2 ### type KnownEventName * file: src/platform/events/known-events.generated.ts:212 * kind: type * core: platform * spec: (none) * summary: Registered (developer-defined) domain-event names. Custom/user events use CustomEventName. * score: 2 ### type KpiDirection * file: src/platform/analytics/serving/kpi-suppression.ts:13 * kind: type * core: platform * spec: (none) * summary: PF-123 Phase 3 — KPI display assembler (AC-018 value/delta/sparkline + direction; AC-019below-threshold value with delta + sparkline blanked). PURE + deterministic (no I/O).IMPORTANT: this is DISPLAY-assembly logic, not a privacy boundary. Server-side suppressionis already enforced upstream by suppressServingPayload/applyCompositeMeasures inside thepf-analytics-query edge fn, which masks every sub-threshold cell to null BEFORE returning.Both inputs here are therefore already suppressed; this helper only ASSEMBLES the display andapplies the KPI cross-component rule: when the headline current value is suppressed, blank thedelta AND the whole sparkline (a visible earlier trend + a known prior could re-identify thehidden latest value by differencing). No raw small-cell value is ever in scope here. * score: 2 ### type KpiTone * file: src/platform/analytics/serving/kpi-suppression.ts:117 * kind: type * core: platform * spec: (none) * summary: Per-metric direction → semantic tone for the delta. Healthcare metrics invert: an increase on a metric (denials, no-shows, turnover) reads as ADVERSE. Returns semantic-tokenclass names only — never raw hex (AC-018). * score: 2 ### interface LeadConversionHistoryItem * file: src/platform/ce/useLeadConversionHistory.ts:17 * kind: interface * core: platform * spec: (none) * summary: Conversion record with optional contact/lead details. * score: 2 ### interface LicenseInput * file: src/platform/integrations/google-workspace.ts:132 * kind: interface * core: platform * spec: (none) * summary: Input for / : thetarget org, the linked user's , and the Google product/SKU idpair identifying the license to assign or revoke. * score: 2 ### interface LoginSsoState * file: src/platform/auth/sso/useSsoSetup.ts:122 * kind: interface * core: platform * spec: (none) * summary: PF-112-EN-01: the org's shared-app OIDC login state — whether the tenant isconnected (PF-63 consent recorded a tenant id), which domains Microsoft hasverified, and whether the Login SSO capability is on. * score: 2 ### type LOPermission * file: src/platform/permissions/constants.ts:2433 * kind: type * core: platform * spec: (none) * summary: Union of every Leadership OS (LO) permission key. * score: 2 ### interface MappingCandidateTarget * file: src/platform/ai/hooks/useAIMappingSuggestions.ts:34 * kind: interface * core: platform * spec: (none) * summary: An Encore-side value the model may pick. Constrains output to real targets. * score: 2 ### interface MappingExample * file: src/platform/ai/hooks/useAIMappingSuggestions.ts:42 * kind: interface * core: platform * spec: (none) * summary: An already-accepted mapping supplied as a few-shot example. * score: 2 ### interface MappingSourceItem * file: src/platform/ai/hooks/useAIMappingSuggestions.ts:23 * kind: interface * core: platform * spec: (none) * summary: A single item to map (e.g. a Proliant earning code + its description). * score: 2 ### interface MappingSuggestInput * file: src/platform/ai/hooks/useAIMappingSuggestions.ts:49 * kind: interface * core: platform * spec: (none) * summary: Input for . * score: 1 ### interface MappingSuggestion * file: src/platform/ai/hooks/useAIMappingSuggestions.ts:61 * kind: interface * core: platform * spec: (none) * summary: One suggestion row. is when no candidate fit. * score: 2 ### interface MappingSuggestResult * file: src/platform/ai/hooks/useAIMappingSuggestions.ts:69 * kind: interface * core: platform * spec: (none) * summary: Result returned by the edge function. * score: 2 ### interface MarketplaceBundleRow * file: src/platform/ai/hooks/useBundleMarketplace.ts:15 * kind: interface * core: platform * spec: (none) * summary: Row returned by pf\_marketplace\_list * score: 2 ### interface MarketplaceTag * file: src/platform/wizards/config/marketplaceTags.ts:7 * kind: interface * core: platform * spec: (none) * summary: PF-41 Phase 3.5: Common Marketplace TagsPredefined tags for marketplace listings to ensure consistency. * score: 2 ### interface McpConnection * file: src/platform/ai/mcp-client.ts:33 * kind: interface * core: platform * spec: (none) * summary: Lightweight connection wrapper for a configured MCP server. * score: 2 ### interface McpRejectionContext * file: src/platform/ai/mcp-rejection-audit.ts:24 * kind: interface * core: platform * spec: PF-127 * summary: Non-PHI identity context for a rejection audit row. * see: * auditMcpRejections * score: 5 ### interface McpServerConfig * file: src/platform/ai/mcp-client.ts:14 * kind: interface * core: platform * spec: (none) * summary: Configuration for an MCP server endpoint. * score: 2 ### interface McpToolInvocationResult * file: src/platform/ai/mcp-client.ts:26 * kind: interface * core: platform * spec: (none) * summary: Result from invoking a remote MCP tool. * score: 2 ### interface MeasurableObjectiveInput * file: src/platform/clinical/plan/measurable.ts:16 * kind: interface * core: platform * spec: (none) * summary: The bound goal fields the measurability derivation reads. * score: 2 ### interface MedListEntry * file: src/platform/clinical/blocks/meds/med-list-adapter.ts:28 * kind: interface * core: platform * spec: (none) * summary: One row as the med\_list block sees it (field\_schema keys = columns). * score: 2 ### interface MedReconciliation * file: src/platform/clinical/blocks/meds/med-reconciliation-adapter.ts:28 * kind: interface * core: platform * spec: (none) * summary: The med\_reconciliation block's form-value shape (field\_schema keys). * score: 2 ### type MemoryScreenFn * file: src/platform/ai/agentic/agent-memory-types.ts:63 * kind: type * core: platform * spec: (none) * summary: The injectable PF-27-EN-01 two-path screen. Returns the redacted, prompt-safe text on success andTHROWS to fail closed (the caller must then NOT persist / must exclude the row). Defaults to thereal enforcer; tests inject a deterministic stub. * score: 2 ### interface MetabolicPanelEntry * file: src/platform/clinical/blocks/metabolic-adapter.ts:28 * kind: interface * core: platform * spec: (none) * summary: One metabolic panel entry (field\_schema keys = cl\_metabolic\_monitoring\_events columns). * score: 2 ### interface MetadataChange * file: src/platform/documents/utils/documentDiff.ts:34 * kind: interface * core: platform * spec: (none) * summary: A single metadata field change * score: 2 ### interface MetadataDiffResult * file: src/platform/documents/utils/documentDiff.ts:44 * kind: interface * core: platform * spec: (none) * summary: Result of comparing two version metadata objects * score: 2 ### interface MilestoneTask * file: src/platform/onboarding/integrations/milestonePresets.ts:15 * kind: interface * core: platform * spec: (none) * summary: Milestone check-in task definition * score: 2 ### type ModelLane * file: src/platform/ai/phi-two-path-enforcer.ts:23 * kind: type * core: platform * spec: (none) * summary: The resolved model lane for a step. = a BAA/ZDR-covered model (cl/pm); = any other. * score: 2 ### interface MseExam * file: src/platform/clinical/blocks/mse-adapter.ts:25 * kind: interface * core: platform * spec: (none) * summary: The structured MSE instance (snake\_case = block field\_schema keys = DB columns). * score: 2 ### interface NameMrnScanResult * file: src/platform/ai/prompt-safety.ts:187 * kind: interface * core: platform * spec: (none) * summary: Likely raw names / MRN-shaped tokens surfaced by . * score: 2 ### type NavEventType * file: src/platform/navigation/analytics/useNavAnalytics.ts:11 * kind: type * core: platform * spec: (none) * summary: Structural navigation event classes. No free text, no PHI — only the shapeof how the user moves through the app. See migration 20260526210000\_nav\_events. * score: 2 ### interface NeedsAttentionItem * file: src/platform/navigation/workspaces/useWorkspaceNeedsAttention.ts:5 * kind: interface * core: platform * spec: (none) * summary: A single "needs attention" counter surfaced on a workspace hub. * score: 2 ### type NotificationChannel * file: src/platform/notifications/utils/retry.ts:106 * kind: type * core: platform * spec: (none) * summary: Notification channel types. * score: 1 ### interface NotificationDeliveryResponse * file: src/platform/notifications/hooks/usePushSubscription.ts:13 * kind: interface * core: platform * spec: (none) * summary: Response shape from the send-push-notification edge function * score: 2 ### interface OnboardingPreset * file: src/platform/onboarding/integrations/milestonePresets.ts:32 * kind: interface * core: platform * spec: (none) * summary: Template preset definition * score: 1 ### interface OrgAiProfile * file: src/platform/ai/hooks/useOrgAiProfile.ts:19 * kind: interface * core: platform * spec: (none) * summary: Shape of the AI-onboarding columns on pf\_module\_settings (additive — PF-UX-22). * score: 2 ### interface OrgAiSettingsUpsert * file: src/platform/ai/hooks/useOrgAiProfileMutation.ts:30 * kind: interface * core: platform * spec: (none) * summary: Partial set of AI columns to upsert. Only provided keys are written (COALESCE-merge). * score: 2 ### interface OrgJurisdictionConfig * file: src/platform/jurisdiction/hooks/useOrgJurisdictionConfig.ts:16 * kind: interface * core: platform * spec: (none) * summary: Org jurisdiction config row with joined profile. * score: 2 ### interface OrgProfileArticle * file: src/platform/knowledge/hooks/use-org-profile-article.ts:30 * kind: interface * core: platform * spec: (none) * summary: The single published-and-indexed org\_profile narrative, as returned by. Mirrors the RPC's columns. * score: 2 ### interface OutcomeAssessmentRecordedPayload * file: src/platform/clinical/outcomes/outcome-assessment.contract.ts:4 * kind: interface * core: platform * spec: (none) * summary: Payload for the domain event (CL-69 → GR-28/GR-30). * score: 2 ### interface OutcomeReassessmentGapInput * file: src/platform/clinical/outcomes/reassessment-cohort.ts:37 * kind: interface * core: platform * spec: (none) * summary: Input for recording an outcome reassessment care gap (CL-69 AC-2.2). * score: 2 ### interface OutcomeReassessmentGapResult * file: src/platform/clinical/outcomes/reassessment-cohort.ts:58 * kind: interface * core: platform * spec: (none) * summary: Result of attempting to record an outcome reassessment gap. * score: 2 ### interface OverflowSegment * file: src/platform/navigation/components/BreadcrumbOverflowMenu.tsx:14 * kind: interface * core: platform * spec: (none) * summary: PF: Shared overflow popover for collapsed breadcrumb parents.Used by both (desktop) and so thecollapsed-segment UI is identical on every viewport. * score: 2 ### interface ParseCsvResult * file: src/platform/csv/parse.ts:7 * kind: interface * core: platform * spec: (none) * summary: Platform CSV parsing utilities for bulk import.Single implementation used by all CSV-based imports (HR, CE, FA, Platform).Constitution §5.10; see docs/guides/use-cases/bulk-import-migration.md. * score: 2 ### interface ParseSkillMdResult * file: src/platform/ai/utils/skill-md-parser.ts:17 * kind: interface * core: platform * spec: (none) * summary: Result returned by . * score: 1 ### interface PasskeySignInResult * file: src/platform/auth/passkey/passkey-utils.ts:25 * kind: interface * core: platform * spec: (none) * summary: Outcome of a passwordless passkey sign-in attempt. * score: 2 ### interface PatternBaseline * file: src/platform/query-performance/anomaly-rules.ts:29 * kind: interface * core: platform * spec: (none) * summary: Summary of a query pattern with baseline metrics * score: 2 ### interface PayloadValidationResult * file: src/platform/events/eventPayloadValidation.ts:19 * kind: interface * core: platform * spec: (none) * summary: Result of payload validation. * score: 1 ### interface PayrollIntegrationStatus * file: src/platform/onboarding/integrations/payrollIntegration.ts:33 * kind: interface * core: platform * spec: (none) * summary: Enhanced payroll status with actionable information * score: 2 ### interface PayrollOnboardingTask * file: src/platform/onboarding/integrations/payrollIntegration.ts:147 * kind: interface * core: platform * spec: (none) * summary: Generate onboarding tasks for payroll setup * score: 2 ### type PayrollSetupState * file: src/platform/onboarding/integrations/payrollIntegration.ts:15 * kind: type * core: platform * spec: (none) * summary: Payroll setup completion state * score: 2 ### interface PdfGenerationOptions * file: src/platform/documents/pdfGenerator.ts:50 * kind: interface * core: platform * spec: (none) * summary: PDF generation options * score: 1 ### interface PdfTableConfig * file: src/platform/documents/pdfGenerator.ts:89 * kind: interface * core: platform * spec: (none) * summary: Table configuration for PdfBuilder * score: 2 ### interface PdfTextStyle * file: src/platform/documents/pdfGenerator.ts:104 * kind: interface * core: platform * spec: (none) * summary: Text style configuration * score: 1 ### type PFPermission * file: src/platform/permissions/constants.ts:2447 * kind: type * core: platform * spec: (none) * summary: Union of every Platform Foundation (PF) permission key. * score: 2 ### interface PhiAccessAuditRow * file: src/platform/fleet/hooks/usePhiAccessAudit.ts:30 * kind: interface * core: platform * spec: (none) * summary: A single row from the pf\_agent\_phi\_access\_audit RPC — content-free audit metadatawith the PF-126 governance decision resolved to outcome labels. * score: 2 ### interface PHIDetectionResult * file: src/platform/ai/widgets/utils/sanitizeForAI.ts:9 * kind: interface * core: platform * spec: (none) * summary: PF-28: PHI/PII Sanitization Utility for AICRITICAL: All content sent to external AI services MUST be sanitized.This utility detects and redacts personally identifiable information (PII)and protected health information (PHI) before transmission. * score: 2 ### interface PhiScanHit * file: src/platform/ai/wizards/ai-skill-creation/phi-scan.ts:20 * kind: interface * core: platform * spec: (none) * summary: A single PHI hit found in a prompt field. * score: 2 ### interface PhiScanResult * file: src/platform/ai/wizards/ai-skill-creation/phi-scan.ts:28 * kind: interface * core: platform * spec: (none) * summary: Result of the author-time regex PHI scan over both prompt fields. * score: 2 ### interface PicklistItemWithAliases * file: src/platform/import/mapping/valueMatching.ts:23 * kind: interface * core: platform * spec: (none) * summary: A resolved target option enriched with optional alias metadata. * score: 2 ### type PicklistWithCount * file: src/platform/picklists/hooks/usePicklists.ts:17 * kind: type * core: platform * spec: (none) * summary: Picklist row enriched with its total item count (active + inactive). * score: 2 ### interface PlanAmendment * file: src/platform/clinical/plan/record-amendment.ts:59 * kind: interface * core: platform * spec: (none) * summary: One persisted amendment row (boundary shape). * score: 2 ### type PlanElementKind * file: src/platform/clinical/plan/record-amendment.ts:17 * kind: type * core: platform * spec: (none) * summary: The person-centered-plan element kinds an amendment can target. * score: 2 ### interface PlanSignGate * file: src/platform/clinical/plan/measurable.ts:37 * kind: interface * core: platform * spec: (none) * summary: The result of the sign-time measurable-objective gate. * score: 2 ### type PMPermission * file: src/platform/permissions/constants.ts:2445 * kind: type * core: platform * spec: (none) * summary: Union of every Practice Management (PM) permission key. * score: 2 ### type Prefetcher * file: src/platform/routing/prefetch/registry.ts:30 * kind: type * core: platform * spec: (none) * summary: Fire-and-forget prefetch hook for a route. Errors are swallowed by the caller. * score: 2 ### interface PresetDisplayInfo * file: src/platform/onboarding/integrations/milestonePresets.ts:257 * kind: interface * core: platform * spec: (none) * summary: Format preset for display in UI * score: 2 ### interface ProcessDiscoveredPayload * file: src/platform/events/publishers/processHealthPublisher.ts:27 * kind: interface * core: platform * spec: (none) * summary: Payload for the event. * score: 1 ### interface ProcessHealthChangedPayload * file: src/platform/events/publishers/processHealthPublisher.ts:15 * kind: interface * core: platform * spec: (none) * summary: Payload for the event. * score: 1 ### interface ProduceArtifactArgs * file: src/platform/ai/agentic/intake-artifact.ts:48 * kind: interface * core: platform * spec: (none) * summary: Arguments for . * score: 1 ### interface PromptSafetyIssue * file: src/platform/ai/prompt-safety.ts:26 * kind: interface * core: platform * spec: (none) * summary: A single prompt-safety finding with a human-readable reason. * score: 2 ### interface PropsAdapterOptions * file: src/platform/table-v2/adapter/propsAdapter.ts:145 * kind: interface * core: platform * spec: (none) * summary: Options for the props adapter. * score: 2 ### interface PublicAuthRoute * file: src/platform/auth/public-auth-routes.config.ts:9 * kind: interface * core: platform * spec: (none) * summary: PF-110 — Path-only projection of the public auth routes.Kept in a non-JSX module so exports only the renderedroute fragment and stays Fast Refresh friendly. Tests that must not importReact lazy chunks import these plain string paths instead. * score: 2 ### interface PushManagerRegistration * file: src/platform/notifications/hooks/usePushSubscription.ts:8 * kind: interface * core: platform * spec: (none) * summary: Typed interface for ServiceWorkerRegistration with PushManager (avoids ) * score: 2 ### interface QueryBudget * file: src/platform/analytics/semantic-compiler.ts:55 * kind: interface * core: platform * spec: (none) * summary: Row-count + execution-time budgets (FR-12). Defaults inherited from the PM-61 pm\_report\_run precedent. * score: 2 ### interface QueryPersistenceOptions * file: src/platform/offline/queryPersistence.ts:175 * kind: interface * core: platform * spec: (none) * summary: Query persistence options * score: 1 ### interface QueryPlanData * file: src/platform/query-performance/hooks/useCaptureQueryPlan.ts:22 * kind: interface * core: platform * spec: (none) * summary: Parsed query plan data from custom\_fields * score: 2 ### type QuickActionsSectionLayout * file: src/platform/dashboard/components/QuickActionsSection.tsx:43 * kind: type * core: platform * spec: (none) * summary: — overview header + expand/collapse. — buttons only (e.g. embedded in a dashboard widget). * score: 2 ### interface RawCaptureEvent * file: src/platform/automation/portal/recorder/compile.ts:38 * kind: interface * core: platform * spec: (none) * summary: One raw event in a captured session, before compilation. * score: 2 ### interface RCAdapter * file: src/platform/telephony/lib/embeddable-events.ts:249 * kind: interface * core: platform * spec: (none) * summary: Typed interface for the RingCentral Embeddable RCAdapter APIexposed on when the widget is loaded. * score: 2 ### interface RecommendationBodyArgs * file: src/platform/ai/agentic/intake-artifact.ts:21 * kind: interface * core: platform * spec: (none) * summary: Inputs for the human-readable recommendation body. * score: 2 ### interface RecommendedSkill * file: src/platform/ai/hooks/useRecommendedSkills.ts:27 * kind: interface * core: platform * spec: (none) * summary: A single recommended standard skill surfaced for confirm. * score: 2 ### interface RecommendedSkill * file: src/platform/ai/lib/onboarding-logic.ts:41 * kind: interface * core: platform * spec: (none) * summary: A recommended standard skill as surfaced by PF-62-EN-01's ranking. * score: 2 ### interface RecordAmendmentInput * file: src/platform/clinical/plan/record-amendment.ts:27 * kind: interface * core: platform * spec: (none) * summary: Input to record one plan amendment. * score: 2 ### interface RecorderState * file: src/platform/analytics/sessionRecorder.ts:123 * kind: interface * core: platform * spec: (none) * summary: Recorder state * score: 1 ### interface RecordingSession * file: src/platform/analytics/sessionRecorder.ts:64 * kind: interface * core: platform * spec: (none) * summary: Recording session metadata * score: 1 ### type RedactFn * file: src/platform/ai/phi-two-path-enforcer.ts:38 * kind: type * core: platform * spec: (none) * summary: The injected redactor (the canonical ). MAY throw fail-closed. * score: 2 ### interface RedactionContext * file: src/platform/ai/phi-redaction-core.ts:34 * kind: interface * core: platform * spec: (none) * summary: Caller-supplied literal identifiers to remove (names/MRNs/ids known from context). * score: 2 ### interface RedactionResult * file: src/platform/ai/phi-redaction-core.ts:43 * kind: interface * core: platform * spec: (none) * summary: Result of a redaction: PHI-safe text + per-category match counts (never values). * score: 2 ### interface RedirectOrgInfo * file: src/platform/theming/utils/canonical-redirect.ts:9 * kind: interface * core: platform * spec: (none) * summary: Org fields required for redirect eligibility check. * score: 2 ### interface RegisterEntraInput * file: src/platform/integrations/hooks/useEntraSetup.ts:26 * kind: interface * core: platform * spec: (none) * summary: Step-1 wizard input: primary domain (+ optional tenant, license SKU, BYO app id). * score: 2 ### interface RegistryToolDef * file: src/platform/ai/registry-tool-resolution.ts:23 * kind: interface * core: platform * spec: PF-127 * summary: A model tool definition (matches the shape consumed by the agentic loop). * see: * resolveRegistryToolDefs * score: 5 ### type RejectionAuditRpc * file: src/platform/ai/mcp-rejection-audit.ts:39 * kind: type * core: platform * spec: PF-127 * summary: Minimal Supabase RPC surface (production: ). * see: * auditMcpRejections * score: 5 ### interface ResolvedInstanceContext * file: src/platform/clinical/blocks/suicide/chart-resolver.ts:82 * kind: interface * core: platform * spec: (none) * summary: A extended with the resolved chart id. * score: 2 ### interface ResolvedSuiteBlockEntry * file: src/platform/clinical/blocks/suicide/fail-closed.ts:16 * kind: interface * core: platform * spec: (none) * summary: One resolved suite block from the CL-75 result. * score: 2 ### interface ResolvedSuiteRequirement * file: src/platform/clinical/blocks/suicide/fail-closed.ts:27 * kind: interface * core: platform * spec: (none) * summary: The required suite-block set plus whether the floor was applied. * score: 2 ### interface ResolvedTargetsWithPolicy * file: src/platform/ai/mapping-targets/resolveTargets.ts:96 * kind: interface * core: platform * spec: (none) * summary: A binding's resolved values paired with the strictness policy to enforce. * score: 2 ### type ResolveToolsRpc * file: src/platform/ai/registry-tool-resolution.ts:34 * kind: type * core: platform * spec: PF-127 * summary: Minimal Supabase RPC surface (production: ). * see: * resolveRegistryToolDefs * score: 5 ### type ResourceType * file: src/platform/quota/constants.ts:14 * kind: type * core: platform * spec: (none) * summary: Type-safe resource type union. * score: 2 ### type RHPermission * file: src/platform/permissions/constants.ts:2429 * kind: type * core: platform * spec: (none) * summary: Union of every Recovery Housing (RH) permission key. * score: 2 ### interface RichTextFieldSettings * file: src/platform/forms/components/fields/RichTextField.tsx:60 * kind: interface * core: platform * spec: (none) * summary: Rich text field settings * score: 1 ### interface RoleLicenseMapping * file: src/platform/integrations/hooks/useEntraRoleLicenseMap.ts:22 * kind: interface * core: platform * spec: (none) * summary: A single role → Microsoft Graph license-SKU mapping from: binds one PF-30 system role () to thelicense SKU that newly-provisioned employees in that role should receive. * score: 2 ### interface RosEntry * file: src/platform/clinical/blocks/ros-adapter.ts:20 * kind: interface * core: platform * spec: (none) * summary: One row: a per-system entry ( set) or the summary header ( null). * score: 2 ### type RosExtent * file: src/platform/clinical/blocks/ros-exam/ros-extent.ts:21 * kind: type * core: platform * spec: (none) * summary: The advisory 1997-DG ROS extent (matches the seeded PF-15 picklist). * score: 2 ### interface SafetyPlan * file: src/platform/clinical/blocks/suicide/safety-plan-adapter.ts:31 * kind: interface * core: platform * spec: (none) * summary: The safety\_plan block's form-value shape (field\_schema keys). * score: 2 ### interface SanitizationResult * file: src/platform/wizards/utils/sanitizeAnalyticsEvent.ts:143 * kind: interface * core: platform * spec: (none) * summary: Result of sanitization operation * score: 2 ### interface ScalarSettingDef * file: src/platform/provisioning/lib/moduleOverridesForm.ts:26 * kind: interface * core: platform * spec: (none) * summary: Scalar pf\_module\_settings a request may tune from the dialog. //mirror the pf\_module\_settings CHECK constraints + column DEFAULTs in the baseline DDL(00000000000000\_baseline\_2026\_05\_28\_ddl.sql) so the UI never offers a value the triggeror column constraint would reject. Each key is a member of the edge function'sMODULE\_SETTINGS\_COLUMNS whitelist, so it lands in a typed column (never custom\_fields). * score: 2 ### interface SchedulingReadClient * file: src/platform/scheduling/listIntakeProviderAvailability.ts:13 * kind: interface * core: platform * spec: (none) * summary: A structural subset of the Supabase client this read needs (so it is unit-testable). * score: 2 ### interface SchemaDiffEntry * file: src/platform/events/computeSchemaDiff.ts:6 * kind: interface * core: platform * spec: (none) * summary: Represents a single property change in a schema diff. * score: 2 ### interface SchemaDiffResult * file: src/platform/events/computeSchemaDiff.ts:14 * kind: interface * core: platform * spec: (none) * summary: Full diff result between two schemas. * score: 2 ### interface SchemaExportOptions * file: src/platform/forms/utils/schemaExport.ts:26 * kind: interface * core: platform * spec: (none) * summary: JSON Schema export options * score: 1 ### type ScreeningInstrument * file: src/platform/clinical/blocks/suicide/screening-routing.ts:15 * kind: type * core: platform * spec: (none) * summary: The validated instruments the screen routes between. * score: 2 ### interface ScreeningMappingInput * file: src/platform/ce/screeningToPatientMapping.ts:20 * kind: interface * core: platform * spec: (none) * summary: Input from screening attempt + result for mapping. * score: 2 ### interface ScreeningPatientMapping * file: src/platform/ce/screeningToPatientMapping.ts:6 * kind: interface * core: platform * spec: (none) * summary: Shape of mapped patient fields from screening data. * score: 2 ### interface ScreeningRoutingContext * file: src/platform/clinical/blocks/suicide/screening-routing.ts:18 * kind: interface * core: platform * spec: (none) * summary: Encounter age context + optional PF-96 threshold override. * score: 2 ### interface ScreenResultInput * file: src/platform/clinical/blocks/suicide/screening-routing.ts:46 * kind: interface * core: platform * spec: (none) * summary: The minimal screen result the positivity rule reads. * score: 2 ### type SdohDomainStatus * file: src/platform/clinical/blocks/sdoh-adapter.ts:43 * kind: type * core: platform * spec: (none) * summary: A per-domain screening result (PF-15 value). * score: 2 ### interface SdohScreening * file: src/platform/clinical/blocks/sdoh-adapter.ts:46 * kind: interface * core: platform * spec: (none) * summary: The sdoh\_screening block's form-value shape (field\_schema keys). * score: 2 ### interface SemanticDefinition * file: src/platform/analytics/semantic-compiler.ts:26 * kind: interface * core: platform * spec: (none) * summary: A registered semantic definition (subset of pf\_analytics\_semantic\_models needed to compile). * score: 2 ### type SemanticModelType * file: src/platform/analytics/semantic-compiler.ts:23 * kind: type * core: platform * spec: (none) * summary: PF-123 Embedded Analytics Platform — semantic-spec compiler (Tier-2 mediation).The runtime-agnostic heart of the mediation seam: it takes a client-suppliedanalytics query spec + the governed semantic registry allowlist and produces avalidated, normalized plan that a backend (DuckDB-WASM inPhase 1, a SQL target later) compiles to an actual query.It enforces two spec requirements independent of any runtime: - FR-4: only metric/dimension/filter keys present in the registry allowlist are accepted; unknown keys are rejected (the no-free-text-SQL boundary). - FR-12: the row-count budget (default 100k) is enforced at plan time; the execution-time budget (default 30s) is carried in the plan for the runtime to enforce. An over-budget request aborts with QUERY\_LIMIT\_EXCEEDED (AC-011).It also surfaces whether any selected definition is SUD-derived (FR-15), which theembed path uses to gate external rendering (AC-010) — this module does not itselfmake the consent decision.Pure + deterministic: no I/O, no Supabase, no DuckDB. Fully unit-testable. * score: 2 ### type SemanticRegistry * file: src/platform/analytics/semantic-compiler.ts:34 * kind: type * core: platform * spec: (none) * summary: The governed allowlist: key → definition. Built from pf\_analytics\_semantic\_models. * score: 2 ### interface ServeVerdict * file: src/platform/analytics/serving/kpi-suppression.ts:19 * kind: interface * core: platform * spec: (none) * summary: A pf\_analytics\_run verdict, loose enough to accept the edge fn's jsonb passthrough.No index signature — declared properties match AnalyticsRunResult so no cast is needed. * score: 2 ### interface ServingVerdict * file: src/platform/analytics/serving/mart-suppression.ts:123 * kind: interface * core: platform * spec: (none) * summary: A verdict as returned by the RPC: a status envelope carrying RAWaggregate rows (or an empty/pending state). Shape kept loose (index signature) so bothedge functions can pass the RPC's jsonb result straight through. * score: 2 ### interface SessionMetadata * file: src/platform/analytics/sessionRecorder.ts:77 * kind: interface * core: platform * spec: (none) * summary: Session metadata for analytics * score: 2 ### interface SessionRecorderConfig * file: src/platform/analytics/sessionRecorder.ts:97 * kind: interface * core: platform * spec: (none) * summary: Recorder configuration * score: 1 ### type SetupCompleteCheck * file: src/platform/setup/module-setup-registry.ts:10 * kind: type * core: platform * spec: (none) * summary: Module Guided Setup RegistryCentral registry for per-module guided setup: setup tour ids, setup wizard routes,and how to infer "setup complete" for the Getting Started card. * see: * docs/development/MODULE\_GUIDED\_SETUP.md * score: 5 ### type SidebarMode * file: src/platform/navigation/hooks/useNavigationContext.ts:7 * kind: type * core: platform * spec: (none) * summary: Sidebar display mode * score: 1 ### interface SignatureTemplate * file: src/platform/email-signatures/utils/templates.ts:6 * kind: interface * core: platform * spec: (none) * summary: Signature template definition * score: 1 ### interface SkillEnablementOverrideRow * file: src/platform/ai/lib/onboarding-logic.ts:34 * kind: interface * core: platform * spec: (none) * summary: The org-scoped enablement override row this wizard upserts when a recommendedskill is confirmed. Mirrors the real write shape used by (keyed on , ).Org-profile text is NEVER written here — runtime injection (PF-62-EN-01) carriesit (AC-7). * score: 2 ### type SkillRouting * file: src/platform/ai/wizards/ai-skill-creation/routing.ts:18 * kind: type * core: platform * spec: (none) * summary: Where Step 5 routes the create: self-activate now, or submit for PF-120 approval. * score: 2 ### type SkuValidation * file: src/platform/integrations/entra-skus.ts:24 * kind: type * core: platform * spec: (none) * summary: Result of validating a SKU id against the (possibly unavailable) catalog. * score: 2 ### interface SLADashboardStats * file: src/platform/sla/hooks/useSLADashboard.ts:12 * kind: interface * core: platform * spec: (none) * summary: Dashboard statistics for SLA overview. * score: 2 ### type SLAEventType * file: src/platform/sla/services/sla-notifications.ts:10 * kind: type * core: platform * spec: (none) * summary: SLA event types for notification dispatch. * score: 2 ### interface SLAInstanceFilters * file: src/platform/sla/hooks/useSLAInstances.ts:22 * kind: interface * core: platform * spec: (none) * summary: Filters for SLA instance queries. * score: 2 ### interface SLANotificationPayload * file: src/platform/sla/services/sla-notifications.ts:13 * kind: interface * core: platform * spec: (none) * summary: Payload for SLA notification events (IDs only — no PHI). * score: 2 ### interface SLAStatusBadgeProps * file: src/platform/sla/components/SLAIndicator.tsx:80 * kind: interface * core: platform * spec: (none) * summary: Presentational SLA status badge for shared use across cores. * score: 2 ### interface SmallCellResult * file: src/platform/analytics/suppression.ts:32 * kind: interface * core: platform * spec: (none) * summary: The result of masking a single grouped count. is the true integer count when visible and when suppressed — the smallcount never survives into a payload. is a render-ready token. * score: 2 ### type SortErrorCode * file: src/platform/table-v2/utils/sort/errors.ts:7 * kind: type * core: platform * spec: (none) * summary: PF-57: Sort Configuration ErrorsError types for sort validation. * score: 2 ### type SsoGateResult * file: src/platform/auth/sso/useSsoLogin.ts:32 * kind: type * core: platform * spec: (none) * summary: Outcome of the known-employees-only SSO gate (): - : the active session was not established via SSO, so no gate applies, - : the identity matched a known employee and may proceed, - : no matching employee record — the JIT account was revoked and the user signed out; is a user-safe explanation, - : the match check itself failed; carries a sanitized message. * score: 2 ### type SsoLoginMode * file: src/platform/auth/sso/useSsoLogin.ts:56 * kind: type * core: platform * spec: (none) * summary: How a given email domain signs in: shared-app Entra OIDC (PF-112-EN-01),per-org SAML (PF-112), or not federated at all. * score: 2 ### interface SsoSetupWizardProps * file: src/platform/auth/sso/SsoSetupWizard.tsx:65 * kind: interface * core: platform * spec: (none) * summary: Props for : controlled dialog open state, its change handler, and an optional callback fired once SSO is activated. * score: 2 ### interface StorageBinding * file: src/platform/clinical/blocks/adapter-registry.ts:21 * kind: interface * core: platform * spec: (none) * summary: A block's JSONB as stored on . * score: 2 ### interface SubmitAiSkillInput * file: src/platform/ai/hooks/useSkillLifecycleMutations.ts:33 * kind: interface * core: platform * spec: (none) * summary: Input for submitting a skill for activation/review. * score: 2 ### type SudEmbedGateReason * file: src/platform/analytics/embed/sud-embed-gate.ts:27 * kind: type * core: platform * spec: (none) * summary: PF-123 — SUD-embed consent gate decision (FR-15 / AC-010 / NFR-priv-3; compliance Cond 1).Fail-closed policy for the external signed-embed path: a metric flagged SUD-derived(42 CFR Part 2) may render on an external embed ONLY when the organization holds anexplicit, standing per-org Part-2-embed authorization — an attestation that the programhas the §2.31 disclosure authorization required to surface SUD-derived aggregates outsidethe Encore app. Absent that authorization, zero SUD-derived values are returned. Non-SUDmetrics always pass.This module is the *tested specification* of the policy. The authoritative, unbypassableenforcement lives server-side in (the embed branch returns) — the edge function relies on that RPC gate(it does not re-decide). This function exists to (a) pin the fail-closed truth table in aunit test (the SQL gate mirrors it) and (b) let the in-app mint UI, via the consent seam (), warn an admin beforeminting a token for a dashboard that contains SUD-derived metrics.Why fail-closed is correct under every legal reading of "per-recipient Part 2 consentposture" (FR-15): if compliance later rules that aggregate SUD embed is impossible, theauthorization flag is simply never set and SUD stays blocked everywhere — no rework. Ifcompliance ratifies the org-attestation model, the flag is the switch that enables it.Pure + deterministic: no I/O. Fully unit-testable (AC-010). * score: 2 ### interface SuggestedWorkspaceCardProps * file: src/platform/navigation/workspaces/admin/SuggestedWorkspaceCard.tsx:34 * kind: interface * core: platform * spec: (none) * summary: Props for : the recommendation row plus accept/edit/dismiss handlers and an in-flight flag. * score: 2 ### interface SuicideAssessment * file: src/platform/clinical/blocks/suicide/suicide-assessment-adapter.ts:23 * kind: interface * core: platform * spec: (none) * summary: The assessment block's form-value shape (field\_schema keys). * score: 2 ### interface SuicideScreen * file: src/platform/clinical/blocks/suicide/suicide-screen-adapter.ts:24 * kind: interface * core: platform * spec: (none) * summary: The screen block's form-value shape (field\_schema keys). * score: 2 ### interface SuiteRequiredness * file: src/platform/clinical/blocks/suicide/requiredness.ts:35 * kind: interface * core: platform * spec: (none) * summary: Which suite fields are required for the current context. * score: 2 ### interface SuiteRequirednessInput * file: src/platform/clinical/blocks/suicide/requiredness.ts:23 * kind: interface * core: platform * spec: (none) * summary: Inputs that drive the suite's conditional field requiredness. * score: 2 ### interface SuiteResolutionInput * file: src/platform/clinical/blocks/suicide/fail-closed.ts:22 * kind: interface * core: platform * spec: (none) * summary: The suite resolution payload (a subset of the CL-75 resolved surface). * score: 2 ### interface SupabaseRpcClient * file: src/platform/ai/agentic/intake-rpc-adapters.ts:14 * kind: interface * core: platform * spec: (none) * summary: The narrow Supabase surface these adapters need (production: ). * score: 2 ### interface SuppressedCell * file: src/platform/analytics/complementary-suppression.ts:34 * kind: interface * core: platform * spec: (none) * summary: A masked table cell: plus why it was suppressed. * score: 2 ### interface SurfaceCompletenessParams * file: src/platform/clinical/completeness/getSurfaceDocumentationCompleteness.ts:27 * kind: interface * core: platform * spec: (none) * summary: Parameters identifying the encounter/surface to score. * score: 2 ### type SystemPermission * file: src/platform/permissions/constants.ts:2449 * kind: type * core: platform * spec: (none) * summary: Union of every system-level permission key. * score: 2 ### interface TbScreeningIndicator * file: src/platform/clinical/blocks/ros-exam/tb-screening.ts:26 * kind: interface * core: platform * spec: (none) * summary: The computed TB-screening-due indicator for a residential admission. * score: 2 ### interface TbScreeningIndicatorParams * file: src/platform/clinical/blocks/ros-exam/tb-screening.ts:63 * kind: interface * core: platform * spec: (none) * summary: Parameters identifying the admission to compute the indicator for. * score: 2 ### interface TextDiffResult * file: src/platform/documents/utils/documentDiff.ts:21 * kind: interface * core: platform * spec: (none) * summary: Result of computing a text diff between two strings * score: 2 ### interface ThemeDiffMismatch * file: src/platform/theming/utils/diffTheme.ts:20 * kind: interface * core: platform * spec: (none) * summary: A single drift entry produced by . * score: 2 ### interface ThemeDiffResult * file: src/platform/theming/utils/diffTheme.ts:31 * kind: interface * core: platform * spec: (none) * summary: Result returned by . * score: 1 ### interface ThrottleLimitConfig * file: src/platform/workflow/execution.ts:119 * kind: interface * core: platform * spec: (none) * summary: A single active FW-53 rate-limit configuration. * score: 2 ### interface ThrottleStatus * file: src/platform/workflow/execution.ts:126 * kind: interface * core: platform * spec: (none) * summary: Read-only snapshot of FW-53 throttle posture for an org/workflow. * score: 2 ### type TileSpan * file: src/platform/analytics/dashboard/layout-types.ts:13 * kind: type * core: platform * spec: (none) * summary: Column span on the responsive 4-col canvas (collapses to 1 on mobile). * score: 2 ### interface TransformConfig * file: src/platform/import/mapping/applyTransforms.ts:19 * kind: interface * core: platform * spec: (none) * summary: Configuration for a transform. * score: 2 ### interface TransformPreviewProps * file: src/platform/settings/pages/data-migration/components/TransformPreviewCard.tsx:18 * kind: interface * core: platform * spec: (none) * summary: Props for the component. * score: 1 ### interface TransformRules * file: src/platform/settings/pages/data-migration/components/TransformRulesEditor.tsx:15 * kind: interface * core: platform * spec: (none) * summary: Shape of the transform\_rules JSON stored on each mapping. * score: 2 ### interface TransformRulesEditorProps * file: src/platform/settings/pages/data-migration/components/TransformRulesEditor.tsx:23 * kind: interface * core: platform * spec: (none) * summary: Props for the component. * score: 1 ### type TransformType * file: src/platform/import/mapping/applyTransforms.ts:16 * kind: type * core: platform * spec: (none) * summary: Union of the supported field-transform names (see ). * score: 2 ### interface UnreadStats * file: src/platform/messaging/utils/unreadCalculator.ts:5 * kind: interface * core: platform * spec: (none) * summary: Unread count calculation utilities * score: 2 ### type UpdateAgentPatch * file: src/platform/cowork/agentsService.ts:37 * kind: type * core: platform * spec: (none) * summary: Fields an admin may patch on an existing agent. * score: 2 ### interface UpdateRecommendationStatusInput * file: src/platform/navigation/workspaces/admin/useWorkspaceMutations.ts:247 * kind: interface * core: platform * spec: (none) * summary: Arguments for : the recommendation and its new terminal . * score: 2 ### interface UpdateWorkspaceInput * file: src/platform/navigation/workspaces/admin/useWorkspaceMutations.ts:173 * kind: interface * core: platform * spec: (none) * summary: Arguments for : the workspace plus the partial column to apply. * score: 2 ### interface UseControlledPaginationOptions * file: src/platform/table-v2/utils/pagination/hooks.ts:193 * kind: interface * core: platform * spec: (none) * summary: Options for useControlledPagination hook * score: 2 ### interface UseCoworkPresenceReturn * file: src/platform/cowork/useCoworkPresence.ts:25 * kind: interface * core: platform * spec: (none) * summary: Return type for useCoworkPresence. * score: 2 ### type UseExemptionDisclosureGate * file: src/platform/clinical/ceem/disclosure-gate.contract.ts:92 * kind: type * core: platform * spec: (none) * summary: Read-only hook contract for the compliance console. NEVER builds payloadsclient-side — it only surfaces the server gate's decision state. * score: 2 ### interface UsePaginationOptions * file: src/platform/table-v2/utils/pagination/hooks.ts:17 * kind: interface * core: platform * spec: (none) * summary: Options for usePagination hook * score: 2 ### interface UsePaginationReturn * file: src/platform/table-v2/utils/pagination/hooks.ts:35 * kind: interface * core: platform * spec: (none) * summary: Return type for usePagination hook * score: 2 ### type UseWorkflowEnqueueVariables * file: src/platform/workflow/useWorkflowEnqueue.ts:23 * kind: type * core: platform * spec: (none) * summary: Input to the hook's mutate function; is optional (defaults to current org). * score: 2 ### interface ValidatedShareData * file: src/platform/dashboard/hooks/useDashboardShares.ts:151 * kind: interface * core: platform * spec: (none) * summary: Share token validation result with proper typing * score: 2 ### interface ValidationContext * file: src/platform/wizards/utils/validationExpressionEvaluator.ts:30 * kind: interface * core: platform * spec: (none) * summary: Context for validation expression evaluation * score: 2 ### interface ValidationExpressionResult * file: src/platform/wizards/utils/validationExpressionEvaluator.ts:20 * kind: interface * core: platform * spec: (none) * summary: Result of a validation expression evaluation * score: 2 ### interface ValidationFunctionDoc * file: src/platform/wizards/utils/validationFunctions.ts:453 * kind: interface * core: platform * spec: (none) * summary: Function metadata for documentation * score: 2 ### interface ValidationItem * file: src/platform/workflow/utils/diagramValidation.ts:27 * kind: interface * core: platform * spec: (none) * summary: A single validation finding. * score: 1 ### interface ValidationResult * file: src/platform/workflow/utils/diagramValidation.ts:35 * kind: interface * core: platform * spec: (none) * summary: Result of diagram validation containing errors and warnings. * score: 2 ### type ValueDecision * file: src/platform/import/components/ValueMappingStep.tsx:57 * kind: type * core: platform * spec: (none) * summary: The user's decision for a single incoming value on a bound field:- : remap to - : pass through unchanged (may cause a validation error later) * score: 2 ### interface ValueMappingStepProps * file: src/platform/import/components/ValueMappingStep.tsx:65 * kind: interface * core: platform * spec: (none) * summary: Props for : the parsed source data, the current field mappings to reconcile, and completion/back callbacks. * score: 2 ### type ValueMatchResult * file: src/platform/import/mapping/valueMatching.ts:29 * kind: type * core: platform * spec: (none) * summary: The classification result for a single distinct incoming value. * score: 2 ### type VendorBaaStatus * file: src/platform/transcription/admin/lib/deriveBaaStatus.ts:11 * kind: type * core: platform * spec: (none) * summary: PF-100 H2: Derive BAA status from signature, expiry, vault credential,and an explicit revocation flag. Single source of truth used by both thedialog (live preview) and (authoritative write).Mirrors the DB status guard (,auto-expire when ) and adds the credential gatethat enforces at session time. * score: 2 ### interface VersionComparisonResult * file: src/platform/documents/hooks/useDocumentVersionComparison.ts:21 * kind: interface * core: platform * spec: (none) * summary: Result shape for version comparison * score: 2 ### interface VitalSigns * file: src/platform/clinical/blocks/vitals-adapter.ts:28 * kind: interface * core: platform * spec: (none) * summary: The vitals block's form-value shape (field\_schema keys = cl\_vital\_signs columns). * score: 2 ### interface WidgetDataDescriptor * file: src/platform/dashboard/hooks/useWidgetData.ts:7 * kind: interface * core: platform * spec: (none) * summary: Describes a single widget data read serviced by the pf\_widget\_query broker. The broker independently re-validates and against its server-side allowlist, so this is a request of intent, not a trust boundary. * score: 2 ### interface WorkspaceInsert * file: src/platform/navigation/workspaces/admin/useWorkspaceMutations.ts:40 * kind: interface * core: platform * spec: (none) * summary: Insert payload shape — mirrors the table schema (id, created\_at/updated\_at, audit cols are server-defaulted). * score: 2 ### interface WorkspaceNavResult * file: src/platform/navigation/hooks/useWorkspaceNav.ts:16 * kind: interface * core: platform * spec: (none) * summary: Output of : the resolved (or if the id is unknown), its permission-filtered, ordered nav , and an flag that stays true while any referenced core is absent from themodule-registry snapshot. * score: 2 ### type WorkspaceOrigin * file: src/platform/navigation/workspaces/admin/useWorkspaceMutations.ts:37 * kind: type * core: platform * spec: (none) * summary: How a workspace definition came to exist, used for provenance and UI badging: (a tenant edit of a shipped seed workspace), (authored from scratch by an admin), or (materialized from anaccepted suggestion). * score: 2 ### type WorkspaceUpdate * file: src/platform/navigation/workspaces/admin/useWorkspaceMutations.ts:56 * kind: type * core: platform * spec: (none) * summary: Update payload — every column optional EXCEPT the immutable identity (workspace\_key is enforced upstream). * score: 2 ## Hooks ### hook useAccessToken * file: src/platform/auth/useCurrentUser.ts:111 * kind: hook * core: platform * spec: (none) * summary: Hook to get a fresh access token for API calls.Returns a function that fetches the current access token on demand.This ensures the token is always fresh when making API calls. * example: | const getAccessToken = useAccessToken();const token = await getAccessToken();if (!token) throw new Error('Not authenticated'); * score: 4 ### hook useActiveCallContext * file: src/platform/telephony/hooks/useActiveCallContext.ts:58 * kind: hook * core: platform * spec: (none) * summary: Hook to match a phone number to CRM contacts and partners.Caches results to prevent repeated lookups for the same number. * params: * phoneNumber — The phone number to match (will be normalized) * returns: Contact and partner match results * example: | const contact, partner, isMatching = useActiveCallContext(activeCall?.from.phoneNumber);if (contact) console.log('Call from:', contact.first\_name, contact.last\_name); * score: 4 ### hook useActiveLeadsForConversion * file: src/platform/ce/useActiveLeadsForConversion.ts:39 * kind: hook * core: platform * spec: (none) * summary: Fetches active CE leads (new, contacted, qualified, nurturing) with optionaldebounced search on contact first/last name. For cross-core use by PM. * score: 4 ### hook useActiveTheme * file: src/platform/theming/hooks/useTenantTheme.ts:36 * kind: hook * core: platform * spec: (none) * summary: Fetch the active theme for the current organization.Returns if no theme row exists (empty state). * score: 4 ### hook useActiveWizard * file: src/platform/wizards/hooks/useActiveWizard.ts:20 * kind: hook * core: platform * spec: (none) * summary: Hook for managing active wizard. * score: 1 ### hook useActivityAwareSessionRefresh * file: src/platform/auth/useActivityAwareSessionRefresh.ts:16 * kind: hook * core: platform * spec: (none) * summary: Keeps active users signed in by refreshing the Supabase sessionbefore server-side inactivity timeout elapses.Intentionally does not refresh while idle, so true inactivity canstill expire the session according to Supabase auth policy. * score: 4 ### hook useAddEmployeeToSharePoint * file: src/platform/integrations/hooks/useEmployeeEntraMemberships.ts:199 * kind: hook * core: platform * spec: (none) * summary: Manually add employee to a SharePoint group * score: 4 ### hook useAddEmployeeToTeam * file: src/platform/integrations/hooks/useEmployeeEntraMemberships.ts:112 * kind: hook * core: platform * spec: (none) * summary: Manually add employee to a Team * score: 4 ### hook useAddIpAllowlist * file: src/platform/security/hooks/useIpListMutations.ts:22 * kind: hook * core: platform * spec: (none) * summary: Hook for managing add ip allowlist. * score: 1 ### hook useAddIpBlocklist * file: src/platform/security/hooks/useIpListMutations.ts:80 * kind: hook * core: platform * spec: (none) * summary: Hook for managing add ip blocklist. * score: 1 ### hook useAddReportPermission * file: src/platform/reports/hooks/useReportPermissions.ts:44 * kind: hook * core: platform * spec: (none) * summary: Mutation hook for adding a report permission. * score: 4 ### hook useAddThreadAgent * file: src/platform/cowork/useThreads.ts:64 * kind: hook * core: platform * spec: (none) * summary: Add an attributed agent participant to a thread. * score: 4 ### hook useAggregatedFieldStats * file: src/platform/forms/hooks/useFieldInteractionStats.ts:86 * kind: hook * core: platform * spec: (none) * summary: Get aggregated field stats across the date range * score: 4 ### hook useAIAvailability * file: src/platform/ai/hooks/useAIAvailability.ts:91 * kind: hook * core: platform * spec: (none) * summary: Monitor AI availability and surface the correct degradation decision.Typical usage in a clinical or billing component: * params: * options — Optional . * score: 3 ### hook useAIChat * file: src/platform/ai/hooks/useAIChat.ts:75 * kind: hook * core: platform * spec: (none) * summary: Manages AI chat state and streaming responses from the Lovable AI Gateway.Provides message state, loading/error indicators, and actions to send messages with streaming assistant responses,clear conversation history, stop an in-progress stream, and replace messages. Creates a React hook that:- stores conversation messages and loading/error state,- streams assistant responses incrementally and updates messages as chunks arrive,- authenticates requests using the current Supabase session access token. * params: * options — Configuration for the chat hook. - initialMessages: optional initial conversation messages - systemPrompt: optional system prompt to override the generated system prompt - moduleContext: optional module context passed to the AI gateway * returns: The chat API: - messages: current conversation messages - isLoading: while a response is streaming - error: last encountered Error or - sendMessage(content: string): sends a user message and streams the assistant response - clearMessages(): clears the conversation and error - stopStream(): aborts the current streaming request - setMessages: React state setter for messages * example: | function ChatComponent() const messages, isLoading, sendMessage, clearMessages, stopStream = useAIChat(); // send a message useEffect(() = sendMessage('Hello'); , \[]); return null; * score: 4 ### hook useAIConversation * file: src/platform/ai/hooks/useAIConversation.ts:46 * kind: hook * core: platform * spec: (none) * summary: Hook for managing aiconversation. * score: 1 ### hook useAIConversations * file: src/platform/ai/hooks/useAIConversations.ts:44 * kind: hook * core: platform * spec: (none) * summary: Hook for managing aiconversations. * score: 1 ### hook useAIFeedback * file: src/platform/ai/hooks/useAIFeedback.ts:24 * kind: hook * core: platform * spec: (none) * summary: Hook for managing aifeedback. * score: 1 ### hook useAIMappingSuggestions * file: src/platform/ai/hooks/useAIMappingSuggestions.ts:80 * kind: hook * core: platform * spec: (none) * summary: Mutation hook for AI mapping suggestions. Returns the raw result; consumerskey back to their rows. * score: 4 ### hook useAIModuleEnabled * file: src/platform/ai/hooks/useAIModuleEnabled.ts:42 * kind: hook * core: platform * spec: (none) * summary: Hook for managing aimodule enabled. * score: 1 ### hook useAISkill * file: src/platform/ai/hooks/useAISkill.ts:48 * kind: hook * core: platform * spec: (none) * summary: Load an AI skill by code, applying organization-specific overrides and falling back to the general assistant when needed. Fetches the active AI skill matching (or the fallback code when is undefined), prefers an organization-specific skill over a system skill, retrieves any organization override, and returns the merged effective skill along with query state and controls. * params: * skillCode — string | undefined - The skill code to load; when omitted the is used. * options — UseAISkillOptions - Optional settings for the hook. Supported option: (default: ) to enable or disable the underlying query. * returns: UseAISkillReturn - An object containing: - : The EffectiveAISkill (skill merged with organization override) or if no active skill was found. - : Loading state of the underlying query. - : An when the query failed, otherwise . - : Function to manually refetch the skill. * example: | const skill, isLoading, error, refetch = useAISkill('sales\_assistant', enabled: true ); * score: 4 ### hook useAISkillChat * file: src/platform/ai/hooks/useAISkillChat.ts:97 * kind: hook * core: platform * spec: (none) * summary: Provides a skill-aware chat hook that manages conversation state, streams assistant responses, and exposes controls to send, clear, and abort messages. Initializes and returns chat state and actions tied to an AI skill (explicit or module default). Handles streaming assistant responses from the platform chat endpoint, incremental message updates, authentication via Supabase, and stream cancellation. * params: * options — Configuration for the chat hook: - skillCode?: string — explicit skill code to use; when provided, the hook loads that skill. - moduleContext?: AIModuleContext — module context used to resolve a default skill when no explicit skillCode is provided. - initialMessages?: AIMessage\[] — initial conversation messages to preload into the chat state. * returns: UseAISkillChatReturn - An object containing: - messages: current conversation messages - isLoading: whether an assistant response is currently streaming - error: last error encountered, if any - sendMessage(content: string): send a user message and stream the assistant response - clearMessages(): clear all messages and reset error - stopStream(): abort the active streaming response - setMessages: React state setter for messages - activeSkill: the currently selected EffectiveAISkill or null - isSkillLoading: whether the active skill is loading - setSkillCode(code: string): update the explicit skill code * example: | const messages, isLoading, sendMessage, stopStream = useAISkillChat( moduleContext, initialMessages: \[ id: '1', role: 'user', content: 'Hi', timestamp: new Date() ]); * score: 4 ### hook useAISkills * file: src/platform/ai/hooks/useAISkills.ts:55 * kind: hook * core: platform * spec: (none) * summary: Fetches and returns the effective AI skills available to the current organization, applying optional filters and organization-specific overrides. Builds a cached query that retrieves skills from the pf\_ai\_skills table, optionally filters by category/module and activity, merges organization overrides from pf\_ai\_skill\_overrides (when an organization context exists) to produce EffectiveAISkill objects, and filters out skills that are disabled by an override. * params: * options — Options to control which skills to fetch and whether the query is enabled - category: Optional category to filter skills by - module: Optional module name to filter skills; skills with a null module are included when a module is provided - includeInactive: If true, include skills where is\_active is false; defaults to false - enabled: If false, disables the underlying query; defaults to true * returns: UseAISkillsReturn - An object containing: - skills: EffectiveAISkill\[] — the array of merged, enabled skills (empty array when none) - isLoading: boolean — whether the query is currently loading - error: Error | null — the error encountered when fetching skills, or null - refetch: () = void — function to manually refetch the query * example: | const skills, isLoading, error, refetch = useAISkills( category: 'assistant', includeInactive: false ); * score: 4 ### hook useAiSkillVersions * file: src/platform/ai/hooks/useAiSkillVersions.ts:41 * kind: hook * core: platform * spec: (none) * summary: Returns the immutable version snapshots for a skill, ordered by descending. * params: * skillId — The whose history to load; when falsy the query is disabled. * returns: An object with the array (newest first), , , and . * score: 4 ### hook useAIStructuredOutput * file: src/platform/ai/hooks/useAIStructuredOutput.ts:51 * kind: hook * core: platform * spec: (none) * summary: Hook for managing AI structured output.When every attempt (initial + retries) fails, the hook sets ,surfaces a sanitized error toast (via sonner) so failures are neversilent no-ops, and resolves to . * score: 1 ### hook useAISuggestions * file: src/platform/ai/hooks/useAISuggestions.ts:43 * kind: hook * core: platform * spec: (none) * summary: Hook for managing aisuggestions. * score: 1 ### hook useAITemplateGenEnabled * file: src/platform/templates/hooks/useAITemplateGenEnabled.ts:17 * kind: hook * core: platform * spec: (none) * summary: Returns whether AI template generation is enabled for the current organization. * returns: — is until confirmed from DB. * score: 4 ### hook useAIUsageStats * file: src/platform/ai/hooks/useAIUsageStats.ts:35 * kind: hook * core: platform * spec: (none) * summary: Hook for managing aiusage stats. * score: 1 ### hook useAIWizardGeneration * file: src/platform/wizards/ai/useAIWizardGeneration.ts:74 * kind: hook * core: platform * spec: (none) * summary: Hook for managing aiwizard generation. * score: 1 ### hook useAlertConfigs * file: src/platform/health/hooks/useAlertConfigs.ts:32 * kind: hook * core: platform * spec: (none) * summary: Hook for managing alert configs. * score: 1 ### hook useAlertHistory * file: src/platform/health/hooks/useAlertHistory.ts:39 * kind: hook * core: platform * spec: (none) * summary: Hook for managing alert history. * score: 1 ### hook useAllModulePermissions * file: src/platform/permissions/hooks/useAllModulePermissions.ts:39 * kind: hook * core: platform * spec: (none) * summary: Hook to fetch all permissions grouped by module * score: 4 ### hook useAllModuleSettings * file: src/platform/modules/useAllModuleSettings.ts:36 * kind: hook * core: platform * spec: (none) * summary: Hook for managing all module settings. * score: 1 ### hook useAllRecentActivity * file: src/platform/modules/useAllRecentActivity.ts:19 * kind: hook * core: platform * spec: (none) * summary: Batched hook that fetches recent activity for ALL modules in a single query,preventing N+1 API calls on the AppLauncher page. * score: 4 ### hook useAllWorkspaces * file: src/platform/navigation/workspaces/useAllWorkspaces.ts:20 * kind: hook * core: platform * spec: (none) * summary: Merge code seeds with the org's DB rows. Strategy: - A DB row whose matches a seed OVERRIDES that seed. - A DB row with HIDES its target (seed or DB-only). - A DB row whose doesn't match a seed is ADDED as a new workspace. - Seeds without an overriding DB row are preserved verbatim (provisional:true).Order: seeds (in declaration order, minus disabled), then DB-only rows in DB order. * score: 4 ### hook useAnalyticsConnectors * file: src/platform/analytics/hooks/useAnalyticsConnectors.ts:66 * kind: hook * core: platform * spec: (none) * summary: Returns the list of connectors for (RLS-scoped to org members; writes go throughthe approval + credential RPCs). The mutation invalidates the query cache onsuccess so the status badge refreshes immediately. * score: 4 ### hook useAnalyticsQuery * file: src/platform/analytics/hooks/useAnalyticsQuery.ts:79 * kind: hook * core: platform * spec: (none) * summary: Imperative form — run a query on demand (the builder's "Run" action). * score: 4 ### hook useAnalyticsQueryResult * file: src/platform/analytics/hooks/useAnalyticsQuery.ts:95 * kind: hook * core: platform * spec: (none) * summary: Declarative form — cache a dashboard/widget's result keyed by org + spec. * score: 4 ### hook useAnalyticsTheme * file: src/platform/analytics/hooks/useAnalyticsTheme.ts:47 * kind: hook * core: platform * spec: (none) * summary: Convenience: the org's default theme (or the first one), for chart rendering. * score: 4 ### hook useAnnouncer * file: src/platform/a11y/announcer.ts:58 * kind: hook * core: platform * spec: (none) * summary: Provides a function to announce messages to screen readers via aria-live regions.Uses a singleton DOM element per priority level to avoid duplicate announcements.Messages are automatically cleared after 3 seconds. * returns: Object with function * score: 4 ### hook useApiActivityLog * file: src/platform/api-access/hooks/useApiActivityLog.ts:15 * kind: hook * core: platform * spec: (none) * summary: Fetches paginated audit logs for API access entities. * score: 4 ### hook useApiKeyList * file: src/platform/api-access/hooks/useApiKeyList.ts:20 * kind: hook * core: platform * spec: (none) * summary: Fetches API keys for a given service account. * params: * serviceAccountId — The service account to list keys for * score: 4 ### hook useAppLockState * file: src/platform/auth/app-lock/useAppLockState.ts:134 * kind: hook * core: platform * spec: (none) * summary: Central app-lock state machine. Manages policy, PIN, lockout, biometric,and lock triggers in a single composable hook. * score: 4 ### hook useApplyApprovalChainTemplate * file: src/platform/templates/hooks/useApplyApprovalChainTemplate.ts:56 * kind: hook * core: platform * spec: (none) * summary: Apply an approval chain template and produce resolved approvers for each step.Provides a mutation to resolve approvers for every step of a given approval chain template.The hook validates the current organization, fetches the template (scoped to the organization or system templates),resolves each step's approver, increments the template usage count, and returns the resolved configuration.The caller is responsible for persisting any workflow or approval records. * returns: An object containing: - : a mutation object with methods to trigger the resolution (e.g., , ) and its state, - : when the mutation is pending, otherwise. * example: | // Resolve approvers and then create workflow records using the returned resolved stepsconst apply, isLoading = useApplyApprovalChainTemplate();apply.mutateAsync( templateId: 'tpl\_123', entityType: 'invoice', entityId: 'inv\_456', submitterId: 'user\_789',).then(( templateId, resolvedSteps ) = // create approval workflow records using resolvedSteps); * score: 4 ### hook useApplyApprovalTemplateToFWChain * file: src/platform/templates/hooks/useApplyApprovalTemplateToFWChain.ts:110 * kind: hook * core: platform * spec: (none) * summary: Create an FW approval chain from a PF-64 approval chain template and provide a mutation to apply it.The returned mutation fetches a PF-64 template, resolves dynamic approvers per step, creates a corresponding FW approval chain and its steps, rolls back the created chain if any step insertion fails, and attempts a non-blocking increment of the template usage. On success it invalidates relevant queries and shows a success toast; on failure it shows an error toast with a sanitized message. * returns: A React Query mutation result () whose mutate function accepts and resolves to . * score: 4 ### hook useApplyHolidayTemplate * file: src/platform/calendar/hooks/use-apply-holiday-template.ts:23 * kind: hook * core: platform * spec: (none) * summary: Returns a mutation that applies a holiday template to a business calendar. * params: * calendarId — UUID of the target calendar. * organizationId — UUID of the organization. * returns: React Query mutation object. * score: 4 ### hook useApplyModulePreset * file: src/platform/modules/hooks/useApplyModulePreset.ts:21 * kind: hook * core: platform * spec: (none) * summary: Hook for managing apply module preset. * score: 1 ### hook useApplyTemplate * file: src/platform/dashboard/hooks/useApplyTemplate.ts:31 * kind: hook * core: platform * spec: (none) * summary: Hook for managing apply template. * score: 1 ### hook useApprovalChainTemplate * file: src/platform/templates/hooks/useApprovalChainTemplate.ts:23 * kind: hook * core: platform * spec: (none) * summary: Fetches a single approval chain template by its ID. Queries the Supabase table for the template with the given . * params: * templateId — The UUID of the approval chain template to fetch * returns: UseQueryResultApprovalChainTemplate, Error containing the fetched template or if not found * example: | const data, error, isLoading = useApprovalChainTemplate('uuid-here'); * score: 4 ### hook useApprovalChainTemplateMutation * file: src/platform/templates/hooks/useApprovalChainTemplateMutation.ts:53 * kind: hook * core: platform * spec: (none) * summary: Provides mutation hooks for creating, updating, deleting, and setting the default approval chain templates scoped to the current organization and user. Returns React Query mutation objects for managing approval chain templates. Each mutation is scoped to the current organization and includes success/error toasts and invalidation of the templates query key. * returns: An object containing: - : Mutation for inserting a new approval chain template (accepts ). - : Mutation for updating an existing approval chain template (accepts ). - : Mutation for deleting an unused, non-system approval chain template (accepts ). - : Mutation for setting a template as the default for a category (accepts ). - : that is when any of the above mutations are in flight. * example: | const create, update, remove, setDefault = useApprovalChainTemplateMutation(); * score: 4 ### hook useApprovalChainTemplates * file: src/platform/templates/hooks/useApprovalChainTemplate.ts:116 * kind: hook * core: platform * spec: (none) * summary: Fetches approval chain templates for an organization with optional filters and ordering.Prefers organization-specific templates and can optionally include system templates. Supports filtering by category, default status, and text search, and accepts an explicit organizationId to override the current organization context. Fetch approval chain templates for an organization with optional filters. * params: * filters — Partial filter set: - organizationId: explicit organization id to query (overrides current organization) - includeSystem: when true, include system templates alongside organization templates - category: filter templates by category - isDefault: filter templates by default flag - search: case-insensitive substring match against template name * returns: The React Query result containing when available. * example: | const data: templates = useApprovalChainTemplates( category: 'policy', includeSystem: true,); * score: 4 ### hook useApprovalInbox * file: src/platform/approvals/hooks/useApprovalInbox.ts:38 * kind: hook * core: platform * spec: (none) * summary: Hook for managing approval inbox (org-scoped pending assignments). * score: 1 ### hook useApprovalNotifications * file: src/platform/documents/hooks/useApprovalNotifications.ts:45 * kind: hook * core: platform * spec: (none) * summary: Hook for managing approval notifications. * score: 1 ### hook useApprovalWorkflow * file: src/platform/documents/hooks/useApprovalWorkflow\.ts:34 * kind: hook * core: platform * spec: (none) * summary: Hook for managing approval workflow. * score: 1 ### hook useApproveAiSkill * file: src/platform/ai/hooks/useAiSkillLifecycle.ts:19 * kind: hook * core: platform * spec: (none) * summary: Approve an in\_review skill (gates on pf.ai\_skills.approve; approver ≠ submitter for regulated). * score: 4 ### hook useAppVersion * file: src/platform/pwa/hooks/useAppVersion.ts:16 * kind: hook * core: platform * spec: (none) * summary: Hook for managing app version. * score: 1 ### hook useArchiveServiceAccount * file: src/platform/api-access/hooks/useServiceAccountMutations.ts:107 * kind: hook * core: platform * spec: (none) * summary: Soft-deletes a service account by setting deleted\_at. * score: 4 ### hook useAssignableRoles * file: src/platform/users/useAssignableRoles.ts:20 * kind: hook * core: platform * spec: (none) * summary: PF-02 Phase B: server-side role catalog.Reads the assignable roles from so platform admins cancurate which system roles tenants may invite users into. Falls back to thestatic list if the table is unreachable so theInvite/Add-Existing dialogs never render an empty role dropdown. * score: 4 ### hook useAssignJurisdictionProfile * file: src/platform/jurisdiction/hooks/useJurisdictionConfigMutation.ts:28 * kind: hook * core: platform * spec: (none) * summary: Mutation to assign a jurisdiction profile to the current org (upsert). * score: 4 ### hook useAssignRole * file: src/platform/permissions/hooks/useRoleAssignments.ts:65 * kind: hook * core: platform * spec: (none) * summary: Hook to assign a role to a user * score: 4 ### hook useAssistantThreads * file: src/platform/ai/hooks/useAssistantThreads.ts:23 * kind: hook * core: platform * spec: (none) * summary: Query the current user's assistant conversations from where the is and the user is a member. * returns: an object with (the Conversation list) and . * score: 4 ### hook useAsyncValidation * file: src/platform/wizards/hooks/useAsyncValidation.ts:36 * kind: hook * core: platform * spec: (none) * summary: Hook for managing async validation. * score: 1 ### hook useAuditLogsList * file: src/platform/audit/useAuditLogsList.ts:40 * kind: hook * core: platform * spec: (none) * summary: Fetches paginated audit logs with optional filters.Automatically scoped to the current user's organization. * score: 4 ### hook useAuthorSkillSubmit * file: src/platform/ai/wizards/ai-skill-creation/hooks/useAuthorSkillSubmit.ts:52 * kind: hook * core: platform * spec: (none) * summary: Create the authored skill and route it through the PF-120 lifecycle in one call. * returns: plus a combined flag. * score: 4 ### hook useAutoJoinChannels * file: src/platform/messaging/hooks/useAutoJoinChannels.ts:17 * kind: hook * core: platform * spec: (none) * summary: Checks if user is a member of default channels, auto-joins if not. * score: 4 ### hook useAutoRecording * file: src/platform/analytics/useSessionRecorder.tsx:313 * kind: hook * core: platform * spec: (none) * summary: Hook to automatically record a page/form sessionStarts recording on mount and stops on unmount. * params: * options — Recording options * returns: Recording state and controls * score: 4 ### hook useAutoSaveColumnSizes * file: src/platform/table-v2/features/ColumnResizing.tsx:134 * kind: hook * core: platform * spec: (none) * summary: Hook to auto-save column sizes on change. * params: * table — TanStack table instance * tableId — Unique table ID for storage key * debounceMs — Debounce delay in milliseconds (default: 500) * score: 4 ### hook useAvailableChannels * file: src/platform/integrations/hooks/useTeamsConfig.ts:211 * kind: hook * core: platform * spec: (none) * summary: Fetch available channels for a specific Team * score: 4 ### hook useAvailableFields * file: src/platform/page-layouts/hooks/useAvailableFields.ts:48 * kind: hook * core: platform * spec: (none) * summary: Hook to fetch available fields for assignment.Combines PF-17 standard fields with PF-16 custom field definitions,then filters out already-assigned fields. * example: | const availableFields, isLoading = useAvailableFields( objectName: 'hr\_employees', assignedFieldNames: \['first\_name', 'last\_name'],); * score: 4 ### hook useAvailableGroups * file: src/platform/integrations/hooks/useSharePointConfig.ts:211 * kind: hook * core: platform * spec: (none) * summary: Fetch available groups for a specific SharePoint site * score: 4 ### hook useAvailableRoles * file: src/platform/data-manager/hooks/useAvailableRoles.ts:94 * kind: hook * core: platform * spec: (none) * summary: Provide available roles (system and future custom) for object permissions configuration. Fetches system roles from the built-in role set and queries organization-scoped custom roles (prepared for future support). Returns a memoized, ordered list of available role entries and related metadata; when custom roles are not yet supported by object permissions they are fetched but not included in the returned roles list. * returns: An object with: - : an ordered array of AvailableRole entries to use for permissions UI (currently populated with system roles). - : the raw SYSTEM\_ROLES array. - : the fetched custom roles for the current organization (may be empty). - : while custom roles are being fetched, otherwise. * score: 4 ### hook useAvailableSites * file: src/platform/integrations/hooks/useSharePointConfig.ts:184 * kind: hook * core: platform * spec: (none) * summary: Fetch available SharePoint sites from Microsoft Graph * score: 4 ### hook useAvailableTeams * file: src/platform/integrations/hooks/useTeamsConfig.ts:184 * kind: hook * core: platform * spec: (none) * summary: Fetch available Teams from Microsoft Graph * score: 4 ### hook useBackgroundSync * file: src/platform/pwa/hooks/useBackgroundSync.ts:17 * kind: hook * core: platform * spec: (none) * summary: Hook for managing background sync. * score: 1 ### hook useBillingAdapter * file: src/platform/clinical/billing/useBillingAdapter.ts:25 * kind: hook * core: platform * spec: (none) * summary: Reactive billing adapter that returns a CPT suggestion for the given input.Re-computes when input changes. Also exposes an imperative getSuggestion function. * params: * input — Optional billing input for reactive suggestion * returns: suggestion and imperative getSuggestion function * score: 4 ### hook useBillingOverrides * file: src/platform/clinical/billing/useBillingOverrides.ts:70 * kind: hook * core: platform * spec: (none) * summary: Fetches active billing override rules for an organization, optionally filtered by payer. * params: * orgId — Organization ID * payerId — Optional payer ID to filter rules * returns: Query result with BillingOverrideConfig * score: 4 ### hook useBillingRules * file: src/platform/jurisdiction/useJurisdictionProfile.ts:107 * kind: hook * core: platform * spec: (none) * summary: Convenience hook for billing rules from the resolved jurisdiction profile (PF-96).Returns the slice (timed-code thresholds, modifier conventions,filing deadlines, unit calculation rules, etc.) for the active organization,optionally narrowed to a specific site. Resolution follows the standardPF-96 hierarchy: Federal Baseline → State Profile → Org Overrides → Site Overrides.Jurisdiction-neutral by design: callers MUST NOT assume Arizona/AHCCCSsemantics. AHCCCS is only the default profile bundled with PF-96 and may bereplaced by any other state Medicaid program (or a non-Medicaid baseline).Fail-safe behavior:- While is true, or when is (no organization in context, RPC returned no profile, or resolution failed), consumers MUST degrade safely — typically by disabling auto-calculation, hiding billing suggestions, or falling back to manual entry. Do NOT silently substitute AHCCCS defaults at the call site; the absence of rules is itself a signal.- The underlying query throws on RPC error (surfaced via ); callers should sanitize before display via . * params: * siteId — Optional site UUID for site-level override resolution. * returns: Query result whose is the resolved , or when no profile is available (treat as fail-closed for billing math). * see: * useJurisdictionProfile * specs/pf/specs/PF-96-medicaid-state-compliance-configuration.md * score: 4 ### hook useBillingWithOverrides * file: src/platform/clinical/billing/useBillingWithOverrides.ts:31 * kind: hook * core: platform * spec: (none) * summary: Returns a billing suggestion with payer-specific overrides applied. * params: * input — Billing input for base CPT suggestion * orgId — Organization ID for override lookup * payerId — Optional payer ID for payer-specific rules * score: 4 ### hook useBranchConditions * file: src/platform/wizards/hooks/useBranchConditions.ts:21 * kind: hook * core: platform * spec: (none) * summary: Hook for managing branch conditions. * score: 1 ### hook useBreadcrumbContext * file: src/platform/navigation/useBreadcrumbContext.ts:7 * kind: hook * core: platform * spec: (none) * summary: Hook for managing breadcrumb context. * score: 1 ### hook useBreadcrumbLabel * file: src/platform/navigation/useBreadcrumbLabel.ts:18 * kind: hook * core: platform * spec: (none) * summary: Sets a custom breadcrumb label for the current route path * params: * label — The label to display in the breadcrumb (e.g., entity name) * score: 4 ### hook useBulkGenerate * file: src/platform/templates/hooks/useBulkGenerate.ts:74 * kind: hook * core: platform * spec: (none) * summary: Hook for generating multiple PDFs in batch. Provides functions to generate multiple documents with progresstracking, error handling, and concurrency control. * example: | const generateBulk, isGenerating, progress, results = useBulkGenerate( onComplete: (results) = console.log('All done!', results),);const handleBulk = async () = await generateBulk( items, (item) = ( content: title: item.data.name, sections: \[ name: 'Details', content: item.data.details ], , ) );; * score: 1 ### hook useBulkKnowledgeOperations * file: src/platform/knowledge/hooks/use-knowledge-articles.ts:551 * kind: hook * core: platform * spec: (none) * summary: Provides a React Query mutation for performing bulk operations on knowledge articles (publish, archive, delete, add\_tags). * returns: The configured mutation object. Call or with an object: . The mutation resolves to a of shape . * example: | // Using the hookconst bulkMutation = useBulkKnowledgeOperations();// Trigger a publish operationbulkMutation.mutate( ids: \['id1', 'id2'], operation: 'publish' );// Awaitable usageawait bulkMutation.mutateAsync( ids: \['id1'], operation: 'add\_tags', tags: \['faq'] ); * score: 4 ### hook useBulkOperationProgress * file: src/platform/bulk-operations/hooks/useBulkOperationProgress.ts:12 * kind: hook * core: platform * spec: (none) * summary: Hook for managing bulk operation progress. * score: 1 ### hook useBulkOperationsList * file: src/platform/bulk-operations/hooks/useBulkOperationsList.ts:14 * kind: hook * core: platform * spec: (none) * summary: Hook for managing bulk operations list. * score: 1 ### hook useBulkSyncLeaveRequests * file: src/platform/integrations/hooks/useCalendarSyncConfig.ts:213 * kind: hook * core: platform * spec: (none) * summary: Trigger bulk sync of all pending leave requests * score: 4 ### hook useBulkTaskMutation * file: src/platform/tasks/hooks/useBulkTaskMutation.ts:13 * kind: hook * core: platform * spec: (none) * summary: Hook for managing bulk task mutation. * score: 1 ### hook useBundleInstalls * file: src/platform/ai/hooks/useBundleInstalls.ts:46 * kind: hook * core: platform * spec: (none) * summary: Query hook that returns all pf\_bundle\_installs rows for the given org,newest first. PF-62-EN-02 AC-2 * params: * orgId — The organization UUID; query is disabled when undefined. * returns: data, isLoading, isSuccess, isError, error, fetchStatus, refetch * score: 4 ### hook useBundleMarketplace * file: src/platform/ai/hooks/useBundleMarketplace.ts:50 * kind: hook * core: platform * spec: (none) * summary: Query hook to list all marketplace bundles discoverable to the given org. PF-62-EN-02 AC-2 * params: * orgId — The organization UUID; query is disabled when undefined. * returns: data, isLoading, isSuccess, isError, error, fetchStatus, refetch * score: 4 ### hook useBusinessCalendar * file: src/platform/calendar/hooks/use-business-calendar.ts:21 * kind: hook * core: platform * spec: (none) * summary: Fetches a single business calendar by its ID. * params: * calendarId — UUID of the calendar to fetch. * returns: Query result with . * score: 4 ### hook useBusinessCalendars * file: src/platform/calendar/hooks/use-business-calendars.ts:24 * kind: hook * core: platform * spec: (none) * summary: Fetches all business calendars for the user's organization. * params: * organizationId — Override org ID; defaults to current user's org. * returns: Query result with . * score: 4 ### hook useBusinessDays * file: src/platform/calendar/hooks/use-business-days.ts:29 * kind: hook * core: platform * spec: (none) * summary: Returns business day utility functions bound to a specific calendar. * params: * calendarId — UUID of the business calendar to use. * returns: Object with (BusinessDayUtils), , and . * score: 4 ### hook useBusinessProcess * file: src/platform/automation/hooks/useBusinessProcess.ts:20 * kind: hook * core: platform * spec: (none) * summary: Fetches a single business process by ID. * params: * processId — UUID of the business process. * returns: TanStack Query result containing a single . * score: 4 ### hook useBusinessProcesses * file: src/platform/automation/hooks/useBusinessProcesses.ts:29 * kind: hook * core: platform * spec: (none) * summary: Fetches the list of business processes for the current organization. * params: * filters — Optional filters for the process list. * returns: TanStack Query result containing . * score: 4 ### hook useByodColumnMapping * file: src/platform/analytics/hooks/useByodUpload.ts:139 * kind: hook * core: platform * spec: (none) * summary: PATCH each column's + , then call action:'register' to build theper-dataset VIEW and register mart + semantic models. * score: 4 ### hook useByodDatasetColumns * file: src/platform/analytics/hooks/useByodDatasets.ts:90 * kind: hook * core: platform * spec: (none) * summary: List all columns for a given dataset (shown in the mapping wizard). * score: 4 ### hook useByodDatasets * file: src/platform/analytics/hooks/useByodDatasets.ts:68 * kind: hook * core: platform * spec: (none) * summary: List all BYOD datasets for the current org (RLS-gated). * score: 4 ### hook useByodUpload * file: src/platform/analytics/hooks/useByodUpload.ts:53 * kind: hook * core: platform * spec: (none) * summary: Upload a file to the private analytics-byod bucket and trigger the ingest edge function.Returns datasetId, rowCount, and columns on success — callers use this to open the mapping wizard. * score: 4 ### hook useCalendarSyncConfig * file: src/platform/integrations/hooks/useCalendarSyncConfig.ts:41 * kind: hook * core: platform * spec: (none) * summary: Fetch calendar sync configuration for organization * score: 4 ### hook useCalendarSyncConfigMutation * file: src/platform/integrations/hooks/useCalendarSyncConfig.ts:68 * kind: hook * core: platform * spec: (none) * summary: Mutation hook for updating calendar sync configuration * score: 4 ### hook useCalendarSyncStats * file: src/platform/integrations/hooks/useCalendarSyncConfig.ts:130 * kind: hook * core: platform * spec: (none) * summary: Fetch calendar sync statistics * score: 4 ### hook useCallDisposition * file: src/platform/telephony/hooks/useCallDisposition.ts:48 * kind: hook * core: platform * spec: (none) * summary: Hook that provides mutations and state for updating a call's disposition and optionally creating/ linking a follow-up PF-29 task. * params: * options — Configuration for the hook - organizationId: Identifier of the organization the call belongs to - onSuccess: Optional callback invoked with the updated after a successful disposition save - onError: Optional callback invoked with an when the disposition mutation fails * returns: An object exposing: - — mutation trigger function accepting a - — promise-based mutation trigger - — boolean flag for mutation pending state - — boolean flag for mutation error state - — error object when mutation failed * example: | const disposition, isDispositionPending = useCallDisposition( organizationId: 'org\_123', onSuccess: (call) = console.log('Saved', call.id), onError: (err) = console.error(err),);disposition( callId: 'call\_456', disposition: 'no\_answer', notes: 'Left voicemail', followUp: required: true, createTask: true, date: '2026-02-01', taskTitle: 'Follow up' ); * score: 4 ### hook useCallLog * file: src/platform/telephony/hooks/useCallLog.ts:24 * kind: hook * core: platform * spec: (none) * summary: Hook for managing call log. * score: 1 ### hook useCategoryMutation * file: src/platform/data-manager/hooks/useCategoryMutation.ts:23 * kind: hook * core: platform * spec: (none) * summary: Hook for managing category mutation. * score: 1 ### hook useCensusData * file: src/platform/census/useCensusData.ts:24 * kind: hook * core: platform * spec: (none) * summary: Hook for managing census data. * score: 1 ### hook useChangeImpact * file: src/platform/org-data-sync/hooks/useChangeImpact.ts:11 * kind: hook * core: platform * spec: (none) * summary: Hook for managing change impact. * score: 1 ### hook useChannels * file: src/platform/messaging/hooks/useChannels.ts:22 * kind: hook * core: platform * spec: (none) * summary: Hook for managing channels. * score: 1 ### hook useChartIdForPatient * file: src/platform/clinical/telehealth/useChartIdForPatient.ts:26 * kind: hook * core: platform * spec: CL-24 * summary: Returns the active for a PM patient, or ifno chart exists yet. Cached per (orgId, pmPatientId). * params: * pmPatientId — of the patient. * score: 5 ### hook useChatbotConfig * file: src/platform/chatbot/hooks/useChatbotConfig.ts:22 * kind: hook * core: platform * spec: (none) * summary: Fetches the chatbot configuration for the current organization. * score: 4 ### hook useChatbotSessionMessages * file: src/platform/chatbot/hooks/useChatbotSessions.ts:57 * kind: hook * core: platform * spec: (none) * summary: Fetches messages for a specific chatbot session. * score: 4 ### hook useChatbotSessions * file: src/platform/chatbot/hooks/useChatbotSessions.ts:25 * kind: hook * core: platform * spec: (none) * summary: Fetches chatbot sessions for the current organization. * score: 4 ### hook useCheckFieldPermissions * file: src/platform/data-manager/hooks/useCheckPermission.ts:81 * kind: hook * core: platform * spec: (none) * summary: Hook for managing check field permissions. * score: 1 ### hook useChecklistItems * file: src/platform/tasks/hooks/useChecklistItems.ts:22 * kind: hook * core: platform * spec: (none) * summary: Hook for listing checklist items belonging to a task. * score: 1 ### hook useChecklistMutation * file: src/platform/tasks/hooks/useChecklistMutation.ts:39 * kind: hook * core: platform * spec: (none) * summary: Hook returning add / update / toggle / remove mutations for checklist items. * score: 4 ### hook useCheckPermission * file: src/platform/data-manager/hooks/useCheckPermission.ts:27 * kind: hook * core: platform * spec: (none) * summary: Hook for managing check permission. * score: 1 ### hook useCheckSudConsent * file: src/platform/compliance/hooks/useConsentEnforcement.ts:14 * kind: hook * core: platform * spec: (none) * summary: Check SUD consent status for a chart via server-side RPC.Fail-closed: returns false when loading or on error. * score: 4 ### hook useChildOrganizations * file: src/platform/templates/hooks/useTemplateSharing.ts:199 * kind: hook * core: platform * spec: (none) * summary: Hook for managing child organizations. * score: 1 ### hook useClearSelection * file: src/platform/table-v2/features/RowSelection.tsx:181 * kind: hook * core: platform * spec: (none) * summary: Hook to clear all selections. * params: * table — TanStack table instance * returns: Function to clear all selections * score: 1 ### hook useClickToCall * file: src/platform/telephony/hooks/useClickToCall.ts:42 * kind: hook * core: platform * spec: (none) * summary: Initiates a RingCentral RingOut click-to-call flow and exposes initiation state, the latest RingOut ID, and any error encountered.Validates that an organization context is present, invokes the RingOut edge function to ring the user and connect to the target, and surfaces user-facing toasts and callbacks for success or failure. Calls to receive the RingOut ID when available; receives the Error encountered. * params: * options — Configuration for the hook - organizationId: The current organization identifier; required to initiate calls - onSuccess: Optional callback invoked with the RingOut ID when a call is successfully initiated - onError: Optional callback invoked with an Error when call initiation fails * returns: An object with:- — function to start a click-to-call with - — boolean that is while initiation is in progress- — the most recent RingOut ID or if none- — the last Error encountered or * score: 4 ### hook useClinicalBedBoard * file: src/platform/integrations/clinical-bed-board/hooks.ts:60 * kind: hook * core: platform * spec: (none) * summary: Primary board hook. Returns RH-backed rows with CL/PM overlays.Elevated PHI fields require and aresurfaced as ; pass the detailed row genericwhen the caller has that permission. * score: 4 ### hook useClinicalMeasureAggregates * file: src/platform/clinical/measures/useClinicalMeasureAggregates.ts:133 * kind: hook * core: platform * spec: (none) * summary: Hook wrapper for grant-reporting surfaces (GR-28-EN-01). Resolves the currentorg internally and surfaces only de-identified counts. * score: 4 ### hook useClinicalNotify * file: src/platform/clinical/notifications/useClinicalNotify.ts:15 * kind: hook * core: platform * spec: (none) * summary: CL-56: Publish a clinical signal to the centralized notification service. * score: 4 ### hook useClinicalRules * file: src/platform/jurisdiction/useJurisdictionProfile.ts:64 * kind: hook * core: platform * spec: (none) * summary: Convenience hook for clinical rules from the resolved jurisdiction profile. * params: * siteId — Optional site UUID. * returns: Query result containing . * score: 4 ### hook useCodeCrossMapping * file: src/platform/terminology/hooks/useCodeCrossMapping.ts:26 * kind: hook * core: platform * spec: (none) * summary: Fetches cross-code-set mappings for a specific source code.Results ordered by priority (ascending, nulls last). * score: 4 ### hook useCodeFavorites * file: src/platform/codes/useCodeFavorites.ts:27 * kind: hook * core: platform * spec: (none) * summary: Hook for managing code favorites. * score: 1 ### hook useCodeRecent * file: src/platform/codes/useCodeRecent.ts:18 * kind: hook * core: platform * spec: (none) * summary: Hook for managing code recent. * score: 1 ### hook useCodeSearch * file: src/platform/codes/useCodeSearch.ts:11 * kind: hook * core: platform * spec: (none) * summary: Hook for managing code search. * score: 1 ### hook useCodeSetVersions * file: src/platform/terminology/hooks/useCodeSetVersions.ts:22 * kind: hook * core: platform * spec: (none) * summary: Fetches code set versions from pf\_code\_set\_versions. * score: 4 ### hook useCollapsedSections * file: src/platform/navigation/hooks/useCollapsedSections.ts:25 * kind: hook * core: platform * spec: (none) * summary: Hook for managing collapsed sections. * score: 1 ### hook useColumnPinning * file: src/platform/table-v2/hooks/useColumnPinning.ts:93 * kind: hook * core: platform * spec: (none) * summary: Hook for managing column pinning in TanStack Table with persistence * score: 1 ### hook useColumnSizePersistence * file: src/platform/table-v2/features/ColumnResizing.tsx:86 * kind: hook * core: platform * spec: (none) * summary: Hook to persist column sizes to localStorage. * params: * table — TanStack table instance * tableId — Unique table ID for storage key * returns: Functions to save and reset column sizes * score: 4 ### hook useColumnVisibilityPersistence * file: src/platform/table-v2/features/ColumnVisibility.tsx:200 * kind: hook * core: platform * spec: (none) * summary: Hook to persist column visibility to localStorage. * params: * table — TanStack table instance * tableId — Unique table ID for storage key * returns: Functions to save and reset visibility * score: 4 ### hook useCompareWizardVersions * file: src/platform/wizards/hooks/useWizardVersionMutation.ts:114 * kind: hook * core: platform * spec: (none) * summary: Hook for comparing two versions (utility for diff generation)Refactored from useMutation to useQuery for proper caching * score: 1 ### hook useComplianceContrastValidator * file: src/platform/compliance/hooks/useComplianceContrastValidator.ts:24 * kind: hook * core: platform * spec: (none) * summary: Validate a compliance theme's color pairs against WCAG AA thresholds.Returns a corrected theme where failing pairs fall back to platform defaults. * score: 4 ### hook useComplianceDashboard * file: src/platform/compliance/hooks/useComplianceDashboard.ts:23 * kind: hook * core: platform * spec: (none) * summary: Fetches compliance dashboard summary for the given organization. * params: * organizationId — The organization to fetch checks for. * score: 4 ### hook useComplianceEvidenceJobs * file: src/platform/compliance/hooks/useComplianceEvidence.ts:12 * kind: hook * core: platform * spec: (none) * summary: Fetches evidence jobs for the given organization.Polls every 5s while any job has 'generating' status. * score: 4 ### hook useComplianceRules * file: src/platform/jurisdiction/useJurisdictionProfile.ts:122 * kind: hook * core: platform * spec: (none) * summary: Convenience hook for compliance rules from the resolved jurisdiction profile. * params: * siteId — Optional site UUID. * returns: Query result containing . * score: 4 ### hook useComplianceTheme * file: src/platform/compliance/hooks/useComplianceTheme.ts:58 * kind: hook * core: platform * spec: (none) * summary: Resolve the compliance theme for the current organization.- Non-blocking: returns platform defaults while loading (no skeleton dependency).- Applies WCAG AA contrast validation; sets when colors adjusted. * score: 4 ### hook useConditionalFieldState * file: src/platform/conditional-logic/hooks/useConditionalFieldState.ts:50 * kind: hook * core: platform * spec: (none) * summary: Hook that returns all conditional states for a single fieldMerges base field states with conditional evaluation results * params: * fieldKey — The field key (for debugging) * conditionalRules — V1 or V2 conditional rules * formValues — Current form field values * options — Configuration options * returns: ConditionalFieldState - Complete field state * score: 4 ### hook useConditionalFieldStates * file: src/platform/conditional-logic/hooks/useConditionalFieldState.ts:87 * kind: hook * core: platform * spec: (none) * summary: Batch hook that returns conditional states for multiple fieldsMore efficient than calling useConditionalFieldState multiple times * score: 4 ### hook useConditionalLogic * file: src/platform/conditional-logic/hooks/useConditionalLogic.ts:68 * kind: hook * core: platform * spec: (none) * summary: Hook for evaluating conditional field logic * params: * fieldConfigs — Array of field configurations with conditional\_rules * formValues — Current form field values * options — Optional configuration * returns: Object with evaluation functions and memoized results * score: 1 ### hook useConditionalPages * file: src/platform/forms/hooks/useConditionalPages.ts:69 * kind: hook * core: platform * spec: (none) * summary: Hook for managing conditional pages. * score: 1 ### hook useConditionalRule * file: src/platform/conditional-logic/hooks/useConditionalLogic.ts:155 * kind: hook * core: platform * spec: (none) * summary: Hook for evaluating a single conditional ruleUseful when you have a rule outside of the field config context * params: * rule — The conditional rule to evaluate * formValues — Current form field values * returns: ConditionalRuleResult - visibility, required, readonly status * score: 1 ### hook useConditionalVisibility * file: src/platform/field-config/hooks/useConditionalVisibility.ts:10 * kind: hook * core: platform * spec: (none) * summary: Hook for managing conditional visibility. * score: 1 ### hook useConditionBuilder * file: src/platform/conditional-logic/hooks/useConditionBuilder.ts:293 * kind: hook * core: platform * spec: (none) * summary: Hook for managing condition builder state * score: 1 ### hook useConditionEvaluation * file: src/platform/conditional-logic/hooks/useConditionEvaluation.ts:83 * kind: hook * core: platform * spec: (none) * summary: Hybrid condition evaluation hook.Evaluates conditional rules client-side for simple formsand server-side for complex forms (above the complexity threshold).Falls back to client-side on any server error. * params: * options — Evaluation options * returns: Evaluation results, method, loading, and error state * score: 4 ### hook useConditionPerformance * file: src/platform/conditional-logic/hooks/useConditionPerformance.ts:37 * kind: hook * core: platform * spec: (none) * summary: Hook to fetch and aggregate condition evaluation performance metrics.Queries the pf\_condition\_evaluation\_metrics table, computes percentiles,cache hit rate, and method distribution for the dashboard. * params: * options — Query options (orgId, formId, time range) * returns: Aggregated metrics, trends, loading, and error state * score: 4 ### hook useConfirmSkills * file: src/platform/ai/hooks/useRecommendedSkills.ts:165 * kind: hook * core: platform * spec: (none) * summary: Upserts per-org enablement overrides for the explicitly confirmed skills.The enablement-row shape is derived by the pure (one source of truth, unit-tested): only codes in BOTH the recommended andconfirmed sets yield an row; zero confirmed ⇒ zero rows; NOper-module default-skill key and NO org-profile text is ever written (AC-5/AC-6/AC-7). * returns: and . May be called with no confirmed codes (records the explicit "enable nothing" choice). * score: 4 ### hook useConnectionStatus * file: src/platform/realtime/hooks/useConnectionStatus.ts:14 * kind: hook * core: platform * spec: (none) * summary: Hook for managing connection status. * score: 1 ### hook useConsentCheck * file: src/platform/clinical/consent/useConsentCheck.ts:22 * kind: hook * core: platform * spec: (none) * summary: Hook for managing consent check. * score: 1 ### hook useConsentStatusSummary * file: src/platform/compliance/hooks/useConsentEnforcement.ts:58 * kind: hook * core: platform * spec: (none) * summary: Aggregate consent status for the compliance dashboard widget.Queries cl\_consents (read-only) for org-level stats. * score: 4 ### hook useContextAwareActions * file: src/platform/navigation/hooks/useContextAwareActions.ts:32 * kind: hook * core: platform * spec: (none) * summary: Hook that returns context-aware quick actions based on pending items * score: 4 ### hook useContextualAction * file: src/platform/navigation/hooks/useContextualAction.ts:35 * kind: hook * core: platform * spec: (none) * summary: Returns the primary action based on current module context.Used for the elevated center button in mobile nav and header primary button. * score: 4 ### hook useContextualQuickActions * file: src/platform/navigation/hooks/useContextualQuickActions.ts:274 * kind: hook * core: platform * spec: (none) * summary: Hook that returns context-aware quick actions based on current module * score: 4 ### hook useContextualSidebar * file: src/platform/navigation/contextual-sidebar.tsx:41 * kind: hook * core: platform * spec: (none) * summary: Hook to register contextual sidebar content. Automatically clears on unmount. * score: 4 ### hook useContextualSidebarContent * file: src/platform/navigation/contextual-sidebar.tsx:56 * kind: hook * core: platform * spec: (none) * summary: Hook to read the current contextual sidebar content. * score: 4 ### hook useControlledPagination * file: src/platform/table-v2/utils/pagination/hooks.ts:234 * kind: hook * core: platform * spec: (none) * summary: Hook for controlled pagination (parent manages state)Use this when pagination state needs to be managed externally,such as with URL query parameters or form state. * params: * options — Controlled pagination options * returns: Pagination state and handlers * score: 1 ### hook useConversationMembers * file: src/platform/messaging/hooks/useConversationMembers.ts:22 * kind: hook * core: platform * spec: (none) * summary: Hook for managing conversation members. * score: 1 ### hook useConversations * file: src/platform/messaging/hooks/useConversations.ts:31 * kind: hook * core: platform * spec: (none) * summary: Hook for managing conversations. * score: 1 ### hook useConversationSenderMap * file: src/platform/messaging/hooks/useConversationSenderMap.ts:18 * kind: hook * core: platform * spec: (none) * summary: Fetches all member profiles for a conversation, returning a map of userId → SenderInfo. * score: 4 ### hook useConversationSummarization * file: src/platform/messaging/hooks/useConversationSummarization.ts:21 * kind: hook * core: platform * spec: (none) * summary: Hook for managing conversation summarization. * score: 1 ### hook useConversionMetrics * file: src/platform/ce/useLeadConversionHistory.ts:82 * kind: hook * core: platform * spec: (none) * summary: Fetches aggregated conversion metrics for the organization.Used by PM-41 funnel dashboards via platform integration layer. * score: 4 ### hook useConvertLeadFromPM * file: src/platform/ce/useConvertLeadFromPM.ts:30 * kind: hook * core: platform * spec: (none) * summary: Mutation hook for converting a CE lead to a patient from the PM side.Mirrors the CE-29 conversion pipeline: updates lead status, inserts auditrecord, publishes event, and invokes event-consumer edge function. * score: 4 ### hook useCoreRailOrder * file: src/platform/navigation/hooks/useCoreRailOrder.ts:23 * kind: hook * core: platform * spec: (none) * summary: Hook to manage per-user core-rail pin + order with safe merge pattern.Reads from and writes to pf\_profiles.preferences.coreRailOrder.Sibling preference keys (e.g. pinnedItems) are never clobbered. * score: 4 ### hook useCoworkAgents * file: src/platform/cowork/useThreads.ts:39 * kind: hook * core: platform * spec: (none) * summary: List the org's agents (all statuses). Used by ParticipantsPane to build theadd-agent affordance and resolve participating agent names from their IDs. * score: 4 ### hook useCoworkPresence * file: src/platform/cowork/useCoworkPresence.ts:48 * kind: hook * core: platform * spec: (none) * summary: useCoworkPresence — presence + live-thread subscription for the Cowork workspace. * params: * threadId — The pf\_threads.id to subscribe to, or null/undefined when no thread is selected. All subscriptions are disabled when threadId is falsy. * score: 4 ### hook useCreateAISkill * file: src/platform/ai/hooks/useCreateAISkill.ts:43 * kind: hook * core: platform * spec: (none) * summary: Create a mutation hook to create a new AI skill within the current organization.Provides an async function that inserts a new AI skill record into the backend,returns the mutation state, and exposes the last .The created record will include sensible defaults for model preference, temperature, max tokens,RAG settings, and output format when those fields are not provided. * returns: An object containing: - — async function accepting a and returning the created - — boolean flag indicating an in-progress creation - — the last error encountered or * example: | const createSkill, isCreating, error = useCreateAISkill();await createSkill( skill\_code: 'summarize', name: 'Summarizer', description: 'Summarize text' ); * score: 4 ### hook useCreateApiKey * file: src/platform/api-access/hooks/useApiKeyMutations.ts:21 * kind: hook * core: platform * spec: (none) * summary: Creates a new API key for a service account.Returns the raw secret (shown once) along with key metadata. * score: 4 ### hook useCreateByodDataset * file: src/platform/analytics/hooks/useByodDatasets.ts:109 * kind: hook * core: platform * spec: (none) * summary: Create a skeleton dataset row (status='uploaded', no storage\_path yet). * score: 4 ### hook useCreateCall * file: src/platform/telephony/hooks/useCreateCall.ts:36 * kind: hook * core: platform * spec: (none) * summary: Hook for managing create call. * score: 1 ### hook useCreateConversation * file: src/platform/messaging/hooks/useCreateConversation.ts:16 * kind: hook * core: platform * spec: (none) * summary: Hook for managing create conversation. * score: 1 ### hook useCreateDiagramVersion * file: src/platform/workflow/useCreateDiagramVersion.ts:26 * kind: hook * core: platform * spec: (none) * summary: Creates a new version snapshot row for a swim lane diagram.Automatically determines the next version number with retry on conflict. * score: 4 ### hook useCreateEmailSignature * file: src/platform/email-signatures/hooks/useEmailSignatureMutation.ts:12 * kind: hook * core: platform * spec: (none) * summary: Create a new email signature. * score: 1 ### hook useCreateExportRequest * file: src/platform/export/hooks/useExportRequests.ts:48 * kind: hook * core: platform * spec: (none) * summary: Hook for managing create export request. * score: 1 ### hook useCreateExportTemplate * file: src/platform/export/hooks/useExportTemplates.ts:50 * kind: hook * core: platform * spec: (none) * summary: Provides create export template queries and mutation actions scoped to the current organization. * score: 4 ### hook useCreateHeadshotCampaign * file: src/platform/headshot/hooks/useHeadshotCampaigns.ts:80 * kind: hook * core: platform * spec: (none) * summary: Creates a new headshot campaign. * score: 4 ### hook useCreateHeadshotJob * file: src/platform/headshot/hooks/useCreateHeadshotJob.ts:16 * kind: hook * core: platform * spec: (none) * summary: Creates a new headshot job in draft status. * score: 4 ### hook useCreateImportBatch * file: src/platform/import/hooks/useImportBatches.ts:64 * kind: hook * core: platform * spec: (none) * summary: Create a new import batch. * score: 1 ### hook useCreateImportRecords * file: src/platform/import/hooks/useImportRecords.ts:51 * kind: hook * core: platform * spec: (none) * summary: Bulk-insert import records for a batch. * score: 4 ### hook useCreateKnowledgeArticle * file: src/platform/knowledge/hooks/use-knowledge-articles.ts:259 * kind: hook * core: platform * spec: (none) * summary: Creates a new knowledge base article for the current organization.Provides a React Query mutation that inserts an article into the table, invalidates article list caches on success, and shows success/error toasts. * returns: A React Query mutation object that accepts a and resolves to the created . * example: | const createArticle = useCreateKnowledgeArticle();await createArticle.mutateAsync( title: 'How to use the API', content: '...', summary: 'Quick guide', category: 'docs', tags: \['api', 'guide'],); * score: 4 ### hook useCreateLayoutFromTemplate * file: src/platform/page-layouts/hooks/useCreateLayoutFromTemplate.ts:24 * kind: hook * core: platform * spec: (none) * summary: Hook for managing create layout from template. * score: 1 ### hook useCreateLayoutVersion * file: src/platform/page-layouts/hooks/useLayoutVersions.ts:64 * kind: hook * core: platform * spec: (none) * summary: Create a new version snapshot for a layout and prune to last 50. * score: 4 ### hook useCreateLegalHold * file: src/platform/data-retention/hooks/useLegalHolds.ts:37 * kind: hook * core: platform * spec: (none) * summary: Hook for managing create legal hold. * score: 1 ### hook useCreateMappingTemplate * file: src/platform/import/hooks/useImportMappingTemplates.ts:46 * kind: hook * core: platform * spec: (none) * summary: Create a new mapping template. * score: 4 ### hook useCreateOnboardingSession * file: src/platform/import/hooks/useOnboardingSessions.ts:63 * kind: hook * core: platform * spec: (none) * summary: Create a new onboarding session. * score: 4 ### hook useCreateProvisioningRequest * file: src/platform/provisioning/hooks/useCreateProvisioningRequest.ts:29 * kind: hook * core: platform * spec: (none) * summary: Hook for managing create provisioning request. * score: 1 ### hook useCreateQuota * file: src/platform/quota/hooks/useQuotaMutation.ts:17 * kind: hook * core: platform * spec: (none) * summary: Create a new resource quota configuration. * params: * organizationId — Current org context (for cache invalidation). * score: 4 ### hook useCreateReport * file: src/platform/reports/useReportMutation.ts:35 * kind: hook * core: platform * spec: (none) * summary: Creates a React Query mutation hook to insert a new report into the table.The mutation adds from the current user and returns the inserted row. * returns: A mutation object configured to insert a report; the mutation function accepts a report object without and resolves to the inserted report row. * score: 4 ### hook useCreateRetentionPolicy * file: src/platform/data-retention/hooks/useRetentionPolicies.ts:37 * kind: hook * core: platform * spec: (none) * summary: Hook for managing create retention policy. * score: 1 ### hook useCreateRole * file: src/platform/permissions/hooks/useCustomRoles.ts:63 * kind: hook * core: platform * spec: (none) * summary: Hook to create a new custom role * score: 4 ### hook useCreateSecurityAlertConfig * file: src/platform/security/hooks/useSecurityAlertConfigMutation.ts:19 * kind: hook * core: platform * spec: (none) * summary: Hook for managing create security alert config. * score: 1 ### hook useCreateServiceAccount * file: src/platform/api-access/hooks/useServiceAccountMutations.ts:17 * kind: hook * core: platform * spec: (none) * summary: Creates a new service account for the current organization. * score: 4 ### hook useCreateSharePointFolder * file: src/platform/integrations/hooks/useSharePointDocuments.ts:105 * kind: hook * core: platform * spec: (none) * summary: Provides create share point folder queries and mutation actions scoped to the current organization. * score: 4 ### hook useCreateSLADefinition * file: src/platform/sla/hooks/useSLADefinitions.ts:71 * kind: hook * core: platform * spec: (none) * summary: Creates a new SLA definition. * score: 1 ### hook useCreateStepBatch * file: src/platform/import/hooks/useOnboardingStepBatches.ts:40 * kind: hook * core: platform * spec: (none) * summary: Create a step-batch junction row. * score: 4 ### hook useCreateThread * file: src/platform/cowork/useThreads.ts:52 * kind: hook * core: platform * spec: (none) * summary: Create a cowork Thread over an existing PF-67 conversation. * score: 4 ### hook useCreateValidationRule * file: src/platform/validation/hooks/useValidationRuleMutation.ts:13 * kind: hook * core: platform * spec: (none) * summary: Create a new validation rule. * score: 1 ### hook useCreateWizardVersion * file: src/platform/wizards/hooks/useWizardVersionMutation.ts:26 * kind: hook * core: platform * spec: (none) * summary: Hook for creating a new version of a wizard template * score: 1 ### hook useCreateWorkspace * file: src/platform/navigation/workspaces/admin/useWorkspaceMutations.ts:134 * kind: hook * core: platform * spec: (none) * summary: React Query mutation that inserts a new row forthe active organization, stamping org and audit columns from context. Onsuccess it invalidates the org's workspace-definitions query and toasts;throws "No active organization" if no org is selected. * score: 4 ### hook useCredentialCheck * file: src/platform/workforce/useCredentialCheck.ts:18 * kind: hook * core: platform * spec: (none) * summary: Hook for checking employee credentials * score: 1 ### hook useCredentialMutation * file: src/platform/integrations/hooks/useCredentialMutation.ts:27 * kind: hook * core: platform * spec: (none) * summary: Hook for managing credential mutation. * score: 1 ### hook useCredentials * file: src/platform/integrations/hooks/useCredentials.ts:22 * kind: hook * core: platform * spec: (none) * summary: Hook for managing credentials. * score: 1 ### hook useCrossFieldValidation * file: src/platform/conditional-logic/hooks/useCrossFieldValidation.ts:51 * kind: hook * core: platform * spec: (none) * summary: Hook for cross-field validation * score: 1 ### hook useCrossModuleWizard * file: src/platform/wizards/hooks/useCrossModuleWizard.ts:65 * kind: hook * core: platform * spec: (none) * summary: Hook for managing cross-module wizard functionalityUses useHasPermission for batch permission checking across all modulesthe wizard spans. * score: 1 ### hook useCSVImport * file: src/platform/data-manager/hooks/useCSVImport.ts:28 * kind: hook * core: platform * spec: (none) * summary: Hook for managing csvimport. * score: 1 ### hook useCurrentEmployeeId * file: src/platform/workforce/getCurrentEmployeeId.ts:37 * kind: hook * core: platform * spec: (none) * summary: Hook for managing current employee id. * score: 1 ### hook useCurrentOrganizationId * file: src/platform/cache/org-resolver.ts:9 * kind: hook * core: platform * spec: (none) * summary: Hook for use in React components only. Returns current org id or null. * score: 1 ### hook useCurrentOrgSlug * file: src/platform/organizations/hooks/useCurrentOrgSlug.ts:9 * kind: hook * core: platform * spec: (none) * summary: Hook for managing current org slug. * score: 1 ### hook useCurrentUser * file: src/platform/auth/useCurrentUser.ts:16 * kind: hook * core: platform * spec: (none) * summary: Hook for managing current user. * score: 1 ### hook useCurrentWizardVersion * file: src/platform/wizards/hooks/useWizardVersions.ts:124 * kind: hook * core: platform * spec: (none) * summary: Hook to get the current published version of a template * score: 4 ### hook useCustomFieldDefinition * file: src/platform/custom-fields/hooks/useCustomFieldDefinition.ts:11 * kind: hook * core: platform * spec: (none) * summary: Hook for managing custom field definition. * score: 1 ### hook useCustomFieldDefinitions * file: src/platform/custom-fields/hooks/useCustomFieldDefinitions.ts:11 * kind: hook * core: platform * spec: (none) * summary: Hook for managing custom field definitions. * score: 1 ### hook useCustomFieldMutation * file: src/platform/custom-fields/hooks/useCustomFieldMutation.ts:19 * kind: hook * core: platform * spec: (none) * summary: Hook for managing custom field mutation. * score: 1 ### hook useCustomFieldValidation * file: src/platform/custom-fields/hooks/useCustomFieldValidation.ts:10 * kind: hook * core: platform * spec: (none) * summary: Hook for managing custom field validation. * score: 1 ### hook useCustomGesture * file: src/platform/gestures/hooks/useCustomGesture.ts:24 * kind: hook * core: platform * spec: (none) * summary: Hook for managing custom gesture. * score: 1 ### hook useCustomGestureRegistry * file: src/platform/gestures/registry/CustomGestureContext.tsx:23 * kind: hook * core: platform * spec: (none) * summary: Hook for managing custom gesture registry. * score: 1 ### hook useCustomMetric * file: src/platform/health/hooks/useCustomMetric.ts:14 * kind: hook * core: platform * spec: (none) * summary: Hook for managing custom metric. * score: 1 ### hook useCustomMetricMutation * file: src/platform/health/hooks/useCustomMetricMutation.ts:14 * kind: hook * core: platform * spec: (none) * summary: Hook for managing custom metric mutation. * score: 1 ### hook useCustomMetrics * file: src/platform/health/hooks/useCustomMetrics.ts:14 * kind: hook * core: platform * spec: (none) * summary: Hook for managing custom metrics. * score: 1 ### hook useCustomMetricsEnabled * file: src/platform/health/hooks/useCustomMetricsEnabled.ts:13 * kind: hook * core: platform * spec: (none) * summary: Hook for managing custom metrics enabled. * score: 1 ### hook useCustomObject * file: src/platform/data-manager/hooks/useCustomObject.ts:16 * kind: hook * core: platform * spec: (none) * summary: Hook for managing custom object. * score: 1 ### hook useCustomObjectFields * file: src/platform/data-manager/hooks/useCustomObjectFields.ts:14 * kind: hook * core: platform * spec: (none) * summary: Hook for managing custom object fields. * score: 1 ### hook useCustomObjectMutation * file: src/platform/data-manager/hooks/useCustomObjectMutation.ts:15 * kind: hook * core: platform * spec: (none) * summary: Hook for managing custom object mutation. * score: 1 ### hook useCustomObjectRecords * file: src/platform/data-manager/hooks/useCustomObjectRecords.ts:29 * kind: hook * core: platform * spec: (none) * summary: Hook for managing custom object records. * score: 1 ### hook useCustomObjects * file: src/platform/data-manager/hooks/useCustomObjects.ts:12 * kind: hook * core: platform * spec: (none) * summary: Hook for managing custom objects. * score: 1 ### hook useCustomRole * file: src/platform/permissions/hooks/useCustomRoles.ts:38 * kind: hook * core: platform * spec: (none) * summary: Hook to fetch a single custom role by ID * score: 4 ### hook useCustomRoles * file: src/platform/permissions/hooks/useCustomRoles.ts:21 * kind: hook * core: platform * spec: (none) * summary: Hook to fetch all custom roles for an organization * score: 4 ### hook useCustomWidgetData * file: src/platform/dashboard/hooks/useCustomWidgets.ts:170 * kind: hook * core: platform * spec: (none) * summary: Hook for managing custom widget data. * score: 1 ### hook useCustomWidgets * file: src/platform/dashboard/hooks/useCustomWidgets.ts:38 * kind: hook * core: platform * spec: (none) * summary: Hook for managing custom widgets. * score: 1 ### hook useDashboardPreferences * file: src/platform/dashboard/hooks/useDashboardPreferences.ts:69 * kind: hook * core: platform * spec: (none) * summary: Manages a user's dashboard preferences for a given organization and context. * params: * options — Configuration options - organizationId: Organization ID used to scope fetched and mutated preferences - dashboardContext: Optional context for module-specific preferences (e.g., 'hr', 'fa') * returns: An object with:- : the user's DashboardPreferences or if none or not loaded- : while the initial preferences query is loading- : function to replace widget preferences- : function to update widget order based on an array of widget IDs- : function to mark a widget as hidden- : function to update a widget's size- : function to replace quick action preferences- : while a quick-action update is pending * score: 4 ### hook useDashboardShares * file: src/platform/dashboard/hooks/useDashboardShares.ts:27 * kind: hook * core: platform * spec: (none) * summary: Hook for managing dashboard shares. * score: 1 ### hook useDashboardTemplates * file: src/platform/dashboard/hooks/useDashboardTemplates.ts:25 * kind: hook * core: platform * spec: (none) * summary: Hook for managing dashboard templates. * score: 1 ### hook useDashboardWidgets * file: src/platform/dashboard/hooks/useDashboardWidgets.ts:24 * kind: hook * core: platform * spec: (none) * summary: Returns filtered and ordered widgets based on:1. User preferences (highest priority)2. Organization defaults (fallback)3. Widget registry defaults (final fallback) * score: 4 ### hook useDatabaseHealth * file: src/platform/health/hooks/useDatabaseHealth.ts:22 * kind: hook * core: platform * spec: (none) * summary: Hook for managing database health. * score: 1 ### hook useDataMigrationConnections * file: src/platform/settings/pages/data-migration/hooks/useDataMigrationConnections.ts:29 * kind: hook * core: platform * spec: (none) * summary: Hook for managing data migration connections. * score: 1 ### hook useDataMigrationExplore * file: src/platform/settings/pages/data-migration/hooks/useDataMigrationExplore.ts:20 * kind: hook * core: platform * spec: (none) * summary: Hook for managing data migration explore. * score: 1 ### hook useDataMigrationMappings * file: src/platform/settings/pages/data-migration/hooks/useDataMigrationMappings.ts:13 * kind: hook * core: platform * spec: (none) * summary: Hook for managing data migration mappings. * score: 1 ### hook useDataMigrationRuns * file: src/platform/settings/pages/data-migration/hooks/useDataMigrationRuns.ts:13 * kind: hook * core: platform * spec: (none) * summary: Hook for managing data migration runs. * score: 1 ### hook useDataTable * file: src/platform/table-v2/hooks/useDataTable.ts:89 * kind: hook * core: platform * spec: (none) * summary: Hook for managing data table. * score: 1 ### hook useDbWorkspaces * file: src/platform/navigation/workspaces/useDbWorkspaces.ts:17 * kind: hook * core: platform * spec: (none) * summary: Org-scoped DB workspace rows; sort\_order asc then label. The org filter isdefense-in-depth alongside RLS and keeps multi-org admins from seeing otherorgs' rows under the current org.NOTE: always invoke as a method call. Detaching it() loses the binding — reads and throws at runtime, silentlycollapsing the workspace list to seeds only. * score: 4 ### hook useDefaultApprovalChainTemplate * file: src/platform/templates/hooks/useApprovalChainTemplate.ts:57 * kind: hook * core: platform * spec: (none) * summary: Fetches the default approval chain template for a given category, preferring an organization-specific default and falling back to a system default.Attempts to return the organization's default template for (using or the current organization), and if none exists returns the system default or . * params: * category — The approval category to find a default template for * organizationId — Optional organization ID to scope the search; if omitted the current organization from context is used * returns: A React Query result resolving to the organization's default , the system default , or if none exists * example: | const data = useDefaultApprovalChainTemplate('policy'); * score: 4 ### hook useDefaultCalendar * file: src/platform/calendar/hooks/use-default-calendar.ts:22 * kind: hook * core: platform * spec: (none) * summary: Fetches the default business calendar () for the organization. * params: * organizationId — Override org ID; defaults to current user's org. * returns: Query result with . * score: 4 ### hook useDefaultPicklistTemplates * file: src/platform/picklists/hooks/useDefaultPicklistTemplates.ts:115 * kind: hook * core: platform * spec: (none) * summary: Fetches platform default piclist definitions and items from the DB,groups them into PicklistTemplate objects (one per category).The system-default tables have USING(true) SELECT RLS policies so anyauthenticated user can read them — no org filter required on the definitionsthemselves, but we include orgId in the query key for cache isolation. * score: 4 ### hook useDeleteAISkill * file: src/platform/ai/hooks/useDeleteAISkill.ts:47 * kind: hook * core: platform * spec: (none) * summary: Provides a hook for deleting a custom AI skill scoped to the current organization.Exposes an API to delete a non-system skill from the organization's table.On successful deletion the query cache is invalidated and a success toast is shown.On failure an error toast is shown.The hook verifies that exactly one row was affected by the delete operation to ensurethe deletion was successful and no unexpected database state occurred. * returns: UseDeleteAISkillReturn An object with: - - Deletes the skill with the given id for the current organization. - - True while the deletion is in progress. - - The last error encountered by the deletion mutation, if any. * example: | const deleteSkill, isDeleting = useDeleteAISkill();try await deleteSkill('skill-id-123'); catch (err) // handle deletion error * score: 4 ### hook useDeleteByodDataset * file: src/platform/analytics/hooks/useByodDatasets.ts:130 * kind: hook * core: platform * spec: (none) * summary: Delete a dataset row (cascade removes byod\_rows and columns via FK ON DELETE CASCADE). * score: 4 ### hook useDeleteConnectionMutation * file: src/platform/settings/pages/data-migration/hooks/useDataMigrationConnections.ts:100 * kind: hook * core: platform * spec: (none) * summary: Hook for managing delete connection mutation. * score: 1 ### hook useDeleteDashboard * file: src/platform/analytics/hooks/useDashboards.ts:94 * kind: hook * core: platform * spec: (none) * summary: Soft-delete (sets deleted\_at); RLS SELECT already filters deleted\_at IS NULL. * score: 4 ### hook useDeletedRecords * file: src/platform/admin/hooks/useDeletedRecords.ts:83 * kind: hook * core: platform * spec: (none) * summary: Hook for managing deleted records. * score: 1 ### hook useDeleteEmailSignature * file: src/platform/email-signatures/hooks/useEmailSignatureMutation.ts:56 * kind: hook * core: platform * spec: (none) * summary: Delete an email signature. * score: 1 ### hook useDeleteExportRequest * file: src/platform/export/hooks/useExportRequests.ts:86 * kind: hook * core: platform * spec: (none) * summary: Hook for managing delete export request. * score: 1 ### hook useDeleteExportTemplate * file: src/platform/export/hooks/useExportTemplates.ts:116 * kind: hook * core: platform * spec: (none) * summary: Provides delete export template queries and mutation actions scoped to the current organization. * score: 4 ### hook useDeleteHeadshot * file: src/platform/headshot/hooks/useDeleteHeadshot.ts:15 * kind: hook * core: platform * spec: (none) * summary: Soft-deletes a headshot result by setting deleted\_at. * score: 4 ### hook useDeleteImportBatch * file: src/platform/import-batches/hooks/useImportBatchesList.ts:43 * kind: hook * core: platform * spec: (none) * summary: Hook for deleting an import batch. * score: 1 ### hook useDeleteKnowledgeArticle * file: src/platform/knowledge/hooks/use-knowledge-articles.ts:385 * kind: hook * core: platform * spec: (none) * summary: Provides a React Query mutation that deletes a knowledge article by id. Calls the Supabase backend to remove the pf\_knowledge\_base row with the given id, invalidates the articles list cache, removes the deleted article's detail cache, and shows success/error toasts. * returns: The mutation object returned by configured to accept an article when invoked. * example: | const deleteArticle = useDeleteKnowledgeArticle();// trigger deletiondeleteArticle.mutate('article-id-123'); * score: 4 ### hook useDeleteLegalHold * file: src/platform/data-retention/hooks/useLegalHolds.ts:83 * kind: hook * core: platform * spec: (none) * summary: Hook for managing delete legal hold. * score: 1 ### hook useDeleteMappingTemplate * file: src/platform/import/hooks/useImportMappingTemplates.ts:97 * kind: hook * core: platform * spec: (none) * summary: Soft-delete a mapping template (sets deleted\_at). * score: 4 ### hook useDeleteProvisioningRequest * file: src/platform/provisioning/hooks/useDeleteProvisioningRequest.ts:11 * kind: hook * core: platform * spec: (none) * summary: Hook for managing delete provisioning request. * score: 1 ### hook useDeleteQuota * file: src/platform/quota/hooks/useQuotaMutation.ts:95 * kind: hook * core: platform * spec: (none) * summary: Delete a resource quota configuration. * params: * organizationId — Current org context (for cache invalidation and tenant isolation). * score: 4 ### hook useDeleteReport * file: src/platform/reports/useReportMutation.ts:135 * kind: hook * core: platform * spec: (none) * summary: Hook for managing delete report. * score: 1 ### hook useDeleteReportPermission * file: src/platform/reports/hooks/useReportPermissions.ts:100 * kind: hook * core: platform * spec: (none) * summary: Mutation hook for deleting a report permission. * score: 4 ### hook useDeleteRetentionPolicy * file: src/platform/data-retention/hooks/useRetentionPolicies.ts:81 * kind: hook * core: platform * spec: (none) * summary: Hook for managing delete retention policy. * score: 1 ### hook useDeleteRole * file: src/platform/permissions/hooks/useCustomRoles.ts:130 * kind: hook * core: platform * spec: (none) * summary: Hook to soft-delete a custom role * score: 4 ### hook useDeleteRoleLicenseMapping * file: src/platform/integrations/hooks/useEntraRoleLicenseMap.ts:120 * kind: hook * core: platform * spec: (none) * summary: Remove a role → SKU mapping. * score: 1 ### hook useDeleteSecurityAlertConfig * file: src/platform/security/hooks/useSecurityAlertConfigMutation.ts:83 * kind: hook * core: platform * spec: (none) * summary: Hook for managing delete security alert config. * score: 1 ### hook useDeleteSLADefinition * file: src/platform/sla/hooks/useSLADefinitions.ts:123 * kind: hook * core: platform * spec: (none) * summary: Soft-deletes an SLA definition by setting deleted\_at. * score: 4 ### hook useDeleteTheme * file: src/platform/theming/hooks/useTenantTheme.ts:218 * kind: hook * core: platform * spec: (none) * summary: Delete a theme row (admin only per RLS). * score: 4 ### hook useDeleteValidationRule * file: src/platform/validation/hooks/useValidationRuleMutation.ts:94 * kind: hook * core: platform * spec: (none) * summary: Delete a validation rule. * score: 1 ### hook useDeleteWorkspace * file: src/platform/navigation/workspaces/admin/useWorkspaceMutations.ts:219 * kind: hook * core: platform * spec: (none) * summary: React Query mutation that deletes a workspace by id, scoped to the activeorganization (org predicate is defense-in-depth alongside RLS). Invalidatesthe org's workspace query on success; throws "No active organization" if noorg is selected. * score: 4 ### hook useDeliveryLogs * file: src/platform/notifications/hooks/useDeliveryLogs.ts:27 * kind: hook * core: platform * spec: (none) * summary: Hook for managing delivery logs. * score: 1 ### hook useDepartments * file: src/platform/workforce/useDepartments.ts:34 * kind: hook * core: platform * spec: (none) * summary: Hook for fetching department list for cross-core useReturns simplified department data suitable for dropdowns/selectors * score: 1 ### hook useDeployments * file: src/platform/health/hooks/useDeployments.ts:23 * kind: hook * core: platform * spec: (none) * summary: Returns the last 5 Vercel deployments, refreshed every 5 minutes. * score: 4 ### hook useDevicesList * file: src/platform/sessions/hooks/useDevicesList.ts:14 * kind: hook * core: platform * spec: (none) * summary: Hook for managing devices list. * score: 1 ### hook useDiagramBroadcast * file: src/platform/workflow/useDiagramBroadcast.ts:29 * kind: hook * core: platform * spec: (none) * summary: Broadcasts and listens for diagram save/update events. * returns: send function for broadcasting updates * score: 4 ### hook useDiagramPresence * file: src/platform/workflow/useDiagramPresence.ts:24 * kind: hook * core: platform * spec: (none) * summary: Tracks which users are viewing/editing a specific diagram. * returns: Presence controls (users, track, untrack, isConnected) * score: 4 ### hook useDiagramUndoRedo * file: src/platform/workflow/useDiagramUndoRedo.ts:28 * kind: hook * core: platform * spec: (none) * summary: In-memory undo/redo stack for swim lane diagram state. * params: * state — Current diagram state (lanes, nodes, edges) * setState — Callback to replace diagram state on undo/redo * maxSize — Maximum history depth (default 50) * returns: Undo/redo callbacks and availability flags * score: 4 ### hook useDirectorySyncConfig * file: src/platform/integrations/hooks/useDirectorySyncConfig.ts:68 * kind: hook * core: platform * spec: (none) * summary: Fetch directory sync configuration from organization * score: 4 ### hook useDirectorySyncConfigMutation * file: src/platform/integrations/hooks/useDirectorySyncConfig.ts:99 * kind: hook * core: platform * spec: (none) * summary: Mutation hook for updating directory sync configuration * score: 4 ### hook useDirectorySyncLog * file: src/platform/integrations/hooks/useDirectorySyncConfig.ts:138 * kind: hook * core: platform * spec: (none) * summary: Fetch recent sync log entries * score: 1 ### hook useDirectorySyncStats * file: src/platform/integrations/hooks/useDirectorySyncConfig.ts:175 * kind: hook * core: platform * spec: (none) * summary: Fetch directory sync statistics * score: 4 ### hook useDiscoverObjects * file: src/platform/data-manager/hooks/useDiscoverObjects.ts:14 * kind: hook * core: platform * spec: (none) * summary: Hook for managing discover objects. * score: 1 ### hook useDismissEntraUser * file: src/platform/integrations/hooks/useEntraUnmatchedUsers.ts:172 * kind: hook * core: platform * spec: (none) * summary: Dismiss an unmatched Entra user (admin doesn't want to link them) * score: 4 ### hook useDispatchPortalRun * file: src/platform/automation/portal/hooks.ts:151 * kind: hook * core: platform * spec: (none) * summary: Dispatch a run through the platform seam (AC-2 / AC-5). * score: 4 ### hook useDmParticipants * file: src/platform/messaging/hooks/useDmParticipants.ts:24 * kind: hook * core: platform * spec: (none) * summary: Returns a map of DM conversationId → the other participant's display info.Group/channel/record conversations are ignored. * score: 4 ### hook useDocumentAnalytics * file: src/platform/documents/hooks/useDocumentAnalytics.ts:52 * kind: hook * core: platform * spec: (none) * summary: Fetch aggregated document analytics for the current organization. * returns: Analytics data gated by the permission * score: 4 ### hook useDocumentApprovals * file: src/platform/documents/hooks/useDocumentApprovals.ts:21 * kind: hook * core: platform * spec: (none) * summary: Hook for managing document approvals. * score: 1 ### hook useDocumentDetail * file: src/platform/documents/useDocumentDetail.ts:20 * kind: hook * core: platform * spec: (none) * summary: Hook for managing document detail. * score: 1 ### hook useDocumentDownload * file: src/platform/documents/useDocumentDownload.ts:12 * kind: hook * core: platform * spec: (none) * summary: Hook for managing document download. * score: 1 ### hook useDocumentExport * file: src/platform/clinical/documents/useDocumentExport.ts:24 * kind: hook * core: platform * spec: (none) * summary: Mutation hook for initiating document exports with consent verification. * score: 4 ### hook useDocumentMutation * file: src/platform/documents/useDocumentMutation.ts:39 * kind: hook * core: platform * spec: (none) * summary: Provides mutations for updating, deleting, and changing the status of documents with automatic cache invalidation and user-facing toasts. * returns: An object with mutation functions and pending-state flags:- - async function accepting to update document metadata and return the updated row\.- - async function accepting a document ID string, deletes the file from storage and the document record, and returns the deleted document ID.- - async function accepting to update a document's status (sets and when publishing) and returns the updated row\.- - when an update mutation is pending, otherwise.- - when a delete mutation is pending, otherwise.- - when a status-change mutation is pending, otherwise. * score: 4 ### hook useDocumentPermissions * file: src/platform/documents/useDocumentPermissions.ts:44 * kind: hook * core: platform * spec: (none) * summary: Manage and mutate permissions for a specific document. * params: * documentId — Optional ID of the document whose permissions are queried and modified; when omitted the query is disabled. * returns: An object with: - : the list of permissions for the document (empty array by default), - : whether the permissions query is in progress, - : the query error if one occurred, - : function to add a permission (accepts ), - : function to remove a permission (accepts ), - : whether an add-permission mutation is pending, - : whether a remove-permission mutation is pending * score: 4 ### hook useDocumentPreview * file: src/platform/documents/useDocumentPreview\.ts:13 * kind: hook * core: platform * spec: (none) * summary: Hook for managing document preview. * score: 1 ### hook useDocumentSearch * file: src/platform/documents/useDocumentSearch.ts:28 * kind: hook * core: platform * spec: (none) * summary: Hook for managing document search. * score: 1 ### hook useDocumentTemplate * file: src/platform/templates/hooks/useDocumentTemplate.ts:40 * kind: hook * core: platform * spec: (none) * summary: Fetches a single document template by ID or resolves the default template for a given type.If is provided, returns the matching template (including its letterhead) scoped to the organization or system. If is not provided, attempts to return the organization's active default for , falling back to the system default. The query is disabled unless sufficient inputs are available. * params: * templateId — Optional template UUID to fetch. When provided, the hook returns that exact template. * organizationId — Optional organization ID to scope the lookup. If omitted, the current organization from context is used. * templateType — Optional template type to resolve a default for when is not provided. * returns: The React Query result containing a when found, if no default exists, and query metadata. * example: | // Get a specific template by IDconst data = useDocumentTemplate('uuid-here'); // Get the default policy template for the current organization (falls back to system default)const data = useDocumentTemplate(undefined, undefined, 'policy'); * score: 4 ### hook useDocumentTemplateMutation * file: src/platform/templates/hooks/useDocumentTemplateMutation.ts:79 * kind: hook * core: platform * spec: (none) * summary: Provides mutation hooks for creating, updating (with optional versioning), deprecating, cloning, setting default, and removing document templates for the current organization. Each returned mutation handles database operations via Supabase, shows user-facing toasts, and invalidates template/document queries on success. * returns: An object with:- — Mutation for inserting a new document template and its initial version.- — Mutation for updating a template; can optionally create a new template version with change notes.- — Mutation for marking a template as deprecated and clearing its default flag.- — Mutation that invokes a Postgres RPC to clone a template into a target organization and returns the new template ID (accepts optional to attempt immediate activation).- — Mutation for unsetting the current default for a template type and setting the specified template as default.- — Mutation for deleting a non-system, unused template.- — Boolean that is when any of the above mutations is pending. * example: | const create, update, deprecate, clone = useDocumentTemplateMutation();// Create with auto-versioningawait update.mutateAsync( id: 'uuid', data: name: 'Updated' , createVersion: true, changeNotes: 'Updated name'); * score: 4 ### hook useDocumentTemplates * file: src/platform/templates/hooks/useDocumentTemplate.ts:118 * kind: hook * core: platform * spec: (none) * summary: Retrieve document templates for an organization applying optional filters. Fetches document templates scoped to an organization (or system templates when requested), applying optional filters for template type, status, default flag, and name search. The query orders results by template type, default status (defaults first), then name. * params: * filters — Partial filters to apply. Supported properties: - organizationId?: string — overrides the current organization id - templateType?: TemplateType — filter by template type - status?: string — filter by template status - isDefault?: boolean — filter by default flag - includeSystem?: boolean — include system-wide templates in results - search?: string — case-insensitive substring match against template name * returns: The React Query result containing an array of objects. * example: | const data: templates = useDocumentTemplates( templateType: 'policy', status: 'active', includeSystem: true,); * score: 4 ### hook useDocumentTemplateVersions * file: src/platform/templates/hooks/useDocumentTemplate.ts:176 * kind: hook * core: platform * spec: (none) * summary: Retrieve the version history for a document template. Fetches all versions for the given , ordered by descending. * params: * templateId — The UUID of the document template to fetch versions for * returns: The React Query result containing an array of objects (or if none) * example: | const data: versions = useDocumentTemplateVersions('template-uuid'); * score: 4 ### hook useDocumentUpload * file: src/platform/documents/useDocumentUpload.ts:37 * kind: hook * core: platform * spec: (none) * summary: Provides helpers to upload a document to storage and create its database record. * returns: An object with:- : a function that accepts and uploads the file, creating and returning the created document record.- : when an upload is in progress, otherwise.- : the upload progress as a number (0-100).- : the last upload error, if any. * score: 4 ### hook useDocumentVersionComparison * file: src/platform/documents/hooks/useDocumentVersionComparison.ts:44 * kind: hook * core: platform * spec: (none) * summary: Compare two document versions side-by-side. * params: * documentId — The parent document ID * versionIdA — First version ID to compare * versionIdB — Second version ID to compare * returns: Comparison result with metadata and optional text diffs * score: 4 ### hook useDocumentVersions * file: src/platform/documents/useDocumentVersions.ts:43 * kind: hook * core: platform * spec: (none) * summary: Manage and mutate versions for a document identified by . * returns: An object with the following properties:- : Array of document version records for the document.- : while versions are being fetched, otherwise .- : The fetch error object, if any occurred.- : Function to create a new document version (accepts ).- : while a version creation is pending, otherwise .- : Function to rollback the document to a specific version (accepts ).- : while a rollback is pending, otherwise . * score: 4 ### hook useDoubleTap * file: src/platform/gestures/hooks/useDoubleTap.ts:42 * kind: hook * core: platform * spec: (none) * summary: Hook to detect single and double taps * score: 4 ### hook useDraftExpiration * file: src/platform/forms/hooks/useDraftExpiration.ts:21 * kind: hook * core: platform * spec: (none) * summary: Hook for managing draft expiration. * score: 1 ### hook useEdgeFunctionHealth * file: src/platform/health/hooks/useEdgeFunctionHealth.ts:32 * kind: hook * core: platform * spec: (none) * summary: Returns per-function health summaries for the last 24 hours. * score: 4 ### hook useEdgeSwipe * file: src/platform/gestures/hooks/useEdgeSwipe.ts:16 * kind: hook * core: platform * spec: (none) * summary: Hook for managing edge swipe. * score: 1 ### hook useEditableStandardFields * file: src/platform/data-manager/utils/rawDataAllowlist.ts:20 * kind: hook * core: platform * spec: (none) * summary: Returns the list of standard field keys that are editable for a given object,along with the loading state of the underlying settings query.Reads from . * score: 4 ### hook useEffectiveLayout * file: src/platform/page-layouts/hooks/useEffectiveLayout.ts:44 * kind: hook * core: platform * spec: (none) * summary: Hook for determining the effective layout for a given context.Priority:1. Default layout for object + type (is\_default = true)2. First layout for object + type3. null if no layouts exist * example: | const layout, isLoading = useEffectiveLayout( objectName: 'hr\_employees', layoutType: 'detail',); * score: 1 ### hook useEmailProviderHealth * file: src/platform/integrations/hooks/useEmailProviderHealth.ts:66 * kind: hook * core: platform * spec: (none) * summary: React Query wrapper around the edge function. * score: 4 ### hook useEmailSignatureSettings * file: src/platform/email-signatures/hooks/useEmailSignatureSettings.ts:19 * kind: hook * core: platform * spec: (none) * summary: Fetches email signature settings for the organization. * score: 4 ### hook useEmbeddable * file: src/platform/telephony/hooks/useEmbeddable.ts:73 * kind: hook * core: platform * spec: (none) * summary: Hook for controlling the RingCentral Embeddable widget.Enhanced with OAuth state tracking (T6) for better user feedback. * example: | const isReady, isLoggedIn, loginStatus, dial, navigate = useEmbeddable();if (isReady && isLoggedIn) dial('+15551234567');// Show different UI based on login statusif (loginStatus === 'authenticating') return Spinner message="Signing in to RingCentral..." /; * score: 1 ### hook useEmbeddableCall * file: src/platform/telephony/hooks/useEmbeddableCall.ts:74 * kind: hook * core: platform * spec: (none) * summary: Hook for tracking and controlling active calls in the Embeddable widget.Enhanced with call connection metrics (T19). * example: | const activeCall, callMetrics, isRinging, answer, hangup = useEmbeddableCall();if (isRinging) console.log('Incoming call from:', activeCall?.from.phoneNumber); * score: 1 ### hook useEmbeddableCallLogger * file: src/platform/telephony/hooks/useEmbeddableCallLogger.ts:25 * kind: hook * core: platform * spec: (none) * summary: Hook that automatically logs Embeddable calls to ce\_calls when they end.Should be mounted once inside EmbeddableWrapper. * score: 4 ### hook useEmbeddableEvents * file: src/platform/telephony/hooks/useEmbeddableEvents.ts:58 * kind: hook * core: platform * spec: (none) * summary: Generic hook for subscribing to RingCentral Embeddable widget events.Use this when you need specific event callbacks without managing fullwidget state. For widget control, use useEmbeddable instead. * score: 4 ### hook useEmbeddableVoicemail * file: src/platform/telephony/hooks/useEmbeddableVoicemail.ts:70 * kind: hook * core: platform * spec: (none) * summary: Hook for accessing voicemails through the RingCentral Embeddable widget.Note: The Embeddable widget doesn't provide a direct API to list voicemails.This hook tracks voicemail notifications and provides navigation helpers. * example: | const unreadCount, navigateToVoicemail = useEmbeddableVoicemail();return ( Badge count=unreadCount Button onClick=navigateToVoicemailVoicemail/Button /Badge); * score: 1 ### hook useEmergencyOverride * file: src/platform/compliance/hooks/useConsentEnforcement.ts:38 * kind: hook * core: platform * spec: (none) * summary: Mutation to log an emergency override of SUD consent gate.Returns the audit log ID on success. * score: 4 ### hook useEmployeeEvents * file: src/platform/hr/useEmployeeEvents.ts:40 * kind: hook * core: platform * spec: (none) * summary: Subscribe to employee lifecycle events for cross-core consumers.- INSERT on hr\_employees → onEmployeeCreated(EmployeeCreatedPayload)- UPDATE when employment\_status transitions to 'terminated' → onEmployeeTerminated(EmployeeTerminatedPayload)Requires orgId for tenant scope; events outside the org are ignored. * score: 4 ### hook useEmployeeLookup * file: src/platform/hr/useEmployeeLookup.ts:16 * kind: hook * core: platform * spec: (none) * summary: Fetch a single employee by ID for cross-core use.Respects RLS; returns null if not in current org or not found. * score: 4 ### hook useEmployeeLookup * file: src/platform/workforce/useEmployeeLookup.ts:27 * kind: hook * core: platform * spec: (none) * summary: Hook for searching and looking up employees across the platform * score: 1 ### hook useEmployeeOOOStatus * file: src/platform/integrations/hooks/useEmployeePresence.ts:90 * kind: hook * core: platform * spec: (none) * summary: Get Out-of-Office status for an employee. * score: 4 ### hook useEmployeePresence * file: src/platform/integrations/hooks/useEmployeePresence.ts:37 * kind: hook * core: platform * spec: (none) * summary: Get Teams presence for a single employee.Short staleTime since presence changes frequently. * score: 4 ### hook useEmployeeSearch * file: src/platform/hr/useEmployeeSearch.ts:16 * kind: hook * core: platform * spec: (none) * summary: Search employees with filters for cross-core use.Respects RLS; returns list of EmployeeContext. * score: 4 ### hook useEmployeeSharePointMemberships * file: src/platform/integrations/hooks/useEmployeeEntraMemberships.ts:84 * kind: hook * core: platform * spec: (none) * summary: Fetch SharePoint memberships for an employee * score: 4 ### hook useEmployeesPresenceBatch * file: src/platform/integrations/hooks/useEmployeePresence.ts:64 * kind: hook * core: platform * spec: (none) * summary: Get batch Teams presence for multiple employees.Used in list views for visible employee rows. * score: 4 ### hook useEmployeeTeamsMemberships * file: src/platform/integrations/hooks/useEmployeeEntraMemberships.ts:56 * kind: hook * core: platform * spec: (none) * summary: Fetch Teams memberships for an employee * score: 4 ### hook useEncounterContext * file: src/platform/scheduling/encounter/useEncounterContext.ts:18 * kind: hook * core: platform * spec: (none) * summary: Fetches encounter context including linked appointment times. * score: 4 ### hook useEntityFieldConfig * file: src/platform/field-config/hooks/useEntityFieldConfig.ts:11 * kind: hook * core: platform * spec: (none) * summary: Hook for managing entity field config. * score: 1 ### hook useEntityFieldConfigs * file: src/platform/field-config/hooks/useEntityFieldConfigs.ts:11 * kind: hook * core: platform * spec: (none) * summary: Hook for managing entity field configs. * score: 1 ### hook useEntraConfig * file: src/platform/integrations/hooks/useEntraConfig.ts:48 * kind: hook * core: platform * spec: (none) * summary: Fetch organization Entra ID configuration * score: 4 ### hook useEntraConfigMutation * file: src/platform/integrations/hooks/useEntraConfig.ts:131 * kind: hook * core: platform * spec: (none) * summary: Mutation hook for updating Entra configuration * score: 4 ### hook useEntraConnectionTest * file: src/platform/integrations/hooks/useEntraConfig.ts:177 * kind: hook * core: platform * spec: (none) * summary: Returns a mutation that validates an Entra tenant/domain pair through theplatform registration edge function. * score: 4 ### hook useEntraHealth * file: src/platform/integrations/hooks/useEntraHealth.ts:36 * kind: hook * core: platform * spec: (none) * summary: Fetches live Graph health for the current org via the entra-register-app probe. * score: 4 ### hook useEntraRoleLicenseMap * file: src/platform/integrations/hooks/useEntraRoleLicenseMap.ts:68 * kind: hook * core: platform * spec: (none) * summary: Fetch this org's role → SKU mappings. * score: 4 ### hook useErrorTracking * file: src/platform/monitoring/useErrorTracking.ts:56 * kind: hook * core: platform * spec: (none) * summary: Hook for managing error tracking. * score: 1 ### hook useExistingStarterRoles * file: src/platform/permissions/hooks/useStarterRoles.ts:165 * kind: hook * core: platform * spec: (none) * summary: Hook to check if starter roles already exist * score: 4 ### hook useExportBundle * file: src/platform/ai/hooks/useInstallBundle.ts:145 * kind: hook * core: platform * spec: (none) * summary: Mutation hook to export a bundle via pf\_export\_bundle.Validates SKILL.md governance (lifecycle\_status in approved|published),sha256-hashes the content, and inserts a pf\_bundles row. PF-62-EN-02 AC-1 * score: 4 ### hook useExportRequests * file: src/platform/export/hooks/useExportRequests.ts:22 * kind: hook * core: platform * spec: (none) * summary: Hook for managing export requests. * score: 1 ### hook useExportStatus * file: src/platform/clinical/documents/useExportStatus.ts:20 * kind: hook * core: platform * spec: (none) * summary: Polls export status by exchange log ID. Stops polling when status is terminal. * params: * exportId — The cl\_data\_exchange\_log row ID to poll * score: 4 ### hook useExportStatus * file: src/platform/export/hooks/useExportStatus.ts:20 * kind: hook * core: platform * spec: (none) * summary: Polls a single export request for status changes.Refetches every 5s while status is pending/processing. * score: 4 ### hook useExportTemplates * file: src/platform/export/hooks/useExportTemplates.ts:23 * kind: hook * core: platform * spec: (none) * summary: Provides export templates queries and mutation actions scoped to the current organization. * score: 4 ### hook useExpressionValidation * file: src/platform/wizards/hooks/useExpressionValidation.ts:42 * kind: hook * core: platform * spec: (none) * summary: Hook for real-time expression validation * score: 1 ### hook useFeaturedListings * file: src/platform/wizards/hooks/useMarketplace.ts:235 * kind: hook * core: platform * spec: (none) * summary: Hook to fetch featured listings * score: 4 ### hook useFeatureFlag * file: src/platform/feature-flags/useFeatureFlag.ts:36 * kind: hook * core: platform * spec: (none) * summary: Check if a feature flag is enabled for the current user/org. * example: | const enabled = useFeatureFlag('pf.dark\_mode');if (enabled) ... const enabled, variant = useFeatureFlag('pf.onboarding\_experiment');if (variant === 'variant\_a') ... * score: 4 ### hook useFieldAssignmentMutation * file: src/platform/page-layouts/hooks/useFieldAssignmentMutation.ts:26 * kind: hook * core: platform * spec: (none) * summary: Hook providing mutations for page layout field assignment operations. * example: | const assignField, updateFieldAssignment, removeField = useFieldAssignmentMutation();await assignField.mutateAsync( section\_id: 'section-123', field\_name: 'first\_name',); * score: 4 ### hook useFieldConfigMutation * file: src/platform/field-config/hooks/useFieldConfigMutation.ts:19 * kind: hook * core: platform * spec: (none) * summary: Hook for managing field config mutation. * score: 1 ### hook useFieldConfigVersions * file: src/platform/field-config/hooks/useFieldConfigVersions.ts:11 * kind: hook * core: platform * spec: (none) * summary: Hook for managing field config versions. * score: 1 ### hook useFieldInteractionStats * file: src/platform/forms/hooks/useFieldInteractionStats.ts:47 * kind: hook * core: platform * spec: (none) * summary: Hook for managing field interaction stats. * score: 1 ### hook useFieldPermissions * file: src/platform/data-manager/hooks/useFieldPermissions.ts:15 * kind: hook * core: platform * spec: (none) * summary: Hook for managing field permissions. * score: 1 ### hook useFieldVisibility * file: src/platform/field-config/hooks/useFieldVisibility.ts:11 * kind: hook * core: platform * spec: (none) * summary: Hook for managing field visibility. * score: 1 ### hook useFieldVisibility * file: src/platform/page-layouts/hooks/useFieldVisibility.ts:23 * kind: hook * core: platform * spec: (none) * summary: Hook to get the current user's role and provide field visibility filtering.Role fetching can be extended to use PF-30 permissions system. * score: 4 ### hook useFieldVisibilityV2 * file: src/platform/conditional-logic/hooks/useConditionalLogic.ts:172 * kind: hook * core: platform * spec: (none) * summary: Hook for checking if a field should be visible based on conditional ruleSimple convenience hook for visibility-only checks * params: * rule — The conditional rule * formValues — Current form field values * returns: boolean - Whether the field should be visible * score: 1 ### hook useFileUpload * file: src/platform/upload/hooks/useFileUpload.ts:72 * kind: hook * core: platform * spec: (none) * summary: Hook for managing file uploads with progress, cancellation, and error handling. * score: 1 ### hook useFilteredNavGroups * file: src/platform/navigation/hooks/useFilteredNavGroups.ts:18 * kind: hook * core: platform * spec: (none) * summary: Filters nav groups by both permission and feature flag settings. * params: * moduleId — The parent module ID (e.g., 'hr', 'fa') * groups — Array of nav groups to filter * returns: Filtered array of nav groups * score: 4 ### hook useFilteredNavItems * file: src/platform/navigation/hooks/useNavItemPermission.ts:38 * kind: hook * core: platform * spec: (none) * summary: Filter an array of nav items based on V2 permissions * score: 4 ### hook useFilteredQuickActions * file: src/platform/navigation/hooks/useFilteredQuickActions.ts:21 * kind: hook * core: platform * spec: (none) * summary: Filter an array of quick actions based on V2 permissions * example: | const visibleActions = useFilteredQuickActions(module.quickActions); * score: 4 ### hook useFleetUsageRollup * file: src/platform/fleet/hooks/useFleetUsageRollup.ts:39 * kind: hook * core: platform * spec: (none) * summary: Fetches agent usage rollup for an organization via pf\_agent\_usage\_rollup RPC. * params: * orgId — Organization UUID (query disabled when empty) * since — Optional ISO-8601 timestamp lower-bound (defaults to server-side 30-day window) PF-130 AC-1 * score: 4 ### hook useFocusManagement * file: src/platform/navigation/hooks/useFocusManagement.ts:20 * kind: hook * core: platform * spec: (none) * summary: Hook for managing focus management. * score: 1 ### hook useFocusRestoration * file: src/platform/a11y/focus-trap.ts:113 * kind: hook * core: platform * spec: (none) * summary: Saves the currently focused element on mount and restores it on unmount.Useful for panels, drawers, and other overlays that need to returnfocus to the trigger element when dismissed. * score: 4 ### hook useFocusTrap * file: src/platform/a11y/focus-trap.ts:42 * kind: hook * core: platform * spec: (none) * summary: Traps keyboard focus within a container element.Use for custom modals, dropdown panels, and other non-Radix containers.Radix Dialog/Sheet already handles focus trapping — do not double-trap. * params: * options — Configuration for the focus trap behavior * returns: A ref to attach to the container element * score: 4 ### hook useForceRefresh * file: src/platform/pwa/hooks/useForceRefresh.ts:6 * kind: hook * core: platform * spec: (none) * summary: Hook for managing force refresh. * score: 1 ### hook useFormAnalytics * file: src/platform/forms/hooks/useFormAnalytics.ts:50 * kind: hook * core: platform * spec: (none) * summary: Hook for managing form analytics. * score: 1 ### hook useFormAnalyticsContext * file: src/platform/forms/components/FormAnalyticsProvider.tsx:48 * kind: hook * core: platform * spec: (none) * summary: Hook for managing form analytics context. * score: 1 ### hook useFormAnalyticsSummary * file: src/platform/forms/hooks/useFormCompletionMetrics.ts:109 * kind: hook * core: platform * spec: (none) * summary: Get aggregated summary stats across all forms * score: 4 ### hook useFormattingPreferences * file: src/platform/formatting/hooks.ts:21 * kind: hook * core: platform * spec: (none) * summary: Hook to get organization formatting preferencesReads from pf\_module\_settings with sensible defaults * score: 4 ### hook useFormCompletionMetrics * file: src/platform/forms/hooks/useFormCompletionMetrics.ts:45 * kind: hook * core: platform * spec: (none) * summary: Hook for managing form completion metrics. * score: 1 ### hook useFormDefinition * file: src/platform/forms/useFormDefinition.ts:39 * kind: hook * core: platform * spec: (none) * summary: Hook for managing form definition. * score: 1 ### hook useFormDraft * file: src/platform/forms/useFormDraft.ts:39 * kind: hook * core: platform * spec: (none) * summary: Hook for managing form draft. * score: 1 ### hook useFormList * file: src/platform/forms/useFormList.ts:37 * kind: hook * core: platform * spec: (none) * summary: Hook for managing form list. * score: 1 ### hook useFormMutation * file: src/platform/forms/useFormMutation.ts:67 * kind: hook * core: platform * spec: (none) * summary: Hook that provides CRUD-like operations for forms and exposes loading/error state.The returned functions perform form creation, updates, publishing (versioning), archiving, and cloning using Supabase and the current user context. Operations set while in progress and populate on failure. * returns: An object with: - — creates a new form and its optional fields, returns the created form. - — updates form metadata and replaces its fields, returns on success. - — creates a version snapshot of the form and marks it published, returns . - — marks the form as archived, returns . - — duplicates a form and its fields, returns the newly created form. - — while an operation is in progress. - — the last error encountered or . * score: 4 ### hook useFormStats * file: src/platform/forms/hooks/useFormStats.ts:21 * kind: hook * core: platform * spec: (none) * summary: Hook for managing form stats. * score: 1 ### hook useFormSubmission * file: src/platform/forms/useFormSubmission.ts:54 * kind: hook * core: platform * spec: (none) * summary: Provides an imperative API to submit form data and manage submission state for a specific form.The hook handles basic validation, persists the submission to the backend, captures errors,and exposes submission state and a reset function. * params: * options — Configuration for the hook: - formId: The identifier of the form to submit to. - organizationId: Optional organization context to include with telemetry. - siteId: Optional site context to include with telemetry. * returns: An object with: - submit: Function that accepts form data and returns the created . - isSubmitting: while a submission is in progress, otherwise. - error: The last submission or if none. - validationErrors: Array of produced by client-side validation. - reset: Function to clear submission state (, , ). * score: 4 ### hook useFormSubmissionPdf * file: src/platform/forms/hooks/useFormSubmissionPdf.ts:312 * kind: hook * core: platform * spec: (none) * summary: Provide utilities to generate and download a PDF for a form submission using templated document settings. Returns a hook API that formats submission data into PDF sections, resolves letterhead/template settings, and invokes the templated PDF generator to produce a downloadable document. * returns: An object containing:- - function to generate a PDF for a specific submission; accepts a , , array of , and optional , and returns the result of the PDF generation call.- - boolean loading state while PDF generation is in progress.- - error object if generation failed.- - function to clear the error/loading state.- - convenience function to trigger a file download from a generated PDF URL. * score: 4 ### hook useFormTracking * file: src/platform/analytics/useSessionRecorder.tsx:358 * kind: hook * core: platform * spec: (none) * summary: Hook to track form interactionsProvides helpers for common form analytics events. * params: * formId — Form identifier * returns: Form tracking helpers * score: 4 ### hook useGenerateDefaultLayout * file: src/platform/page-layouts/hooks/useGenerateDefaultLayout.ts:72 * kind: hook * core: platform * spec: (none) * summary: Hook for generating default page layouts. * example: | const generateLayout, generateAllLayouts, isGenerating = useGenerateDefaultLayout( objectName: 'hr\_employees',);// Generate a single layoutawait generateLayout('detail');// Generate all four layout typesawait generateAllLayouts(); * score: 1 ### hook useGenerateEvidence * file: src/platform/compliance/hooks/useComplianceEvidence.ts:42 * kind: hook * core: platform * spec: (none) * summary: Creates a new evidence generation job and invokes the Edge Function. * score: 4 ### hook useGenerateTemplatedPdf * file: src/platform/templates/hooks/useGenerateTemplatedPdf.ts:85 * kind: hook * core: platform * spec: (none) * summary: Creates a React hook that exposes a mutation to generate a templated PDF for the current organization. * returns: An object with: - - async function that accepts a and returns a ; - - boolean indicating whether a generation request is pending; - - any error produced by the mutation; - - function to reset the mutation state. * example: | const generatePdf, isGenerating = useGenerateTemplatedPdf();const handleExport = async () = const result = await generatePdf( letterheadId: selectedLetterhead, content: title: 'Policy Document', sections: \[ name: 'Purpose', content: policy.purpose , name: 'Scope', content: policy.scope , ], metadata: documentNumber: policy.policy\_number, version: policy.version, , , ); if (result.url) window\.open(result.url, '\_blank'); ; * score: 4 ### hook useGenerateTemplateFromDescription * file: src/platform/templates/hooks/useGenerateTemplateFromDescription.ts:34 * kind: hook * core: platform * spec: (none) * summary: Mutation hook that generates a document template structure from a description via AI. * returns: useMutation result with helper and loading/error state. * score: 4 ### hook useGestureAnalytics * file: src/platform/gestures/hooks/useGestureAnalytics.ts:35 * kind: hook * core: platform * spec: (none) * summary: Hook for managing gesture analytics. * score: 1 ### hook useGestureIntegration * file: src/platform/gestures/hooks/useGestureIntegration.ts:41 * kind: hook * core: platform * spec: (none) * summary: Hook that provides preference-aware, analytics-tracked, haptic-enabledgesture integration. Used internally by Phase 1 gesture hooks. * score: 4 ### hook useGesturePreferences * file: src/platform/gestures/hooks/useGesturePreferences.ts:17 * kind: hook * core: platform * spec: (none) * summary: Hook for managing gesture preferences. * score: 1 ### hook useGetBundle * file: src/platform/ai/hooks/useGetBundle.ts:78 * kind: hook * core: platform * spec: (none) * summary: Lazy hook that wraps the pf\_get\_bundle SECURITY DEFINER RPC.Returns a callback — callers invoke it on demand(e.g. on Install click) rather than on mount. The returned BundlePayloadcarries the real SHA-256 required by pf\_install\_bundle'sintegrity check.pf\_get\_bundle (migration 20260702000018) requires an authenticated session;it returns zero rows if the bundle\_id is not found. PF-62-EN-02 AC-1 * score: 4 ### hook useGoogleWorkspaceConnection * file: src/platform/integrations/hooks/useGoogleWorkspaceConnection.ts:70 * kind: hook * core: platform * spec: (none) * summary: Fetch the active organization's Google Workspace connection (if any). * score: 4 ### hook useGoogleWorkspaceOAuthAuthorize * file: src/platform/integrations/hooks/useGoogleWorkspaceConnection.ts:216 * kind: hook * core: platform * spec: (none) * summary: Start Google OAuth consent flow for the active org. * score: 4 ### hook useGoogleWorkspaceOAuthRevoke * file: src/platform/integrations/hooks/useGoogleWorkspaceConnection.ts:238 * kind: hook * core: platform * spec: (none) * summary: Revoke OAuth linkage by clearing granted metadata and stored refresh token. * score: 4 ### hook useGrantRolePermission * file: src/platform/permissions/hooks/useRolePermissions.ts:45 * kind: hook * core: platform * spec: (none) * summary: Hook to grant a permission to a role * score: 4 ### hook useHandbookComplianceStats * file: src/platform/governance/handbook/useHandbookComplianceStats.ts:15 * kind: hook * core: platform * spec: (none) * summary: Per-policy completion aggregates for the HR-43 compliance dashboard (FR-4). * score: 4 ### hook useHandbookPolicies * file: src/platform/governance/handbook/useHandbookPolicies.ts:10 * kind: hook * core: platform * spec: (none) * summary: List GR-01 policies tagged as workforce handbooks per HR-43 FR-1( AND ). * score: 4 ### hook useHapticFeedback * file: src/platform/gestures/hooks/useHapticFeedback.ts:17 * kind: hook * core: platform * spec: (none) * summary: Hook for managing haptic feedback. * score: 1 ### hook useHasCredentialForSource * file: src/platform/credentials/hooks/useHasCredentialForSource.ts:23 * kind: hook * core: platform * spec: (none) * summary: Checks whether credential-vault metadata exists for an external integrationsource without reading or returning the encrypted secret value. * score: 4 ### hook useHasPermission * file: src/platform/permissions/hooks/useHasPermission.ts:40 * kind: hook * core: platform * spec: (none) * summary: Check if user has a specific permission * example: | // Single permission checkconst canView = useHasPermission('hr.employees.view'); // Multiple permission checksconst perms = useHasPermission(\['hr.employees.view', 'hr.employees.edit']);if (perms\['hr.employees.edit']) ... * score: 4 ### hook useHasPermissionWithLoading * file: src/platform/permissions/hooks/useHasPermission.ts:84 * kind: hook * core: platform * spec: (none) * summary: Hook variant that returns loading state * score: 4 ### hook useHeadshotCampaignMembers * file: src/platform/headshot/hooks/useHeadshotCampaigns.ts:52 * kind: hook * core: platform * spec: (none) * summary: Fetches campaign members for a specific campaign. * score: 4 ### hook useHeadshotCampaigns * file: src/platform/headshot/hooks/useHeadshotCampaigns.ts:24 * kind: hook * core: platform * spec: (none) * summary: Fetches all headshot campaigns for the current organization. * score: 4 ### hook useHeadshotJob * file: src/platform/headshot/hooks/useHeadshotJobs.ts:49 * kind: hook * core: platform * spec: (none) * summary: Fetches a single headshot job by ID. * score: 4 ### hook useHeadshotJobsList * file: src/platform/headshot/hooks/useHeadshotJobs.ts:19 * kind: hook * core: platform * spec: (none) * summary: Fetches headshot jobs for the current user within their organization. * score: 4 ### hook useHeadshotQuota * file: src/platform/headshot/hooks/useHeadshotQuota.ts:26 * kind: hook * core: platform * spec: (none) * summary: Returns the current month's headshot generation quota for the org. * score: 4 ### hook useHeadshotResults * file: src/platform/headshot/hooks/useHeadshotResults.ts:19 * kind: hook * core: platform * spec: (none) * summary: Fetches headshot results for the current user, optionally filtered by job. * score: 4 ### hook useHeadshotSettings * file: src/platform/headshot/hooks/useHeadshotSettings.ts:34 * kind: hook * core: platform * spec: (none) * summary: Fetches headshot-related settings for the current organization. * score: 4 ### hook useHeadshotSignedUrls * file: src/platform/headshot/hooks/useHeadshotSignedUrls.ts:19 * kind: hook * core: platform * spec: (none) * summary: Given raw HeadshotResult rows, fetches signed URLs for each and returnsHeadshotResultWithUrl\[]. * score: 4 ### hook useHealthCheck * file: src/platform/health/hooks/useHealthCheck.ts:54 * kind: hook * core: platform * spec: (none) * summary: Hook for managing health check. * score: 1 ### hook useHealthMetrics * file: src/platform/health/hooks/useHealthMetrics.ts:273 * kind: hook * core: platform * spec: (none) * summary: Hook for fetching and managing health metrics * score: 1 ### hook useHideOnScroll * file: src/platform/navigation/hooks/useHideOnScroll.ts:34 * kind: hook * core: platform * spec: (none) * summary: Returns when the mobile header should be translated out of view. * params: * scrollContainer — Optional explicit scroll container element. Defaults to . Pass to keep the listener detached. * score: 4 ### hook useHistoricalMetrics * file: src/platform/health/hooks/useHistoricalMetrics.ts:29 * kind: hook * core: platform * spec: (none) * summary: Hook for managing historical metrics. * score: 1 ### hook useHistoryBack * file: src/platform/navigation/hooks/useHistoryBack.ts:47 * kind: hook * core: platform * spec: (none) * summary: History-aware back hook. See module docs for behavior contract. is a no-op on devices without the Vibration API (includingiOS Safari and all desktop browsers), so it is safe to call unconditionally. * score: 4 ### hook useHolidays * file: src/platform/calendar/hooks/use-holidays.ts:22 * kind: hook * core: platform * spec: (none) * summary: Fetches holidays for a calendar, optionally filtered by year. * params: * calendarId — UUID of the business calendar. * year — Optional year to filter holidays (e.g., 2026). * returns: Query result with . * score: 4 ### hook useHolidayTemplates * file: src/platform/calendar/hooks/use-holiday-templates.ts:33 * kind: hook * core: platform * spec: (none) * summary: Returns all available holiday templates, optionally filtered by year. * params: * year — Optional year filter. * returns: Object with array and helper . * score: 4 ### hook useHoverBridge * file: src/platform/navigation/hooks/useHoverBridge.ts:46 * kind: hook * core: platform * spec: (none) * summary: Creates a hover bridge between trigger and flyout elements.The bridge pattern:1. Opening: Delayed to prevent accidental triggers (150ms default)2. Closing: Longer delay (200ms default) to allow mouse travel between elements3. Both trigger and flyout cancel close timers on enter4. Only closes when mouse leaves both elements for the full close delay * score: 4 ### hook useICD10Hierarchy * file: src/platform/terminology/hooks/useICD10Hierarchy.ts:24 * kind: hook * core: platform * spec: (none) * summary: Fetches ICD-10 codes at a given hierarchy level under a parent code.Use parentCode=null to get top-level chapters. * score: 4 ### hook useImportAISkill * file: src/platform/ai/hooks/useImportAISkill.ts:84 * kind: hook * core: platform * spec: (none) * summary: Hook for importing AI skills from SKILL.md files.Handles file parsing, conflict detection against existing skills,and Rename/Replace resolution before creating the skill. * returns: Import state and control functions. * score: 1 ### hook useImportAudit * file: src/platform/import/hooks/useImportAudit.ts:38 * kind: hook * core: platform * spec: (none) * summary: Hook to log import-related audit events. * params: * organizationId — Organization context * returns: logImportEvent callback * score: 4 ### hook useImportBatch * file: src/platform/import/hooks/useImportBatches.ts:41 * kind: hook * core: platform * spec: (none) * summary: Get a single import batch by ID. * score: 4 ### hook useImportBatches * file: src/platform/import/hooks/useImportBatches.ts:17 * kind: hook * core: platform * spec: (none) * summary: List import batches for an organization. * score: 4 ### hook useImportBatchesList * file: src/platform/import-batches/hooks/useImportBatchesList.ts:19 * kind: hook * core: platform * spec: (none) * summary: Hook for listing recent import batches (legacy interface). * score: 1 ### hook useImportHolidaysFromCsv * file: src/platform/calendar/hooks/use-import-holidays-from-csv.ts:23 * kind: hook * core: platform * spec: (none) * summary: Returns a mutation that imports parsed CSV holidays into a business calendar. * params: * calendarId — UUID of the target calendar. * organizationId — UUID of the organization. * returns: React Query mutation object. * score: 4 ### hook useImportProgress * file: src/platform/import/hooks/useImportProgress.ts:33 * kind: hook * core: platform * spec: (none) * summary: Poll import batch progress during execution. * params: * batchId — Import batch ID to track * organizationId — Organization context * score: 4 ### hook useImportRecords * file: src/platform/import/hooks/useImportRecords.ts:17 * kind: hook * core: platform * spec: (none) * summary: List import records for a given batch. * score: 4 ### hook useImportTheme * file: src/platform/theming/hooks/useTenantTheme.ts:247 * kind: hook * core: platform * spec: (none) * summary: Import a theme from a JSON payload.Creates a new theme row or updates the existing active theme. * score: 4 ### hook useInboxCount * file: src/platform/inbox/hooks/useInboxCount.ts:16 * kind: hook * core: platform * spec: (none) * summary: Hook for managing inbox count. * score: 1 ### hook useInboxSnoozes * file: src/platform/inbox/hooks/useInboxSnoozes.ts:22 * kind: hook * core: platform * spec: (none) * summary: Hook for managing inbox snoozes. * score: 1 ### hook useIncomingCallNotification * file: src/platform/telephony/hooks/useIncomingCallNotification.ts:49 * kind: hook * core: platform * spec: (none) * summary: Subscribes to realtime inbound call events for the current user, surfaces an enriched incoming call for screen-pop notifications, and exposes controls to dismiss the notification and observe subscription state. * params: * options — UseIncomingCallNotificationOptions object configuring the hook - enabled: boolean to enable or disable the realtime subscription (default: true) - onIncomingCall: optional callback invoked with the enriched when a new inbound call for the current user is received * returns: UseIncomingCallNotificationReturn An object containing: - : the current incoming or if none, - : a function to clear the current incoming call, - : when the Supabase realtime channel is actively subscribed, otherwise. * score: 4 ### hook useIndexRecommendations * file: src/platform/query-performance/hooks/useIndexRecommendations.ts:25 * kind: hook * core: platform * spec: (none) * summary: Fetch slow query logs and generate index recommendations. * params: * timeRange — Time range preset for log window * enabled — Whether recommendations feature is enabled * returns: Query result with IndexRecommendation array * score: 4 ### hook useInfiniteTemplates * file: src/platform/templates/hooks/useTemplateLazyLoad.ts:54 * kind: hook * core: platform * spec: (none) * summary: Hook for infinite scrolling template lists * score: 1 ### hook useInlineEdit * file: src/platform/table-v2/hooks/useInlineEdit.ts:87 * kind: hook * core: platform * spec: (none) * summary: Hook for managing inline cell editing in TanStack Table * score: 1 ### hook useInstallBundle * file: src/platform/ai/hooks/useInstallBundle.ts:79 * kind: hook * core: platform * spec: (none) * summary: Mutation hook to install a bundle via pf\_install\_bundle (fail-closed).Invalidates all \['marketplace'] queries on success. PF-62-EN-02 AC-2 * score: 4 ### hook useIntegration * file: src/platform/integrations/hooks/useIntegration.ts:17 * kind: hook * core: platform * spec: (none) * summary: Hook for managing integration. * score: 1 ### hook useIntegrationMutation * file: src/platform/integrations/hooks/useIntegrationMutation.ts:17 * kind: hook * core: platform * spec: (none) * summary: Hook for managing integration mutation. * score: 1 ### hook useIntegrations * file: src/platform/integrations/hooks/useIntegrations.ts:13 * kind: hook * core: platform * spec: (none) * summary: Hook for managing integrations. * score: 1 ### hook useInvalidateTemplateCache * file: src/platform/templates/hooks/useTemplateCache.ts:168 * kind: hook * core: platform * spec: (none) * summary: Hook to invalidate template caches * score: 4 ### hook useInvitationAcceptor * file: src/platform/auth/useInvitationAcceptor.ts:19 * kind: hook * core: platform * spec: (none) * summary: Hook that auto-accepts pending invitations after login.Place the component version (InvitationAcceptor) in the authenticated layout. * score: 4 ### hook useIpAllowlistList * file: src/platform/security/hooks/useIpListQueries.ts:22 * kind: hook * core: platform * spec: (none) * summary: Hook for managing ip allowlist list. * score: 1 ### hook useIpBlocklistList * file: src/platform/security/hooks/useIpListQueries.ts:52 * kind: hook * core: platform * spec: (none) * summary: Hook for managing ip blocklist list. * score: 1 ### hook useJurisdictionProfile * file: src/platform/jurisdiction/useJurisdictionProfile.ts:33 * kind: hook * core: platform * spec: (none) * summary: Resolves the effective jurisdiction profile for the current org + optional site. * params: * siteId — Optional site UUID for site-level override resolution. * returns: Query result containing the merged . * score: 4 ### hook useJurisdictionProfiles * file: src/platform/jurisdiction/hooks/useJurisdictionProfiles.ts:26 * kind: hook * core: platform * spec: (none) * summary: Fetches all active jurisdiction profiles for the selector dropdown. * score: 4 ### hook useJurisdictionProfiles * file: src/platform/transcription/admin/hooks/useTranscriptionVendors.ts:115 * kind: hook * core: platform * spec: (none) * summary: Active jurisdiction profiles (used by the routing dialog dropdown). * score: 4 ### hook useJurisdictionRoutingRules * file: src/platform/transcription/admin/hooks/useTranscriptionVendors.ts:90 * kind: hook * core: platform * spec: (none) * summary: Routing rules for the current org. * score: 4 ### hook useKeyboardNavigation * file: src/platform/navigation/hooks/useKeyboardNavigation.ts:19 * kind: hook * core: platform * spec: (none) * summary: Hook for managing keyboard navigation. * score: 1 ### hook useKeyboardShortcut * file: src/platform/a11y/keyboard-shortcuts.ts:91 * kind: hook * core: platform * spec: (none) * summary: Registers a keyboard shortcut on mount and unregisters on unmount. * params: * id — Unique shortcut identifier * keys — Key combination string (e.g., "Ctrl+K", "Alt+Shift+S") * handler — Callback invoked when the shortcut fires * category — Category for grouping in help dialog * description — Human-readable description * enabled — Whether the shortcut is active (default: true) * score: 4 ### hook useKeyboardShortcutHelp * file: src/platform/a11y/keyboard-shortcuts.ts:151 * kind: hook * core: platform * spec: (none) * summary: Returns all currently registered keyboard shortcuts, grouped by category.Re-renders when the registry changes (shortcuts added/removed). * returns: Array of registered shortcut entries * score: 4 ### hook useKnowledgeArticle * file: src/platform/knowledge/hooks/use-knowledge-articles.ts:205 * kind: hook * core: platform * spec: (none) * summary: Fetches a single knowledge article by its id and exposes the query state for consumption.Uses the provided to load the corresponding . When is the hook stays disabled and is . * params: * id — The knowledge article's identifier, or to disable the query * returns: An object containing: - : the loaded or - : while the query is in-flight - : the error thrown during fetch, or - : a function to re-run the query * score: 4 ### hook useKnowledgeArticles * file: src/platform/knowledge/hooks/use-knowledge-articles.ts:107 * kind: hook * core: platform * spec: (none) * summary: Fetches a paginated, sortable, and filterable list of knowledge base articles scoped to the current organization.Builds and runs a Supabase query for pf\_knowledge\_base using the current organization context, applying optional filters (category, status, isIndexed, tags, search), sorting, and pagination, and returns the resulting articles and total count with React Query metadata. * params: * options — Hook options controlling filtering, pagination, sorting, and whether the query is enabled. - filters: Optional filters to apply: , , , , and (full-text). - pagination: Optional pagination settings: (1-based) and . - sort: Optional sort settings: and ('asc' | 'desc'). Defaults to desc. - enabled: When , disables the query (defaults to ). * returns: UseKnowledgeArticlesResult - An object containing: - : Array of KnowledgeArticle matching the query. - : Total number of articles for the filtered query. - : Loading state of the query. - : Error encountered while fetching, or . - : Function to refetch the query. * example: | function ArticlesList() const articles, totalCount, isLoading, refetch = useKnowledgeArticles( filters: status: 'published', tags: \['faq'] , pagination: page: 1, pageSize: 20 , sort: field: 'updated\_at', direction: 'desc' , ); // render articles... * score: 4 ### hook useKnowledgeBaseCategories * file: src/platform/ai/wizards/ai-skill-creation/hooks/useKnowledgeBaseCategories.ts:37 * kind: hook * core: platform * spec: (none) * summary: Returns the distinct published+indexed knowledge-base categories for the active org.Only eligible (retrievable) articles are counted, so an empty result means RAG has nosource to draw from yet. Cached per (5-min stale / 10-min gc). * params: * enabled — When false, the underlying query stays idle (e.g. RAG toggle off). * returns: Distinct categories with article counts, plus query state. * score: 4 ### hook useLayoutEditorState * file: src/platform/page-layouts/hooks/useLayoutEditorState.ts:51 * kind: hook * core: platform * spec: (none) * summary: Hook for managing layout editor state. * score: 1 ### hook useLayoutVersions * file: src/platform/page-layouts/hooks/useLayoutVersions.ts:29 * kind: hook * core: platform * spec: (none) * summary: Fetch version history for a layout, newest first. * score: 4 ### hook useLazyTemplate * file: src/platform/templates/hooks/useTemplateCache.ts:199 * kind: hook * core: platform * spec: (none) * summary: Hook for lazy loading a single template with caching * score: 1 ### hook useLazyTemplateSections * file: src/platform/templates/hooks/useTemplateLazyLoad.ts:219 * kind: hook * core: platform * spec: (none) * summary: Hook for deferred/lazy loading of template sections * score: 1 ### hook useLegalHolds * file: src/platform/data-retention/hooks/useLegalHolds.ts:12 * kind: hook * core: platform * spec: (none) * summary: Hook for managing legal holds. * score: 1 ### hook useLetterhead * file: src/platform/templates/hooks/useLetterhead.ts:36 * kind: hook * core: platform * spec: (none) * summary: Load a single letterhead by ID or resolve the organization's default letterhead (falling back to the system default).When is provided, fetches that letterhead while enforcing organization isolation.When is omitted, resolves the default letterhead for (or current organization); if none exists, falls back to the system-wide default. * params: * letterheadId — Optional UUID of the letterhead to fetch. If omitted, the hook resolves the organization's default letterhead. * organizationId — Optional organization UUID to scope the lookup. If omitted, the current organization from context is used. Required when fetching the default letterhead (i.e., when is not provided). * returns: A React Query result containing the resolved or if no default exists. * example: | // Get specific letterheadconst data = useLetterhead('uuid-here'); // Get default letterhead for current orgconst data = useLetterhead(); * score: 4 ### hook useLetterheadMutation * file: src/platform/templates/hooks/useLetterheadMutation.ts:50 * kind: hook * core: platform * spec: (none) * summary: Provides mutation handlers for creating, updating, deleting, and setting the default letterhead for the current organization. Returns React Query mutation objects configured to operate on the current organization's letterheads and a composite loading flag. * returns: An object containing:- : mutation to create a letterhead (call with )- : mutation to update a letterhead (call with )- : mutation to delete a letterhead (call with )- : mutation to mark a letterhead as the default (call with )- : boolean that is if any of the mutations are pending * example: | const create, update, remove, setDefault = useLetterheadMutation();await create.mutateAsync( data: name: 'New Letterhead' ); * score: 4 ### hook useLifecycleEvents * file: src/platform/data-retention/hooks/useLifecycleEvents.ts:10 * kind: hook * core: platform * spec: (none) * summary: Hook for managing lifecycle events. * score: 1 ### hook useLineageByDestination * file: src/platform/org-data-sync/hooks/useLineage.ts:29 * kind: hook * core: platform * spec: (none) * summary: Hook for managing lineage by destination. * score: 1 ### hook useLineageBySource * file: src/platform/org-data-sync/hooks/useLineage.ts:11 * kind: hook * core: platform * spec: (none) * summary: Hook for managing lineage by source. * score: 1 ### hook useLinkEntraUser * file: src/platform/integrations/hooks/useEntraUnmatchedUsers.ts:100 * kind: hook * core: platform * spec: (none) * summary: Link an unmatched Entra user to an existing employee * score: 4 ### hook useListingRatings * file: src/platform/wizards/hooks/useMarketplace.ts:199 * kind: hook * core: platform * spec: (none) * summary: Hook to fetch ratings for a listing * score: 4 ### hook useLoginBrandingBySlug * file: src/platform/theming/hooks/useLoginBranding.ts:42 * kind: hook * core: platform * spec: (none) * summary: Fetch public login branding by organization slug.Uses the RPC (SECURITY DEFINER, anon-safe). * score: 4 ### hook useLoginBrandingBySubdomain * file: src/platform/theming/hooks/useLoginBranding.ts:21 * kind: hook * core: platform * spec: (none) * summary: Fetch public login branding by tenant subdomain.Uses the RPC (SECURITY DEFINER, anon-safe). * score: 4 ### hook useLogPermissionViolation * file: src/platform/security/utils/logPermissionViolation.ts:73 * kind: hook * core: platform * spec: (none) * summary: Hook version for use in React components * score: 4 ### hook useLongPressEditMode * file: src/platform/dashboard/hooks/useLongPressEditMode.tsx:38 * kind: hook * core: platform * spec: (none) * summary: Hook for managing long press edit mode. * score: 1 ### hook useLookupValidation * file: src/platform/forms/hooks/useLookupValidation.ts:17 * kind: hook * core: platform * spec: (none) * summary: Hook for managing lookup validation. * score: 1 ### hook useMappingTemplates * file: src/platform/import/hooks/useImportMappingTemplates.ts:17 * kind: hook * core: platform * spec: (none) * summary: List mapping templates for an organization, optionally filtered by entity type. * score: 4 ### hook useMarkConversationRead * file: src/platform/messaging/hooks/useMarkConversationRead.ts:18 * kind: hook * core: platform * spec: (none) * summary: Marks the conversation as read up to the latest loaded message (org-scoped). * score: 4 ### hook useMarketplaceListing * file: src/platform/wizards/hooks/useMarketplace.ts:168 * kind: hook * core: platform * spec: (none) * summary: Hook to fetch a single marketplace listing * score: 4 ### hook useMarketplaceListings * file: src/platform/wizards/hooks/useMarketplace.ts:82 * kind: hook * core: platform * spec: (none) * summary: Hook to fetch marketplace listings with filters and sorting * score: 4 ### hook useMarketplaceMutation * file: src/platform/wizards/hooks/useMarketplaceMutation.ts:80 * kind: hook * core: platform * spec: (none) * summary: Hook for managing marketplace mutation. * score: 1 ### hook useMatrixLayout * file: src/platform/table-v2/hooks/useMatrixLayout.ts:78 * kind: hook * core: platform * spec: (none) * summary: Transforms flat data into a matrix layout. * score: 4 ### hook useMessageActions * file: src/platform/messaging/hooks/useMessageActions.ts:15 * kind: hook * core: platform * spec: (none) * summary: Hook for managing message actions. * score: 1 ### hook useMessageAttachmentUrl * file: src/platform/messaging/hooks/useMessageAttachmentUrl.ts:22 * kind: hook * core: platform * spec: (none) * summary: Resolves from to a short-lived signed URL when it is a storage path. * score: 4 ### hook useMessageReactions * file: src/platform/messaging/hooks/useMessageReactions.ts:18 * kind: hook * core: platform * spec: (none) * summary: Hook for managing message reactions. * params: * conversationId — Active thread (for cache invalidation) * score: 1 ### hook useMessages * file: src/platform/messaging/hooks/useMessages.ts:25 * kind: hook * core: platform * spec: (none) * summary: Hook for managing messages. * score: 1 ### hook useMessageSearch * file: src/platform/messaging/hooks/useMessageSearch.ts:15 * kind: hook * core: platform * spec: (none) * summary: Hook for managing message search. * score: 1 ### hook useMessageTranslation * file: src/platform/messaging/hooks/useMessageTranslation.ts:30 * kind: hook * core: platform * spec: (none) * summary: Hook for managing message translation. * score: 1 ### hook useMessagingShortcuts * file: src/platform/messaging/hooks/useMessagingShortcuts.ts:26 * kind: hook * core: platform * spec: (none) * summary: Hook for managing messaging shortcuts. * score: 1 ### hook useMetricExport * file: src/platform/health/hooks/useMetricExport.ts:32 * kind: hook * core: platform * spec: (none) * summary: Hook for managing metric export. * score: 1 ### hook useMigrationProgress * file: src/platform/settings/pages/data-migration/hooks/useDataMigrationRuns.ts:99 * kind: hook * core: platform * spec: (none) * summary: Hook for managing migration progress. * score: 1 ### hook useMobileBack * file: src/platform/navigation/hooks/useMobileBack.ts:52 * kind: hook * core: platform * spec: (none) * summary: History-aware mobile Back hook. See module docs for behavior contract. * score: 4 ### hook useMobileNavAllowedShortcuts * file: src/platform/navigation/hooks/useMobileNavAllowedShortcuts.ts:18 * kind: hook * core: platform * spec: (none) * summary: Set of shortcut IDs the current user is allowed to use in mobile nav (bar + customize).- Utility shortcuts: always allowed.- Module shortcuts: allowed if the user has access to that module (useModuleAccess).- Sub-module shortcuts: allowed if the user has access to the parent module. * score: 4 ### hook useMobileNavPreferences * file: src/platform/navigation/useMobileNavPreferences.ts:30 * kind: hook * core: platform * spec: (none) * summary: Manage and expose the current user's mobile navigation shortcuts and elevated index, including fetch, update, and reset operations.Fetches preferences for the current user (disabled until a userId is available) and falls back to defaults when preferences are missing. * returns: An object with:- — the user's mobile navigation shortcuts or the default shortcuts.- — the user's elevated index or the default elevated index.- — while the initial preferences query is loading.- — function to replace shortcuts and elevated index for the current user.- — function to set the user's shortcuts and elevated index back to the defaults.- — while an update or reset mutation is pending. * score: 4 ### hook useModuleAccess * file: src/platform/modules/useModuleAccess.ts:20 * kind: hook * core: platform * spec: (none) * summary: Hook for managing module access. * score: 1 ### hook useModuleBottomTabs * file: src/platform/navigation/hooks/useModuleBottomTabs.ts:19 * kind: hook * core: platform * spec: (none) * summary: Derives up to 3 bottom-bar tabs from a module's registry definition.Priority order:1. If the module declares , return those verbatim (capped to 4 entries — the host nav always renders a trailing "More" button).2. Otherwise the module overview () becomes the first tab.3. The first items from each navGroup (up to MAX\_MODULE\_TABS - 1) fill the remaining slots, preferring over . * score: 4 ### hook useModuleDashboard * file: src/platform/dashboard/hooks/useModuleDashboard.ts:49 * kind: hook * core: platform * spec: (none) * summary: Hook to manage module dashboard state with context detection and widget filtering.Features:- Auto-detects context from URL (e.g., /hr/\* → 'hr')- Filters widgets to current module + platform widgets- Provides context switching via navigation- Manages module-specific preferences * score: 4 ### hook useModuleDefaultSkill * file: src/platform/ai/hooks/useModuleDefaultSkill.ts:43 * kind: hook * core: platform * spec: (none) * summary: Resolves and returns the default AI skill for a given module, preferring organization-specific settings and falling back to platform defaults.Computes a deterministic default skill code for the provided module (using MODULE\_DEFAULT\_SKILLS and 'general\_assistant' as fallback),then retrieves the corresponding skill via useAISkill. The underlying fetch is enabled only when is true and a skill code exists. * params: * module — string | undefined - The module code (e.g., "gr", "hr", "fa", "rh"). If falsy, the hook uses "general\_assistant". * options — UseModuleDefaultSkillOptions - Optional settings for the hook. (boolean) controls whether the underlying skill fetch runs. * returns: skill: unknown, skillCode: string, isLoading: boolean, error: unknown, refetch: () = Promiseunknown An object containing: - : the fetched AI skill data (or undefined if not loaded), - : the computed default skill code, - : whether the skill fetch is in progress, - : any error from the fetch, - : function to manually re-fetch the skill. * example: | const skill, skillCode, isLoading = useModuleDefaultSkill('hr', enabled: true ); * score: 4 ### hook useModuleFeatureFlags * file: src/platform/modules/useModuleFeatureFlags.ts:37 * kind: hook * core: platform * spec: (none) * summary: Hook for managing module feature flags. * score: 1 ### hook useModulePermissionCatalog * file: src/platform/permissions/hooks/useAllModulePermissions.ts:86 * kind: hook * core: platform * spec: (none) * summary: Hook to fetch permissions for a specific module * score: 4 ### hook useModulePermissions * file: src/platform/permissions/hooks/useModulePermissions.ts:33 * kind: hook * core: platform * spec: (none) * summary: Hook to fetch all available permissions for a module * example: | const data: hrPermissions, isLoading = useModulePermissions('hr'); // Render permission listhrPermissions?.map(p = PermissionRow key=p.id permission=p /) * score: 4 ### hook useModulePresets * file: src/platform/modules/hooks/useModulePresets.ts:23 * kind: hook * core: platform * spec: (none) * summary: Hook for managing module presets. * score: 1 ### hook useModuleRegistry * file: src/platform/modules/useModuleRegistry.ts:8 * kind: hook * core: platform * spec: (none) * summary: React hook for the loaded module registry (nav trees). May be partial until finishes preloading accessible modules. * score: 4 ### hook useModuleRegistrySnapshot * file: src/platform/modules/useModuleRegistrySnapshot.ts:10 * kind: hook * core: platform * spec: (none) * summary: Subscribe to the on-demand module registry cache. Held in a non-componentmodule so exports only the Provider componentand stays Fast Refresh friendly. * score: 4 ### hook useModuleRouting * file: src/platform/navigation/hooks/useModuleRouting.ts:40 * kind: hook * core: platform * spec: (none) * summary: Hook to handle route-to-module detection and provide computed routing properties.Separates routing logic from navigation state management. * score: 4 ### hook useMultiTouch * file: src/platform/gestures/hooks/useMultiTouch.ts:34 * kind: hook * core: platform * spec: (none) * summary: Hook for managing multi touch. * score: 1 ### hook useMyEmployee * file: src/platform/workforce/hooks/useMyEmployee.ts:20 * kind: hook * core: platform * spec: (none) * summary: Retrieve the authenticated user's employee record within the current organization.The query runs only when both the current organization ID and the authenticated user ID are available. * returns: The React Query result containing the employee record (, , ) when found; the result's will be if no record is available. * score: 4 ### hook useMyOnboardingStatus * file: src/platform/onboarding/useMyOnboardingStatus.ts:38 * kind: hook * core: platform * spec: (none) * summary: Fetch aggregated onboarding status for the current logged-in employee * params: * options — Optional configuration * returns: Query result with OnboardingStatus for current user * score: 4 ### hook useMyTasks * file: src/platform/tasks/hooks/useMyTasks.ts:23 * kind: hook * core: platform * spec: (none) * summary: Hook for managing my tasks. * score: 1 ### hook useNavAnalytics * file: src/platform/navigation/analytics/useNavAnalytics.ts:54 * kind: hook * core: platform * spec: (none) * summary: PHI-safe navigation telemetry. Returns , which inserts astructural nav event into scoped to the current org + user.No-ops when org/user id is unavailable (e.g. before auth resolves). * score: 4 ### hook useNavigation * file: src/platform/navigation/useNavigation.ts:7 * kind: hook * core: platform * spec: (none) * summary: Hook to access navigation context. * score: 4 ### hook useNavigationBadges * file: src/platform/navigation/hooks/useNavigationBadges.ts:26 * kind: hook * core: platform * spec: (none) * summary: Hook for managing navigation badges. * score: 1 ### hook useNavigationContext * file: src/platform/navigation/hooks/useNavigationContext.ts:49 * kind: hook * core: platform * spec: (none) * summary: Hook to manage navigation state including:- Sidebar mode (all modules vs in-module view)- Flyout panel state- Recent modules (persisted)NOTE: On desktop, sidebar open/collapsed state is managed by SidebarProvider (from /shared/ui/sidebar) in ResponsiveNav.tsx (cookie persistence, Cmd+B). * score: 4 ### hook useNavigationFrequency * file: src/platform/navigation/hooks/useNavigationFrequency.ts:40 * kind: hook * core: platform * spec: (none) * summary: Tracks which routes the user visits most frequently on mobile.Stores counts in localStorage with time-decay: entries older than 1 weekhave their counts halved. Returns the top N routes by frequency, whichcan be used for shortcut suggestions. * score: 4 ### hook useNavItemVisible * file: src/platform/navigation/hooks/useNavItemPermission.ts:21 * kind: hook * core: platform * spec: (none) * summary: Check if a navigation item should be visible based on V2 permissions. * example: | const isVisible = useNavItemVisible( permission: 'hr.employees.view' ); * score: 4 ### hook useNavMode * file: src/platform/navigation/NavModeContext.tsx:89 * kind: hook * core: platform * spec: (none) * summary: Hook to read/update sidebar open/collapsed state. * score: 4 ### hook useNavTelemetry * file: src/platform/navigation/telemetry/useNavTelemetry.ts:29 * kind: hook * core: platform * spec: (none) * summary: Fetches the org-scoped navigation summary via the RPC.Disabled when is null (e.g. before org context resolves).Results are considered fresh for 60 s to avoid hammering the RPC on everyrender while still reflecting recent activity.NOTE: always invoke as a method call. Detaching it() loses the binding — reads and throws at runtime. * score: 4 ### hook useNetworkStatus * file: src/platform/pwa/hooks/useNetworkStatus.ts:6 * kind: hook * core: platform * spec: (none) * summary: Hook for managing network status. * score: 1 ### hook useNotificationDelivery * file: src/platform/notifications/hooks/useNotificationDelivery.ts:18 * kind: hook * core: platform * spec: (none) * summary: Hook for managing notification delivery. * score: 1 ### hook useNotificationMutation * file: src/platform/notifications/useNotificationMutation.ts:11 * kind: hook * core: platform * spec: (none) * summary: Hook for managing notification mutation. * score: 1 ### hook useNotificationPreferences * file: src/platform/notifications/useNotificationPreferences.ts:14 * kind: hook * core: platform * spec: (none) * summary: Hook for managing notification preferences. * score: 1 ### hook useNotifications * file: src/platform/notifications/useNotifications.ts:10 * kind: hook * core: platform * spec: (none) * summary: Hook for managing notifications. * score: 1 ### hook useNotificationTemplates * file: src/platform/notifications/hooks/useNotificationTemplates.ts:18 * kind: hook * core: platform * spec: (none) * summary: Lists platform and organization notification templates for the current organization. * params: * filters — Optional event/channel/status filters for narrowing the template list. * returns: Query result containing matching template rows. * score: 4 ### hook useNotificationToasts * file: src/platform/notifications/useNotificationToasts.tsx:25 * kind: hook * core: platform * spec: (none) * summary: Hook for managing notification toasts. * score: 1 ### hook useOAuthFlow * file: src/platform/integrations/hooks/useOAuthFlow\.ts:26 * kind: hook * core: platform * spec: (none) * summary: Hook for managing oauth flow. * score: 1 ### hook useOAuthProviders * file: src/platform/integrations/hooks/useOAuthProviders.ts:13 * kind: hook * core: platform * spec: (none) * summary: Hook for managing oauth providers. * score: 1 ### hook useObjectByApiName * file: src/platform/data-manager/hooks/useObjectMetadata.ts:83 * kind: hook * core: platform * spec: (none) * summary: Hook for managing object by api name. * score: 1 ### hook useObjectCategories * file: src/platform/data-manager/hooks/useObjectCategories.ts:12 * kind: hook * core: platform * spec: (none) * summary: Hook for managing object categories. * score: 1 ### hook useObjectFavorites * file: src/platform/data-manager/hooks/useObjectFavorites.ts:14 * kind: hook * core: platform * spec: (none) * summary: Hook for managing object favorites. * score: 1 ### hook useObjectMetadata * file: src/platform/data-manager/hooks/useObjectMetadata.ts:13 * kind: hook * core: platform * spec: (none) * summary: Hook for managing object metadata. * score: 1 ### hook useObjectMetadataMutation * file: src/platform/data-manager/hooks/useObjectMetadataMutation.ts:22 * kind: hook * core: platform * spec: (none) * summary: Hook for managing object metadata mutation. * score: 1 ### hook useObjectPermissions * file: src/platform/data-manager/hooks/useObjectPermissions.ts:16 * kind: hook * core: platform * spec: (none) * summary: Hook for managing object permissions. * score: 1 ### hook useOfflineQueue * file: src/platform/pwa/hooks/useOfflineQueue.ts:24 * kind: hook * core: platform * spec: (none) * summary: Hook for managing offline queue. * score: 1 ### hook useOnboardingSession * file: src/platform/import/hooks/useOnboardingSessions.ts:40 * kind: hook * core: platform * spec: (none) * summary: Get a single onboarding session by ID. * score: 4 ### hook useOnboardingSessions * file: src/platform/import/hooks/useOnboardingSessions.ts:17 * kind: hook * core: platform * spec: (none) * summary: List onboarding sessions for an organization. * score: 4 ### hook useOnboardingStatus * file: src/platform/onboarding/useOnboardingStatus.ts:92 * kind: hook * core: platform * spec: (none) * summary: Fetch aggregated onboarding status for a specific employee * params: * employeeId — The employee ID to fetch onboarding status for * options — Optional configuration * returns: Query result with OnboardingStatus * score: 4 ### hook useOnlineStatus * file: src/platform/messaging/hooks/useOnlineStatus.ts:26 * kind: hook * core: platform * spec: (none) * summary: Hook for managing online status. * score: 1 ### hook useOptionalRealtimeContext * file: src/platform/realtime/RealtimeProvider.tsx:43 * kind: hook * core: platform * spec: (none) * summary: Hook for managing optional realtime context. * score: 1 ### hook useOrgAiProfile * file: src/platform/ai/hooks/useOrgAiProfile.ts:46 * kind: hook * core: platform * spec: (none) * summary: Fetches the AI-onboarding profile columns for an organization. * params: * organizationId — Target org id. Defaults to the current organization. * returns: React Query result whose is the (all-null when no settings row exists yet) or while disabled. * score: 4 ### hook useOrgAiProfileMutation * file: src/platform/ai/hooks/useOrgAiProfileMutation.ts:59 * kind: hook * core: platform * spec: (none) * summary: Mutations for the AI-onboarding write path. Both delegate to SECURITY DEFINER RPCsthat assert server-side; the caller MUST also gate the UI on thesame permission (no double-gate divergence — NFR-sec-1). * returns: / callbacks and per-action pending flags. * score: 4 ### hook useOrganization * file: src/platform/organizations/OrganizationContext.tsx:275 * kind: hook * core: platform * spec: (none) * summary: Hook for managing organization. * score: 1 ### hook useOrganizationEmailSignature * file: src/platform/email-signatures/hooks/useOrganizationEmailSignature.ts:14 * kind: hook * core: platform * spec: (none) * summary: Fetches the organization's default email signature (user\_id IS NULL, is\_default = true). * score: 4 ### hook useOrganizationMembers * file: src/platform/organizations/hooks/useOrganizationMembers.ts:28 * kind: hook * core: platform * spec: (none) * summary: Fetches all members of the current organization by querying through pf\_user\_role\_assignments (V2).This is the CORRECT pattern - do NOT query pf\_profiles directly without filtering by org.Automatically filters out expired role assignments. * score: 4 ### hook useOrganizationSiteOptions * file: src/platform/sites/hooks/useOrganizationSiteOptions.ts:14 * kind: hook * core: platform * spec: (none) * summary: Hook for managing organization site options. * score: 1 ### hook useOrganizationUploadSettings * file: src/platform/upload/hooks/useOrganizationUploadSettings.ts:87 * kind: hook * core: platform * spec: (none) * summary: Hook for fetching organization upload settings. * score: 1 ### hook useOrgBySlug * file: src/platform/organizations/hooks/useOrgBySlug.ts:10 * kind: hook * core: platform * spec: (none) * summary: Hook for managing org by slug. * score: 1 ### hook useOrgDashboardDefaults * file: src/platform/dashboard/hooks/useOrgDashboardDefaults.ts:19 * kind: hook * core: platform * spec: (none) * summary: Manages organization-level dashboard defaults.Org admins can set defaults that apply to all users who haven't customized their dashboard. * score: 4 ### hook useOrgJurisdictionConfig * file: src/platform/jurisdiction/hooks/useOrgJurisdictionConfig.ts:40 * kind: hook * core: platform * spec: (none) * summary: Fetches the current org's jurisdiction config with joined profile data. * score: 4 ### hook useOrgLetterheads * file: src/platform/templates/hooks/useLetterhead.ts:108 * kind: hook * core: platform * spec: (none) * summary: Fetches letterheads for an organization with optional filters. Queries pf\_letterheads for the specified organization and returns matching letterhead templates. Supports including system-wide templates, filtering by default status, and searching by name. The hook is enabled only when an organization ID can be resolved from the supplied filters or the current organization context. * params: * filters — Partial set of LetterheadFilters to constrain the results: - organizationId: optional organization UUID to query (falls back to current organization) - includeSystem: include system-wide templates when true - isDefault: filter by default status when defined - search: case-insensitive name search string * returns: The React Query result containing an array of objects matching the filters. * example: | const data: letterheads = useOrgLetterheads( organizationId: 'uuid', includeSystem: true,); * score: 4 ### hook useOrgMembers * file: src/platform/messaging/hooks/useOrgMembers.ts:23 * kind: hook * core: platform * spec: (none) * summary: Fetches all organization members with profiles. Reusable for people directory and people picker. * score: 4 ### hook useOrgPath * file: src/platform/organizations/hooks/useOrgPath.ts:11 * kind: hook * core: platform * spec: (none) * summary: Hook for managing org path. * score: 1 ### hook useOrgProfileArticle * file: src/platform/knowledge/hooks/use-org-profile-article.ts:67 * kind: hook * core: platform * spec: (none) * summary: Fetches the current published-and-indexed narrative for the active organization.Calls the SECURITY DEFINER RPC scoped to the currentorganization (defense-in-depth: org id from context). The fullpredicate () livesinside the RPC body, so this hook restates no filter. An empty RPC result maps to (no published-and-indexed profile yet — e.g. published but not yet embedded). * returns: An object containing: - : the single or - : while the query is in-flight - : a sanitized error, or - : re-run the query * example: | const article, isLoading = useOrgProfileArticle();if (isLoading) return ;if (!article) return No org profile published yet.; * score: 4 ### hook useOrgSlugContext * file: src/platform/organizations/hooks/useOrgSlugContext.ts:26 * kind: hook * core: platform * spec: (none) * summary: Hook to access org slug context for org-aware navigation. * score: 4 ### hook useOrgSudEmbedAuthorization * file: src/platform/clinical/consent/checkOrgSudEmbedAuthorization.ts:59 * kind: hook * core: platform * spec: (none) * summary: Hook wrapper for the in-app embed-token mint UI: surfaces whether the current org mayexternally embed SUD-derived analytics, so the UI can warn before minting. * score: 4 ### hook useOutboundWebhookMutation * file: src/platform/integrations/hooks/useOutboundWebhookMutation.ts:15 * kind: hook * core: platform * spec: (none) * summary: Hook for managing outbound webhook mutation. * score: 1 ### hook useOutboundWebhooks * file: src/platform/integrations/hooks/useOutboundWebhooks.ts:18 * kind: hook * core: platform * spec: (none) * summary: Hook for managing outbound webhooks. * score: 1 ### hook usePageLayout * file: src/platform/page-layouts/hooks/usePageLayout.ts:34 * kind: hook * core: platform * spec: (none) * summary: Hook for fetching a single page layout with its sections and fields. * example: | const layout, isLoading = usePageLayout( layoutId: 'some-layout-id',); * score: 1 ### hook usePageLayoutMutation * file: src/platform/page-layouts/hooks/usePageLayoutMutation.ts:27 * kind: hook * core: platform * spec: (none) * summary: Hook providing mutations for page layout CRUD operations. * example: | const createLayout, updateLayout, deleteLayout = usePageLayoutMutation();await createLayout.mutateAsync( object\_name: 'hr\_employees', layout\_type: 'detail', layout\_name: 'Default Detail Layout',); * score: 4 ### hook usePageLayouts * file: src/platform/page-layouts/hooks/usePageLayouts.ts:30 * kind: hook * core: platform * spec: (none) * summary: Hook for fetching page layouts for a specific object. * example: | const layouts, isLoading = usePageLayouts( objectName: 'hr\_employees', layoutType: 'detail',); * score: 1 ### hook usePagePermissions * file: src/platform/forms/hooks/usePagePermissions.ts:24 * kind: hook * core: platform * spec: (none) * summary: Hook to manage page-level permissions in multi-page forms * score: 4 ### hook usePageTitle * file: src/platform/navigation/hooks/usePageTitle.ts:19 * kind: hook * core: platform * spec: (none) * summary: Hook for managing page title. * score: 1 ### hook usePageValidation * file: src/platform/forms/hooks/usePageValidation.ts:70 * kind: hook * core: platform * spec: (none) * summary: Create a page-level validation helper configured for the provided form fields and current form data.Produces a validatePage function that checks each field on the page for requiredness, type-specific constraints (email, phone, number), signature-field rules (valid base64 PNG signature data and optional required signature date), and configurable custom validation rules (min/max for numbers, minLength/maxLength, pattern with custom message). Validation errors are returned as an array of FormValidationError objects keyed by field\_key. * params: * fields — Array of form field definitions for the current page (FormField\[]) * formData — Current form values keyed by field\_key (Recordstring, unknown) * returns: An object with , a function that returns after running validations * example: | const validatePage = usePageValidation(fields, formData);const isValid, errors = validatePage(); * score: 4 ### hook usePaginatedTable * file: src/platform/table-v2/hooks/usePaginatedTable.ts:118 * kind: hook * core: platform * spec: (none) * summary: Hook for managing table pagination state with PF-58 compatibility. * params: * options — Pagination options * returns: Pagination state and handlers * score: 1 ### hook usePaginatedTemplates * file: src/platform/templates/hooks/useTemplateLazyLoad.ts:111 * kind: hook * core: platform * spec: (none) * summary: Hook for paginated template lists (traditional pagination) * score: 1 ### hook usePagination * file: src/platform/table-v2/utils/pagination/hooks.ts:95 * kind: hook * core: platform * spec: (none) * summary: Hook for managing pagination stateProvides complete pagination state management with navigation handlers,page size control, and calculated metadata for display. * params: * options — Pagination options * returns: Pagination state and handlers * score: 1 ### hook usePasskeys * file: src/platform/auth/passkey/usePasskeys.ts:20 * kind: hook * core: platform * spec: (none) * summary: Hook exposing the user's passkeys plus register/rename/delete mutations.The list query is disabled when WebAuthn is unsupported or no user is signed in. * score: 4 ### hook usePatientActiveProblems * file: src/platform/clinical/patient/usePatientActiveProblems.ts:16 * kind: hook * core: platform * spec: (none) * summary: Active-only problem list (active + chronic) from for shared PM/CL surfaces.Lives in the platform layer to avoid cross-core imports (CL-46). * params: * patientId — Patient UUID when querying; omit or pass to leave the query disabled until identity is known. * score: 4 ### hook usePatientContext * file: src/platform/clinical/patient/usePatientContext.ts:20 * kind: hook * core: platform * spec: (none) * summary: Fetches full patient context for a chart, including demographics, diagnoses,risk screening, and active consent types. * score: 4 ### hook usePatientLeadConversionHistory * file: src/platform/ce/useLeadConversionHistory.ts:26 * kind: hook * core: platform * spec: (none) * summary: Fetches lead conversion records for a given patient.Used by PM core's PatientLeadHistory component via platform integration layer. * score: 4 ### hook usePayrollJournalEntryStatus * file: src/platform/finance/hooks/usePayrollJournalEntryStatus.ts:37 * kind: hook * core: platform * spec: (none) * summary: Read the FA-43 payroll JournalEntry handoff status for a Proliant run.Returns when no JE has been written yet (handoff still in flight). * score: 4 ### hook usePendingApprovalCount * file: src/platform/approvals/hooks/useApprovalInbox.ts:96 * kind: hook * core: platform * spec: (none) * summary: Pending approval count for the current user in the current org (same data as inbox). * score: 4 ### hook usePendingApprovalCount * file: src/platform/documents/hooks/usePendingApprovals.ts:167 * kind: hook * core: platform * spec: (none) * summary: Hook for managing pending approval count. * score: 1 ### hook usePendingApprovals * file: src/platform/documents/hooks/usePendingApprovals.ts:45 * kind: hook * core: platform * spec: (none) * summary: Hook for managing pending approvals. * score: 1 ### hook usePendingHandbookAcknowledgments * file: src/platform/governance/handbook/usePendingHandbookAcknowledgments.ts:9 * kind: hook * core: platform * spec: (none) * summary: Pending handbook acknowledgments for an employee (HR-43 US-3/US-5). * score: 4 ### hook usePendingSignatures * file: src/platform/signatures/hooks/usePendingSignatures.ts:18 * kind: hook * core: platform * spec: (none) * summary: Hook for managing pending signatures. * score: 1 ### hook usePerformanceReport * file: src/platform/health/hooks/usePerformanceReport.ts:68 * kind: hook * core: platform * spec: (none) * summary: Hook for managing performance report. * score: 1 ### hook usePeriodComparison * file: src/platform/health/hooks/usePeriodComparison.ts:32 * kind: hook * core: platform * spec: (none) * summary: Hook for managing period comparison. * score: 1 ### hook usePeriodicUpdateCheck * file: src/platform/pwa/hooks/usePeriodicUpdateCheck.ts:11 * kind: hook * core: platform * spec: (none) * summary: Hook for managing periodic update check. * score: 1 ### hook usePermanentDelete * file: src/platform/admin/hooks/useDeletedRecordMutation.ts:98 * kind: hook * core: platform * spec: (none) * summary: Hook for managing permanent delete. * score: 1 ### hook usePermissions * file: src/platform/permissions/hooks/usePermissions.ts:42 * kind: hook * core: platform * spec: (none) * summary: Hook to fetch user's effective permissions * example: | // Get all permissions for current userconst data: permissions, isLoading = usePermissions(); // Get HR module permissions onlyconst data: hrPermissions = usePermissions( moduleId: 'hr' ); * score: 4 ### hook usePersonaNavOrder * file: src/platform/navigation/hooks/usePersonaNavOrder.ts:26 * kind: hook * core: platform * spec: (none) * summary: Reorders a module's visible nav groups according to the user's persona.The first persona whose has a granted permission wins andits is applied. When no persona matches (or the module declaresnone), the fallback is resolved in priority order: 1. The explicit argument (for call-site overrides). 2. (data-driven, declared on the module definition). 3. (platform default).The sort is stable, so groups within the same section keep their original relative order. * params: * module — Module providing the persona rules (id, personas, fallbackSectionOrder). * groups — The permission-filtered nav groups to reorder. * fallbackOrder — Optional explicit override for the fallback section order. * score: 4 ### hook usePFModuleSettings * file: src/platform/modules/usePFModuleSettings.ts:40 * kind: hook * core: platform * spec: (none) * summary: Hook for managing PF module settings.Uses useCachedQuery (platform cache) for high-read, low-change settings data. * score: 1 ### hook usePhiAccessAudit * file: src/platform/fleet/hooks/usePhiAccessAudit.ts:67 * kind: hook * core: platform * spec: (none) * summary: Reads the compliance PHI-access audit surface for an organization via thepf\_agent\_phi\_access\_audit RPC, with an optional time lower-bound. * params: * orgId — Organization UUID (query disabled when empty) * since — Optional ISO-8601 timestamp; the RPC filters occurred\_at gte since PF-130 AC-2 * score: 4 ### hook usePhiClassifications * file: src/platform/compliance/hooks/usePhiClassifications.ts:11 * kind: hook * core: platform * spec: (none) * summary: Fetches all PHI classifications for the given organization. * score: 4 ### hook usePhiScan * file: src/platform/ai/wizards/ai-skill-creation/hooks/usePhiScan.ts:53 * kind: hook * core: platform * spec: (none) * summary: Run the three author-time safety screens over the current Step-2 prompt fields. * params: * args — The two prompt fields plus the attestation checkbox state. * returns: A snapshot driving the Step-2 gate + inline messages. * score: 4 ### hook usePicklist * file: src/platform/picklists/hooks/usePicklist.ts:13 * kind: hook * core: platform * spec: (none) * summary: Hook for managing picklist. * score: 1 ### hook usePicklistBatchResolver * file: src/platform/picklists/hooks/usePicklistBatchResolver.ts:39 * kind: hook * core: platform * spec: (none) * summary: Resolves a batch of picklist to their display labels in a single pass. Loads the named picklist once via usePicklistItems, memo-builds avalue→label Map, then dedupes the input and maps each one that has amatching item. Unmatched values are omitted from (omit-on-miss),letting callers distinguish resolved from unresolved values. Empty/undefinedinputs yield an empty map without error. * params: * picklistName — The name of the picklist to resolve against. * values — The stored values to look up (duplicates are de-duplicated). * returns: A (input value → label, omit-on-miss) and the forwarded flag. * example: | const labelMap, isLoading = usePicklistBatchResolver('employment\_status', rowStatuses);// labelMap\['on\_leave'] === 'On Leave'; unknown values are absent from labelMap. * score: 4 ### hook usePicklistByEnum * file: src/platform/picklists/hooks/usePicklistByEnum.ts:40 * kind: hook * core: platform * spec: (none) * summary: Hook that loads picklist items with fallback to enum values * params: * picklistName — The name of the picklist to load * enumFallback — Object mapping enum values to labels (e.g., active: 'Active', inactive: 'Inactive' ) * returns: Items array, loading state, and source indicator * example: | const items, isLoading, source = usePicklistByEnum('employment\_status', active: 'Active', on\_leave: 'On Leave', terminated: 'Terminated',); * score: 4 ### hook usePicklistByName * file: src/platform/picklists/hooks/usePicklistByName.ts:35 * kind: hook * core: platform * spec: (none) * summary: Resolve a picklist by its stable , applying the same precedence as: organization-specific row first, then system-wide(), , limit 1. * params: * name — Stable picklist name (e.g. ). * options — Optional override for organization id. * returns: React Query result whose is the picklist row, or if no matching active picklist exists for the org/system scope. * example: | const data: picklist = usePicklistByName('gr.policy.category');if (picklist) navigate(prefixPath()); * score: 4 ### hook usePicklistExport * file: src/platform/picklists/hooks/usePicklistExport.ts:26 * kind: hook * core: platform * spec: (none) * summary: Hook for managing picklist export. * score: 1 ### hook usePicklistImport * file: src/platform/picklists/hooks/usePicklistImport.ts:35 * kind: hook * core: platform * spec: (none) * summary: Hook for managing picklist import. * score: 1 ### hook usePicklistItems * file: src/platform/picklists/hooks/usePicklistItems.ts:33 * kind: hook * core: platform * spec: (none) * summary: Fetches active picklist items for a given picklist name scoped to the current organization, falling back to a system-wide picklist when an organization-specific one is not found. Uses useCachedQuery (platform cache + TanStack Query) for 5-minute cache; ideal for high-read, low-change dropdown data. * params: * picklistName — The name of the picklist to load; when no request is made and an empty array is returned. * options — Optional configuration object - organizationId: Override organization ID (defaults to current organization from context) - activeOnly: Filter to active items only (defaults to true) * returns: The React Query result containing an array of objects (or an empty array when no picklist is found or inputs are missing). * example: | const data: items = \[], isLoading = usePicklistItems('country'); const data: items = \[], isLoading = usePicklistItems('country', organizationId: orgId ); * score: 4 ### hook usePicklistMutation * file: src/platform/picklists/hooks/usePicklistMutation.ts:23 * kind: hook * core: platform * spec: (none) * summary: Hook for managing picklist mutation. * score: 1 ### hook usePicklists * file: src/platform/picklists/hooks/usePicklists.ts:39 * kind: hook * core: platform * spec: (none) * summary: Fetches picklists visible to the current organization with optional filtering. Builds and runs a Supabase query to return picklists that belong to the current organization or are global (organization\_id is null). Supports optional filters for category, active status, and case-insensitive search across and . The query is enabled only when a current organization is selected. * params: * options — Filtering options for the picklists: - (optional): filter by picklist category. - (optional): filter by flag. - (optional): partial, case-insensitive match against or . * returns: UseQueryResultPicklistWithCount\[], Error - React Query result containing matching picklists, each enriched with its total item count. * example: | const data: picklists, isLoading, error = usePicklists( category: 'lead\_status', isActive: true, search: 'priority'); * score: 4 ### hook usePicklistValueLabel * file: src/platform/picklists/hooks/usePicklistValueLabel.ts:33 * kind: hook * core: platform * spec: (none) * summary: Resolves a single picklist to its display . Loads the named picklist once via usePicklistItems and memo-buildsa value→label Map. A nullish resolves to without error,making it safe to call before a form field has a selection. * params: * picklistName — The name of the picklist to resolve against. * value — The stored value to look up; returns an label. * returns: The resolved (or ) and the forwarded flag. * example: | const label, isLoading = usePicklistValueLabel('employment\_status', employee.status);// label === 'On Leave' when value === 'on\_leave' * score: 4 ### hook usePinchToZoom * file: src/platform/gestures/hooks/usePinchToZoom.ts:47 * kind: hook * core: platform * spec: (none) * summary: Hook for managing pinch to zoom. * score: 1 ### hook usePinnedActions * file: src/platform/navigation/hooks/usePinnedActions.ts:107 * kind: hook * core: platform * spec: (none) * summary: Hook for managing pinned quick actions via localStorage.Uses useSyncExternalStore for cross-tab reactivity. * score: 1 ### hook usePinnedItems * file: src/platform/navigation/hooks/usePinnedItems.ts:27 * kind: hook * core: platform * spec: (none) * summary: Hook to manage pinned sidebar items with safe merge pattern.Reads from and writes to pf\_profiles.preferences.pinnedItems. * score: 4 ### hook usePlaidLink * file: src/platform/banking/providers/plaid/usePlaidLink.ts:122 * kind: hook * core: platform * spec: (none) * summary: Initializes and manages the Plaid Link connection flow for an organization, including token retrieval, OAuth redirect restoration, SDK lifecycle, token exchange, error handling, and callbacks for single- and multi-account results.Orchestrates fetching and refreshing Plaid link tokens (with OAuth redirect persistence), initializes the Plaid Link SDK, exposes methods to open/exit the Link flow and submit MFA, and surfaces loading / connecting / error / readiness state and callbacks supplied in . * params: * options — Configuration and callbacks for the Plaid Link flow. - organizationId: The organization identifier used when creating/exchanging link tokens. - accessToken: Optional existing access token for update flows; forwarded to token creation. - products: Optional list of Plaid products to request (defaults to transactions). - countryCodes: Optional list of country codes for token creation (defaults to US). - onSuccess: Callback invoked for each connected account when a single-account flow completes. - onMultiAccountSuccess: Callback invoked with aggregated results when multiple accounts are connected. - onError: Callback invoked with an Error when token fetch, exchange, or SDK failures occur. - onExit: Callback invoked when the Plaid Link flow is exited (user or error). - onOpen: Callback invoked when the Plaid Link modal opens. - onLoad: Callback invoked when the Plaid Link script successfully loads. * returns: The hook return object containing:- connect: function to open Plaid Link- isLoading: whether initial token fetch / OAuth restoration is in progress- isConnecting: whether an in-flow connection/exchange is underway- error: current user-facing error message or - ready: true when the SDK is ready, a link token is present, and not loading- isLinkLoaded: true when the Plaid Link script has loaded- clearError: function to clear the current error- resetState: function to clear connection state- exit: function to programmatically exit the Plaid flow (optional force?: boolean )- submitMfa: function to submit MFA data to the Plaid SDK, normalized to return a Promisevoid * example: | const connect, isLoading, error, ready = usePlaidLink( organizationId: 'org\_123', onSuccess: (result) = console.log('connected', result), onError: (err) = console.error(err),); * score: 4 ### hook usePlaidSync * file: src/platform/banking/providers/plaid/usePlaidSync.ts:33 * kind: hook * core: platform * spec: (none) * summary: Hook for syncing Plaid transactions * score: 1 ### hook usePlatformTelehealthConsentValidity * file: src/platform/clinical/telehealth/useTelehealthConsentValidity.ts:46 * kind: hook * core: platform * spec: CL-24 * summary: Returns the latest telehealth consent (revoked or not) and its derivedvalidity state for a chart. The state is observable here becausethe query does not pre-filter revoked rows. * score: 5 ### hook usePlatformTelehealthSettings * file: src/platform/clinical/telehealth/useTelehealthDocumentationEnabled.ts:35 * kind: hook * core: platform * spec: CL-24 * summary: Returns the CL-24 module settings for the current org with safe defaults. * score: 5 ### hook usePortalDefinitions * file: src/platform/automation/portal/hooks.ts:31 * kind: hook * core: platform * spec: (none) * summary: Curated/known portals for the active org (drives the ToS gate). * score: 4 ### hook usePortalFlows * file: src/platform/automation/portal/hooks.ts:52 * kind: hook * core: platform * spec: (none) * summary: The org's portal-bot flows (templates + recorded). * score: 4 ### hook usePortalPatientId * file: src/platform/portal/usePortalPatientId.ts:22 * kind: hook * core: platform * spec: (none) * summary: Primary scope hook for portal. * score: 4 ### hook usePortalRuns * file: src/platform/automation/portal/hooks.ts:73 * kind: hook * core: platform * spec: (none) * summary: Run history, optionally scoped to one flow. * score: 4 ### hook usePortalRunSteps * file: src/platform/automation/portal/hooks.ts:97 * kind: hook * core: platform * spec: (none) * summary: Per-step audit trail (screenshots, heal events) for one run. * score: 4 ### hook usePostAssistantMessage * file: src/platform/ai/hooks/usePostAssistantMessage.ts:30 * kind: hook * core: platform * spec: (none) * summary: Call pf\_post\_assistant\_message to persist an AI reply.Returns the new pf\_messages.id (uuid). * score: 4 ### hook usePreadmissionPrefill * file: src/platform/preadmission/usePreadmissionPrefill.ts:136 * kind: hook * core: platform * spec: (none) * summary: Fetches preadmission packet completion data for a given appointmentand maps it to a pre-fill shape consumable by CL intake forms. * params: * appointmentId — The appointment ID to look up the packet for * returns: Pre-fill data, loading state, and error * score: 4 ### hook usePreferenceForTypeAndChannel * file: src/platform/notifications/useNotificationPreferences.ts:141 * kind: hook * core: platform * spec: (none) * summary: Hook for managing preference for type and channel. * score: 1 ### hook usePrefersReducedMotion * file: src/platform/a11y/motion.ts:25 * kind: hook * core: platform * spec: (none) * summary: Returns when the user prefers reduced motion.Listens to the media query and updates reactively. * returns: Whether reduced motion is preferred * score: 4 ### hook usePrefetchOnIntent * file: src/platform/routing/prefetch/prefetchOnIntent.ts:58 * kind: hook * core: platform * spec: (none) * summary: Returns event handlers (, , )that prefetch the registered query for on intent. * score: 4 ### hook usePrefetchTemplate * file: src/platform/templates/hooks/useTemplateCache.ts:232 * kind: hook * core: platform * spec: (none) * summary: Hook to prefetch a specific template on hover * score: 4 ### hook usePrefetchTemplates * file: src/platform/templates/hooks/useTemplateCache.ts:117 * kind: hook * core: platform * spec: (none) * summary: Hook to prefetch all template types for an organization * score: 4 ### hook usePrefillEngine * file: src/platform/forms/hooks/usePrefillEngine.ts:33 * kind: hook * core: platform * spec: (none) * summary: Evaluates prefill rules for a form and returns defaults + provenance map. * score: 4 ### hook useProcessHealthSettings * file: src/platform/automation/hooks/useProcessHealthSettings.ts:38 * kind: hook * core: platform * spec: (none) * summary: Fetches process health settings for the current organization.Falls back to default values when the organization has no custom settings. * returns: TanStack Query result containing . * score: 4 ### hook useProcessHealthTrend * file: src/platform/automation/hooks/useProcessHealthTrend.ts:23 * kind: hook * core: platform * spec: (none) * summary: Fetches health trend snapshots for a specific business process. * params: * processId — UUID of the business process. * days — Number of days of history to fetch. Defaults to 30. * returns: TanStack Query result containing . * score: 4 ### hook useProfileManagement * file: src/platform/users/useProfileManagement.ts:21 * kind: hook * core: platform * spec: (none) * summary: Hook for managing profile management. * score: 1 ### hook useProvisioningAssignments * file: src/platform/provisioning/hooks/useProvisioningAssignments.ts:16 * kind: hook * core: platform * spec: (none) * summary: Fetches template assignment history for an organization. * score: 4 ### hook useProvisioningRequestDetail * file: src/platform/provisioning/hooks/useProvisioningRequestDetail.ts:16 * kind: hook * core: platform * spec: (none) * summary: Hook for managing provisioning request detail. * score: 1 ### hook useProvisioningRequests * file: src/platform/provisioning/hooks/useProvisioningRequests.ts:19 * kind: hook * core: platform * spec: (none) * summary: Hook for managing provisioning requests. * score: 1 ### hook useProvisioningTemplateBundles * file: src/platform/provisioning/hooks/useProvisioningTemplateBundles.ts:16 * kind: hook * core: platform * spec: (none) * summary: Fetches the bundle composition for a provisioning template. * score: 4 ### hook useProvisioningTemplates * file: src/platform/provisioning/hooks/useProvisioningTemplates.ts:16 * kind: hook * core: platform * spec: (none) * summary: Hook for managing provisioning templates. * score: 1 ### hook usePublishEvent * file: src/platform/events/usePublishEvent.ts:38 * kind: hook * core: platform * spec: (none) * summary: React hook for publishing domain events. * example: | // Basic usageconst publish, isPublishing = usePublishEvent();const handleAdmit = async (episode) = await publish( event\_name: 'rh\_resident\_admitted', organization\_id: episode.organization\_id, payload: episode\_id: episode.id, resident\_id: episode.resident\_id, , );; // With callbacksconst publish = usePublishEvent( showSuccessToast: true,); * score: 4 ### hook usePublishKnowledgeArticle * file: src/platform/knowledge/hooks/use-knowledge-articles.ts:437 * kind: hook * core: platform * spec: (none) * summary: Provides a React Query mutation hook to publish a knowledge article. Publishes the specified article by setting its status to , recording publish timestamps and user, updates the cache for lists and detail, and shows success/error toasts. * returns: The mutation object () whose / should be called with the article ; the mutation resolves to the updated . * example: | const publishMutation = usePublishKnowledgeArticle();// imperativelypublishMutation.mutate('article-id');// or with async/awaitawait publishMutation.mutateAsync('article-id'); * score: 4 ### hook usePublishOrgProfileArticle * file: src/platform/ai/hooks/usePublishOrgProfileArticle.ts:53 * kind: hook * core: platform * spec: (none) * summary: Publishes (or re-publishes) the org\_profile narrative article. * returns: resolving to the published article id, and . Throws (issues preserved) when the PHI/injection scan blocks publish; throws a sanitized Error on a DB failure. * score: 4 ### hook usePullToRefresh * file: src/platform/gestures/hooks/usePullToRefresh.ts:16 * kind: hook * core: platform * spec: (none) * summary: Hook for managing pull to refresh. * score: 1 ### hook usePushSubscription * file: src/platform/notifications/hooks/usePushSubscription.ts:30 * kind: hook * core: platform * spec: (none) * summary: Hook for managing push subscription. * score: 1 ### hook useQueryPatterns * file: src/platform/query-performance/hooks/useQueryPatterns.ts:97 * kind: hook * core: platform * spec: (none) * summary: Fetch slow query logs and aggregate into pattern summaries. * params: * timeRange — Time range preset * enabled — Whether pattern analysis feature is enabled * score: 4 ### hook useQueryPerformanceLogs * file: src/platform/query-performance/hooks/useQueryPerformanceLogs.ts:25 * kind: hook * core: platform * spec: (none) * summary: Hook for managing query performance logs. * score: 1 ### hook useQueryPerformanceOverview * file: src/platform/query-performance/hooks/useQueryPerformanceOverview\.ts:16 * kind: hook * core: platform * spec: (none) * summary: Hook for managing query performance overview. * score: 1 ### hook useQueryPerformanceSettings * file: src/platform/query-performance/useQueryPerformanceSettings.ts:40 * kind: hook * core: platform * spec: (none) * summary: Hook for managing query performance settings. * score: 1 ### hook useQueryPlan * file: src/platform/query-performance/hooks/useCaptureQueryPlan.ts:34 * kind: hook * core: platform * spec: (none) * summary: Read the execution plan for a specific log entry (if captured). * params: * logId — The ID of the query performance log entry * enabled — Whether plan capture feature is enabled * score: 4 ### hook useQuickActionBadges * file: src/platform/navigation/hooks/useQuickActionBadges.ts:9 * kind: hook * core: platform * spec: (none) * summary: Maps app routes to pending-item counts for quick-action badges (dashboard, cards, palette). * returns: Record keyed by from actions * score: 4 ### hook useQuickActionPins * file: src/platform/navigation/hooks/useQuickActionPins.ts:20 * kind: hook * core: platform * spec: (none) * summary: Returns ordered pinned action keys and mutators, merging dashboard preferences with local fallback. * score: 4 ### hook useQuickActionsPalette * file: src/platform/navigation/hooks/useQuickActionsPalette.ts:49 * kind: hook * core: platform * spec: (none) * summary: Hook that provides state and data for the Quick Actions Command Palette.Registers the global hotkey (guarded against input focus). * score: 4 ### hook useQuickDisposition * file: src/platform/telephony/hooks/useQuickDisposition.ts:74 * kind: hook * core: platform * spec: (none) * summary: Hook managing the Quick Disposition Wizard state machine:3-step flow (disposition → follow-up → notes), keyboard shortcuts, and batch mode. * score: 4 ### hook useQuotaList * file: src/platform/quota/hooks/useQuotaList.ts:21 * kind: hook * core: platform * spec: (none) * summary: Fetches quota configurations visible to the given organization. * params: * organizationId — The organization to query quotas for. * filters — Optional resource type and active status filters. * score: 4 ### hook useRawData * file: src/platform/data-manager/hooks/useRawData.ts:99 * kind: hook * core: platform * spec: (none) * summary: Hook for managing raw data. * score: 1 ### hook useRawDataBatches * file: src/platform/data-manager/hooks/useRawDataBatches.ts:25 * kind: hook * core: platform * spec: (none) * summary: Returns recent raw data batch saves for the given object, grouped by batch\_id. * score: 4 ### hook useRawDataEdit * file: src/platform/data-manager/hooks/useRawDataEdit.ts:31 * kind: hook * core: platform * spec: (none) * summary: Hook for managing raw data edit state with standard + custom field support. * score: 1 ### hook useRawDataExport * file: src/platform/data-manager/hooks/useRawDataExport.ts:46 * kind: hook * core: platform * spec: (none) * summary: Hook for managing raw data export. * score: 1 ### hook useRawDataFields * file: src/platform/data-manager/hooks/useRawDataFields.ts:13 * kind: hook * core: platform * spec: (none) * summary: Hook for managing raw data fields. * score: 1 ### hook useRawDataImport * file: src/platform/data-manager/hooks/useRawDataImport.ts:25 * kind: hook * core: platform * spec: (none) * summary: Hook for managing raw data import. * score: 1 ### hook useRawDataUndoRedo * file: src/platform/data-manager/hooks/useRawDataUndoRedo.ts:31 * kind: hook * core: platform * spec: (none) * summary: Manages an undo/redo stack for raw data cell edits. * score: 4 ### hook useRealtimeAuditLogs * file: src/platform/audit/useRealtimeAuditLogs.ts:32 * kind: hook * core: platform * spec: (none) * summary: Subscribes to realtime INSERT events on .Returns a buffer of the most recent events (newest first).Clears the buffer when the active organization changes. * score: 4 ### hook useRealtimeBroadcast * file: src/platform/realtime/hooks/useRealtimeBroadcast.ts:25 * kind: hook * core: platform * spec: (none) * summary: Hook for sending and receiving broadcast messages on a named channel.**⚠️ PHI/PII WARNING:** Broadcast payloads are transmitted in cleartext overWebSocket channels. Payloads MUST NOT contain PHI/PII (names, SSNs, DOBs,medical info, etc.). Use reference IDs only (e.g., )and let the consumer fetch sensitive data via authenticated queries. * see: * AGENTS.md §Security Requirements * score: 1 ### hook useRealtimeContext * file: src/platform/realtime/RealtimeProvider.tsx:26 * kind: hook * core: platform * spec: (none) * summary: Hook for managing realtime context. * score: 1 ### hook useRealtimePresence * file: src/platform/realtime/hooks/useRealtimePresence.ts:18 * kind: hook * core: platform * spec: (none) * summary: Hook for managing realtime presence. * score: 1 ### hook useRealtimeSubscription * file: src/platform/realtime/hooks/useRealtimeSubscription.ts:25 * kind: hook * core: platform * spec: (none) * summary: Hook for managing realtime subscription. * score: 1 ### hook useRecentActivity * file: src/platform/modules/useRecentActivity.ts:14 * kind: hook * core: platform * spec: (none) * summary: Hook for managing recent activity. * score: 1 ### hook useRecentCalls * file: src/platform/telephony/hooks/useRecentCalls.ts:17 * kind: hook * core: platform * spec: (none) * summary: Hook for managing recent calls. * score: 1 ### hook useRecentlyVisited * file: src/platform/navigation/hooks/useRecentlyVisited.ts:164 * kind: hook * core: platform * spec: (none) * summary: Read-only recently-visited page list.Loads persisted entries from localStorage on mount (and when userId changes).Returns with the current path excluded (user is already there;navigating there is a no-op). Also exposes to wipe the list.Does NOT record — recording is handled by , whichmust be mounted app-wide in an always-on listener.No-ops gracefully when the user is not yet signed in. * score: 4 ### hook useRecentPages * file: src/platform/navigation/hooks/useRecentPages.ts:91 * kind: hook * core: platform * spec: (none) * summary: Hook for managing recent pages. * score: 1 ### hook useRecommendedSkills * file: src/platform/ai/hooks/useRecommendedSkills.ts:72 * kind: hook * core: platform * spec: (none) * summary: Fetches the recommended standard skills for an org (consumes PF-62-EN-01 ranking). * params: * organizationId — Target org id. * options — The org's (+ jurisdiction pointer) driving the filter. * returns: React Query result whose is the ranked \[]. * score: 4 ### hook useRecordRecentlyVisited * file: src/platform/navigation/hooks/useRecentlyVisited.ts:122 * kind: hook * core: platform * spec: (none) * summary: App-wide recording primitive. Writes the current route to the per-userrecently-visited store on every distinct navigation.Mount exactly once in an always-on listener that is present for every route(e.g. NavAnalyticsListener). Returns nothing — side-effect only.No-ops gracefully when the user is not yet signed in. * score: 4 ### hook useRecordThread * file: src/platform/messaging/hooks/useRecordThread.ts:17 * kind: hook * core: platform * spec: (none) * summary: Hook for managing record thread. * score: 1 ### hook useReferencePicklist * file: src/platform/picklists/hooks/useReferencePicklist.ts:24 * kind: hook * core: platform * spec: (none) * summary: Fetches reference picklist items for a given domain with optional jurisdiction filtering. Uses internally (org resolved via OrganizationContext). When is provided, items are filtered to matching jurisdictions and state-specific items are sorted to the top. * params: * picklistName — One of the four reference picklist domains. * options — Optional jurisdiction filter and activeOnly flag. * returns: Object with (filtered/sorted items), , and . * example: | const data: bodies, isLoading = useReferencePicklist('regulatory\_bodies', jurisdictionFilter: 'AZ' ); * score: 4 ### hook useRejectAiSkill * file: src/platform/ai/hooks/useAiSkillLifecycle.ts:25 * kind: hook * core: platform * spec: (none) * summary: Reject an in\_review skill back to draft (gates on pf.ai\_skills.approve). * score: 4 ### hook useRemoveEmployeeFromSharePoint * file: src/platform/integrations/hooks/useEmployeeEntraMemberships.ts:239 * kind: hook * core: platform * spec: (none) * summary: Manually remove employee from a SharePoint group * score: 4 ### hook useRemoveEmployeeFromTeam * file: src/platform/integrations/hooks/useEmployeeEntraMemberships.ts:160 * kind: hook * core: platform * spec: (none) * summary: Manually remove employee from a Team * score: 4 ### hook useRemoveIpAllowlist * file: src/platform/security/hooks/useIpListMutations.ts:52 * kind: hook * core: platform * spec: (none) * summary: Hook for managing remove ip allowlist. * score: 1 ### hook useRemoveIpBlocklist * file: src/platform/security/hooks/useIpListMutations.ts:110 * kind: hook * core: platform * spec: (none) * summary: Hook for managing remove ip blocklist. * score: 1 ### hook useRemoveThreadAgent * file: src/platform/cowork/useThreads.ts:76 * kind: hook * core: platform * spec: (none) * summary: Mark an agent's participation in a thread as left. * score: 4 ### hook useReportDefinition * file: src/platform/reports/useReportDefinition.ts:17 * kind: hook * core: platform * spec: (none) * summary: Hook for managing report definition. * score: 1 ### hook useReportExecution * file: src/platform/reports/useReportExecution.ts:62 * kind: hook * core: platform * spec: (none) * summary: Hook for managing report execution. * score: 1 ### hook useReportExport * file: src/platform/reports/hooks/useReportExport.ts:82 * kind: hook * core: platform * spec: (none) * summary: Hook for exporting report results.Supports CSV, JSON (client-side), PDF, and Excel (edge function).All exports are uploaded to the reports-exports bucket and theexecution record is updated with the file path and format. * score: 1 ### hook useReportHistory * file: src/platform/reports/useReportHistory.ts:17 * kind: hook * core: platform * spec: (none) * summary: Hook for managing report history. * score: 1 ### hook useReportList * file: src/platform/reports/useReportList.ts:18 * kind: hook * core: platform * spec: (none) * summary: Hook for managing report list. * score: 1 ### hook useReportPermissions * file: src/platform/reports/hooks/useReportPermissions.ts:20 * kind: hook * core: platform * spec: (none) * summary: Fetches all permissions for a given report. * score: 4 ### hook useReportRunDetails * file: src/platform/reports/hooks/useReportRuns.ts:53 * kind: hook * core: platform * spec: (none) * summary: Hook for managing report run details. * score: 1 ### hook useReportRuns * file: src/platform/reports/hooks/useReportRuns.ts:17 * kind: hook * core: platform * spec: (none) * summary: Hook for managing report runs. * score: 1 ### hook useReportSchedules * file: src/platform/reports/hooks/useReportSchedules.ts:13 * kind: hook * core: platform * spec: (none) * summary: Hook for managing report schedules. * score: 1 ### hook useReportTemplateCopy * file: src/platform/reports/useReportTemplateCopy.ts:21 * kind: hook * core: platform * spec: (none) * summary: Hook for managing report template copy. * score: 1 ### hook useResetTheme * file: src/platform/theming/hooks/useTenantTheme.ts:142 * kind: hook * core: platform * spec: (none) * summary: Reset the active theme to spec defaults. * score: 4 ### hook useResolvedSurfaceBlocks * file: src/platform/clinical/blocks/useResolvedSurfaceBlocks.ts:23 * kind: hook * core: platform * spec: (none) * summary: React Query hook for a surface's resolved block set; disabled until org + surface are known. * score: 4 ### hook useResolveThread * file: src/platform/cowork/useThreads.ts:21 * kind: hook * core: platform * spec: (none) * summary: Resolve a thread's SoT view (conversation, org, primary agent, active participants). * score: 4 ### hook useResolveVendor * file: src/platform/transcription/admin/hooks/useTranscriptionVendors.ts:199 * kind: hook * core: platform * spec: (none) * summary: Resolver preview — calls so therouting dialog can show the live winning rule. * score: 4 ### hook useResourceQuota * file: src/platform/quota/hooks/useResourceQuota.ts:21 * kind: hook * core: platform * spec: (none) * summary: Checks a resource quota for the current org via the database RPC. * params: * options — Organization, resource type, and optional requested amount. * returns: Quota state with allowed/remaining and a manual checkQuota function. * score: 4 ### hook useResourceUsage * file: src/platform/quota/hooks/useResourceUsage.ts:17 * kind: hook * core: platform * spec: (none) * summary: Fetches resource usage records for an organization. * params: * organizationId — The organization to query usage for. * filters — Optional resource type and aggregation period filters. * score: 4 ### hook useRestoreLayoutVersion * file: src/platform/page-layouts/hooks/useRestoreLayoutVersion.ts:22 * kind: hook * core: platform * spec: (none) * summary: Restore a layout from a version snapshot via edge function. * score: 4 ### hook useRestoreRecord * file: src/platform/admin/hooks/useDeletedRecordMutation.ts:33 * kind: hook * core: platform * spec: (none) * summary: Hook for managing restore record. * score: 1 ### hook useRestoreWizardVersion * file: src/platform/wizards/hooks/useWizardVersionMutation.ts:70 * kind: hook * core: platform * spec: (none) * summary: Hook for restoring a wizard template to a previous version * score: 1 ### hook useRetentionPolicies * file: src/platform/data-retention/hooks/useRetentionPolicies.ts:12 * kind: hook * core: platform * spec: (none) * summary: Hook for managing retention policies. * score: 1 ### hook useRetrySyncEvent * file: src/platform/org-data-sync/hooks/useRetrySyncEvent.ts:13 * kind: hook * core: platform * spec: (none) * summary: Hook for managing retry sync event. * score: 1 ### hook useRevertBatch * file: src/platform/data-manager/hooks/useRevertBatch.ts:26 * kind: hook * core: platform * spec: (none) * summary: Mutation hook to revert a previously saved raw data batch. * score: 4 ### hook useRevokeApiKey * file: src/platform/api-access/hooks/useApiKeyMutations.ts:82 * kind: hook * core: platform * spec: (none) * summary: Revokes an API key by setting status to 'revoked' and recording revocation metadata. * score: 4 ### hook useRevokeRolePermission * file: src/platform/permissions/hooks/useRolePermissions.ts:77 * kind: hook * core: platform * spec: (none) * summary: Hook to revoke a permission from a role * score: 4 ### hook useRingCentralConfig * file: src/platform/integrations/hooks/useRingCentralConfig.ts:57 * kind: hook * core: platform * spec: (none) * summary: Hook for accessing RingCentral configuration and extension mappings. * example: | const config, extensionMappings, isLoading = useRingCentralConfig(); * score: 1 ### hook useRingCentralExtensions * file: src/platform/telephony/hooks/useRingCentralExtensions.ts:35 * kind: hook * core: platform * spec: (none) * summary: Hook for managing RingCentral extension mappings * score: 1 ### hook useRingCentralSetup * file: src/platform/telephony/hooks/useRingCentralSetup.ts:79 * kind: hook * core: platform * spec: (none) * summary: Hook that manages RingCentral webhook subscription lifecycle (status, connect, disconnect, test) for the current organization. * returns: An object with the current subscription state, status helpers, loading/error state, refetch function, and mutation triggers: - — the current or - — when a subscription exists and its status is - — when a subscription exists and its status is - — while the status query is loading - — query error object if the status query failed - — function to re-run the status query - — function to initiate connection (mutation) - — while the connect mutation is pending - — function to initiate disconnection (mutation) - — while the disconnect mutation is pending - — function to run a credentials test (mutation) - — while the test mutation is pending * example: | // Usage within a React componentconst subscription, isConnected, isLoading, connect, isConnecting, disconnect, isDisconnecting, testConnection, isTesting, = useRingCentralSetup(); * score: 4 ### hook useRoleAssignees * file: src/platform/permissions/hooks/useRoleAssignments.ts:38 * kind: hook * core: platform * spec: (none) * summary: Hook to fetch users assigned to a custom role * score: 4 ### hook useRoleAssignmentActions * file: src/platform/permissions/hooks/useRoleAssignmentActions.ts:38 * kind: hook * core: platform * spec: (none) * summary: Utility hook for role assignment actions with toast feedback. * score: 4 ### hook useRoleBasedDefaults * file: src/platform/navigation/hooks/useRoleBasedDefaults.ts:52 * kind: hook * core: platform * spec: (none) * summary: Returns suggested default shortcuts based on the user's module access.If the user only has access to 1-2 modules, returns a preset that putsthe primary module first. If the user has broad access (3+ modules),returns the standard platform defaults. * score: 4 ### hook useRolePermissions * file: src/platform/permissions/hooks/useRolePermissions.ts:29 * kind: hook * core: platform * spec: (none) * summary: Hook to fetch permissions for a custom role * example: | const data: rolePerms, isLoading = useRolePermissions(roleId); * score: 4 ### hook useRollbackAiSkill * file: src/platform/ai/hooks/useAiSkillLifecycle.ts:34 * kind: hook * core: platform * spec: (none) * summary: Roll a skill back to a prior version (writes a new forward version; regulated → re-enters in\_review). * score: 4 ### hook useRollbackBatch * file: src/platform/import/hooks/useImportRollback.ts:14 * kind: hook * core: platform * spec: (none) * summary: Rollback a single import batch — marks batch as rolled\_back and records as skipped. * score: 4 ### hook useRollbackStep * file: src/platform/import/hooks/useImportRollback.ts:54 * kind: hook * core: platform * spec: (none) * summary: Rollback all batches linked to a specific onboarding step (by step\_number). * score: 4 ### hook useRollbackTemplateAssignment * file: src/platform/provisioning/hooks/useRollbackTemplateAssignment.ts:18 * kind: hook * core: platform * spec: (none) * summary: Rolls back a template assignment (status → rolled\_back).Only available within 24 hours of applied\_at. * score: 4 ### hook useRotateApiKey * file: src/platform/api-access/hooks/useApiKeyMutations.ts:125 * kind: hook * core: platform * spec: (none) * summary: Rotates an API key: creates a new key and marks the old key as 'rotating'with a grace period during which both keys are valid. * score: 4 ### hook useRowGrouping * file: src/platform/table-v2/hooks/useRowGrouping.ts:100 * kind: hook * core: platform * spec: (none) * summary: Hook for managing row grouping in TanStack Table * score: 1 ### hook useRunDeduplication * file: src/platform/import/hooks/useDeduplication.ts:23 * kind: hook * core: platform * spec: (none) * summary: Mutation hook that runs deduplication on a batch's records.1. Fetches all records for the batch.2. Runs the matching engine.3. Updates flagged records with duplicate\_of, duplicate\_confidence, status='duplicate'. * params: * organizationId — Current org ID. * score: 4 ### hook useSaveConnectionMutation * file: src/platform/settings/pages/data-migration/hooks/useDataMigrationConnections.ts:68 * kind: hook * core: platform * spec: (none) * summary: Hook for managing save connection mutation. * score: 1 ### hook useSaveJurisdictionOverrides * file: src/platform/jurisdiction/hooks/useJurisdictionConfigMutation.ts:70 * kind: hook * core: platform * spec: (none) * summary: Mutation to save overrides on the current org's jurisdiction config. * score: 4 ### hook useSaveMappingMutation * file: src/platform/settings/pages/data-migration/hooks/useDataMigrationMappings.ts:44 * kind: hook * core: platform * spec: (none) * summary: Hook for managing save mapping mutation. * score: 1 ### hook useScreeningFunnelMetrics * file: src/platform/ce/useScreeningFunnelMetrics.ts:27 * kind: hook * core: platform * spec: (none) * summary: Aggregates screening funnel metrics for the organization. * params: * organizationId — Org scope * dateRange — Optional date range filter * score: 4 ### hook useScreeningQueue * file: src/platform/ce/useScreeningQueue.ts:29 * kind: hook * core: platform * spec: (none) * summary: Fetches recent screening attempts for the screening queue. * params: * organizationId — Org scope * options — Optional filters (limit, status) * score: 4 ### hook useSearch * file: src/platform/search/hooks.ts:43 * kind: hook * core: platform * spec: (none) * summary: Generic search hook for querying Supabase tables with debouncing,ILIKE pattern matching, and optional full-text search. T - The expected type of search results * params: * options — Search configuration options * returns: Search results with loading and error states * example: | // Basic ILIKE searchconst results, isLoading = useSearchUser( query: searchTerm, table: 'pf\_profiles', fields: \['first\_name', 'last\_name', 'email'], organizationId: currentOrg.id,); // Full-text search with vector columnconst results = useSearchDocument( query: searchTerm, table: 'pf\_documents', fields: \[], useFullTextSearch: true, searchVectorColumn: 'search\_vector', organizationId: currentOrg.id,); * score: 4 ### hook useSearchHistory * file: src/platform/navigation/useSearchHistory.ts:20 * kind: hook * core: platform * spec: (none) * summary: Hook for managing search history. * score: 1 ### hook useSearchSharePoint * file: src/platform/integrations/hooks/useSharePointDocuments.ts:134 * kind: hook * core: platform * spec: (none) * summary: Provides search share point queries and mutation actions scoped to the current organization. * score: 4 ### hook useSectionMutation * file: src/platform/page-layouts/hooks/useSectionMutation.ts:27 * kind: hook * core: platform * spec: (none) * summary: Hook providing mutations for page layout section CRUD operations. * example: | const createSection, updateSection, deleteSection = useSectionMutation();await createSection.mutateAsync( layout\_id: 'layout-123', section\_name: 'Basic Information', columns: 2,); * score: 4 ### hook useSecurityAlertConfigList * file: src/platform/security/hooks/useSecurityAlertConfigList.ts:23 * kind: hook * core: platform * spec: (none) * summary: Hook for managing security alert config list. * score: 1 ### hook useSecurityEventsList * file: src/platform/security/hooks/useSecurityEventsList.ts:26 * kind: hook * core: platform * spec: (none) * summary: Hook for managing security events list. * score: 1 ### hook useSeedOrgKnowledge * file: src/platform/knowledge/hooks/use-seed-org-knowledge.ts:94 * kind: hook * core: platform * spec: (none) * summary: Guided org-knowledge seeding service.Returns the two org\_profile seeding branches (import / author) and the publish helper,composed from the existing knowledge CRUD hooks — no new mutation iswritten here. All writes inherit scoping from the underlying hooks( / use ). * returns: A with , , , and . * example: | const createDraftFromDocument, publishOrgProfile = useSeedOrgKnowledge();const draft = await createDraftFromDocument( documentId, content );// ...admin edits draft.content...await publishOrgProfile(draft.id); * score: 4 ### hook useSeedTranscriptionSession * file: src/platform/transcription/hooks/useSeedTranscriptionSession.ts:60 * kind: hook * core: platform * spec: (none) * summary: Mutation that creates one synthetic transcription session and transcriptsegment set for the active organization. The generated content is explicitlynon-PHI and intended only for QA/E2E walkthroughs. * score: 4 ### hook useSelectedRows * file: src/platform/table-v2/features/RowSelection.tsx:171 * kind: hook * core: platform * spec: (none) * summary: Hook to get selected rows from a table. * params: * table — TanStack table instance * returns: Array of selected row data * score: 4 ### hook useSendMessage * file: src/platform/messaging/hooks/useSendMessage.ts:17 * kind: hook * core: platform * spec: (none) * summary: Hook for managing send message. * score: 1 ### hook useServerTable * file: src/platform/table-v2/features/useServerTable.ts:152 * kind: hook * core: platform * spec: (none) * summary: Hook for server-side table data fetching with TanStack Table.Combines TanStack Table state management with React Query for data fetching.Follows project patterns for staleTime and gcTime. T - Row data type * params: * options — Server table options * returns: Server table state and handlers * score: 1 ### hook useServiceAccountList * file: src/platform/api-access/hooks/useServiceAccountList.ts:21 * kind: hook * core: platform * spec: (none) * summary: Fetches the list of service accounts for the current organization. * returns: TanStack Query result with service account rows * score: 4 ### hook useSessionHeartbeat * file: src/platform/sessions/hooks/useSessionHeartbeat.ts:14 * kind: hook * core: platform * spec: (none) * summary: Hook for managing session heartbeat. * score: 1 ### hook useSessionRecorder * file: src/platform/analytics/useSessionRecorder.tsx:282 * kind: hook * core: platform * spec: (none) * summary: Hook to access session recorder * returns: Session recorder controls and state * score: 4 ### hook useSessionsList * file: src/platform/sessions/hooks/useSessionsList.ts:14 * kind: hook * core: platform * spec: (none) * summary: Hook for managing sessions list. * score: 1 ### hook useSetPortalFlowEnabled * file: src/platform/automation/portal/hooks.ts:123 * kind: hook * core: platform * spec: (none) * summary: Enable (or disable) a flow. Enabling requires the portal ToS to be and stamps the tenant's acknowledgement (AC-1 / AC-4). Server-side RLS limitsthis to org\_admin and the dispatch edge re-checks the gate. * score: 4 ### hook useSetProfilePhoto * file: src/platform/headshot/hooks/useSetProfilePhoto.ts:16 * kind: hook * core: platform * spec: (none) * summary: Sets a headshot result as the user's profile photo.Updates the result's is\_profile\_photo flag and the user's pf\_profiles.avatar\_url. * score: 4 ### hook useSetRolePermissions * file: src/platform/permissions/hooks/useSetRolePermissions.ts:20 * kind: hook * core: platform * spec: (none) * summary: Hook to batch update permissions for a role * score: 4 ### hook useSettingsAudit * file: src/platform/settings/useSettingsAudit.ts:38 * kind: hook * core: platform * spec: (none) * summary: Hook for managing settings audit. * score: 1 ### hook useSettingsSaveShortcut * file: src/platform/settings/hooks/useSettingsSaveShortcut.ts:13 * kind: hook * core: platform * spec: (none) * summary: Binds Cmd+S / Ctrl+S to when enabled (typically when the settings form is dirty). * score: 4 ### hook useSetupStatus * file: src/platform/setup/hooks/useSetupStatus.ts:59 * kind: hook * core: platform * spec: (none) * summary: Hook for managing setup status. * score: 1 ### hook useSharePointConfig * file: src/platform/integrations/hooks/useSharePointConfig.ts:61 * kind: hook * core: platform * spec: (none) * summary: Fetch department-to-SharePoint group mappings for organization * score: 4 ### hook useSharePointConfigMutation * file: src/platform/integrations/hooks/useSharePointConfig.ts:94 * kind: hook * core: platform * spec: (none) * summary: CRUD mutations for SharePoint configuration * score: 4 ### hook useSharePointDocuments * file: src/platform/integrations/hooks/useSharePointDocuments.ts:26 * kind: hook * core: platform * spec: (none) * summary: Provides share point documents queries and mutation actions scoped to the current organization. * score: 4 ### hook useSharePointDownloadUrl * file: src/platform/integrations/hooks/useSharePointDocuments.ts:84 * kind: hook * core: platform * spec: (none) * summary: Provides share point download url queries and mutation actions scoped to the current organization. * score: 4 ### hook useSidebarGroupState * file: src/platform/navigation/hooks/useSidebarGroupState.ts:66 * kind: hook * core: platform * spec: (none) * summary: Custom hook for managing sidebar group expansion state with localStorage persistence.Features:- Persists state per module to localStorage- Auto-opens groups containing active routes- Maintains user preferences across sessions * score: 4 ### hook useSignature * file: src/platform/signatures/useSignature.ts:39 * kind: hook * core: platform * spec: (none) * summary: Hook for managing signature. * score: 1 ### hook useSignatureNotifications * file: src/platform/signatures/hooks/useSignatureNotifications.ts:39 * kind: hook * core: platform * spec: (none) * summary: Hook for creating signature-related notifications.In-app notifications are created via database triggers for status changes.This hook provides additional manual notification capabilities. * score: 1 ### hook useSignatureRequest * file: src/platform/signatures/hooks/useSignatureRequest.ts:23 * kind: hook * core: platform * spec: (none) * summary: Hook for managing signature request. * score: 1 ### hook useSignatureRequests * file: src/platform/signatures/hooks/useSignatureRequests.ts:27 * kind: hook * core: platform * spec: (none) * summary: Hook for managing signature requests. * score: 1 ### hook useSiteBusinessHours * file: src/platform/sites/hooks/useSiteBusinessHours.ts:24 * kind: hook * core: platform * spec: (none) * summary: Read the seven weekday rows for a site, defaulting missing days to "closed". * score: 4 ### hook useSiteCensus * file: src/platform/census/useCensusData.ts:109 * kind: hook * core: platform * spec: (none) * summary: Get census count for a specific site * score: 4 ### hook useSiteList * file: src/platform/sites/hooks/useSiteList.ts:11 * kind: hook * core: platform * spec: (none) * summary: Hook for managing site list. * score: 1 ### hook useSiteTimezone * file: src/platform/timezone/useSiteTimezone.ts:30 * kind: hook * core: platform * spec: (none) * params: * siteId — Site to resolve; when omitted/unknown the org default (then the platform default) is used. * score: 1 ### hook useSkillApprovalQueue * file: src/platform/ai/hooks/useSkillApprovalQueue.ts:38 * kind: hook * core: platform * spec: (none) * summary: Returns the current organization's AI skills awaiting approval (lifecycle\_status = 'in\_review'). Queries filtered to the current org's non-system rows,tagging each with whether its category is regulated (mandatory second-person approval). Returnsan empty list when there is no organization context. * returns: An object with the array, , , and a callback. * score: 4 ### hook useSkillLifecycleMutations * file: src/platform/ai/hooks/useSkillLifecycleMutations.ts:73 * kind: hook * core: platform * spec: (none) * summary: Provides the four governed AI-skill lifecycle mutations backed by SECURITY DEFINER RPCs.Each mutation sanitizes its error, surfaces a toast, and invalidates the approval-queue,version-history, and skills caches on success so the UI reflects the new lifecycle state. * returns: Mutation callbacks (///) and per-action pending flags. * score: 4 ### hook useSkillTest * file: src/platform/ai/wizards/ai-skill-creation/hooks/useSkillTest.ts:65 * kind: hook * core: platform * spec: (none) * summary: Author-time test runner for the draft skill prompt (AC-4). * returns: (one invocation), the latest , and an flag. * score: 4 ### hook useSkillUsageStats * file: src/platform/ai/hooks/useSkillUsageStats.ts:49 * kind: hook * core: platform * spec: (none) * summary: Retrieves aggregated AI skill usage statistics for the active organization over a date range. * params: * options — Optional query configuration, including time window (, ),optional module filtering (), and whether the query should run (). * returns: Aggregated usage data and query state via , includingper-skill stats (), totals/rates (, , ),loading/error flags (, ), and a handler. Values update when queryinputs change and when React Query refetches. * score: 4 ### hook useSLA * file: src/platform/sla/hooks/useSLA.ts:14 * kind: hook * core: platform * spec: (none) * summary: Fetches active SLA instances for a specific entity (entity-level indicator). * score: 4 ### hook useSLAActions * file: src/platform/sla/hooks/useSLAActions.ts:14 * kind: hook * core: platform * spec: (none) * summary: Returns mutation functions for SLA instance actions (pause, resume, extend). * score: 4 ### hook useSLAComplianceReport * file: src/platform/health/hooks/useSLAComplianceReport.ts:103 * kind: hook * core: platform * spec: (none) * summary: Hook for managing slacompliance report. * score: 1 ### hook useSLADashboard * file: src/platform/sla/hooks/useSLADashboard.ts:24 * kind: hook * core: platform * spec: (none) * summary: Fetches aggregated SLA dashboard statistics. * score: 4 ### hook useSLADefinition * file: src/platform/sla/hooks/useSLADefinitions.ts:48 * kind: hook * core: platform * spec: (none) * summary: Fetches a single SLA definition by ID. * score: 4 ### hook useSLADefinitions * file: src/platform/sla/hooks/useSLADefinitions.ts:25 * kind: hook * core: platform * spec: (none) * summary: Fetches all SLA definitions for an organization. * score: 4 ### hook useSLAInstance * file: src/platform/sla/hooks/useSLAInstances.ts:68 * kind: hook * core: platform * spec: (none) * summary: Fetches a single SLA instance by ID. * score: 4 ### hook useSLAInstances * file: src/platform/sla/hooks/useSLAInstances.ts:32 * kind: hook * core: platform * spec: (none) * summary: Fetches SLA instances for an organization with optional filters. * score: 4 ### hook useSLAThresholds * file: src/platform/health/hooks/useSLAThresholds.ts:14 * kind: hook * core: platform * spec: (none) * summary: Hook for managing slathresholds. * score: 1 ### hook useSLAViolations * file: src/platform/health/hooks/useSLAViolations.ts:19 * kind: hook * core: platform * spec: (none) * summary: Hook for managing slaviolations. * score: 1 ### hook useSnoozeInboxItem * file: src/platform/inbox/hooks/useInboxSnoozes.ts:66 * kind: hook * core: platform * spec: (none) * summary: Hook for managing snooze inbox item. * score: 1 ### hook useSortableTable * file: src/platform/table-v2/hooks/useSortableTable.ts:79 * kind: hook * core: platform * spec: (none) * summary: Hook for managing table sorting state with PF-57 compatibility. * params: * options — Sorting options * returns: Sorting state and handlers * score: 1 ### hook useStartAssistantThread * file: src/platform/ai/hooks/useStartAssistantThread.ts:29 * kind: hook * core: platform * spec: (none) * summary: Call pf\_start\_assistant\_thread to create a private assistant conversation.Returns the conversation\_id and thread\_id. * score: 4 ### hook useStarterRoles * file: src/platform/permissions/hooks/useStarterRoles.ts:38 * kind: hook * core: platform * spec: (none) * summary: Hook to batch create starter roles with permission assignments * score: 4 ### hook useStartMigration * file: src/platform/settings/pages/data-migration/hooks/useDataMigrationRuns.ts:38 * kind: hook * core: platform * spec: (none) * summary: Hook for managing start migration. * score: 1 ### hook useStepBatches * file: src/platform/import/hooks/useOnboardingStepBatches.ts:17 * kind: hook * core: platform * spec: (none) * summary: List step-batch junction rows for an onboarding session. * score: 4 ### hook useStepFieldManager * file: src/platform/wizards/hooks/useStepFieldManager.ts:65 * kind: hook * core: platform * spec: (none) * summary: Hook for managing step field manager. * score: 1 ### hook useStoreCredential * file: src/platform/credentials/hooks/useStoreCredential.ts:28 * kind: hook * core: platform * spec: (none) * summary: Mutation hook that stores a credential in the PF-76 vault for the active org.Returns the new . * score: 4 ### hook useSubmitAiSkill * file: src/platform/ai/hooks/useAiSkillLifecycle.ts:13 * kind: hook * core: platform * spec: (none) * summary: Submit a skill for activation/review (regulated → in\_review; non-regulated, non-import → self-activate). * score: 4 ### hook useSubmitApprovalRequest * file: src/platform/approvals/hooks/useSubmitApprovalRequest.ts:37 * kind: hook * core: platform * spec: (none) * summary: Hook for managing submit approval request.When FW-54 routing is enabled for the org, this hook evaluatesrouting rules before insert and may override the provided chainId. * score: 1 ### hook useSubscriptionDiagnostics * file: src/platform/notifications/hooks/useSubscriptionDiagnostics.ts:59 * kind: hook * core: platform * spec: (none) * summary: Hook for managing subscription diagnostics. * score: 1 ### hook useSubtasks * file: src/platform/tasks/hooks/useSubtasks.ts:23 * kind: hook * core: platform * spec: (none) * summary: Hook for listing the direct subtasks of a parent task.Returns subtasks ordered by sort\_order then created\_at. * score: 1 ### hook useSuggestSections * file: src/platform/templates/hooks/useSuggestSections.ts:31 * kind: hook * core: platform * spec: (none) * summary: Mutation hook that suggests document template sections for a given template type. * returns: useMutation result with helper and loading/error state. * score: 4 ### hook useSwimLaneDiagram * file: src/platform/workflow/useSwimLaneDiagram.ts:14 * kind: hook * core: platform * spec: (none) * summary: Hook for managing swim lane diagram. * score: 1 ### hook useSwimLaneDiagramList * file: src/platform/workflow/useSwimLaneDiagramList.ts:20 * kind: hook * core: platform * spec: (none) * summary: Hook for managing swim lane diagram list. * score: 1 ### hook useSwimLaneDiagramMutation * file: src/platform/workflow/useSwimLaneDiagramMutation.ts:18 * kind: hook * core: platform * spec: (none) * summary: Hook for managing swim lane diagram mutation. * score: 1 ### hook useSwimLaneDiagramVersions * file: src/platform/workflow/useSwimLaneDiagramVersions.ts:16 * kind: hook * core: platform * spec: (none) * summary: Fetches version history for a diagram, ordered newest first. * score: 4 ### hook useSwimLaneTemplates * file: src/platform/workflow/useSwimLaneTemplates.ts:20 * kind: hook * core: platform * spec: (none) * summary: Fetches available diagram templates (platform + org-scoped). * params: * organizationId — Current org context * score: 4 ### hook useSwipeActions * file: src/platform/gestures/hooks/useSwipeActions.ts:16 * kind: hook * core: platform * spec: (none) * summary: Hook for managing swipe actions. * score: 1 ### hook useSwipeToDismiss * file: src/platform/gestures/hooks/useSwipeToDismiss.ts:16 * kind: hook * core: platform * spec: (none) * summary: Hook for managing swipe to dismiss. * score: 1 ### hook useSyncEventsList * file: src/platform/org-data-sync/hooks/useSyncEventsList.ts:12 * kind: hook * core: platform * spec: (none) * summary: Hook for managing sync events list. * score: 1 ### hook useSyncLeaveRequest * file: src/platform/integrations/hooks/useCalendarSyncConfig.ts:177 * kind: hook * core: platform * spec: (none) * summary: Trigger sync for a single leave request * score: 4 ### hook useSyncSharePointMemberships * file: src/platform/integrations/hooks/useSharePointConfig.ts:239 * kind: hook * core: platform * spec: (none) * summary: Trigger bulk sync of SharePoint memberships * score: 4 ### hook useSyncTeamsMemberships * file: src/platform/integrations/hooks/useTeamsConfig.ts:239 * kind: hook * core: platform * spec: (none) * summary: Trigger bulk sync of Teams memberships * score: 4 ### hook useSystemTemplates * file: src/platform/wizards/hooks/useSystemTemplates.ts:13 * kind: hook * core: platform * spec: (none) * summary: Hook for managing system templates. * score: 1 ### hook useTableExport * file: src/platform/table-v2/hooks/useTableExport.ts:142 * kind: hook * core: platform * spec: (none) * summary: Hook for exporting TanStack Table data to CSV or Excel * score: 1 ### hook useTableLookup * file: src/platform/data-lookup/useTableLookup.ts:32 * kind: hook * core: platform * spec: (none) * summary: Hook for dynamically fetching lookup options from database tables.Security features:- Table whitelist enforcement- Automatic organization\_id filtering for multi-tenant tables- RLS policy compliance * example: | const options, isLoading = useTableLookup( table: 'hr\_departments', organizationId: currentOrgId, filters: is\_active: true ); * score: 1 ### hook useTablePreferences * file: src/platform/table-v2/hooks/useTablePreferences.ts:122 * kind: hook * core: platform * spec: (none) * summary: Unified table preferences: column order, visibility, and widths.Persists to localStorage under .Debounces writes by 300ms. * score: 4 ### hook useTableUrlState * file: src/platform/router/useTableUrlState.ts:67 * kind: hook * core: platform * spec: (none) * summary: Hook for managing table url state. * score: 1 ### hook useTabUrlState * file: src/platform/tabs/useTabUrlState.ts:25 * kind: hook * core: platform * spec: (none) * summary: Returns validated, URL-synced tab state. If the URL param is not in validTabs,returns defaultValue and syncs the URL to the default (via useEffect). * params: * paramName — Query param name (e.g. 'tab') * validTabs — Readonly array of allowed tab values * defaultValue — Tab to use when param is missing or invalid * returns: \[activeTab, setTab] - activeTab is typed as union of validTabs; setTab updates URL * score: 4 ### hook useTask * file: src/platform/tasks/hooks/useTask.ts:22 * kind: hook * core: platform * spec: (none) * summary: Hook for managing task. * score: 1 ### hook useTaskAnalytics * file: src/platform/tasks/hooks/useTaskAnalytics.ts:18 * kind: hook * core: platform * spec: (none) * summary: Hook for managing task analytics. * score: 1 ### hook useTaskAutomationRuleMutation * file: src/platform/tasks/hooks/useTaskAutomationRuleMutation.ts:13 * kind: hook * core: platform * spec: (none) * summary: Hook for managing task automation rule mutation. * score: 1 ### hook useTaskAutomationRules * file: src/platform/tasks/hooks/useTaskAutomationRules.ts:11 * kind: hook * core: platform * spec: (none) * summary: Hook for managing task automation rules. * score: 1 ### hook useTaskChildCounts * file: src/platform/tasks/hooks/useTaskChildCounts.ts:23 * kind: hook * core: platform * spec: (none) * summary: Hook returning subtask and checklist item counts for a task. * score: 4 ### hook useTaskCommentMutation * file: src/platform/tasks/hooks/useTaskCommentMutation.ts:25 * kind: hook * core: platform * spec: (none) * summary: Hook for managing task comment mutation. * score: 1 ### hook useTaskComments * file: src/platform/tasks/hooks/useTaskComments.ts:23 * kind: hook * core: platform * spec: (none) * summary: Hook for managing task comments. * score: 1 ### hook useTaskCompletionReport * file: src/platform/tasks/hooks/useTaskCompletionReport.ts:17 * kind: hook * core: platform * spec: (none) * summary: Hook for managing task completion report. * score: 1 ### hook useTaskDependencies * file: src/platform/tasks/hooks/useTaskDependencies.ts:11 * kind: hook * core: platform * spec: (none) * summary: Hook for managing task dependencies. * score: 1 ### hook useTaskDependencyMutation * file: src/platform/tasks/hooks/useTaskDependencyMutation.ts:24 * kind: hook * core: platform * spec: (none) * summary: Hook for managing task dependency mutation. * score: 1 ### hook useTaskMutation * file: src/platform/tasks/hooks/useTaskMutation.ts:24 * kind: hook * core: platform * spec: (none) * summary: Hook for managing task mutation. * score: 1 ### hook useTaskOverdueReport * file: src/platform/tasks/hooks/useTaskOverdueReport.ts:15 * kind: hook * core: platform * spec: (none) * summary: Hook for managing task overdue report. * score: 1 ### hook useTaskReorder * file: src/platform/tasks/hooks/useTaskReorder.ts:31 * kind: hook * core: platform * spec: (none) * summary: Hook that exposes a mutation for manual task prioritization. * score: 4 ### hook useTasks * file: src/platform/tasks/hooks/useTasks.ts:21 * kind: hook * core: platform * spec: (none) * summary: Hook for managing tasks. * score: 1 ### hook useTaskTemplateMutation * file: src/platform/tasks/hooks/useTaskTemplateMutation.ts:13 * kind: hook * core: platform * spec: (none) * summary: Hook for managing task template mutation. * score: 1 ### hook useTaskTemplates * file: src/platform/tasks/hooks/useTaskTemplates.ts:11 * kind: hook * core: platform * spec: (none) * summary: Hook for managing task templates. * score: 1 ### hook useTaskTimeEntries * file: src/platform/tasks/hooks/useTaskTimeEntries.ts:11 * kind: hook * core: platform * spec: (none) * summary: Hook for managing task time entries. * score: 1 ### hook useTaskTimeEntryMutation * file: src/platform/tasks/hooks/useTaskTimeEntryMutation.ts:13 * kind: hook * core: platform * spec: (none) * summary: Hook for managing task time entry mutation. * score: 1 ### hook useTeamsConfig * file: src/platform/integrations/hooks/useTeamsConfig.ts:61 * kind: hook * core: platform * spec: (none) * summary: Fetch department-to-Teams mappings for organization * score: 4 ### hook useTeamsConfigMutation * file: src/platform/integrations/hooks/useTeamsConfig.ts:94 * kind: hook * core: platform * spec: (none) * summary: CRUD mutations for Teams configuration * score: 4 ### hook useTeamsNotificationConfig * file: src/platform/integrations/hooks/useTeamsNotificationConfig.ts:37 * kind: hook * core: platform * spec: (none) * summary: Hook for managing teams notification config. * score: 1 ### hook useTeamsNotificationConfigMutation * file: src/platform/integrations/hooks/useTeamsNotificationConfig.ts:64 * kind: hook * core: platform * spec: (none) * summary: Hook for managing teams notification config mutation. * score: 1 ### hook useTelehealthSessionsByPmIds * file: src/platform/clinical/telehealth/useTelehealthSessionsByPmIds.ts:32 * kind: hook * core: platform * spec: CL-24 * summary: Fetches CL-24 telehealth session summaries for a set of PM telehealthsession ids in one query, keyed by . * params: * pmSessionIds — Array of . * score: 5 ### hook useTelephonySettings * file: src/platform/telephony/hooks/useTelephonySettings.ts:46 * kind: hook * core: platform * spec: (none) * summary: Platform hook for accessing telephony-related settings from CE module settings. * score: 4 ### hook useTemplateCacheStats * file: src/platform/templates/hooks/useTemplateCache.ts:142 * kind: hook * core: platform * spec: (none) * summary: Hook to get cache statistics for debugging * score: 4 ### hook useTemplateDetail * file: src/platform/page-layouts/hooks/useTemplates.ts:44 * kind: hook * core: platform * spec: (none) * summary: Hook for managing template detail. * score: 1 ### hook useTemplateList * file: src/platform/page-layouts/hooks/useTemplates.ts:13 * kind: hook * core: platform * spec: (none) * summary: Hook for managing template list. * score: 1 ### hook useTemplateSharing * file: src/platform/templates/hooks/useTemplateSharing.ts:66 * kind: hook * core: platform * spec: (none) * summary: Hook for managing template sharing. * score: 1 ### hook useTerminateAllSessions * file: src/platform/sessions/hooks/useTerminateSession.ts:51 * kind: hook * core: platform * spec: (none) * summary: Hook for managing terminate all sessions. * score: 1 ### hook useTerminateSession * file: src/platform/sessions/hooks/useTerminateSession.ts:14 * kind: hook * core: platform * spec: (none) * summary: Hook for managing terminate session. * score: 1 ### hook useTestConnectionMutation * file: src/platform/settings/pages/data-migration/hooks/useDataMigrationConnections.ts:124 * kind: hook * core: platform * spec: (none) * summary: Hook for managing test connection mutation. * score: 1 ### hook useTestGoogleWorkspaceConnection * file: src/platform/integrations/hooks/useGoogleWorkspaceConnection.ts:192 * kind: hook * core: platform * spec: (none) * summary: Invoke the edge function for the active org. * score: 4 ### hook useTestIntegration * file: src/platform/integrations/hooks/useTestIntegration.ts:21 * kind: hook * core: platform * spec: (none) * summary: Hook for managing test integration. * score: 1 ### hook useTestScenarios * file: src/platform/conditional-logic/hooks/useTestScenarios.ts:47 * kind: hook * core: platform * spec: (none) * summary: Hook for managing test scenarios with local storage persistence * score: 1 ### hook useTestWebhook * file: src/platform/integrations/hooks/useTestWebhook.ts:20 * kind: hook * core: platform * spec: (none) * summary: Hook for managing test webhook. * score: 1 ### hook useThemeList * file: src/platform/theming/hooks/useTenantTheme.ts:59 * kind: hook * core: platform * spec: (none) * summary: Fetch all themes for the current organization (for theme list / management). * score: 4 ### hook useToggleHeadshotFavorite * file: src/platform/headshot/hooks/useToggleHeadshotFavorite.ts:21 * kind: hook * core: platform * spec: (none) * summary: Toggles the is\_favorite flag on a headshot result with optimistic update. * score: 4 ### hook useToggleRolePermission * file: src/platform/permissions/hooks/useSetRolePermissions.ts:54 * kind: hook * core: platform * spec: (none) * summary: Hook to toggle a single permission for a role * score: 4 ### hook useToggleValidationRuleActive * file: src/platform/validation/hooks/useValidationRuleMutation.ts:70 * kind: hook * core: platform * spec: (none) * summary: Toggle active status of a rule (deactivate/activate). * score: 4 ### hook useTour * file: src/platform/help/useTour.ts:70 * kind: hook * core: platform * spec: (none) * summary: Hook for managing tour. * score: 1 ### hook useTranscriptionModuleSettings * file: src/platform/transcription/admin/hooks/useTranscriptionVendors.ts:135 * kind: hook * core: platform * spec: (none) * summary: Per-org transcription module settings (single row). * score: 4 ### hook useTranscriptionVendorCredentials * file: src/platform/transcription/admin/hooks/useTranscriptionVendors.ts:164 * kind: hook * core: platform * spec: (none) * summary: Vault credentials available for linking to a vendor BAA. Filters rows whose matches the vendor's (the existing PF-76 metadata convention). Org-scoped via RLS.Returns an empty list until a vendor is selected. * score: 4 ### hook useTranscriptionVendors * file: src/platform/transcription/admin/hooks/useTranscriptionVendors.ts:45 * kind: hook * core: platform * spec: (none) * summary: Platform-global vendor catalog (STT, LLM, redaction).Cached aggressively (30 min) since it rarely changes. * score: 4 ### hook useTransferUI * file: src/platform/banking/providers/plaid/useTransferUI.ts:46 * kind: hook * core: platform * spec: (none) * summary: Hook for one-time Plaid Transfer UI: create intent, open Link, optionally fetch final status.Flow: createIntentAndOpen(params) → creates transfer intent → fetches link token with intent →opens Plaid Link → onSuccess uses metadata.transfer\_status and optionally transfer/intent/getfor transfer\_id and final status. - organizationId: Required. Organization ID for tenant isolation. - linkCustomizationName: Optional. Plaid Dashboard Link customization (Account Select one account). - onSuccess: Called with transfer\_intent\_id, transfer\_status, and optional status/transfer\_id from intent/get. - onError: Called on intent create, link token, or Link error. - onExit: Called when user exits Link without completing. * score: 1 ### hook useTriggerComplianceChecks * file: src/platform/compliance/hooks/useTriggerScans.ts:35 * kind: hook * core: platform * spec: (none) * summary: Invokes the compliance-run-checks Edge Function for the given organization. * score: 4 ### hook useTriggerEmployeeSync * file: src/platform/integrations/hooks/useDirectorySyncConfig.ts:257 * kind: hook * core: platform * spec: (none) * summary: Trigger sync for a single employee * score: 4 ### hook useTriggerFullDirectorySync * file: src/platform/integrations/hooks/useDirectorySyncConfig.ts:220 * kind: hook * core: platform * spec: (none) * summary: Trigger full directory sync for all employees * score: 4 ### hook useTriggerPhiScan * file: src/platform/compliance/hooks/useTriggerScans.ts:10 * kind: hook * core: platform * spec: (none) * summary: Invokes the compliance-phi-scan Edge Function for the given organization. * score: 4 ### hook useTriggerProcessDiscovery * file: src/platform/automation/hooks/useTriggerProcessDiscovery.ts:21 * kind: hook * core: platform * spec: (none) * summary: Triggers the edge function for the current organization.Invalidates the business processes list on success. * returns: TanStack Mutation result containing . * score: 4 ### hook useTrustDevice * file: src/platform/sessions/hooks/useDeviceTrust.ts:14 * kind: hook * core: platform * spec: (none) * summary: Hook for managing trust device. * score: 1 ### hook useTypingIndicator * file: src/platform/messaging/hooks/useTypingIndicator.ts:28 * kind: hook * core: platform * spec: (none) * summary: Hook for managing typing indicator. * score: 1 ### hook useUnassignRole * file: src/platform/permissions/hooks/useRoleAssignments.ts:118 * kind: hook * core: platform * spec: (none) * summary: Hook to remove a role assignment from a user * score: 4 ### hook useUnifiedInbox * file: src/platform/inbox/useUnifiedInbox.ts:155 * kind: hook * core: platform * spec: (none) * summary: Hook for managing unified inbox. * score: 1 ### hook useUninstallBundle * file: src/platform/ai/hooks/useInstallBundle.ts:111 * kind: hook * core: platform * spec: (none) * summary: Mutation hook to uninstall a bundle via pf\_uninstall\_bundle.Removes all projected pf\_tool\_registry rows and flips status → uninstalled.Invalidates all \['marketplace'] queries on success. PF-62-EN-02 AC-2 * score: 4 ### hook useUnlinkedEmployees * file: src/platform/integrations/hooks/useEntraUnmatchedUsers.ts:68 * kind: hook * core: platform * spec: (none) * summary: Fetch unlinked employees that could be matched to an Entra user(employees with no entra\_id set) * score: 4 ### hook useUnmatchedEntraUsers * file: src/platform/integrations/hooks/useEntraUnmatchedUsers.ts:40 * kind: hook * core: platform * spec: (none) * summary: Fetch pending unmatched Entra users for the current organization * score: 4 ### hook useUnpublishKnowledgeArticle * file: src/platform/knowledge/hooks/use-knowledge-articles.ts:492 * kind: hook * core: platform * spec: (none) * summary: Unpublishes a knowledge article by setting its status back to "draft". Returns a React Query mutation hook that updates a knowledge article's status to , sets to the current user, and synchronizes related query caches on success. * returns: UseMutationResultKnowledgeArticle, Error, string A mutation hook where the mutation function accepts the article and resolves to the updated . * example: | const unpublish = useUnpublishKnowledgeArticle();// Trigger unpublish for article with id 'abc'unpublish.mutate('abc'); * score: 4 ### hook useUnreadCount * file: src/platform/notifications/useNotifications.ts:60 * kind: hook * core: platform * spec: (none) * summary: Hook for managing unread count. * score: 1 ### hook useUnreadCounts * file: src/platform/messaging/hooks/useUnreadCounts.ts:18 * kind: hook * core: platform * spec: (none) * summary: Hook for managing unread counts. * score: 1 ### hook useUnsavedChangesGuard * file: src/platform/settings/hooks/useUnsavedChangesGuard.ts:28 * kind: hook * core: platform * spec: (none) * summary: Registers for browser refresh/close when is true.Note: In-app navigation blocking via requires a data router(). This app uses , so only the guard is active; is always . * returns: Guard state; pair with . * score: 4 ### hook useUntrustDevice * file: src/platform/sessions/hooks/useDeviceTrust.ts:53 * kind: hook * core: platform * spec: (none) * summary: Hook for managing untrust device. * score: 1 ### hook useUnverifiedPhiClassifications * file: src/platform/compliance/hooks/useUnverifiedPhiClassifications.ts:18 * kind: hook * core: platform * spec: (none) * summary: Lists unverified column classifications for the compliance drift detail sheet. * score: 4 ### hook useUpdateAISkill * file: src/platform/ai/hooks/useUpdateAISkill.ts:38 * kind: hook * core: platform * spec: (none) * summary: Hook to update a custom AI skill within the current organization.Returns an API for performing an update of a non-system AI skill (scoped to the current organization), observing mutation state and any error. * returns: An object containing:- — updates the skill with using the provided and resolves to the updated .- — while the update mutation is in progress.- — the last error produced by the mutation, or if none. * example: | const updateSkill, isUpdating = useUpdateAISkill();await updateSkill('skill-123', name: 'Assistant', description: 'Updated desc' ); * score: 4 ### hook useUpdateEmailSignature * file: src/platform/email-signatures/hooks/useEmailSignatureMutation.ts:33 * kind: hook * core: platform * spec: (none) * summary: Update an existing email signature. * score: 4 ### hook useUpdateExportTemplate * file: src/platform/export/hooks/useExportTemplates.ts:82 * kind: hook * core: platform * spec: (none) * summary: Provides update export template queries and mutation actions scoped to the current organization. * score: 4 ### hook useUpdateHeadshotCampaign * file: src/platform/headshot/hooks/useHeadshotCampaigns.ts:114 * kind: hook * core: platform * spec: (none) * summary: Updates a headshot campaign. * score: 1 ### hook useUpdateImportBatch * file: src/platform/import/hooks/useImportBatches.ts:89 * kind: hook * core: platform * spec: (none) * summary: Update an existing import batch. * score: 4 ### hook useUpdateKnowledgeArticle * file: src/platform/knowledge/hooks/use-knowledge-articles.ts:320 * kind: hook * core: platform * spec: (none) * summary: Returns a React Query mutation hook that updates fields of an existing knowledge article.The mutation accepts an object with the article and a partial containing any fields to update. * returns: A mutation hook that performs the update and, on success, invalidates the article list cache and updates the article detail cache. * example: | const updateArticle = useUpdateKnowledgeArticle();updateArticle.mutate( id: 'article-id', input: title: 'New title', tags: \['tag1'] ); * score: 4 ### hook useUpdateLegalHold * file: src/platform/data-retention/hooks/useLegalHolds.ts:58 * kind: hook * core: platform * spec: (none) * summary: Hook for managing update legal hold. * score: 1 ### hook useUpdateMappingTemplate * file: src/platform/import/hooks/useImportMappingTemplates.ts:72 * kind: hook * core: platform * spec: (none) * summary: Update an existing mapping template. * score: 4 ### hook useUpdateOnboardingSession * file: src/platform/import/hooks/useOnboardingSessions.ts:88 * kind: hook * core: platform * spec: (none) * summary: Update an existing onboarding session. * score: 4 ### hook useUpdatePhiClassification * file: src/platform/compliance/hooks/usePhiClassifications.ts:40 * kind: hook * core: platform * spec: (none) * summary: Mutation to update a PHI classification. * score: 4 ### hook useUpdateProcessHealthSettings * file: src/platform/automation/hooks/useProcessHealthSettings.ts:84 * kind: hook * core: platform * spec: (none) * summary: Mutation to update process health settings. * returns: TanStack Mutation for updating . * score: 4 ### hook useUpdateQuota * file: src/platform/quota/hooks/useQuotaMutation.ts:59 * kind: hook * core: platform * spec: (none) * summary: Update an existing resource quota. * params: * organizationId — Current org context (for cache invalidation). * score: 4 ### hook useUpdateRecommendationStatus * file: src/platform/navigation/workspaces/admin/useWorkspaceMutations.ts:282 * kind: hook * core: platform * spec: (none) * summary: React Query mutation that accepts or dismisses an AI workspace suggestion bysetting its , scoped to the activeorganization. On success it invalidates the org's recommendationsquery so the actioned row drops off the suggested-workspaces list, and toastsaccept/dismiss accordingly; throws "No active organization" if no org is set. * score: 4 ### hook useUpdateReport * file: src/platform/reports/useReportMutation.ts:82 * kind: hook * core: platform * spec: (none) * summary: Hook for managing update report. * score: 1 ### hook useUpdateReportPermission * file: src/platform/reports/hooks/useReportPermissions.ts:71 * kind: hook * core: platform * spec: (none) * summary: Mutation hook for updating a report permission. * score: 4 ### hook useUpdateRetentionPolicy * file: src/platform/data-retention/hooks/useRetentionPolicies.ts:58 * kind: hook * core: platform * spec: (none) * summary: Hook for managing update retention policy. * score: 1 ### hook useUpdateRole * file: src/platform/permissions/hooks/useCustomRoles.ts:101 * kind: hook * core: platform * spec: (none) * summary: Hook to update an existing custom role * score: 4 ### hook useUpdateSecurityAlertConfig * file: src/platform/security/hooks/useSecurityAlertConfigMutation.ts:49 * kind: hook * core: platform * spec: (none) * summary: Hook for managing update security alert config. * score: 1 ### hook useUpdateServiceAccount * file: src/platform/api-access/hooks/useServiceAccountMutations.ts:61 * kind: hook * core: platform * spec: (none) * summary: Updates an existing service account. * score: 4 ### hook useUpdateSkillOverride * file: src/platform/ai/hooks/useUpdateSkillOverride.ts:39 * kind: hook * core: platform * spec: (none) * summary: Provides helpers to create or update an organization-scoped AI skill override.The returned API exposes to upsert a row in for the current organization, and reactive state forthe in-flight mutation and last error. * returns: The hook API:- : upserts and returns the created or updated .- : while the mutation is pending.- : the last mutation or . * example: | const updateOverride, isUpdating, error = useUpdateSkillOverride();await updateOverride('skill-123', custom\_instructions: 'Be concise', model\_preference: 'gpt-4' ); * score: 4 ### hook useUpdateSLADefinition * file: src/platform/sla/hooks/useSLADefinitions.ts:96 * kind: hook * core: platform * spec: (none) * summary: Updates an existing SLA definition. * score: 4 ### hook useUpdateTemplateSharing * file: src/platform/templates/hooks/useTemplateSharing.ts:130 * kind: hook * core: platform * spec: (none) * summary: Hook for managing update template sharing. * score: 1 ### hook useUpdateValidationRule * file: src/platform/validation/hooks/useValidationRuleMutation.ts:38 * kind: hook * core: platform * spec: (none) * summary: Update an existing validation rule. * score: 4 ### hook useUpdateValidationSettings * file: src/platform/validation/hooks/useValidationSettings.ts:43 * kind: hook * core: platform * spec: (none) * summary: Update validation settings (upsert pattern). * score: 4 ### hook useUpdateWorkspace * file: src/platform/navigation/workspaces/admin/useWorkspaceMutations.ts:184 * kind: hook * core: platform * spec: (none) * summary: React Query mutation that updates a workspace by id, scoped to the activeorganization (the predicate is defense-in-depth alongsideRLS) and re-stamping . Invalidates the org's workspace query onsuccess; throws "No active organization" if no org is selected. * score: 4 ### hook useUploadHeadshotPhoto * file: src/platform/headshot/hooks/useUploadHeadshotPhotos.ts:29 * kind: hook * core: platform * spec: (none) * summary: Uploads a single source photo to the headshots bucket and records metadata. * score: 4 ### hook useUploadToSharePoint * file: src/platform/integrations/hooks/useSharePointDocuments.ts:51 * kind: hook * core: platform * spec: (none) * summary: Provides upload to share point queries and mutation actions scoped to the current organization. * score: 4 ### hook useUpsertChatbotConfig * file: src/platform/chatbot/hooks/useChatbotConfig.ts:48 * kind: hook * core: platform * spec: (none) * summary: Creates or updates the chatbot configuration (upsert on org\_id unique constraint). * score: 4 ### hook useUpsertGoogleWorkspaceConnection * file: src/platform/integrations/hooks/useGoogleWorkspaceConnection.ts:96 * kind: hook * core: platform * spec: (none) * summary: Create or update the org's Google Workspace connection. * score: 4 ### hook useUpsertRoleLicenseMapping * file: src/platform/integrations/hooks/useEntraRoleLicenseMap.ts:91 * kind: hook * core: platform * spec: (none) * summary: Upsert (by org+role) a single role → SKU mapping. * score: 4 ### hook useUpsertTheme * file: src/platform/theming/hooks/useTenantTheme.ts:87 * kind: hook * core: platform * spec: (none) * summary: Upsert (create or update) the active theme for an organization.On first use, creates a default theme row; subsequently updates it. * score: 4 ### hook useUserEmailSignature * file: src/platform/email-signatures/hooks/useUserEmailSignature.ts:15 * kind: hook * core: platform * spec: (none) * summary: Fetches the user's personal email signature. Falls back to org defaultif no user-specific signature exists. * score: 4 ### hook useUserRoleAssignments * file: src/platform/permissions/hooks/useRoleAssignments.ts:154 * kind: hook * core: platform * spec: (none) * summary: Hook to get role assignments for a user * score: 4 ### hook useUserSearch * file: src/platform/documents/useUserSearch.ts:21 * kind: hook * core: platform * spec: (none) * summary: Hook for managing user search. * score: 1 ### hook useValidateShareToken * file: src/platform/dashboard/hooks/useDashboardShares.ts:160 * kind: hook * core: platform * spec: (none) * summary: Hook for managing validate share token. * score: 1 ### hook useValidationAnalyticsReport * file: src/platform/validation/hooks/useValidationAnalyticsReport.ts:13 * kind: hook * core: platform * spec: (none) * summary: Fetch aggregated failure counts per rule, sorted by failure count descending.Joins pf\_validation\_rule\_executions with pf\_validation\_rules for rule name. * score: 4 ### hook useValidationRuleDetail * file: src/platform/validation/hooks/useValidationRuleDetail.ts:15 * kind: hook * core: platform * spec: (none) * summary: Fetch a single validation rule by ID, scoped to the given organization. * params: * ruleId — The rule UUID to fetch. * organizationId — Organization scope for tenant isolation. * score: 4 ### hook useValidationRules * file: src/platform/wizards/hooks/useValidationRules.ts:16 * kind: hook * core: platform * spec: (none) * summary: Hook for managing validation rules. * score: 1 ### hook useValidationRulesList * file: src/platform/validation/hooks/useValidationRulesList.ts:18 * kind: hook * core: platform * spec: (none) * summary: Fetch validation rules for an organization, sorted by updated\_at descending. * score: 4 ### hook useValidationSettings * file: src/platform/validation/hooks/useValidationSettings.ts:13 * kind: hook * core: platform * spec: (none) * summary: Read validation settings for an organization.Returns defaults when no settings row exists. * score: 4 ### hook useVendorBaas * file: src/platform/transcription/admin/hooks/useTranscriptionVendors.ts:65 * kind: hook * core: platform * spec: (none) * summary: BAAs for the current org (joined with vendor display fields for table use). * score: 4 ### hook useViolationsList * file: src/platform/quota/hooks/useViolationsList.ts:17 * kind: hook * core: platform * spec: (none) * summary: Fetches quota violation records for an organization. * params: * organizationId — The organization to query violations for. * filters — Optional resource type, limit type, and date range filters. * score: 4 ### hook useVirtualizedTable * file: src/platform/table-v2/hooks/useVirtualizedTable.ts:120 * kind: hook * core: platform * spec: (none) * summary: Hook for virtualizing table rows for large datasets. * score: 1 ### hook useVisibilityAndInactivityLockTrigger * file: src/platform/auth/app-lock/useVisibilityAndInactivityLockTrigger.ts:38 * kind: hook * core: platform * spec: (none) * summary: Monitors page visibility changes and user inactivity to determine when theapp should lock. * score: 4 ### hook useVisibilityConditions * file: src/platform/wizards/hooks/useVisibilityConditions.ts:66 * kind: hook * core: platform * spec: (none) * summary: Hook for managing visibility conditions. * score: 1 ### hook useVisibilityRuleMutation * file: src/platform/page-layouts/hooks/useVisibilityRules.ts:64 * kind: hook * core: platform * spec: (none) * summary: CRUD mutations for visibility rules with 50-rule limit. * score: 4 ### hook useVisibilityRules * file: src/platform/page-layouts/hooks/useVisibilityRules.ts:29 * kind: hook * core: platform * spec: (none) * summary: Fetch visibility rules for a layout. * score: 4 ### hook useVisibleSteps * file: src/platform/forms/hooks/useVisibleSteps.ts:32 * kind: hook * core: platform * spec: (none) * summary: Hook that returns visible step numbers based on page conditions and form data.Steps are 1-indexed (step 1, step 2, etc.) to match user-facing display. * params: * pages — Array of form pages with optional conditional visibility * formData — Current form data used to evaluate conditions * score: 4 ### hook useWebhookDeliveries * file: src/platform/integrations/hooks/useWebhookDeliveries.ts:20 * kind: hook * core: platform * spec: (none) * summary: Hook for managing webhook deliveries. * score: 1 ### hook useWidgetAnalytics * file: src/platform/dashboard/hooks/useWidgetAnalytics.ts:20 * kind: hook * core: platform * spec: (none) * summary: Hook for managing widget analytics. * score: 1 ### hook useWidgetBackgroundSync * file: src/platform/dashboard/hooks/useWidgetBackgroundSync.ts:32 * kind: hook * core: platform * spec: (none) * summary: Hook for managing widget background sync. * score: 1 ### hook useWidgetCarouselMode * file: src/platform/dashboard/hooks/useWidgetCarouselMode.tsx:24 * kind: hook * core: platform * spec: (none) * summary: Hook to detect when to use carousel mode vs grid modebased on screen size and optional user preferenceIncludes hydration safety to prevent layout shift during SSR * score: 4 ### hook useWidgetData * file: src/platform/dashboard/hooks/useWidgetData.ts:18 * kind: hook * core: platform * spec: (none) * summary: Read widget data through the pf\_widget\_query broker (server allowlist + org-verify + caller-JWT RLS). Plugins/custom widgets use this instead of a direct Supabase query. * score: 4 ### hook useWidgetDataWithCache * file: src/platform/dashboard/hooks/useWidgetDataWithCache.ts:45 * kind: hook * core: platform * spec: (none) * summary: Hook implementing stale-while-revalidate pattern for widget data- Loads cached data instantly on mount- Fetches fresh data in background- Falls back to cache on network errors * score: 4 ### hook useWidgetEnablement * file: src/platform/dashboard/hooks/useWidgetEnablement.ts:16 * kind: hook * core: platform * spec: (none) * summary: Per-org widget enable/disable map from pf\_module\_settings.enabled\_widgets. Default-ON: an absent key (or absent/malformed column) means the widget is enabled. * score: 4 ### hook useWidgetRegistrySnapshot * file: src/platform/dashboard/useWidgetRegistrySnapshot.ts:6 * kind: hook * core: platform * spec: (none) * summary: Subscribe to the runtime widget registry (built-ins + registered plugins). * score: 4 ### hook useWizardAnalytics * file: src/platform/wizards/hooks/useWizardAnalytics.ts:69 * kind: hook * core: platform * spec: (none) * summary: Hook for managing wizard analytics. * score: 1 ### hook useWizardBuilder * file: src/platform/wizards/hooks/useWizardBuilder.ts:18 * kind: hook * core: platform * spec: (none) * summary: Hook for managing wizard builder. * score: 1 ### hook useWizardDetail * file: src/platform/page-layouts/hooks/useWizards.ts:45 * kind: hook * core: platform * spec: (none) * summary: Hook for managing wizard detail. * score: 1 ### hook useWizardDraft * file: src/platform/forms/hooks/useWizardDraft.ts:62 * kind: hook * core: platform * spec: (none) * summary: Hook for managing wizard drafts with progress tracking.Extends the standard form draft with wizard\_progress column support. * params: * formId — The form ID to manage drafts for * score: 1 ### hook useWizardDraft * file: src/platform/wizards/hooks/useWizardDraft.ts:58 * kind: hook * core: platform * spec: (none) * summary: Hook for managing wizard draft. * score: 1 ### hook useWizardExecution * file: src/platform/wizards/hooks/useWizardExecution.ts:98 * kind: hook * core: platform * spec: (none) * summary: Hook for managing wizard execution. * score: 1 ### hook useWizardFeatureFlags * file: src/platform/wizards/hooks/useWizardFeatureFlags.ts:75 * kind: hook * core: platform * spec: (none) * summary: Hook to get wizard feature flags for the current organization * score: 4 ### hook useWizardList * file: src/platform/page-layouts/hooks/useWizards.ts:17 * kind: hook * core: platform * spec: (none) * summary: Hook for managing wizard list. * score: 1 ### hook useWizardLock * file: src/platform/wizards/hooks/useWizardLock.ts:37 * kind: hook * core: platform * spec: (none) * summary: Hook for managing wizard lock. * score: 1 ### hook useWizardMode * file: src/platform/wizards/hooks/useWizardMode.ts:80 * kind: hook * core: platform * spec: (none) * summary: Hook to determine which wizard mode to use for a given module. * params: * module — The module to check (hr, rh, fw, fa) * returns: Object with mode, loading state, and setMode function * score: 4 ### hook useWizardMutation * file: src/platform/page-layouts/hooks/useWizards.ts:74 * kind: hook * core: platform * spec: (none) * summary: Hook for managing wizard mutation. * score: 1 ### hook useWizardOrgDefaults * file: src/platform/wizards/hooks/useWizardOrgDefaults.ts:86 * kind: hook * core: platform * spec: (none) * summary: Fetches org-level wizard defaults for the current organization.Uses raw SQL query since pf\_wizard\_org\_defaults is not in types.ts yet. * score: 4 ### hook useWizardPreviewState * file: src/platform/wizards/hooks/useWizardPreviewState.ts:34 * kind: hook * core: platform * spec: (none) * summary: Hook for managing wizard preview state. * score: 1 ### hook useWizardProgress * file: src/platform/forms/hooks/useWizardProgress.ts:55 * kind: hook * core: platform * spec: (none) * summary: Hook for managing wizard progress state and navigation. * params: * visibleSteps — Array of visible step numbers (from useVisibleSteps) * initialProgress — Optional initial progress (for resuming drafts) * allowStepNavigation — Whether users can freely navigate between steps * score: 1 ### hook useWizardProgress * file: src/platform/wizards/hooks/useWizardProgress.ts:39 * kind: hook * core: platform * spec: (none) * summary: Hook for managing wizard progress. * score: 1 ### hook useWizardSteps * file: src/platform/field-config/hooks/useWizardSteps.ts:10 * kind: hook * core: platform * spec: (none) * summary: Hook for managing wizard steps. * score: 1 ### hook useWizardTemplateDetail * file: src/platform/wizards/hooks/useWizardTemplateDetail.ts:13 * kind: hook * core: platform * spec: (none) * summary: Hook for managing wizard template detail. * score: 1 ### hook useWizardTemplateLock * file: src/platform/wizards/hooks/useWizardTemplateLock.ts:56 * kind: hook * core: platform * spec: (none) * summary: Hook for advisory locking of a wizard template during editing. * score: 1 ### hook useWizardTemplateMutation * file: src/platform/wizards/hooks/useWizardTemplateMutation.ts:16 * kind: hook * core: platform * spec: (none) * summary: Hook for managing wizard template mutation. * score: 1 ### hook useWizardTemplates * file: src/platform/wizards/hooks/useWizardTemplates.ts:20 * kind: hook * core: platform * spec: (none) * summary: Hook for managing wizard templates. * score: 1 ### hook useWizardVersion * file: src/platform/wizards/hooks/useWizardVersions.ts:88 * kind: hook * core: platform * spec: (none) * summary: Hook to get a specific version by ID * score: 4 ### hook useWizardVersions * file: src/platform/wizards/hooks/useWizardVersions.ts:50 * kind: hook * core: platform * spec: (none) * summary: Hook for managing wizard versions. * score: 1 ### hook useWorkflowEnqueue * file: src/platform/workflow/useWorkflowEnqueue.ts:37 * kind: hook * core: platform * spec: (none) * summary: Returns a mutation that enqueues an FW workflow execution through the platformseam. The current organization is used unless is supplied. * score: 4 ### hook useWorkflowKeyboardShortcuts * file: src/platform/workflow/useWorkflowKeyboardShortcuts.ts:54 * kind: hook * core: platform * spec: (none) * summary: Keyboard shortcut hook for the swim lane diagram builder.Shortcuts:- Ctrl/Cmd+Z — Undo- Ctrl/Cmd+Shift+Z — Redo- Ctrl/Cmd+C — Copy selected nodes- Ctrl/Cmd+V — Paste copied nodes- Ctrl/Cmd+A — Select all content nodes- Delete/Backspace — Remove selected nodes and connected edges- +/= — Zoom in- - — Zoom out- 0 — Reset zoom to 100%- 1 — Fit view- ? or K — Open shortcut help * score: 4 ### hook useWorkspaceNav * file: src/platform/navigation/hooks/useWorkspaceNav.ts:31 * kind: hook * core: platform * spec: (none) * summary: Resolve a workspace's cross-core nav into an ordered \[].Member cores are loaded on demand from the module-registry cache; while anyreferenced core is missing from the snapshot the hook reports .Group-level permission keys are checked via ; groupswithout a are always allowed (mirrors 'sboolean/Record normalization for single-key vs array calls). * score: 4 ### hook useWorkspaceNeedsAttention * file: src/platform/navigation/workspaces/useWorkspaceNeedsAttention.ts:21 * kind: hook * core: platform * spec: (none) * summary: Aggregates "needs attention" counters for a workspace hub.Currently returns an empty array — the per-core needs-attention sources(e.g. PM unsigned encounters, CL in-basket, FA denials) are wired inincrementally in a follow-up. This stays a real hook so those per-corehooks can be composed behind it later without changing the call sites.Safe for an undefined workspace (never throws). * score: 4 ## Components ### component AboutPage * file: src/platform/settings/AboutPage.tsx:13 * kind: component * core: platform * spec: (none) * summary: Utility for about page. * score: 1 ### component AboutPanel * file: src/platform/pwa/components/AboutPanel.tsx:14 * kind: component * core: platform * spec: (none) * summary: Utility for about panel. * score: 1 ### component ActivationRequestsPage * file: src/platform/settings/ActivationRequestsPage.tsx:25 * kind: component * core: platform * spec: (none) * summary: Admin page for managing user activation requests. * score: 2 ### component ActiveAlertsBanner * file: src/platform/health/components/ActiveAlertsBanner.tsx:23 * kind: component * core: platform * spec: (none) * summary: Utility for active alerts banner. * score: 1 ### component ActiveEmployeesWidget * file: src/platform/dashboard/plugins/active-employees/ActiveEmployeesWidget.tsx:14 * kind: component * core: platform * spec: (none) * summary: Example vetted plugin widget. Reads the org's active-employee count THROUGH thepf\_widget\_query broker (caller-JWT RLS + server-side allowlist) via useWidgetData —never a direct Supabase query. This is the reference for how a Phase-1 plugin consumesa real org-scoped, RLS'd table without being granted direct table access. * score: 2 ### component AddExistingUserDialog * file: src/platform/users/AddExistingUserDialog.tsx:32 * kind: component * core: platform * spec: (none) * summary: Utility for add existing user dialog. * score: 1 ### component AddFieldDialog * file: src/platform/data-manager/components/AddFieldDialog.tsx:40 * kind: component * core: platform * spec: (none) * summary: Utility for add field dialog. * score: 1 ### component AddPeopleDialog * file: src/platform/users/AddPeopleDialog.tsx:47 * kind: component * core: platform * spec: (none) * summary: Unified entry point for adding people to an organization. * score: 2 ### component AddTaskButton * file: src/platform/tasks/components/AddTaskButton.tsx:26 * kind: component * core: platform * spec: (none) * summary: Compact button that opens a task creation dialog with pre-filled source context. * score: 2 ### component AdvancedQueryProfile * file: src/platform/query-performance/components/AdvancedQueryProfile.tsx:119 * kind: component * core: platform * spec: (none) * summary: Advanced profile section for a selected slow query log entry. * score: 2 ### component AgentFormSheet * file: src/platform/cowork/ui/AgentFormSheet.tsx:49 * kind: component * core: platform * spec: (none) * summary: Create/edit form for a pf\_agents row, rendered in a Sheet. * score: 2 ### component AgentRegistryPage * file: src/platform/cowork/ui/AgentRegistryPage.tsx:94 * kind: component * core: platform * spec: (none) * summary: Agent registry admin page (PF-124 Phase 1A). * score: 2 ### component AgentRunStatusBadge * file: src/platform/agents/components/AgentRunStatusBadge.tsx:46 * kind: component * core: platform * spec: (none) * summary: Render a read-only semantic Badge for an agent Run's lifecycle state. * params: * state — The to display; selects both the semantic Badge variant and the human-readable label. Display-only — the authoritative state lives in the DB enum and is written solely by the governed RPC (PF-125 FR-2). * returns: A Badge element with the variant and label mapped from . * score: 2 ### component AIAssistantInlineSkeleton * file: src/platform/ai/widgets/skeletons/AIAssistantInlineSkeleton.tsx:20 * kind: component * core: platform * spec: (none) * summary: Utility for aiassistant inline skeleton. * score: 1 ### component AIAssistantPanel * file: src/platform/ai/components/AIAssistantPanel.tsx:112 * kind: component * core: platform * spec: (none) * summary: Collapsible AI assistant panel with conversation history, skill selection, and message composer.Renders a sheet that displays a skill-aware chat UI with persisted conversations, auto-scrolling,and optional suggested prompts. Supports controlled or uncontrolled open state and lets userscreate/select/delete conversations and switch AI skills.Accessibility:- The trigger is a focusable button with an icon and label.- Conversation actions and message controls are keyboard-accessible. * params: * moduleContext — Optional module-scoped context used for conversation scoping and feature flags. * systemPrompt — Deprecated legacy system prompt for backward compatibility; prefer skills instead. * defaultSkillCode — Initial AI skill code to load into the skill-aware chat. * title — Panel title shown in the header. * triggerVariant — Visual variant for the trigger button (e.g., "outline", "ghost"). * triggerClassName — Additional CSS classes applied to the trigger button. * placeholder — Placeholder text for the message input. * suggestedPrompts — Optional list of prompt strings shown in the empty state for quick insertion. * open — Controlled open state for the sheet; when provided the component operates in controlled mode. * onOpenChange — Handler called when the open state should change (controlled mode). * hideSkillSelector — When true, hides the skill selector in the header. * returns: The rendered AI assistant panel React element. * example: | AIAssistantPanel moduleContext= module: 'editor', feature: 'code-assist' defaultSkillCode="code-helper" suggestedPrompts=\['Explain this code', 'Refactor to be more readable']/ * score: 4 ### component AICategorizer * file: src/platform/ai/widgets/AICategorizer.tsx:24 * kind: component * core: platform * spec: (none) * summary: Utility for aicategorizer. * score: 1 ### component AICategorizerSkeleton * file: src/platform/ai/widgets/skeletons/AICategorizerSkeleton.tsx:19 * kind: component * core: platform * spec: (none) * summary: Utility for aicategorizer skeleton. * score: 1 ### component AIDocumentAnalyzer * file: src/platform/ai/widgets/AIDocumentAnalyzer.tsx:42 * kind: component * core: platform * spec: (none) * summary: Utility for aidocument analyzer. * score: 1 ### component AIDocumentAnalyzerSkeleton * file: src/platform/ai/widgets/skeletons/AIDocumentAnalyzerSkeleton.tsx:18 * kind: component * core: platform * spec: (none) * summary: Utility for aidocument analyzer skeleton. * score: 1 ### component AIFeedbackButtons * file: src/platform/ai/components/AIFeedbackButtons.tsx:26 * kind: component * core: platform * spec: (none) * summary: Utility for aifeedback buttons. * score: 1 ### component AIGeneratedStepPreview * file: src/platform/wizards/components/ai/AIGeneratedStepPreview\.tsx:45 * kind: component * core: platform * spec: (none) * summary: Utility for aigenerated step preview. * score: 1 ### component AIGeneratedWizardPreview * file: src/platform/wizards/components/ai/AIGeneratedWizardPreview\.tsx:25 * kind: component * core: platform * spec: (none) * summary: Utility for aigenerated wizard preview. * score: 1 ### component AILoadingState * file: src/platform/ai/components/AILoadingState.tsx:16 * kind: component * core: platform * spec: (none) * summary: Utility for ailoading state. * score: 1 ### component AIMappingSuggestionCell * file: src/platform/ai/components/AIMappingSuggestionCell.tsx:40 * kind: component * core: platform * spec: (none) * summary: Render an AI mapping suggestion with confidence + rationale and an Accept button.Renders nothing when there is no suggested value (model declined). * score: 2 ### component AIMessageBubble * file: src/platform/ai/components/AIMessageBubble.tsx:22 * kind: component * core: platform * spec: (none) * summary: Utility for aimessage bubble. * score: 1 ### component AiOnboardingLaunchCard * file: src/platform/ai/components/onboarding/AiOnboardingLaunchCard.tsx:28 * kind: component * core: platform * spec: (none) * summary: Renders the AI onboarding launch card, or null when the admin lacks the permission orthe feature flag is off. * score: 2 ### component AiOnboardingStepPlaceholder * file: src/platform/ai/components/onboarding/AiOnboardingStepPlaceholder.tsx:21 * kind: component * core: platform * spec: (none) * summary: Informational placeholder shown when an AI-onboarding step is rendered by the generictemplate renderer (rather than the dedicated page). * score: 2 ### component AiOnboardingWizardPage * file: src/platform/ai/pages/AiOnboardingWizardPage.tsx:74 * kind: component * core: platform * spec: (none) * summary: The org AI onboarding wizard page. Gated on permission + feature flag; renders the7-step WizardShell. * score: 2 ### component AIQuickAction * file: src/platform/ai/widgets/AIQuickAction.tsx:52 * kind: component * core: platform * spec: (none) * summary: A single-click AI action button that sends a prompt to the serverless AI assistant and delivers the result callback.Sends a non-streaming POST to the AI endpoint using the current Supabase session access token, manages request timeout/abort, parses both JSON and SSE-style responses, and exposes simple loading/error/success UI states. - prompt: The prompt to send to the assistant. Can be a string or a function that returns a string. - label: Visible button label. - onResult: Callback invoked with the assistant's aggregated text response when the request succeeds. - onError: Optional callback invoked with errors encountered during the request. - variant: Visual variant passed to the underlying Button (defaults to 'default'). - size: Visual size passed to the underlying Button (defaults to 'default'). - icon: Optional icon element displayed alongside the label when not loading. - disabled: If true, disables the button (defaults to false). - moduleContext: Optional contextual information included in the system prompt sent to the assistant. - loadingText: Text displayed while the request is in progress (defaults to 'Processing...'). - className: Optional className passed to the Button for additional styling. - modelOverride: Optional model identifier to override the default model used by the AI endpoint. * returns: The rendered Button element for triggering the AI quick action. * example: | AIQuickAction prompt="Summarize the following text..." label="Summarize" onResult=(text) = console.log(text)/Accessibility:- The button sets aria-busy while a request is in progress.- Loading state replaces the label with a spinner and loading text; provide a clear for screen reader users. * score: 5 ### component AIQuickActionSkeleton * file: src/platform/ai/widgets/skeletons/AIQuickActionSkeleton.tsx:20 * kind: component * core: platform * spec: (none) * summary: Utility for aiquick action skeleton. * score: 1 ### component AISkillCard * file: src/platform/ai/components/AISkillCard.tsx:99 * kind: component * core: platform * spec: (none) * summary: Renders a compact AI Skill card showing name, module, description, category, model, RAG and enabled state, and an action to configure or edit the skill.Displays a "Customized" indicator when the skill is overridden, a "Disabled" badge when the skill is disabled, and conditionally shows the module label and RAG badge. The action button text is "Edit" for custom skills and "Configure" otherwise. * params: * props — Component props - skill: The AISkill data to render (name, description, category, effective\_model, module, is\_enabled, is\_overridden, use\_rag, etc.) - onConfigure: Callback invoked when the Configure/Edit button is clicked - isCustom: When true, adjusts iconography and action label for custom skills * example: | AISkillCard skill=skill onConfigure=() = openSkillEditor(skill.id) isCustom=true/Accessibility considerations:- The component presents interactive action via a Button element for keyboard and screen-reader access.- Visual badges convey status; ensure sufficient color contrast in themes for users with low vision. * score: 4 ### component AISkillsListPage * file: src/platform/ai/pages/AISkillsListPage.tsx:75 * kind: component * core: platform * spec: (none) * summary: Renders the AI Skills settings page for browsing, searching, filtering, configuring,creating, editing, importing, and exporting AI skills. * returns: The React element for the AI Skills management page. * score: 2 ### component AISuggestionCard * file: src/platform/ai/components/AISuggestionCard.tsx:23 * kind: component * core: platform * spec: (none) * summary: Utility for aisuggestion card. * score: 1 ### component AISummarizer * file: src/platform/ai/widgets/AISummarizer.tsx:29 * kind: component * core: platform * spec: (none) * summary: Utility for aisummarizer. * score: 1 ### component AISummarizerSkeleton * file: src/platform/ai/widgets/skeletons/AISummarizerSkeleton.tsx:19 * kind: component * core: platform * spec: (none) * summary: Utility for aisummarizer skeleton. * score: 1 ### component AITemplateSuggestionSheet * file: src/platform/templates/components/AITemplateSuggestionSheet.tsx:35 * kind: component * core: platform * spec: (none) * summary: Sheet component for AI-powered template generation from a natural language description. - children: Trigger element (button) to open the sheet. * score: 2 ### component AIToolChain * file: src/platform/ai/widgets/AIToolChain.tsx:24 * kind: component * core: platform * spec: (none) * summary: Utility for aitool chain. * score: 1 ### component AIToolChainSkeleton * file: src/platform/ai/widgets/skeletons/AIToolChainSkeleton.tsx:18 * kind: component * core: platform * spec: (none) * summary: Utility for aitool chain skeleton. * score: 1 ### component AIUnavailableBanner * file: src/platform/ai/components/AIUnavailableBanner.tsx:69 * kind: component * core: platform * spec: (none) * summary: Semantic banner shown when AI is unavailable or degraded.Adapts its icon, colour token, and CTA to the from . * score: 5 ### component AIWizardGenerator * file: src/platform/wizards/components/AIWizardGenerator.tsx:37 * kind: component * core: platform * spec: (none) * summary: Utility for aiwizard generator. * score: 1 ### component AlertConfigForm * file: src/platform/health/components/AlertConfigForm.tsx:66 * kind: component * core: platform * spec: (none) * summary: Utility for alert config form. * score: 1 ### component AlertConfigList * file: src/platform/health/components/AlertConfigList.tsx:59 * kind: component * core: platform * spec: (none) * summary: Utility for alert config list. * score: 1 ### component AlertConfigPage * file: src/platform/health/pages/AlertConfigPage.tsx:19 * kind: component * core: platform * spec: (none) * summary: Utility for alert config page. * score: 1 ### component AlertHistoryList * file: src/platform/health/components/AlertHistoryList.tsx:49 * kind: component * core: platform * spec: (none) * summary: Utility for alert history list. * score: 1 ### component AlertHistoryPage * file: src/platform/health/pages/AlertHistoryPage.tsx:19 * kind: component * core: platform * spec: (none) * summary: Utility for alert history page. * score: 1 ### component AnalyticsStatCards * file: src/platform/wizards/components/analytics/AnalyticsStatCards.tsx:20 * kind: component * core: platform * spec: (none) * summary: Utility for analytics stat cards. * score: 1 ### component AnomalyAlertsSettingsSection * file: src/platform/query-performance/components/AnomalyAlertsSettingsSection.tsx:24 * kind: component * core: platform * spec: (none) * summary: Anomaly detection configuration section for query performance settings. * score: 2 ### component ApiAccessPage * file: src/platform/api-access/pages/ApiAccessPage.tsx:34 * kind: component * core: platform * spec: (none) * summary: Main API Access settings page with Service Accounts tab. * score: 2 ### component ApiActivityTab * file: src/platform/api-access/components/ApiActivityTab.tsx:45 * kind: component * core: platform * spec: (none) * summary: Renders paginated audit trail table for API access events. * score: 2 ### component ApiKeySecretDialog * file: src/platform/api-access/components/ApiKeySecretDialog.tsx:24 * kind: component * core: platform * spec: (none) * summary: Confirmation dialog showing the raw secret after key creation. * score: 2 ### component ApiKeyTable * file: src/platform/api-access/components/ApiKeyTable.tsx:37 * kind: component * core: platform * spec: (none) * summary: Table of API keys for a service account. * score: 2 ### component AppLauncher * file: src/platform/modules/AppLauncher.tsx:13 * kind: component * core: platform * spec: (none) * summary: Utility for app launcher. * score: 1 ### component AppLockGate * file: src/platform/auth/app-lock/AppLockGate.tsx:25 * kind: component * core: platform * spec: (none) * summary: Gate component that overlays the lock screen when the app is locked.Reads lock state from AppLockContext. * score: 2 ### component AppLockProvider * file: src/platform/auth/app-lock/AppLockContext.tsx:21 * kind: component * core: platform * spec: (none) * summary: Provides shared app-lock state to descendants.Must be placed in above both and route outlet. * score: 2 ### component AppLockSettingsSection * file: src/platform/auth/app-lock/AppLockSettingsSection.tsx:49 * kind: component * core: platform * spec: (none) * summary: App lock settings card for the Security Settings page. * score: 2 ### component ApprovalChainTemplateCard * file: src/platform/templates/components/ApprovalChainTemplateCard.tsx:101 * kind: component * core: platform * spec: (none) * summary: Renders a card summarizing an approval chain template, including category, status badges,description, step count and a compact step-flow preview, with optional management actions.The card highlights default templates, indicates system templates, and conditionally showsEdit / Clone / Set as Default / Delete actions based on template properties and provided callbacks. * params: * props — Component props - template: The approval chain template to display (name, description, category, steps, is\_system, is\_default, usage\_count, id) - onEdit: Callback invoked with the template id when the Edit action is selected - onDelete: Callback invoked with the template id when the Delete action is selected - onSetDefault: Callback invoked with the template id when Set as Default is selected - onClone: Callback invoked with the template id when Clone is selected - canManage: If true, shows the actions dropdown; defaults to Accessibility:- Action trigger button includes an accessible label ("Template actions").- Visual status is expressed with badges and text; ensure color contrast for category badges. * returns: The rendered card element for the provided approval chain template * example: | ApprovalChainTemplateCard template=template onEdit=(id) = openEditModal(id) onDelete=(id) = confirmDelete(id) onSetDefault=(id) = setAsDefault(id) onClone=(id) = cloneTemplate(id) canManage=true/ * score: 4 ### component ApprovalChainTemplateEditor * file: src/platform/templates/pages/ApprovalChainTemplateEditor.tsx:90 * kind: component * core: platform * spec: (none) * summary: Renders the Approval Chain Template Editor UI for creating, editing, or cloning an approval chain template.The component presents a validated form to manage basic template metadata (name, description, category)and a multi-step approval workflow. It supports three modes determined by route parameters:create (new), edit (existing), and clone (duplicate an existing template). On successful submit thecomponent navigates back to the approvals templates list and shows success feedback; on failure it shows an error. * params: * props — Component props (none) * example: | // Routed usage (no props required)Route path="/settings/templates/:id" element=ApprovalChainTemplateEditor / /Accessibility considerations:- Form fields include visible labels and messages for assistive technologies.- The header back button includes an for screen reader users. * score: 4 ### component ApprovalChainTemplateListPage * file: src/platform/templates/pages/ApprovalChainTemplateListPage.tsx:53 * kind: component * core: platform * spec: (none) * summary: Lists approval chain templates and exposes actions to view, create, edit, clone, delete, and set defaults.Renders separate sections for organization and system templates, provides category filtering via tabs, and shows loading, empty, and error states. Management actions are gated by permissions; delete uses a focus-trapping confirmation dialog. * params: * props — Component props (none) * example: | // Route-mounted usageRoute path="/settings/templates/approvals" element=ApprovalChainTemplateListPage / /Accessibility:- Tabs expose the current category and are keyboard navigable.- Action buttons include visible labels and meet touch target size recommendations.- The delete confirmation uses a focus-trapping modal dialog. * score: 4 ### component ApprovalInbox * file: src/platform/approvals/components/ApprovalInbox.tsx:41 * kind: component * core: platform * spec: (none) * summary: Pending approvals inbox (shared across FA, FW, and other surfaces). * score: 2 ### component ApprovalInboxCard * file: src/platform/approvals/components/ApprovalInboxCard.tsx:30 * kind: component * core: platform * spec: (none) * summary: Single pending approval row for the inbox list. * score: 2 ### component ApprovalInboxEmptyState * file: src/platform/approvals/components/ApprovalInboxEmptyState.tsx:23 * kind: component * core: platform * spec: (none) * summary: Empty state for the approval inbox list. * score: 2 ### component ApprovalStepEditor * file: src/platform/templates/components/ApprovalStepEditor.tsx:343 * kind: component * core: platform * spec: (none) * summary: Renders an editable, drag-and-drop list for configuring an ordered approval step chain.Displays each step with controls for name, approver type and type-specific configuration,timeout/reminder and parallel mode; supports reordering via drag-and-drop, adding new steps,updating individual steps, and removing steps. Calls with the updated steps arraywhenever the list is mutated (add, update, remove, or reorder). * params: * props — Component props - value: Current ordered array of approval steps (1-based is preserved). - onChange: Called with the new array of steps after any change. - disabled: When true, disables interactive controls and prevents adding/removing/reordering. - className: Optional additional CSS class names applied to the root container. * returns: The Approval Step Editor React element. * example: | ApprovalStepEditor value=steps onChange=(newSteps) = setSteps(newSteps)/Accessibility:- Drag handle and form controls are focusable and keyboard-draggable via provided keyboard sensors.- When rendered, ensure surrounding layout provides sufficient contrast and spacing for form controls. * score: 4 ### component ApprovalTimeline * file: src/platform/documents/components/ApprovalTimeline.tsx:59 * kind: component * core: platform * spec: (none) * summary: Utility for approval timeline. * score: 1 ### component ApprovalWorkflowSetup * file: src/platform/documents/components/ApprovalWorkflowSetup.tsx:140 * kind: component * core: platform * spec: (none) * summary: Utility for approval workflow setup. * score: 1 ### component ApproverSelector * file: src/platform/documents/components/ApproverSelector.tsx:34 * kind: component * core: platform * spec: (none) * summary: Utility for approver selector. * score: 1 ### component AppSidebar * file: src/platform/navigation/AppSidebar.tsx:30 * kind: component * core: platform * spec: (none) * summary: Collapsible contextual panel — the right pane of the dual-pane sidebar layout(Phase 2, Task 5). The persistent CoreRail (rendered as a fixed sibling inResponsiveNav) handles module switching and user identity; this component ispurely the collapsible wrapping .⌘B (SidebarProvider toggle) hides/shows this panel while the CoreRail staysvisible. Props are accepted for call-site compatibility but are not consumedinternally — identity and sign-out live in CoreRail now\.Accessibility:- Main navigation region uses role="navigation" aria-label="Main sidebar navigation".- The primary toggle is the SidebarTrigger in DesktopHeader (z-50). The SidebarRail is intentionally omitted to avoid click interception when the panel is collapsed offcanvas behind the CoreRail (z-30). * score: 2 ### component AppVersionInfo * file: src/platform/pwa/components/AppVersionInfo.tsx:13 * kind: component * core: platform * spec: (none) * summary: Utility for app version info. * score: 1 ### component ARAgingSummaryWidget * file: src/platform/dashboard/widgets/ARAgingSummaryWidget.tsx:49 * kind: component * core: platform * spec: (none) * summary: Utility for araging summary widget. * score: 1 ### component AreaChartView * file: src/platform/reports/components/charts/AreaChartView\.tsx:30 * kind: component * core: platform * spec: (none) * summary: Utility for area chart view. * score: 1 ### component AttributionBadge * file: src/platform/wizards/components/marketplace/AttributionBadge.tsx:22 * kind: component * core: platform * spec: (none) * summary: Utility for attribution badge. * score: 1 ### component AuditAnalyticsDashboard * file: src/platform/audit/AuditAnalyticsDashboard.tsx:32 * kind: component * core: platform * spec: (none) * summary: Audit Analytics Dashboard page component. * score: 2 ### component AuditLogDetailDialog * file: src/platform/audit/AuditLogDetailDialog.tsx:77 * kind: component * core: platform * spec: (none) * summary: Dialog showing audit log detail with before/after diff. * score: 2 ### component AuthenticatedShellProviders * file: src/platform/navigation/AuthenticatedShellProviders.tsx:12 * kind: component * core: platform * spec: (none) * summary: Wires module registry preload + route prefetch to org-enabled modules. * score: 2 ### component AvatarUpload * file: src/platform/users/AvatarUpload.tsx:20 * kind: component * core: platform * spec: (none) * summary: Utility for avatar upload. * score: 1 ### component BaseTable * file: src/platform/table-v2/components/BaseTable.tsx:106 * kind: component * core: platform * spec: (none) * summary: BaseTable component that renders a TanStack Table using shadcn/ui components. T - Row data type * score: 5 ### component BedCensusWidget * file: src/platform/dashboard/widgets/BedCensusWidget.tsx:18 * kind: component * core: platform * spec: (none) * summary: Render a Bed Census dashboard widget showing occupancy and bed counts.Uses the same residence/bed scoping as the RH Bed Board (not IndexedDB widget cache). * score: 2 ### component BottomTabBar * file: src/platform/navigation/components/BottomTabBar.tsx:72 * kind: component * core: platform * spec: (none) * summary: Reusable mobile bottom tab bar for module-scoped navigation.Visual contract: - 56 px fixed height + safe-area-bottom inset - 44 × 44 px minimum touch target per tab - Active tab: accent text + 2 px top border accent + - Inactive tab: muted text + hover:foreground transition - Hidden on (≥ 768 px)Permission filter: - Tabs without a always show. - Tabs with a show only if returns true. - Returns null if no tabs are visible. * score: 2 ### component BranchConditionRow * file: src/platform/wizards/components/branch/BranchConditionRow\.tsx:37 * kind: component * core: platform * spec: (none) * summary: Utility for branch condition row. * score: 1 ### component BranchEditor * file: src/platform/wizards/components/BranchEditor.tsx:39 * kind: component * core: platform * spec: (none) * summary: Utility for branch editor. * score: 1 ### component BranchStep * file: src/platform/wizards/components/steps/BranchStep.tsx:26 * kind: component * core: platform * spec: (none) * summary: Utility for branch step. * score: 1 ### component BrandingSettingsPage * file: src/platform/theming/pages/BrandingSettingsPage.tsx:52 * kind: component * core: platform * spec: (none) * summary: Main branding settings page — wraps content in PermissionGate. * score: 2 ### component BreadcrumbProvider * file: src/platform/navigation/BreadcrumbContext.tsx:17 * kind: component * core: platform * spec: (none) * summary: Utility for breadcrumb provider. * score: 1 ### component Breadcrumbs * file: src/platform/navigation/Breadcrumbs.tsx:43 * kind: component * core: platform * spec: (none) * summary: Renders a desktop breadcrumb trail derived from the current route and module/sub-module context.Builds breadcrumb segments from dynamic breadcrumb context, explicit route labels, and module metadata; hides itself when module-level navigation is handled elsewhere. Shows a home icon when not inside a module, or a module icon prefix when inside a module. The last segment is rendered as a page title and earlier segments are links.Accessibility: icons used for decoration include aria-hidden; links are focusable and label text is visible to assistive technologies. Truncated labels preserve their full accessible names. * example: | Breadcrumbs / * score: 5 ### component BulkActionToolbar * file: src/platform/notifications/components/BulkActionToolbar.tsx:19 * kind: component * core: platform * spec: (none) * summary: Utility for bulk action toolbar. * score: 1 ### component BulkGenerationDialog * file: src/platform/templates/components/BulkGenerationDialog.tsx:96 * kind: component * core: platform * spec: (none) * summary: Dialog for bulk document generation from CSV data. Allows users to upload a CSV file, preview the data,select a letterhead, and generate multiple PDFs in batch. * score: 2 ### component BulkOperationForm * file: src/platform/bulk-operations/components/BulkOperationForm.tsx:48 * kind: component * core: platform * spec: (none) * summary: Utility for bulk operation form. * score: 1 ### component BulkOperationsList * file: src/platform/bulk-operations/components/BulkOperationsList.tsx:47 * kind: component * core: platform * spec: (none) * summary: Utility for bulk operations list. * score: 1 ### component BulkOperationsPage * file: src/platform/bulk-operations/components/BulkOperationsPage.tsx:21 * kind: component * core: platform * spec: (none) * summary: Utility for bulk operations page. * score: 1 ### component BulkPermissionActions * file: src/platform/permissions/components/BulkPermissionActions.tsx:33 * kind: component * core: platform * spec: (none) * summary: Utility for bulk permission actions. * score: 1 ### component BulkTaskActions * file: src/platform/tasks/components/BulkTaskActions.tsx:27 * kind: component * core: platform * spec: (none) * summary: Utility for bulk task actions. * score: 1 ### component BulkTaskConfirmDialog * file: src/platform/tasks/components/BulkTaskConfirmDialog.tsx:19 * kind: component * core: platform * spec: (none) * summary: Utility for bulk task confirm dialog. * score: 1 ### component BundleMarketplacePage * file: src/platform/ai/pages/BundleMarketplacePage.tsx:159 * kind: component * core: platform * spec: (none) * summary: Marketplace listing page — renders all discoverable bundles and providesInstall / Uninstall actions with an explicit governance-decision gate.Route: /settings/platform/marketplace (flag-gated pf.agents.marketplace\_enabled)Permission: pf.ai\_skills.manage (route-level RequirePermission) PF-62-EN-02 AC-2 * score: 2 ### component BusinessProcessCatalogPage * file: src/platform/automation/pages/BusinessProcessCatalogPage.tsx:30 * kind: component * core: platform * spec: (none) * summary: Main catalog page for business processes. * score: 2 ### component BusinessProcessDetailPage * file: src/platform/automation/pages/BusinessProcessDetailPage.tsx:30 * kind: component * core: platform * spec: (none) * summary: Detail page for a single business process. * score: 2 ### component BusinessProcessFilters * file: src/platform/automation/components/BusinessProcessFilters.tsx:21 * kind: component * core: platform * spec: (none) * summary: Filter controls for the business process catalog. * score: 2 ### component CacheStatusBadge * file: src/platform/reports/components/CacheStatusBadge.tsx:33 * kind: component * core: platform * spec: (none) * summary: Displays cache status for report results. * score: 2 ### component CalendarSyncConfigCard * file: src/platform/settings/components/CalendarSyncConfigCard.tsx:37 * kind: component * core: platform * spec: (none) * summary: Utility for calendar sync config card. * score: 1 ### component CallDispositionDialog * file: src/platform/telephony/components/CallDispositionDialog.tsx:51 * kind: component * core: platform * spec: (none) * summary: Utility for call disposition dialog. * score: 1 ### component CallDispositionQuickWizard * file: src/platform/telephony/components/CallDispositionQuickWizard.tsx:40 * kind: component * core: platform * spec: (none) * summary: Compact 3-step dialog wizard for rapid call disposition.Supports keyboard shortcuts (1-9) for disposition selection,optional follow-up scheduling, and quick note snippets. * score: 2 ### component CallLogWidget * file: src/platform/telephony/components/CallLogWidget.tsx:22 * kind: component * core: platform * spec: (none) * summary: Utility for call log widget. * score: 1 ### component CallRecordingPlayer * file: src/platform/telephony/components/CallRecordingPlayer.tsx:21 * kind: component * core: platform * spec: (none) * summary: Renders call recording status UI and playback controls.Handles various recording states: not\_recorded, processing, error, deleted, available.When available, displays an audio player with recording duration. * score: 2 ### component CampaignCreateForm * file: src/platform/headshot/components/CampaignCreateForm.tsx:32 * kind: component * core: platform * spec: (none) * summary: Dialog form for creating a headshot campaign. * score: 2 ### component CampaignDashboard * file: src/platform/headshot/components/CampaignDashboard.tsx:32 * kind: component * core: platform * spec: (none) * summary: Campaign list and dashboard. * score: 1 ### component CategoriesPage * file: src/platform/data-manager/pages/CategoriesPage.tsx:12 * kind: component * core: platform * spec: (none) * summary: Utility for categories page. * score: 1 ### component CategoryDialog * file: src/platform/data-manager/components/CategoryDialog.tsx:64 * kind: component * core: platform * spec: (none) * summary: Utility for category dialog. * score: 1 ### component CategoryFilter * file: src/platform/data-manager/components/CategoryFilter.tsx:19 * kind: component * core: platform * spec: (none) * summary: Utility for category filter. * score: 1 ### component CategoryManager * file: src/platform/data-manager/components/CategoryManager.tsx:20 * kind: component * core: platform * spec: (none) * summary: Utility for category manager. * score: 1 ### component ChangeImpactPreview * file: src/platform/org-data-sync/components/ChangeImpactPreview\.tsx:27 * kind: component * core: platform * spec: (none) * summary: Utility for change impact preview. * score: 1 ### component ChannelBrowserDialog * file: src/platform/messaging/components/ChannelBrowserDialog.tsx:26 * kind: component * core: platform * spec: (none) * summary: Utility for channel browser dialog. * score: 1 ### component ChartConfigPanel * file: src/platform/reports/components/charts/ChartConfigPanel.tsx:31 * kind: component * core: platform * spec: (none) * summary: Utility for chart config panel. * score: 1 ### component ChatAvatar * file: src/platform/messaging/components/ChatAvatar.tsx:28 * kind: component * core: platform * spec: (none) * summary: Utility for chat avatar. * score: 1 ### component ChatbotEmbedCodeTab * file: src/platform/chatbot/components/ChatbotEmbedCodeTab.tsx:17 * kind: component * core: platform * spec: (none) * summary: Embed code snippet generator for external website integration. * score: 2 ### component ChatbotGeneralTab * file: src/platform/chatbot/components/ChatbotGeneralTab.tsx:33 * kind: component * core: platform * spec: (none) * summary: General chatbot settings: title, welcome message, color, position, enabled state. * score: 2 ### component ChatbotKnowledgeTab * file: src/platform/chatbot/components/ChatbotKnowledgeTab.tsx:27 * kind: component * core: platform * spec: (none) * summary: Knowledge base settings: AI prompt and suggested visitor questions. * score: 2 ### component ChatbotLeadCaptureTab * file: src/platform/chatbot/components/ChatbotLeadCaptureTab.tsx:30 * kind: component * core: platform * spec: (none) * summary: Lead capture and domain restriction settings. * score: 2 ### component ChatbotSettingsPage * file: src/platform/chatbot/pages/ChatbotSettingsPage.tsx:20 * kind: component * core: platform * spec: (none) * summary: Admin page for managing chatbot widget settings. * score: 2 ### component ChatbotWidgetPage * file: src/platform/chatbot/widget/ChatbotWidgetPage.tsx:14 * kind: component * core: platform * spec: (none) * summary: Lightweight widget page for iframe embedding. * score: 2 ### component ChatNotificationBadge * file: src/platform/messaging/components/ChatNotificationBadge.tsx:17 * kind: component * core: platform * spec: (none) * summary: Utility for chat notification badge. * score: 1 ### component ChatPanel * file: src/platform/messaging/components/ChatPanel.tsx:61 * kind: component * core: platform * spec: (none) * summary: Utility for chat panel. * score: 1 ### component ChatWindow * file: src/platform/chatbot/widget/components/ChatWindow\.tsx:33 * kind: component * core: platform * spec: (none) * summary: Full chat window with header, message thread, and composer. * score: 2 ### component CheckboxField * file: src/platform/forms/components/fields/CheckboxField.tsx:22 * kind: component * core: platform * spec: (none) * summary: Utility for checkbox field. * score: 1 ### component ClearCacheButton * file: src/platform/pwa/components/ClearCacheButton.tsx:12 * kind: component * core: platform * spec: (none) * summary: Utility for clear cache button. * score: 1 ### component ClGroupBackLink * file: src/platform/navigation/components/ClGroupBackLink.tsx:26 * kind: component * core: platform * spec: (none) * summary: Inline back-link that points at the owning CL nav group for the active route. * score: 2 ### component ClickToCallButton * file: src/platform/telephony/components/ClickToCallButton.tsx:72 * kind: component * core: platform * spec: (none) * summary: Click-to-call UI control that initiates calls via RingCentral.CE-14 Enhancement: When Embeddable is enabled and preferred, uses WebRTCfor in-browser calling. Otherwise falls back to RingOut (rings your phone first).Renders one of three variants — icon, button, or inline link — and managesdisabled and loading states based on phone validity, organization availability,and ongoing initiation. * params: * props — Component props - phoneNumber: Phone number to call; normalized to E.164 format - contactId: Optional contact identifier associated with the call - partnerId: Optional partner identifier associated with the call - variant: Visual variant: , , or . Defaults to - size: Size: , , or . Defaults to - className: Optional additional CSS class names - onSuccess: Optional callback with RingOut ID on success - onError: Optional callback with Error on failure - disabled: If true, the control is disabled * score: 4 ### component CloneFromMarketplaceDialog * file: src/platform/wizards/components/marketplace/CloneFromMarketplaceDialog.tsx:33 * kind: component * core: platform * spec: (none) * summary: Utility for clone from marketplace dialog. * score: 1 ### component CloneTemplateDialog * file: src/platform/wizards/components/CloneTemplateDialog.tsx:25 * kind: component * core: platform * spec: (none) * summary: Utility for clone template dialog. * score: 1 ### component CodeMappingManager * file: src/platform/terminology/components/CodeMappingManager.tsx:45 * kind: component * core: platform * spec: (none) * summary: CodeMappingManager — displays cross-code-set mappingsand allows CRUD of org-scoped custom mappings. * score: 2 ### component CodeSetVersionManager * file: src/platform/terminology/components/CodeSetVersionManager.tsx:45 * kind: component * core: platform * spec: (none) * summary: CodeSetVersionManager — lists and manages code set versions. * score: 2 ### component CollapsibleSection * file: src/platform/navigation/components/CollapsibleSection.tsx:35 * kind: component * core: platform * spec: (none) * summary: Utility for collapsible section. * score: 1 ### component ColorsTab * file: src/platform/theming/components/ColorsTab.tsx:206 * kind: component * core: platform * spec: (none) * summary: Color editor tab with grouped sections, inline preview, and WCAG AA validation. * score: 2 ### component ColumnManager * file: src/platform/table-v2/components/ColumnManager.tsx:137 * kind: component * core: platform * spec: (none) * summary: Popover-based column visibility and reorder manager. * score: 5 ### component ColumnResizeHandle * file: src/platform/table-v2/features/ColumnResizing.tsx:44 * kind: component * core: platform * spec: (none) * summary: Draggable handle for resizing columns. * score: 5 ### component ColumnSelector * file: src/platform/reports/components/ColumnSelector.tsx:22 * kind: component * core: platform * spec: (none) * summary: Utility for column selector. * score: 1 ### component ColumnVisibilityPanel * file: src/platform/table-v2/features/ColumnVisibility.tsx:119 * kind: component * core: platform * spec: (none) * summary: Panel for managing column visibility with checkboxes. * score: 2 ### component ColumnVisibilityToggle * file: src/platform/table-v2/features/ColumnVisibility.tsx:62 * kind: component * core: platform * spec: (none) * summary: Dropdown menu for toggling column visibility. * score: 5 ### component ComparisonCard * file: src/platform/health/components/ComparisonCard.tsx:26 * kind: component * core: platform * spec: (none) * summary: Utility for comparison card. * score: 1 ### component ComplianceCheckDetailSheet * file: src/platform/compliance/components/ComplianceCheckDetailSheet.tsx:45 * kind: component * core: platform * spec: (none) * summary: Drill-down sheet for a single compliance check type (warnings, failures, and latest pass). * score: 2 ### component ComplianceReportExport * file: src/platform/audit/ComplianceReportExport.tsx:26 * kind: component * core: platform * spec: (none) * summary: Compliance export form for audit logs. * score: 2 ### component ComplianceReportExportDialog * file: src/platform/health/components/ComplianceReportExportDialog.tsx:25 * kind: component * core: platform * spec: (none) * summary: Utility for compliance report export dialog. * score: 1 ### component ComplianceScoreWidget * file: src/platform/dashboard/widgets/ComplianceScoreWidget.tsx:54 * kind: component * core: platform * spec: (none) * summary: Utility for compliance score widget. * score: 1 ### component ComposedChartView * file: src/platform/reports/components/charts/ComposedChartView\.tsx:38 * kind: component * core: platform * spec: (none) * summary: Utility for composed chart view. * score: 1 ### component ConditionalRequiredIndicator * file: src/platform/conditional-logic/components/ConditionalValidationError.tsx:74 * kind: component * core: platform * spec: (none) * summary: Utility for conditional required indicator. * score: 1 ### component ConditionalRuleBuilder * file: src/platform/field-config/components/ConditionalRuleBuilder.tsx:33 * kind: component * core: platform * spec: (none) * summary: Utility for conditional rule builder. * score: 1 ### component ConditionalValidationError * file: src/platform/conditional-logic/components/ConditionalValidationError.tsx:32 * kind: component * core: platform * spec: (none) * summary: Display validation error with optional conditional contextShows a tooltip explaining why the field became required * score: 5 ### component ConditionBuilder * file: src/platform/conditional-logic/components/builder/ConditionBuilder.tsx:59 * kind: component * core: platform * spec: (none) * summary: Utility for condition builder. * score: 1 ### component ConditionBuilderDialog * file: src/platform/conditional-logic/components/builder/ConditionBuilderDialog.tsx:23 * kind: component * core: platform * spec: (none) * summary: Utility for condition builder dialog. * score: 1 ### component ConditionBuilderSkeleton * file: src/platform/conditional-logic/components/builder/ConditionBuilderSkeleton.tsx:8 * kind: component * core: platform * spec: (none) * summary: Utility for condition builder skeleton. * score: 1 ### component ConditionEvaluationTree * file: src/platform/conditional-logic/components/builder/ConditionEvaluationTree.tsx:84 * kind: component * core: platform * spec: (none) * summary: Utility for condition evaluation tree. * score: 1 ### component ConditionGroupEditor * file: src/platform/conditional-logic/components/builder/ConditionGroupEditor.tsx:31 * kind: component * core: platform * spec: (none) * summary: Utility for condition group editor. * score: 1 ### component ConditionPerformanceDashboard * file: src/platform/conditional-logic/pages/ConditionPerformanceDashboard.tsx:230 * kind: component * core: platform * spec: (none) * summary: Condition Performance Dashboard page, gated by permission. * score: 2 ### component ConditionPreview * file: src/platform/conditional-logic/components/builder/ConditionPreview\.tsx:29 * kind: component * core: platform * spec: (none) * summary: Utility for condition preview. * score: 1 ### component ConditionRow * file: src/platform/conditional-logic/components/builder/ConditionRow\.tsx:25 * kind: component * core: platform * spec: (none) * summary: Utility for condition row. * score: 1 ### component ConfigurableDetailView * file: src/platform/field-config/components/ConfigurableDetailView\.tsx:19 * kind: component * core: platform * spec: (none) * summary: Utility for configurable detail view. * score: 1 ### component ConfigurableForm * file: src/platform/field-config/components/ConfigurableForm.tsx:87 * kind: component * core: platform * spec: (none) * summary: Utility for configurable form. * score: 1 ### component ConnectionFormDialog * file: src/platform/settings/pages/data-migration/components/ConnectionFormDialog.tsx:33 * kind: component * core: platform * spec: (none) * summary: Utility for connection form dialog. * score: 1 ### component ConnectionsTab * file: src/platform/settings/pages/data-migration/components/ConnectionsTab.tsx:35 * kind: component * core: platform * spec: (none) * summary: Utility for connections tab. * score: 1 ### component ConnectionTestButton * file: src/platform/integrations/components/ConnectionTestButton.tsx:22 * kind: component * core: platform * spec: (none) * summary: Utility for connection test button. * score: 1 ### component ConnectorApprovalPanel * file: src/platform/analytics/components/ConnectorApprovalPanel.tsx:64 * kind: component * core: platform * spec: (none) * summary: Renders nothing when the caller lacks . * score: 2 ### component ConsentStatusDetailSheet * file: src/platform/compliance/components/ConsentStatusDetailSheet.tsx:18 * kind: component * core: platform * spec: (none) * summary: Drill-down for Part 2 consent status on the compliance dashboard. * score: 2 ### component ContextualPanel * file: src/platform/navigation/components/ContextualPanel.tsx:23 * kind: component * core: platform * spec: (none) * summary: ContextualPanel — the right pane of the dual-pane sidebar layout.Routing logic (priority order): 1. Active workspace ( set, user not inside a core) → render with composed cross-core groups and an "Exit workspace" affordance. 2. Inside a core module () → render for that module (NO back button; the CoreRail provides the module-switching affordance). 3. Platform-home fallback → render (Dashboard / Inbox / Reports / Documents + Settings + workspace lenses switcher).Badge data is computed here so it doesn't need to be threaded throughmultiple ancestors — same approach as AppSidebar today. * score: 2 ### component ContextualSidebarProvider * file: src/platform/navigation/contextual-sidebar.tsx:22 * kind: component * core: platform * spec: (none) * summary: Utility for contextual sidebar provider. * score: 1 ### component ContrastFallbackIndicator * file: src/platform/compliance/components/ContrastFallbackIndicator.tsx:19 * kind: component * core: platform * spec: (none) * summary: Renders a small info icon with tooltip when the compliance theme had tofall back to safe colors for WCAG AA contrast. * score: 2 ### component ConversationCreateDialog * file: src/platform/messaging/components/ConversationCreateDialog.tsx:35 * kind: component * core: platform * spec: (none) * summary: Create DM, group, or channel via people picker (no email typing needed). * score: 2 ### component ConversationList * file: src/platform/messaging/components/ConversationList.tsx:39 * kind: component * core: platform * spec: (none) * summary: Grouped conversation sidebar with Channels, DMs, Groups sections. * score: 2 ### component ConversationPane * file: src/platform/cowork/components/ConversationPane.tsx:37 * kind: component * core: platform * spec: (none) * summary: ConversationPane — real-time message history + send composer for the center column.Consumes PF-67 useMessages (paginated + realtime) and useSendMessage. * score: 2 ### component CoreRail * file: src/platform/navigation/primitives/CoreRail.tsx:285 * kind: component * core: platform * spec: (none) * summary: Persistent left core rail. Always visible; the secondary panel beside itmay collapse but the rail itself never does. * score: 2 ### component CoworkPage * file: src/platform/cowork/pages/CoworkPage.tsx:94 * kind: component * core: platform * spec: (none) * summary: CoworkPage — the /cowork shell scaffold.Self-gated by the feature flag. When the flagis OFF the page renders a polite "unavailable" placeholder so the routeremains navigable without exposing an empty frame. When ON it renders theresponsive 3-column layout (thread-list | conversation | participants).The outer RequirePermission('pf.cowork.participate') guard lives inplatform.tsx — this component only handles the flag gate.selectedConversationId is lifted here so ThreadListPane selection drivesboth ConversationPane (center) and ParticipantsPane (right).CoworkPage also holds the conversations list so it can resolve the selectedconversation's agent\_thread\_id (= pf\_threads.id) and pass it toParticipantsPane — which calls useResolveThread keyed on that id.The TanStack Query call here deduplicates with ThreadListPane's identical call. * score: 2 ### component CreateApiKeyDialog * file: src/platform/api-access/components/CreateApiKeyDialog.tsx:28 * kind: component * core: platform * spec: (none) * summary: Dialog to create a new API key with name + scope selection. * score: 2 ### component CreateCustomObjectDialog * file: src/platform/data-manager/components/CreateCustomObjectDialog.tsx:77 * kind: component * core: platform * spec: (none) * summary: Utility for create custom object dialog. * score: 1 ### component CreateDiagramWizard * file: src/platform/workflow/components/CreateDiagramWizard.tsx:58 * kind: component * core: platform * spec: (none) * summary: Guided 3-step wizard for creating swim lane diagrams. * score: 2 ### component CreateFromTemplateSheet * file: src/platform/page-layouts/components/CreateFromTemplateSheet.tsx:26 * kind: component * core: platform * spec: (none) * summary: Utility for create from template sheet. * score: 1 ### component CreateLayoutDialog * file: src/platform/page-layouts/components/data-manager/CreateLayoutDialog.tsx:48 * kind: component * core: platform * spec: (none) * summary: Utility for create layout dialog. * score: 1 ### component CreateRolePage * file: src/platform/roles/pages/CreateRolePage.tsx:22 * kind: component * core: platform * spec: (none) * summary: Utility for create role page. * score: 1 ### component CreateServiceAccountDialog * file: src/platform/api-access/components/CreateServiceAccountDialog.tsx:25 * kind: component * core: platform * spec: (none) * summary: Dialog to create a new service account. * score: 2 ### component CreateSkillDialog * file: src/platform/ai/components/CreateSkillDialog.tsx:109 * kind: component * core: platform * spec: (none) * summary: Modal dialog for creating a custom organization AI skill.Supports "Create from Template" (T20/T21) which pre-fills the form. * score: 2 ### component CreateSkillWizard * file: src/platform/ai/components/CreateSkillWizard.tsx:124 * kind: component * core: platform * spec: (none) * summary: Multi-step wizard dialog for authoring (or editing) a custom AI skill (PF-UX-13). * params: * props — open / onOpenChange / optional editSkill. * score: 2 ### component CreateUserDirectDialog * file: src/platform/users/CreateUserDirectDialog.tsx:32 * kind: component * core: platform * spec: (none) * summary: Utility for create user direct dialog. * score: 1 ### component CredentialBadge * file: src/platform/integrations/components/CredentialBadge.tsx:16 * kind: component * core: platform * spec: (none) * summary: Utility for credential badge. * score: 1 ### component CredentialBadge * file: src/platform/workforce/CredentialBadge.tsx:12 * kind: component * core: platform * spec: (none) * summary: Visual badge showing credential status * score: 2 ### component CredentialForm * file: src/platform/integrations/components/CredentialForm.tsx:66 * kind: component * core: platform * spec: (none) * summary: Utility for credential form. * score: 1 ### component CredentialList * file: src/platform/integrations/components/CredentialList.tsx:26 * kind: component * core: platform * spec: (none) * summary: Utility for credential list. * score: 1 ### component CrossFieldValidationBuilder * file: src/platform/conditional-logic/components/builder/CrossFieldValidationBuilder.tsx:218 * kind: component * core: platform * spec: (none) * summary: Visual builder for cross-field validations * score: 2 ### component CrossFieldValidationErrorDisplay * file: src/platform/conditional-logic/components/CrossFieldValidationErrors.tsx:23 * kind: component * core: platform * spec: (none) * summary: Display a single cross-field validation errorShows the error message with links to both related fields * score: 2 ### component CrossFieldValidationErrorList * file: src/platform/conditional-logic/components/CrossFieldValidationErrors.tsx:77 * kind: component * core: platform * spec: (none) * summary: Display a list of cross-field validation errors * score: 2 ### component CrossModuleBadge * file: src/platform/wizards/components/CrossModuleBadge.tsx:42 * kind: component * core: platform * spec: (none) * summary: Utility for cross module badge. * score: 1 ### component CSVExportButton * file: src/platform/data-manager/components/CSVExportButton.tsx:24 * kind: component * core: platform * spec: (none) * summary: Utility for csvexport button. * score: 1 ### component CSVImportWizard * file: src/platform/data-manager/components/CSVImportWizard.tsx:45 * kind: component * core: platform * spec: (none) * summary: Utility for csvimport wizard. * score: 1 ### component CustomFieldDefinitionForm * file: src/platform/custom-fields/components/CustomFieldDefinitionForm.tsx:81 * kind: component * core: platform * spec: (none) * summary: Utility for custom field definition form. * score: 1 ### component CustomFieldDefinitionsTable * file: src/platform/custom-fields/components/CustomFieldDefinitionsTable.tsx:27 * kind: component * core: platform * spec: (none) * summary: Utility for custom field definitions table. * score: 1 ### component CustomFieldDetailPage * file: src/platform/custom-fields/pages/CustomFieldDetailPage.tsx:15 * kind: component * core: platform * spec: (none) * summary: Utility for custom field detail page. * score: 1 ### component CustomFieldInput * file: src/platform/custom-fields/components/CustomFieldInput.tsx:20 * kind: component * core: platform * spec: (none) * summary: Utility for custom field input. * score: 1 ### component CustomFieldRenderer * file: src/platform/custom-fields/components/CustomFieldRenderer.tsx:17 * kind: component * core: platform * spec: (none) * summary: Utility for custom field renderer. * score: 1 ### component CustomFieldsPage * file: src/platform/custom-fields/pages/CustomFieldsPage.tsx:18 * kind: component * core: platform * spec: (none) * summary: Utility for custom fields page. * score: 1 ### component CustomFieldsSection * file: src/platform/custom-fields/components/CustomFieldsSection.tsx:21 * kind: component * core: platform * spec: (none) * summary: Utility for custom fields section. * score: 1 ### component CustomGestureProvider * file: src/platform/gestures/registry/CustomGestureContext.tsx:14 * kind: component * core: platform * spec: (none) * summary: Utility for custom gesture provider. * score: 1 ### component CustomizeNavDialog * file: src/platform/navigation/CustomizeNavDialog.tsx:121 * kind: component * core: platform * spec: (none) * summary: Utility for customize nav dialog. * score: 1 ### component CustomMetricDetailPage * file: src/platform/health/pages/CustomMetricDetailPage.tsx:34 * kind: component * core: platform * spec: (none) * summary: Utility for custom metric detail page. * score: 1 ### component CustomMetricForm * file: src/platform/health/components/CustomMetricForm.tsx:44 * kind: component * core: platform * spec: (none) * summary: Utility for custom metric form. * score: 1 ### component CustomMetricsPage * file: src/platform/health/pages/CustomMetricsPage.tsx:34 * kind: component * core: platform * spec: (none) * summary: Utility for custom metrics page. * score: 1 ### component CustomMetricWidget * file: src/platform/health/components/CustomMetricWidget.tsx:18 * kind: component * core: platform * spec: (none) * summary: Utility for custom metric widget. * score: 1 ### component CustomObjectDetailPage * file: src/platform/data-manager/pages/CustomObjectDetailPage.tsx:63 * kind: component * core: platform * spec: (none) * summary: Utility for custom object detail page. * score: 1 ### component CustomObjectFieldManager * file: src/platform/data-manager/components/CustomObjectFieldManager.tsx:142 * kind: component * core: platform * spec: (none) * summary: Utility for custom object field manager. * score: 1 ### component CustomObjectRecordDialog * file: src/platform/data-manager/components/CustomObjectRecordDialog.tsx:25 * kind: component * core: platform * spec: (none) * summary: Utility for custom object record dialog. * score: 1 ### component CustomObjectRecordsTable * file: src/platform/data-manager/components/CustomObjectRecordsTable.tsx:31 * kind: component * core: platform * spec: (none) * summary: Utility for custom object records table. * score: 1 ### component CustomStep * file: src/platform/wizards/components/steps/CustomStep.tsx:19 * kind: component * core: platform * spec: (none) * summary: Utility for custom step. * score: 1 ### component CustomWidgetBuilder * file: src/platform/dashboard/components/CustomWidgetBuilder.tsx:85 * kind: component * core: platform * spec: (none) * summary: Utility for custom widget builder. * score: 1 ### component CustomWidgetRenderer * file: src/platform/dashboard/components/CustomWidgetRenderer.tsx:58 * kind: component * core: platform * spec: (none) * summary: Utility for custom widget renderer. * score: 1 ### component DailyTrendChart * file: src/platform/wizards/components/analytics/DailyTrendChart.tsx:20 * kind: component * core: platform * spec: (none) * summary: Utility for daily trend chart. * score: 1 ### component DashboardContextSwitcher * file: src/platform/dashboard/components/DashboardContextSwitcher.tsx:51 * kind: component * core: platform * spec: (none) * summary: Utility for dashboard context switcher. * score: 1 ### component DashboardEmptyState * file: src/platform/dashboard/components/DashboardEmptyState.tsx:11 * kind: component * core: platform * spec: (none) * summary: Utility for dashboard empty state. * score: 1 ### component DashboardHeader * file: src/platform/dashboard/components/DashboardHeader.tsx:23 * kind: component * core: platform * spec: (none) * summary: Utility for dashboard header. * score: 1 ### component DashboardSettingsDialog * file: src/platform/dashboard/components/DashboardSettingsDialog.tsx:26 * kind: component * core: platform * spec: (none) * summary: Utility for dashboard settings dialog. * score: 1 ### component DashboardShareDialog * file: src/platform/dashboard/components/DashboardShareDialog.tsx:46 * kind: component * core: platform * spec: (none) * summary: Utility for dashboard share dialog. * score: 1 ### component DashboardTemplatesAdmin * file: src/platform/dashboard/pages/DashboardTemplatesAdmin.tsx:345 * kind: component * core: platform * spec: (none) * summary: Dashboard Templates Admin page with permission guardRequires pf.dashboard.admin permission to access * score: 2 ### component DashboardTemplateSelector * file: src/platform/dashboard/components/DashboardTemplateSelector.tsx:31 * kind: component * core: platform * spec: (none) * summary: Utility for dashboard template selector. * score: 1 ### component DatabaseHealthOverviewCard * file: src/platform/health/components/DatabaseHealthOverviewCard.tsx:50 * kind: component * core: platform * spec: (none) * summary: Utility for database health overview card. * score: 1 ### component DatabaseHealthPage * file: src/platform/health/pages/DatabaseHealthPage.tsx:24 * kind: component * core: platform * spec: (none) * summary: Utility for database health page. * score: 1 ### component DataImportPage * file: src/platform/settings/pages/DataImportPage.tsx:72 * kind: component * core: platform * spec: (none) * summary: Utility for data import page. * score: 1 ### component DataManagerPage * file: src/platform/data-manager/pages/DataManagerPage.tsx:30 * kind: component * core: platform * spec: (none) * summary: Utility for data manager page. * score: 1 ### component DataMigrationPage * file: src/platform/settings/pages/data-migration/DataMigrationPage.tsx:23 * kind: component * core: platform * spec: (none) * summary: Data migration page with guided stepper workflow. * score: 2 ### component DataRetentionPage * file: src/platform/data-retention/pages/DataRetentionPage.tsx:29 * kind: component * core: platform * spec: (none) * summary: Utility for data retention page. * score: 1 ### component DataTableDemoPage * file: src/platform/table-v2/pages/DataTableDemoPage.tsx:102 * kind: component * core: platform * spec: (none) * summary: Utility for data table demo page. * score: 1 ### component DateField * file: src/platform/forms/components/fields/DateField.tsx:24 * kind: component * core: platform * spec: (none) * summary: Utility for date field. * score: 1 ### component DateTimeField * file: src/platform/forms/components/fields/DateTimeField.tsx:22 * kind: component * core: platform * spec: (none) * summary: Utility for date time field. * score: 1 ### component DbHealthIssuesList * file: src/platform/health/components/DbHealthIssuesList.tsx:71 * kind: component * core: platform * spec: (none) * summary: Utility for db health issues list. * score: 1 ### component DecisionNode * file: src/platform/workflow/components/swim-lane-nodes/DecisionNode.tsx:17 * kind: component * core: platform * spec: (none) * summary: Decision node — diamond (rotated square) with condition label. * score: 2 ### component DefaultOrgSelector * file: src/platform/users/DefaultOrgSelector.tsx:24 * kind: component * core: platform * spec: (none) * summary: Utility for default org selector. * score: 1 ### component DeletedRecordActions * file: src/platform/admin/components/DeletedRecordActions.tsx:21 * kind: component * core: platform * spec: (none) * summary: Utility for deleted record actions. * score: 1 ### component DeletedRecordsPage * file: src/platform/admin/pages/DeletedRecordsPage.tsx:39 * kind: component * core: platform * spec: (none) * summary: Utility for deleted records page. * score: 1 ### component DeletedRecordsTable * file: src/platform/admin/components/DeletedRecordsTable.tsx:44 * kind: component * core: platform * spec: (none) * summary: Utility for deleted records table. * score: 1 ### component DeleteRetentionPolicyDialog * file: src/platform/data-retention/components/DeleteRetentionPolicyDialog.tsx:15 * kind: component * core: platform * spec: (none) * summary: Utility for delete retention policy dialog. * score: 1 ### component DeleteRoleDialog * file: src/platform/roles/components/DeleteRoleDialog.tsx:25 * kind: component * core: platform * spec: (none) * summary: Utility for delete role dialog. * score: 1 ### component DeliveryLogViewer * file: src/platform/notifications/components/testing/DeliveryLogViewer.tsx:79 * kind: component * core: platform * spec: (none) * summary: Utility for delivery log viewer. * score: 1 ### component DeliveryStatus * file: src/platform/messaging/components/DeliveryStatus.tsx:21 * kind: component * core: platform * spec: (none) * summary: Delivery status indicator for sent messages. * score: 2 ### component DeploymentCard * file: src/platform/health/components/DeploymentCard.tsx:22 * kind: component * core: platform * spec: (none) * summary: Card showing the most recent Vercel deployment. * score: 2 ### component DesktopHeader * file: src/platform/navigation/DesktopHeader.tsx:37 * kind: component * core: platform * spec: (none) * summary: Utility for desktop header. * score: 1 ### component DiagnosticsPanel * file: src/platform/notifications/components/testing/DiagnosticsPanel.tsx:15 * kind: component * core: platform * spec: (none) * summary: Utility for diagnostics panel. * score: 1 ### component DiagramPresenceIndicator * file: src/platform/workflow/components/DiagramPresenceIndicator.tsx:28 * kind: component * core: platform * spec: (none) * summary: Renders an overlapping avatar stack of users with presence on the diagram. * score: 2 ### component DiagramValidationPanel * file: src/platform/workflow/components/DiagramValidationPanel.tsx:25 * kind: component * core: platform * spec: (none) * summary: Sheet panel showing diagram validation errors and warnings. * score: 2 ### component DiagramVersionHistory * file: src/platform/workflow/components/DiagramVersionHistory.tsx:37 * kind: component * core: platform * spec: (none) * summary: Collapsible panel listing diagram versions with preview and rollback. * score: 2 ### component DialogWizardShell * file: src/platform/wizards/components/DialogWizardShell.tsx:35 * kind: component * core: platform * spec: (none) * summary: Utility for dialog wizard shell. * score: 1 ### component DirectorySyncCard * file: src/platform/settings/components/DirectorySyncCard.tsx:43 * kind: component * core: platform * spec: (none) * summary: Utility for directory sync card. * score: 1 ### component DisclaimerSection * file: src/platform/email-signatures/components/DisclaimerSection.tsx:24 * kind: component * core: platform * spec: (none) * summary: Disclaimer textarea for compliance disclaimers appended to email signatures. * score: 2 ### component DispositionSelectStep * file: src/platform/telephony/components/quick-disposition-steps/DispositionSelectStep.tsx:23 * kind: component * core: platform * spec: (none) * summary: 3×3 grid of disposition tiles for quick keyboard-first selection.Each tile shows the disposition label and a key hint badge (1-9).The disposition is intentionally excluded to fit the 1-9 keyboard map. * score: 2 ### component DocsLink * file: src/platform/docs/DocsLink.tsx:27 * kind: component * core: platform * spec: (none) * summary: Utility for docs link. * score: 1 ### component DocumentAnalyticsDashboard * file: src/platform/documents/pages/DocumentAnalyticsDashboard.tsx:42 * kind: component * core: platform * spec: (none) * summary: Analytics dashboard page for document metrics. * score: 2 ### component DocumentApprovalDecisionDialog * file: src/platform/documents/components/DocumentApprovalDecisionDialog.tsx:21 * kind: component * core: platform * spec: (none) * summary: Utility for document approval decision dialog. * score: 1 ### component DocumentBulkActionToolbar * file: src/platform/documents/components/DocumentBulkActionToolbar.tsx:37 * kind: component * core: platform * spec: (none) * summary: Utility for document bulk action toolbar. * score: 1 ### component DocumentCard * file: src/platform/documents/DocumentCard.tsx:54 * kind: component * core: platform * spec: (none) * summary: Utility for document card. * score: 1 ### component DocumentDetailPage * file: src/platform/documents/DocumentDetailPage.tsx:55 * kind: component * core: platform * spec: (none) * summary: Utility for document detail page. * score: 1 ### component DocumentImportDialog * file: src/platform/knowledge/components/DocumentImportDialog.tsx:53 * kind: component * core: platform * spec: (none) * summary: Dialog UI that lets users search organization documents with extractable text and import a selected document's content into a knowledge article.Renders a searchable list of documents (title, file name, type, date, and content snippet), allows selecting a single document, and invokes the supplied import callback with the document id, name, and extracted text.Accessibility: the dialog and interactive list items are keyboard-focusable and provide visible focus rings; ensure the dialog is reachable via keyboard and that screen readers can access the dialog title and description. - open: Whether the import dialog is open. - onOpenChange: Callback invoked with the new open state (use to close the dialog). - onImport: Callback invoked when the user confirms import with an object containing , , and of the selected document. * example: | DocumentImportDialog open=isDialogOpen onOpenChange=(open) = setIsDialogOpen(open) onImport=( id, name, content ) = handleImportDocument( id, name, content )/ * score: 5 ### component DocumentLibrary * file: src/platform/documents/DocumentLibrary.tsx:49 * kind: component * core: platform * spec: (none) * summary: Utility for document library. * score: 1 ### component DocumentPreview * file: src/platform/documents/DocumentPreview\.tsx:39 * kind: component * core: platform * spec: (none) * summary: Document preview component that supports multiple file formats.Heavy viewers (PDF, Excel, DOCX) are lazy-loaded to reduce initial bundle size.Bundle savings:- react-pdf: \~1.6MB (loads only when viewing PDFs)- exceljs: \~937KB (loads only when viewing Excel files)- mammoth: \~100KB (loads only when viewing DOCX files) * score: 2 ### component DocumentPreviewDialog * file: src/platform/documents/DocumentPreviewDialog.tsx:22 * kind: component * core: platform * spec: (none) * summary: Utility for document preview dialog. * score: 1 ### component DocumentSortOptions * file: src/platform/documents/components/DocumentSortOptions.tsx:25 * kind: component * core: platform * spec: (none) * summary: Utility for document sort options. * score: 1 ### component DocumentTemplateCard * file: src/platform/templates/components/DocumentTemplateCard.tsx:66 * kind: component * core: platform * spec: (none) * summary: Renders a document template card showing name, status, type, version, usage and optional management actions.Displays visual indicators for default and system templates, an optional description and letterhead, and a contextual action menu when management callbacks are provided. Action availability is governed by template state (system, default, status, usage\_count) and the corresponding callback props. * params: * props — Component props - template: The DocumentTemplate to display (required). Used for name, description, type, status, version, usage, and system/default flags. - letterheadName: Optional display name of an associated letterhead. - onEdit: Optional callback invoked with the template id when Edit is selected. - onDelete: Optional callback invoked with the template id when Delete is selected (only shown if template is not system and usage\_count is 0). - onSetDefault: Optional callback invoked with the template id to mark this template as the default (only shown if template is active, not system, and not already default). - onClone: Optional callback invoked with the template id when Clone is selected. - onDeprecate: Optional callback invoked with the template id to deprecate the template (only shown if template is not system and not already deprecated). - onViewVersions: Optional callback invoked with the template id to view version history. - canManage: When true, shows the action menu; defaults to false. * returns: The JSX element for the template card.The action menu trigger includes an aria-label ("Template actions") and all menu items are keyboard navigable via the DropdownMenu primitive. * example: | DocumentTemplateCard template=template letterheadName="Acme Corp" canManage onEdit=(id) = openEditor(id) onDelete=(id) = confirmDelete(id)/ * score: 4 ### component DocumentTemplateEditor * file: src/platform/templates/pages/DocumentTemplateEditor.tsx:114 * kind: component * core: platform * spec: (none) * summary: Full editor interface for creating, editing, or cloning document templates with sections, configuration, and versioning.Renders a form bound to validation schema for template metadata, sections, and template configuration; supports loading existing templates for edit or clone, creating new templates, updating templates (optionally creating a new version when change notes are provided), and viewing version history.Accessibility considerations:- Back button includes an aria-label of "Go back".- Form controls use semantic labels and form messages for validation feedback. * params: * props — No props; this component reads routing and organization context internally. * example: | DocumentTemplateEditor / * score: 4 ### component DocumentTemplateListPage * file: src/platform/templates/pages/DocumentTemplateListPage.tsx:63 * kind: component * core: platform * spec: (none) * summary: Page that lists document templates with type and status filters, grouped intoOrganization Templates and System Templates, and provides template actions.Renders filter controls for template type and status, shows loading and errorstates, displays an empty state when no templates exist, and exposes actionsfor creating, editing, deleting (with confirmation), cloning, deprecating,viewing versions, and setting a default template where permitted. * example: | DocumentTemplateListPage /Accessibility considerations:- Filter controls and action buttons are keyboard-focusable and labeled via their visible text; ensure any additional interactive child components (cards, dialogs) also provide accessible names and focus management. * score: 5 ### component DocumentTemplateVersionDiff * file: src/platform/templates/components/DocumentTemplateVersionDiff.tsx:195 * kind: component * core: platform * spec: (none) * summary: Dialog for comparing two document template versions side-by-side. - versions: All available versions (ordered by version\_number DESC) - open: Whether the dialog is open - onOpenChange: Callback to toggle dialog open state - initialVersionA: Optional initial version ID for the left (older) side - initialVersionB: Optional initial version ID for the right (newer) side * score: 2 ### component DocumentUploadDialog * file: src/platform/documents/DocumentUploadDialog.tsx:74 * kind: component * core: platform * spec: (none) * summary: Utility for document upload dialog. * score: 1 ### component DocxViewer * file: src/platform/documents/DocxViewer.tsx:21 * kind: component * core: platform * spec: (none) * summary: Utility for docx viewer. * score: 1 ### component DraftCard * file: src/platform/forms/components/DraftCard.tsx:33 * kind: component * core: platform * spec: (none) * summary: Utility for draft card. * score: 1 ### component DraftCardSwipeable * file: src/platform/forms/components/DraftCardSwipeable.tsx:23 * kind: component * core: platform * spec: (none) * summary: Renders a wrapped with a mobile swipe-to-delete action. * score: 2 ### component DraftIndicator * file: src/platform/wizards/components/DraftIndicator.tsx:21 * kind: component * core: platform * spec: (none) * summary: Utility for draft indicator. * score: 1 ### component DraftListPage * file: src/platform/forms/pages/DraftListPage.tsx:21 * kind: component * core: platform * spec: (none) * summary: Utility for draft list page. * score: 1 ### component DraftListView * file: src/platform/forms/components/DraftListView\.tsx:32 * kind: component * core: platform * spec: (none) * summary: Utility for draft list view. * score: 1 ### component DraftResumeDialog * file: src/platform/wizards/components/DraftResumeDialog.tsx:43 * kind: component * core: platform * spec: (none) * summary: Utility for draft resume dialog. * score: 1 ### component DraftResumePrompt * file: src/platform/forms/components/DraftResumePrompt.tsx:32 * kind: component * core: platform * spec: (none) * summary: Utility for draft resume prompt. * score: 1 ### component DraftStatusIndicator * file: src/platform/wizards/components/DraftStatusIndicator.tsx:21 * kind: component * core: platform * spec: (none) * summary: Utility for draft status indicator. * score: 1 ### component DraggableHeader * file: src/platform/table-v2/components/DraggableHeader.tsx:40 * kind: component * core: platform * spec: (none) * summary: A column header cell that supports drag-and-drop reordering.Uses dnd-kit/sortable for drag interactions. Shows a grip handleon hover for desktop users. Disabled on touch devices. * score: 5 ### component DropOffAnalysis * file: src/platform/wizards/components/analytics/DropOffAnalysis.tsx:20 * kind: component * core: platform * spec: (none) * summary: Utility for drop off analysis. * score: 1 ### component DropZone * file: src/platform/upload/components/DropZone.tsx:61 * kind: component * core: platform * spec: (none) * summary: Drag-and-drop file upload zone with visual feedback. * score: 2 ### component DuplicateExportButton * file: src/platform/import/components/DuplicateExportButton.tsx:19 * kind: component * core: platform * spec: (none) * summary: Exports duplicate-flagged records as a CSV file for audit purposes. * score: 2 ### component DuplicateReviewDialog * file: src/platform/import/components/DuplicateReviewDialog.tsx:36 * kind: component * core: platform * spec: (none) * summary: Dialog for reviewing and resolving duplicate import records. * score: 2 ### component DynamicFormRenderer * file: src/platform/field-config/components/DynamicFormRenderer.tsx:308 * kind: component * core: platform * spec: (none) * summary: Utility for dynamic form renderer. * score: 1 ### component DynamicRecordField * file: src/platform/data-manager/components/DynamicRecordField.tsx:23 * kind: component * core: platform * spec: (none) * summary: Utility for dynamic record field. * score: 1 ### component EdgeFunctionHealthCard * file: src/platform/health/components/EdgeFunctionHealthCard.tsx:14 * kind: component * core: platform * spec: (none) * summary: Card showing edge function error rates for the last 24h. * score: 2 ### component EditableCell * file: src/platform/data-manager/components/EditableCell.tsx:25 * kind: component * core: platform * spec: (none) * summary: Utility for editable cell. * score: 1 ### component EditCustomObjectDialog * file: src/platform/data-manager/components/EditCustomObjectDialog.tsx:67 * kind: component * core: platform * spec: (none) * summary: Utility for edit custom object dialog. * score: 1 ### component EditObjectMetadataDialog * file: src/platform/data-manager/components/EditObjectMetadataDialog.tsx:52 * kind: component * core: platform * spec: (none) * summary: Utility for edit object metadata dialog. * score: 1 ### component EditReportPage * file: src/platform/reports/EditReportPage.tsx:28 * kind: component * core: platform * spec: (none) * summary: Utility for editing an existing report. * score: 1 ### component EditRolePage * file: src/platform/roles/pages/EditRolePage.tsx:32 * kind: component * core: platform * spec: (none) * summary: Utility for edit role page. * score: 1 ### component EmailField * file: src/platform/forms/components/fields/EmailField.tsx:23 * kind: component * core: platform * spec: (none) * summary: Utility for email field. * score: 1 ### component EmailProviderHealthBanner * file: src/platform/users/components/EmailProviderHealthBanner.tsx:36 * kind: component * core: platform * spec: (none) * summary: Renders the email-provider health snapshot for org admins. * score: 2 ### component EmailTemplateEditor * file: src/platform/forms/components/fields/RichTextField.tsx:556 * kind: component * core: platform * spec: (none) * summary: Email template editor with full formatting * score: 2 ### component EmailTemplateEditor * file: src/platform/templates/components/EmailTemplateEditor.tsx:193 * kind: component * core: platform * spec: (none) * summary: Utility for email template editor. * score: 1 ### component EmailTestCard * file: src/platform/notifications/components/testing/ChannelTestCards.tsx:387 * kind: component * core: platform * spec: (none) * summary: Renders the email test card interface. * score: 2 ### component EmbeddableProvider * file: src/platform/telephony/components/EmbeddableProvider.tsx:121 * kind: component * core: platform * spec: (none) * summary: Provider component that loads and configures the RingCentral Embeddable widget. * score: 2 ### component EmbeddableWrapper * file: src/platform/telephony/components/EmbeddableWrapper.tsx:50 * kind: component * core: platform * spec: (none) * summary: Utility for embeddable wrapper. * score: 1 ### component EmojiReactionPicker * file: src/platform/messaging/components/EmojiReactionPicker.tsx:30 * kind: component * core: platform * spec: (none) * summary: Utility for emoji reaction picker. * score: 1 ### component EmployeeCountWidget * file: src/platform/dashboard/widgets/EmployeeCountWidget.tsx:22 * kind: component * core: platform * spec: (none) * summary: Utility for employee count widget. * score: 1 ### component EmployeeSelector * file: src/platform/workforce/EmployeeSelector.tsx:14 * kind: component * core: platform * spec: (none) * summary: Reusable employee selector component with search * score: 2 ### component EncryptedTextField * file: src/platform/forms/components/fields/EncryptedTextField.tsx:44 * kind: component * core: platform * spec: (none) * summary: Utility for encrypted text field. * score: 1 ### component EndEventNode * file: src/platform/workflow/components/swim-lane-nodes/EndEventNode.tsx:13 * kind: component * core: platform * spec: (none) * summary: End event node — red circle with stop icon. * score: 2 ### component EntityFieldConfigPage * file: src/platform/field-config/pages/EntityFieldConfigPage.tsx:30 * kind: component * core: platform * spec: (none) * summary: Utility for entity field config page. * score: 1 ### component EntraFieldMappingEditor * file: src/platform/integrations/components/EntraFieldMappingEditor.tsx:63 * kind: component * core: platform * spec: (none) * summary: Utility for entra field mapping editor. * score: 1 ### component EntraIDSettingsCard * file: src/platform/settings/components/EntraIDSettingsCard.tsx:305 * kind: component * core: platform * spec: (none) * summary: Utility for entra idsettings card. * score: 1 ### component EntraIDSettingsPage * file: src/platform/settings/pages/EntraIDSettingsPage.tsx:78 * kind: component * core: platform * spec: (none) * summary: Utility for entra idsettings page. * score: 1 ### component EntraPendingChangesReview * file: src/platform/integrations/components/EntraPendingChangesReview\.tsx:56 * kind: component * core: platform * spec: (none) * summary: Utility for entra pending changes review. * score: 1 ### component EntraPermissionsList * file: src/platform/integrations/components/EntraPermissionsList.tsx:20 * kind: component * core: platform * spec: (none) * summary: Renders granted vs missing Graph application permissions from a live token probe. * score: 2 ### component EntraRoleLicenseMapCard * file: src/platform/integrations/components/EntraRoleLicenseMapCard.tsx:49 * kind: component * core: platform * spec: (none) * summary: Settings card mapping PF-30 system roles to Office 365 license SKUs(PF-63-EN-01). Offers a picker over the tenant's live subscribed SKUs whenfetchable, with validated free-form GUID entry as the fallback (FR-3). * score: 2 ### component EntraUnmatchedUsersCard * file: src/platform/integrations/components/EntraUnmatchedUsersCard.tsx:35 * kind: component * core: platform * spec: (none) * summary: Utility for entra unmatched users card. * score: 1 ### component ErrorFallback * file: src/platform/monitoring/ErrorFallback.tsx:25 * kind: component * core: platform * spec: (none) * summary: Utility for error fallback. * score: 1 ### component ExcelViewer * file: src/platform/documents/ExcelViewer.tsx:34 * kind: component * core: platform * spec: (none) * summary: Utility for excel viewer. * score: 1 ### component ExecutiveDashboardPage * file: src/platform/dashboard/pages/ExecutiveDashboardPage.tsx:26 * kind: component * core: platform * spec: (none) * summary: Utility for executive dashboard page. * score: 1 ### component ExportDiagramDropdown * file: src/platform/workflow/components/ExportDiagramDropdown.tsx:31 * kind: component * core: platform * spec: (none) * summary: Export dropdown with PDF, PNG, and BPMN options. * score: 2 ### component ExportHistoryPage * file: src/platform/export/pages/ExportHistoryPage.tsx:37 * kind: component * core: platform * spec: (none) * summary: Utility for export history page. * score: 1 ### component ExportMenu * file: src/platform/table-v2/components/ExportMenu.tsx:74 * kind: component * core: platform * spec: (none) * summary: Export dropdown with CSV and Excel options. * score: 2 ### component ExportMetricsDialog * file: src/platform/health/components/ExportMetricsDialog.tsx:46 * kind: component * core: platform * spec: (none) * summary: Utility for export metrics dialog. * score: 1 ### component ExportRequestForm * file: src/platform/export/components/ExportRequestForm.tsx:50 * kind: component * core: platform * spec: (none) * summary: Utility for export request form. * score: 1 ### component ExportTemplateFormDialog * file: src/platform/export/components/ExportTemplateFormDialog.tsx:56 * kind: component * core: platform * spec: (none) * summary: Utility for export template form dialog. * score: 1 ### component ExportTemplatesPage * file: src/platform/export/pages/ExportTemplatesPage.tsx:24 * kind: component * core: platform * spec: (none) * summary: Utility for export templates page. * score: 1 ### component ExpressionEditor * file: src/platform/wizards/components/ExpressionEditor.tsx:38 * kind: component * core: platform * spec: (none) * summary: Utility for expression editor. * score: 1 ### component ExpressionFunctionDocs * file: src/platform/wizards/components/ExpressionFunctionDocs.tsx:46 * kind: component * core: platform * spec: (none) * summary: Utility for expression function docs. * score: 1 ### component ExpressionRuleBuilder * file: src/platform/wizards/components/ExpressionRuleBuilder.tsx:44 * kind: component * core: platform * spec: (none) * summary: Utility for expression rule builder. * score: 1 ### component ExpressionTestRunner * file: src/platform/wizards/components/ExpressionTestRunner.tsx:38 * kind: component * core: platform * spec: (none) * summary: Utility for expression test runner. * score: 1 ### component FavoriteToggle * file: src/platform/data-manager/components/FavoriteToggle.tsx:18 * kind: component * core: platform * spec: (none) * summary: Utility for favorite toggle. * score: 1 ### component FeatureFlagFormDialog * file: src/platform/feature-flags/components/FeatureFlagFormDialog.tsx:136 * kind: component * core: platform * spec: (none) * summary: Feature flag create/edit dialog with variant editor and delete support. * score: 2 ### component FeatureFlagsPage * file: src/platform/feature-flags/pages/FeatureFlagsPage.tsx:30 * kind: component * core: platform * spec: (none) * summary: Feature flags admin page with list, toggle, edit, and delete. * score: 2 ### component FieldAssignmentPanel * file: src/platform/page-layouts/components/FieldAssignmentPanel.tsx:31 * kind: component * core: platform * spec: (none) * summary: Utility for field assignment panel. * score: 1 ### component FieldConfigDialog * file: src/platform/page-layouts/components/FieldConfigDialog.tsx:39 * kind: component * core: platform * spec: (none) * summary: Utility for field config dialog. * score: 1 ### component FieldConfigForm * file: src/platform/field-config/components/FieldConfigForm.tsx:70 * kind: component * core: platform * spec: (none) * summary: Utility for field config form. * score: 1 ### component FieldConfigLayoutEditor * file: src/platform/field-config/components/FieldConfigLayoutEditor.tsx:78 * kind: component * core: platform * spec: (none) * summary: Utility for field config layout editor. * score: 1 ### component FieldConfigPreview * file: src/platform/field-config/components/FieldConfigPreview\.tsx:29 * kind: component * core: platform * spec: (none) * summary: Utility for field config preview. * score: 1 ### component FieldConfigTable * file: src/platform/field-config/components/FieldConfigTable.tsx:34 * kind: component * core: platform * spec: (none) * summary: Utility for field config table. * score: 1 ### component FieldConfigVersionHistory * file: src/platform/field-config/components/FieldConfigVersionHistory.tsx:22 * kind: component * core: platform * spec: (none) * summary: Utility for field config version history. * score: 1 ### component FieldCrossValidationError * file: src/platform/conditional-logic/components/CrossFieldValidationErrors.tsx:123 * kind: component * core: platform * spec: (none) * summary: Display cross-field validation errors for a specific fieldFilters errors to only show those involving the specified field * score: 2 ### component FieldEditorDialog * file: src/platform/wizards/components/FieldEditorDialog.tsx:49 * kind: component * core: platform * spec: (none) * summary: Utility for field editor dialog. * score: 1 ### component FieldFormInput * file: src/platform/page-layouts/components/rendering/FieldFormInput.tsx:30 * kind: component * core: platform * spec: (none) * summary: Utility for field form input. * score: 1 ### component FieldListItem * file: src/platform/wizards/components/FieldListItem.tsx:70 * kind: component * core: platform * spec: (none) * summary: Utility for field list item. * score: 1 ### component FieldListPanel * file: src/platform/wizards/components/FieldListPanel.tsx:29 * kind: component * core: platform * spec: (none) * summary: Utility for field list panel. * score: 1 ### component FieldMappingEditor * file: src/platform/import/components/FieldMappingEditor.tsx:34 * kind: component * core: platform * spec: (none) * summary: Field mapping editor component.Shows target fields with dropdowns to pick the source column. * score: 2 ### component FieldPermissionsSection * file: src/platform/data-manager/components/FieldPermissionsSection.tsx:49 * kind: component * core: platform * spec: (none) * summary: Renders a searchable table for configuring field-level visibility and edit permissions for custom fields.Displays only fields sourced as , allows filtering by field name or label, and provides a permissionselector per editable system role. User changes are reported via the callback. - fields: Array of field metadata; only fields with are shown. - permissions: Current field-permission records used to derive each selector's initial value. - onPermissionChange: Callback invoked when a permission is changed: (fieldName, role, level) = void. - disabled: If true, all permission controls are disabled (defaults to ). * example: | FieldPermissionsSection fields=\[ name: 'favorite\_color', label: 'Favorite Color', source: 'custom' ] permissions=\[ field\_name: 'favorite\_color', role: 'member', permission\_level: 'read' ] onPermissionChange=(field, role, level) = handleChange(field, role, level)/ * score: 5 ### component FieldRenderer * file: src/platform/page-layouts/components/rendering/FieldRenderer.tsx:48 * kind: component * core: platform * spec: (none) * summary: Utility for field renderer. * score: 1 ### component FieldSelector * file: src/platform/conditional-logic/components/builder/FieldSelector.tsx:39 * kind: component * core: platform * spec: (none) * summary: Utility for field selector. * score: 1 ### component FieldValidationSection * file: src/platform/wizards/components/FieldValidationSection.tsx:19 * kind: component * core: platform * spec: (none) * summary: Utility for field validation section. * score: 1 ### component FieldValueDisplay * file: src/platform/page-layouts/components/rendering/FieldValueDisplay.tsx:129 * kind: component * core: platform * spec: (none) * summary: Utility for field value display. * score: 1 ### component FilePreview * file: src/platform/messaging/components/FileUploadButton.tsx:166 * kind: component * core: platform * spec: (none) * summary: Utility for file preview. * score: 1 ### component FileUploadButton * file: src/platform/messaging/components/FileUploadButton.tsx:53 * kind: component * core: platform * spec: (none) * summary: Utility for file upload button. * score: 1 ### component FileUploadButton * file: src/platform/upload/components/FileUploadButton.tsx:62 * kind: component * core: platform * spec: (none) * summary: Button that triggers file upload with inline progress. * score: 5 ### component FileUploadDialog * file: src/platform/upload/components/FileUploadDialog.tsx:70 * kind: component * core: platform * spec: (none) * summary: Modal dialog for file uploads with drag-and-drop support. * score: 5 ### component FileUploadField * file: src/platform/forms/components/fields/FileUploadField.tsx:55 * kind: component * core: platform * spec: (none) * summary: File upload field with drag-and-drop, progress tracking, and preview. * score: 2 ### component FilterBuilder * file: src/platform/reports/components/FilterBuilder.tsx:44 * kind: component * core: platform * spec: (none) * summary: Utility for filter builder. * score: 1 ### component FleetAuditPage * file: src/platform/fleet/pages/FleetAuditPage.tsx:81 * kind: component * core: platform * spec: (none) * summary: Fleet Compliance PHI-Access Audit page.Designed for compliance officers: shows who (agent + authorizer), what(resource\_table + operation), the governance approval reference, PHIcategory, and when — content-free by design. No PHI values are rendered.Route: /settings/platform/fleet/audit (flag-gated pf.agents.fleet\_enabled)Permission: pf.audit.phi\_access.view (enforced server-side by RLS) * score: 2 ### component FleetControlTowerPage * file: src/platform/fleet/pages/FleetControlTowerPage.tsx:51 * kind: component * core: platform * spec: (none) * summary: Fleet Control Tower — agent usage overview dashboard.Renders aggregate StatCards (total calls, cost, PHI touches) and aper-agent/session detail table. All columns are metadata/cost only —no prompt bodies, response text, or PHI content is ever rendered here.Route: /settings/platform/fleet (flag-gated pf.agents.fleet\_enabled)Permission: pf.audit.phi\_access.view (enforced server-side on the RPC) * score: 2 ### component FollowUpStep * file: src/platform/telephony/components/quick-disposition-steps/FollowUpStep.tsx:28 * kind: component * core: platform * spec: (none) * summary: Follow-up scheduling step. Toggle enables date picker;if toggled on, a future date is required to advance. Optional task creation checkbox. * score: 2 ### component FormAnalyticsProvider * file: src/platform/forms/components/FormAnalyticsProvider.tsx:24 * kind: component * core: platform * spec: (none) * summary: Utility for form analytics provider. * score: 1 ### component FormattedBytes * file: src/platform/formatting/components.tsx:141 * kind: component * core: platform * spec: (none) * summary: Display file size in human-readable format * score: 2 ### component FormattedCurrency * file: src/platform/formatting/components.tsx:29 * kind: component * core: platform * spec: (none) * summary: Display currency with organization preferences * score: 2 ### component FormattedDate * file: src/platform/formatting/components.tsx:49 * kind: component * core: platform * spec: (none) * summary: Display date with organization preferences * score: 2 ### component FormattedDateTime * file: src/platform/formatting/components.tsx:66 * kind: component * core: platform * spec: (none) * summary: Display date and time with organization preferences * score: 2 ### component FormattedNumber * file: src/platform/formatting/components.tsx:86 * kind: component * core: platform * spec: (none) * summary: Display number with organization preferences * score: 2 ### component FormattedPercent * file: src/platform/formatting/components.tsx:109 * kind: component * core: platform * spec: (none) * summary: Display percentage with organization preferences * score: 2 ### component FormattedPhone * file: src/platform/formatting/components.tsx:126 * kind: component * core: platform * spec: (none) * summary: Display formatted phone number * score: 2 ### component FormattingSettings * file: src/platform/organizations/components/FormattingSettings.tsx:53 * kind: component * core: platform * spec: (none) * summary: Utility for formatting settings. * score: 1 ### component FormattingToolbar * file: src/platform/messaging/components/FormattingToolbar.tsx:29 * kind: component * core: platform * spec: (none) * summary: Markdown formatting toolbar for the message composer. * score: 2 ### component FormEmbed * file: src/platform/forms/FormEmbed.tsx:50 * kind: component * core: platform * spec: (none) * summary: Utility for form embed. * score: 1 ### component FormFieldWithHelp * file: src/platform/help/FormFieldWithHelp.tsx:45 * kind: component * core: platform * spec: (none) * summary: Utility for form field with help. * score: 1 ### component FormProgressIndicator * file: src/platform/forms/components/FormProgressIndicator.tsx:26 * kind: component * core: platform * spec: (none) * summary: Utility for form progress indicator. * score: 1 ### component FormRendererRHF * file: src/platform/forms/FormRendererRHF.tsx:119 * kind: component * core: platform * spec: (none) * summary: React Hook Form based form rendererKey improvements over FormRenderer:- Uses react-hook-form for state management (less re-renders)- Zod schema validation via zodResolver- Better TypeScript integration- Controller-based field registration * score: 2 ### component FormSelector * file: src/platform/forms/FormSelector.tsx:31 * kind: component * core: platform * spec: (none) * summary: Utility for form selector. * score: 1 ### component FormStep * file: src/platform/wizards/components/steps/FormStep.tsx:18 * kind: component * core: platform * spec: (none) * summary: Utility for form step. * score: 1 ### component FormStepField * file: src/platform/wizards/components/steps/FormStepField.tsx:32 * kind: component * core: platform * spec: (none) * summary: Utility for form step field. * score: 1 ### component GenerateFromPolicyDialog * file: src/platform/workflow/components/GenerateFromPolicyDialog.tsx:83 * kind: component * core: platform * spec: (none) * summary: Utility for generate from policy dialog. * score: 1 ### component GenerateFromProcedureDialog * file: src/platform/workflow/components/GenerateFromProcedureDialog.tsx:43 * kind: component * core: platform * spec: (none) * summary: Utility for generate from procedure dialog. * score: 1 ### component GenerateLayoutsButton * file: src/platform/page-layouts/components/data-manager/GenerateLayoutsButton.tsx:31 * kind: component * core: platform * spec: (none) * summary: Utility for generate layouts button. * score: 1 ### component GenerateSimilarDialog * file: src/platform/wizards/components/GenerateSimilarDialog.tsx:33 * kind: component * core: platform * spec: (none) * summary: Utility for generate similar dialog. * score: 1 ### component GestureAnalyticsPage * file: src/platform/settings/pages/GestureAnalyticsPage.tsx:35 * kind: component * core: platform * spec: (none) * summary: Utility for gesture analytics page. * score: 1 ### component GesturePreferencesPage * file: src/platform/settings/pages/GesturePreferencesPage.tsx:47 * kind: component * core: platform * spec: (none) * summary: Utility for gesture preferences page. * score: 1 ### component GettingStartedCard * file: src/platform/setup/components/GettingStartedCard.tsx:24 * kind: component * core: platform * spec: (none) * summary: Utility for getting started card. * score: 1 ### component GettingStartedPage * file: src/platform/settings/pages/GettingStartedPage.tsx:13 * kind: component * core: platform * spec: (none) * summary: Utility for getting started page. * score: 1 ### component GlobalSearch * file: src/platform/navigation/GlobalSearch.tsx:117 * kind: component * core: platform * spec: (none) * summary: Utility for global search. * score: 1 ### component GoogleWorkspaceSettingsPage * file: src/platform/settings/pages/GoogleWorkspaceSettingsPage.tsx:230 * kind: component * core: platform * spec: (none) * summary: Google Workspace Settings page (PF-101). * score: 2 ### component GoogleWorkspaceSetupDialog * file: src/platform/settings/components/GoogleWorkspaceSetupDialog.tsx:108 * kind: component * core: platform * spec: (none) * summary: Renders the PF-101 setup wizard for Google Workspace connection metadata,capability gates, service-account credentials, and OAuth authorization. * score: 2 ### component GroupedRows * file: src/platform/table-v2/components/GroupedRows.tsx:56 * kind: component * core: platform * spec: (none) * summary: Renders a collapsible group header row for TanStack Table grouped data. * score: 5 ### component GuidedKnowledgeSeedingEntry * file: src/platform/knowledge/components/GuidedKnowledgeSeedingEntry.tsx:34 * kind: component * core: platform * spec: (none) * summary: Standalone guided org-knowledge seeding entry.Frames as an admin entry point. All branching (import vs author)and the publish path are owned by ; this component adds only the entryheading/context. Reuses existing knowledge write permission — no new permission key. * params: * props — * score: 2 ### component HeaderBackButton * file: src/platform/navigation/components/HeaderBackButton.tsx:41 * kind: component * core: platform * spec: (none) * summary: Renders the canonical app-chrome back button. Returns on root /module-dashboard routes so the chrome doesn't reserve dead space. * score: 2 ### component HeaderQuickActions * file: src/platform/navigation/components/HeaderQuickActions.tsx:24 * kind: component * core: platform * spec: (none) * summary: Renders pinned quick actions as inline header buttons (up to 3),plus a palette trigger button. Press Q to open the full searchable command palette. * score: 2 ### component HeadshotConsentDialog * file: src/platform/headshot/components/HeadshotConsentDialog.tsx:22 * kind: component * core: platform * spec: (none) * summary: Biometric consent dialog for headshot generation. * score: 2 ### component HeadshotGallery * file: src/platform/headshot/components/HeadshotGallery.tsx:30 * kind: component * core: platform * spec: (none) * summary: Gallery grid for generated headshots. * score: 2 ### component HeadshotLightbox * file: src/platform/headshot/components/HeadshotLightbox.tsx:23 * kind: component * core: platform * spec: (none) * summary: Full-size image lightbox with navigation. * score: 2 ### component HeadshotStatusBanner * file: src/platform/headshot/components/HeadshotStatusBanner.tsx:17 * kind: component * core: platform * spec: (none) * summary: Banner showing status of in-progress headshot generation jobs. * score: 2 ### component HeadshotUploadWizard * file: src/platform/headshot/components/HeadshotUploadWizard.tsx:39 * kind: component * core: platform * spec: (none) * summary: Upload wizard dialog for headshot generation. * score: 2 ### component HealthOverviewCard * file: src/platform/health/components/HealthOverviewCard.tsx:88 * kind: component * core: platform * spec: (none) * summary: Utility for health overview card. * score: 1 ### component HelpButton * file: src/platform/help/HelpPanel.tsx:140 * kind: component * core: platform * spec: (none) * summary: Simple help button that opens the panel.Use when you just need the trigger without configuration. * score: 2 ### component HelpPage * file: src/platform/help/HelpPage.tsx:19 * kind: component * core: platform * spec: (none) * summary: Utility for help page. * score: 1 ### component HelpPanel * file: src/platform/help/HelpPanel.tsx:73 * kind: component * core: platform * spec: (none) * summary: Utility for help panel. * score: 1 ### component HistoricalAnalysisPage * file: src/platform/health/pages/HistoricalAnalysisPage.tsx:24 * kind: component * core: platform * spec: (none) * summary: Utility for historical analysis page. * score: 1 ### component HolidayImportDialog * file: src/platform/calendar/components/HolidayImportDialog.tsx:34 * kind: component * core: platform * spec: (none) * summary: Dialog for importing holidays from a CSV file. * score: 2 ### component HolidayPreviewTable * file: src/platform/calendar/components/HolidayPreviewTable.tsx:19 * kind: component * core: platform * spec: (none) * summary: Renders a preview table of parsed holiday rows. * score: 2 ### component HolidayTemplateSelector * file: src/platform/calendar/components/HolidayTemplateSelector.tsx:34 * kind: component * core: platform * spec: (none) * summary: Dialog for selecting and applying holiday templates to a business calendar. * score: 2 ### component ICD10HierarchyNavigator * file: src/platform/terminology/components/ICD10HierarchyNavigator.tsx:36 * kind: component * core: platform * spec: (none) * summary: ICD10HierarchyNavigator — navigates the ICD-10 hierarchyfrom chapters down to individual codes. * score: 2 ### component IdentityBrandVoiceStep * file: src/platform/ai/components/onboarding/IdentityBrandVoiceStep.tsx:22 * kind: component * core: platform * spec: (none) * summary: Renders the Identity & Brand Voice step. * params: * props — . * score: 2 ### component IdentityStep * file: src/platform/ai/wizards/ai-skill-creation/steps/IdentityStep.tsx:45 * kind: component * core: platform * spec: (none) * summary: Renders Step 1 (Identity & Use Case). * params: * props — The shared form instance. * score: 2 ### component ImportBatchDetailSheet * file: src/platform/import/components/ImportBatchDetailSheet.tsx:40 * kind: component * core: platform * spec: (none) * summary: Detail sheet for a single import batch. * score: 2 ### component ImportBpmnDialog * file: src/platform/workflow/components/ImportBpmnDialog.tsx:33 * kind: component * core: platform * spec: (none) * summary: Dialog for importing BPMN XML files into swim lane diagrams. * score: 2 ### component ImportFilePreview * file: src/platform/import/components/ImportFilePreview\.tsx:47 * kind: component * core: platform * spec: (none) * summary: Table preview of parsed import data with automatic PHI masking. * score: 2 ### component ImportHistoryPage * file: src/platform/import/pages/ImportHistoryPage.tsx:40 * kind: component * core: platform * spec: (none) * summary: Import history page showing all batches with detail drill-down. * score: 2 ### component ImportProgressCard * file: src/platform/import/components/ImportProgressCard.tsx:25 * kind: component * core: platform * spec: (none) * summary: Displays import execution progress with a determinate progress bar. * score: 2 ### component ImportSkillDialog * file: src/platform/ai/components/ImportSkillDialog.tsx:36 * kind: component * core: platform * spec: (none) * summary: Dialog for importing AI skills from SKILL.md files.Provides a file picker, parsed preview, conflict detection withRename/Replace options, and a final import action. * params: * props — Component props. - open: Whether the dialog is open. - onOpenChange: Callback when open state changes. * score: 2 ### component ImportUploadPage * file: src/platform/import/pages/ImportUploadPage.tsx:47 * kind: component * core: platform * spec: (none) * summary: Upload page for the PF-88 import framework. * score: 2 ### component InAppTestCard * file: src/platform/notifications/components/testing/ChannelTestCards.tsx:213 * kind: component * core: platform * spec: (none) * summary: Renders the in app test card interface. * score: 2 ### component IncomingCallProvider * file: src/platform/telephony/components/IncomingCallProvider.tsx:51 * kind: component * core: platform * spec: (none) * summary: Wraps application content to subscribe to incoming call events and display a screen-pop toast.Renders its children and, when subscription is active and an incoming call exists, shows an IncomingCallToast that can be dismissed or auto-dismissed. - children: React node(s) to render inside the provider. - enabled: When , enables subscription to incoming call notifications; set to to disable screen pops while still rendering children. Defaults to . - autoDismissSeconds: Number of seconds before the incoming call toast auto-dismisses. Set to to disable auto-dismiss. Defaults to . - onIncomingCall: Optional callback invoked with the incoming when a new incoming call is detected.Accessibility considerations: the IncomingCallToast should manage focus and ARIA attributes so screen-reader users are notified of incoming call events; ensure the provider is placed where toast context and focus management are available. * score: 5 ### component IncomingCallToast * file: src/platform/telephony/components/IncomingCallToast.tsx:49 * kind: component * core: platform * spec: (none) * summary: Renders a screen-pop toast for an incoming call with quick actions.Displays the caller name when a contact or partner is matched, falls back to a masked phone number for unknown callers, auto-dismisses after a configurable timeout, and can navigate to the related contact or partner record.Accessibility: the toast uses role="alert" and aria-live="polite" to announce incoming calls, and the dismiss button includes an accessible label. * params: * call — Incoming call data including related contact or partner entities (used to derive display name and navigation targets) * onDismiss — Callback invoked when the toast is dismissed (via timer, Escape key, dismiss button, or after navigation) * autoDismissSeconds — Number of seconds before the toast auto-dismisses; a value = 0 disables auto-dismiss (default: 30) * className — Optional additional CSS class names applied to the toast container * returns: The rendered incoming-call toast element * score: 4 ### component IndexRecommendationsList * file: src/platform/query-performance/components/IndexRecommendationsList.tsx:119 * kind: component * core: platform * spec: (none) * summary: Renders the index recommendations list with Apply/Copy DDL actions. * score: 2 ### component InfoTooltip * file: src/platform/help/InfoTooltip.tsx:45 * kind: component * core: platform * spec: (none) * summary: Utility for info tooltip. * score: 1 ### component InlineCreatePicklistOption * file: src/platform/import/components/InlineCreatePicklistOption.tsx:39 * kind: component * core: platform * spec: (none) * summary: Permission-gated button that opens the shared to addan option to the current org's copy of . No-ops (disabled) whenthe org has no own copy of the picklist. * score: 2 ### component InlineEditCell * file: src/platform/table-v2/components/InlineEditCell.tsx:69 * kind: component * core: platform * spec: (none) * summary: Cell wrapper that toggles between read mode and edit mode. * score: 5 ### component InModuleSidebar * file: src/platform/navigation/components/InModuleSidebar.tsx:37 * kind: component * core: platform * spec: (none) * summary: In-module sidebar view showing module overview, grouped nav items, and settings.Displayed when user is inside a specific module.Enhanced with smooth transitions, staggered animations, and keyboard navigation. * score: 2 ### component IntegrationCard * file: src/platform/integrations/components/IntegrationCard.tsx:40 * kind: component * core: platform * spec: (none) * summary: Utility for integration card. * score: 1 ### component IntegrationDetail * file: src/platform/integrations/components/IntegrationDetail.tsx:52 * kind: component * core: platform * spec: (none) * summary: Utility for integration detail. * score: 1 ### component IntegrationDetailPage * file: src/platform/settings/pages/IntegrationDetailPage.tsx:14 * kind: component * core: platform * spec: (none) * summary: Utility for integration detail page. * score: 1 ### component IntegrationDetailSkeleton * file: src/platform/integrations/components/skeletons/IntegrationDetailSkeleton.tsx:11 * kind: component * core: platform * spec: (none) * summary: Utility for integration detail skeleton. * score: 1 ### component IntegrationForm * file: src/platform/integrations/components/IntegrationForm.tsx:36 * kind: component * core: platform * spec: (none) * summary: Utility for integration form. * score: 1 ### component IntegrationList * file: src/platform/integrations/components/IntegrationList.tsx:59 * kind: component * core: platform * spec: (none) * summary: Utility for integration list. * score: 1 ### component IntegrationListSkeleton * file: src/platform/integrations/components/skeletons/IntegrationListSkeleton.tsx:21 * kind: component * core: platform * spec: (none) * summary: Utility for integration list skeleton. * score: 1 ### component IntegrationsPage * file: src/platform/settings/pages/IntegrationsPage.tsx:26 * kind: component * core: platform * spec: (none) * summary: Utility for integrations page. * score: 1 ### component IntegrationStatusBadge * file: src/platform/integrations/components/StatusBadge.tsx:38 * kind: component * core: platform * spec: (none) * summary: Integration status badge. Composes the shared so visualconventions stay consistent across the platform. * score: 2 ### component InvitationActivityFeed * file: src/platform/users/InvitationActivityFeed.tsx:83 * kind: component * core: platform * spec: (none) * summary: Activity timeline of invitation lifecycle events for the active org. * score: 2 ### component InviteUserDialog * file: src/platform/users/InviteUserDialog.tsx:30 * kind: component * core: platform * spec: (none) * summary: Utility for invite user dialog. * score: 1 ### component IpListsPage * file: src/platform/security/pages/IpListsPage.tsx:51 * kind: component * core: platform * spec: (none) * summary: Utility for ip lists page. * score: 1 ### component JoinBuilder * file: src/platform/reports/components/JoinBuilder.tsx:28 * kind: component * core: platform * spec: (none) * summary: Utility for join builder. * score: 1 ### component JurisdictionSettingsSection * file: src/platform/jurisdiction/components/JurisdictionSettingsSection.tsx:35 * kind: component * core: platform * spec: (none) * summary: Jurisdiction settings section for the org settings page. * score: 2 ### component JurisdictionStep * file: src/platform/ai/components/onboarding/JurisdictionStep.tsx:53 * kind: component * core: platform * spec: (none) * summary: Renders the State & Medicaid Program step. * params: * props — . * score: 2 ### component KeyboardShortcutsDialog * file: src/platform/navigation/KeyboardShortcutsDialog.tsx:66 * kind: component * core: platform * spec: (none) * summary: Utility for keyboard shortcuts dialog. * score: 1 ### component KnowledgeArticleCard * file: src/platform/knowledge/components/KnowledgeArticleCard.tsx:62 * kind: component * core: platform * spec: (none) * summary: Renders a card representing a knowledge article with title, metadata, badges, tags, and contextual actions.Displays the article title and optional summary, status and category badges, an "Indexed" indicator when applicable,up to three tag badges with an overflow counter, and a footer showing relative update time and embedding count.Optionally shows a selection checkbox and a dropdown menu with Edit, Publish, Archive, and Delete actions dependingon article state and provided handlers.Accessibility:- The selection checkbox includes an aria-label "Select article.title" for screen readers.- The actions button includes a visually hidden label ("Actions") for screen readers. * params: * props — Component props - article: KnowledgeArticle object to render (title, summary, status, category, tags, indexing and counts) - selected: Whether the article is selected; controls the checkbox checked state (default: false) - onSelect: Callback fired with the new checked state when the checkbox changes - onEdit: Callback invoked when the Edit action is chosen - onPublish: Callback invoked when Publish is chosen (shown only for draft articles) - onArchive: Callback invoked when Archive is chosen (shown only for published articles) - onDelete: Callback invoked when Delete is chosen - showCheckbox: Whether to render the selection checkbox (default: false) * example: | KnowledgeArticleCard article=article selected=isSelected onSelect=(checked) = setSelected(checked) onEdit=() = openEditor(article.id) onPublish=() = publishArticle(article.id) onDelete=() = deleteArticle(article.id) showCheckbox/ * score: 4 ### component KnowledgeArticleEditor * file: src/platform/knowledge/components/KnowledgeArticleEditor.tsx:111 * kind: component * core: platform * spec: (none) * summary: Form UI for creating or editing a knowledge article, including draft save, optional publish,document import, category and tag management, and validation.Renders a full editor with title, summary, category, tags, and content fields; supports importingcontent from an existing document, saving as draft, and publishing (with confirmation). - article: Existing article to edit; when omitted the editor operates in create mode. - onSave: Callback invoked to save the article payload (draft or create/update). - onPublish: Optional callback invoked when the user confirms publishing. - onCancel: Callback invoked when the user cancels editing/creation. - isLoading: Optional flag to disable inputs and show loading indicators. * example: | KnowledgeArticleEditor article=existingArticle onSave=async (payload) = await api.saveArticle(payload); onPublish=async (payload) = await api.publishArticle(payload); onCancel=() = navigateBack() isLoading=false/Accessibility- Form fields include labels and id attributes for screen reader association.- Actions are standard buttons and dialogs that follow native keyboard interaction (focusable, dismissible). * score: 5 ### component KnowledgeArticleEditPage * file: src/platform/knowledge/pages/KnowledgeArticleEditPage.tsx:35 * kind: component * core: platform * spec: (none) * summary: Page for creating a new knowledge article or editing an existing one.Renders an editor wrapped in the application page container, manages create/update/publish flows,and navigates to the article list or detail page after actions. In "new" mode the editor isinitialized empty; in edit mode it loads the article and shows loading and not-found states as needed.Accessibility: breadcrumbs are provided for orientation. The editor exposes save, publish, and cancelactions; ensure keyboard and screen-reader support is provided by the underlying editor component. * example: | import KnowledgeArticleEditPage from 'src/platform/knowledge/pages/KnowledgeArticleEditPage';// Used directly as a route component:Route path="/settings/knowledge-base/:id" element=KnowledgeArticleEditPage / / * score: 5 ### component KnowledgeBaseListPage * file: src/platform/knowledge/pages/KnowledgeBaseListPage.tsx:46 * kind: component * core: platform * spec: (none) * summary: Renders and manages the Knowledge Base list page with search, filters, selection, bulk actions, and CRUD workflows.This component synchronizes search, status, and category filters with the URL query string (debounced for search),fetches and displays knowledge articles, and exposes per-item and bulk operations (publish, archive, delete).It also provides navigation to create and edit pages and shows a confirmation dialog for deletions.Accessibility:- Uses standard form controls and semantic headings for screen-reader navigation.- Dialogs and interactive controls use accessible primitives (ConfirmationDialog, Select, Button); ensure focus management is retained when composing into pages. * returns: The rendered Knowledge Base list page UI. * example: | KnowledgeBaseListPage / * score: 5 ### component KnowledgeSourcesStep * file: src/platform/ai/components/onboarding/KnowledgeSourcesStep.tsx:42 * kind: component * core: platform * spec: (none) * summary: Renders the Knowledge Sources step. * params: * props — . * score: 2 ### component KnowledgeSourcesStep * file: src/platform/ai/wizards/ai-skill-creation/steps/KnowledgeSourcesStep.tsx:32 * kind: component * core: platform * spec: (none) * summary: Renders Step 3 (column-based RAG configuration over published PF-61 categories). * params: * props — The shared form instance. * score: 2 ### component KnowledgeStatusBadge * file: src/platform/knowledge/components/KnowledgeStatusBadge.tsx:43 * kind: component * core: platform * spec: (none) * summary: Renders a status badge for a knowledge article, optionally including a status icon.Renders a Badge whose variant and label are derived from STATUS\_CONFIG for the provided . When is true, the corresponding status icon is shown to the left of the label. * params: * props — Component props - status: The knowledge article status (controls badge color and label) - showIcon: Whether to render the status icon next to the label (defaults to ) - className: Optional additional CSS class names applied to the Badge * returns: A JSX element rendering the status Badge for the given . * example: | KnowledgeStatusBadge status="published" /Accessibility:The component relies on the Badge component for semantic markup and accessibility. Ensure Badge is implemented with appropriate semantic role and focus handling if the status needs to be announced to assistive technologies. * score: 4 ### component LaneHeaderNode * file: src/platform/workflow/components/swim-lane-nodes/LaneHeaderNode.tsx:22 * kind: component * core: platform * spec: (none) * summary: Custom node type rendering a visible lane header with label, role, and color stripe. * score: 2 ### component LayoutBuilderPage * file: src/platform/field-config/pages/LayoutBuilderPage.tsx:22 * kind: component * core: platform * spec: (none) * summary: Utility for layout builder page. * score: 1 ### component LayoutCard * file: src/platform/page-layouts/components/data-manager/LayoutCard.tsx:32 * kind: component * core: platform * spec: (none) * summary: Utility for layout card. * score: 1 ### component LayoutEditor * file: src/platform/page-layouts/components/LayoutEditor.tsx:46 * kind: component * core: platform * spec: (none) * summary: Utility for layout editor. * score: 1 ### component LayoutEditorPage * file: src/platform/page-layouts/components/data-manager/LayoutEditorPage.tsx:16 * kind: component * core: platform * spec: (none) * summary: Utility for layout editor page. * score: 1 ### component LayoutEditorSkeleton * file: src/platform/page-layouts/components/LayoutEditorSkeleton.tsx:13 * kind: component * core: platform * spec: (none) * summary: Utility for layout editor skeleton. * score: 1 ### component LayoutPreview * file: src/platform/page-layouts/components/LayoutPreview\.tsx:25 * kind: component * core: platform * spec: (none) * summary: Utility for layout preview. * score: 1 ### component LayoutRenderer * file: src/platform/page-layouts/components/rendering/LayoutRenderer.tsx:52 * kind: component * core: platform * spec: (none) * summary: Utility for layout renderer. * score: 1 ### component LayoutRendererSkeleton * file: src/platform/page-layouts/components/rendering/LayoutRendererSkeleton.tsx:21 * kind: component * core: platform * spec: (none) * summary: Utility for layout renderer skeleton. * score: 1 ### component LayoutsTab * file: src/platform/page-layouts/components/data-manager/LayoutsTab.tsx:31 * kind: component * core: platform * spec: (none) * summary: Utility for layouts tab. * score: 1 ### component LayoutsTable * file: src/platform/page-layouts/components/data-manager/LayoutsTable.tsx:33 * kind: component * core: platform * spec: (none) * summary: Utility for layouts table. * score: 1 ### component LayoutVersionHistory * file: src/platform/page-layouts/components/LayoutVersionHistory.tsx:38 * kind: component * core: platform * spec: (none) * summary: Utility for layout version history. * score: 1 ### component LazyWidget * file: src/platform/dashboard/components/LazyWidget.tsx:21 * kind: component * core: platform * spec: (none) * summary: Utility for lazy widget. * score: 1 ### component LegalHoldDialog * file: src/platform/data-retention/components/LegalHoldDialog.tsx:34 * kind: component * core: platform * spec: (none) * summary: Utility for legal hold dialog. * score: 1 ### component LetterheadCard * file: src/platform/templates/components/LetterheadCard.tsx:56 * kind: component * core: platform * spec: (none) * summary: Render a card for a letterhead item showing its preview, metadata, and optional management actions.Displays the letterhead name, optional description, default and system badges, a compact preview, and theorganization display name when present. When is true, an accessible action menu exposes Edit,Clone, Set as Default, and Delete actions depending on the letterhead's state and provided callbacks.Accessibility:- The action menu trigger includes an ("Letterhead actions") to describe the button.- The preview includes an appropriate attribute derived from the letterhead name. * params: * props — Component props - letterhead: Letterhead data to display (id, name, description, logo\_url, is\_system, is\_default, org\_name\_display). - onEdit: Optional callback invoked with the letterhead id when "Edit" is selected. Not shown for system letterheads. - onDelete: Optional callback invoked with the letterhead id when "Delete" is selected. Not shown for system letterheads. - onSetDefault: Optional callback invoked with the letterhead id when "Set as Default" is selected. Shown only for non-system, non-default letterheads. - onClone: Optional callback invoked with the letterhead id when "Clone" is selected. - canManage: When true, shows the action dropdown; defaults to . * returns: The rendered JSX element for the letterhead card. * example: | LetterheadCard letterhead=letterhead canManage onEdit=(id) = openEditModal(id) onDelete=(id) = confirmDelete(id) onSetDefault=(id) = setDefault(id) onClone=(id) = cloneLetterhead(id)/ * score: 4 ### component LetterheadEditor * file: src/platform/templates/pages/LetterheadEditor.tsx:115 * kind: component * core: platform * spec: (none) * summary: Page for creating, editing, or cloning an organization's letterhead configuration.Renders a multi-section form (Basic Information, Organization Details, Logo, Header Options, Footer Options)with validation and live preview. Supports three modes determined by route and query parameters:create (no ), edit ( present and not ), and clone (). On submit the formwill create or update the letterhead and navigate back to the letterheads settings tab.Accessibility:- Form controls use proper labels and role semantics provided by the shared Form primitives.- Back and Cancel buttons include descriptive aria-labels where appropriate. * example: | LetterheadEditor / * score: 5 ### component LetterheadListPage * file: src/platform/templates/pages/LetterheadListPage.tsx:37 * kind: component * core: platform * spec: (none) * summary: Page that lists an organization's letterheads (including system templates) and provides UI to create, edit, clone, set a default, and delete letterheads when permitted.Renders responsive sections for organization-specific letterheads and system templates, handles loading and error states, and shows a confirmation dialog for deletions. Actions that modify data display success or error toasts.Accessibility:- Dialogs and buttons use accessible primitives; the delete confirmation is presented in a modal dialog to prevent accidental deletion.- Interactive controls include visible labels and focusable targets. * returns: The page UI for viewing and managing letterheads as a React element. * example: | LetterheadListPage / * score: 5 ### component LetterheadMiniPreview * file: src/platform/templates/components/LetterheadMiniPreview\.tsx:54 * kind: component * core: platform * spec: (none) * summary: Render a compact visual preview of a letterhead layout configuration.Renders a miniature document showing configured logo placement, header elements (organization name, address, contact),an optional header color bar, placeholder content lines, and a compact footer that can include confidentiality textand page numbers. The preview reflects runtime header\_config and footer\_config with sensible defaults. * params: * props — Component props - letterhead: Letterhead data object containing layout and display configuration (header\_config, footer\_config, logo\_position, logo\_url, etc.). - className: Optional utility class names to apply to the outer preview container. * returns: A JSX element representing the small visual letterhead preview. * example: | LetterheadMiniPreview letterhead= header\_config: showLogo: true, barColor: '#1e90ff' , footer\_config: showPageNumbers: true , logo\_position: 'left', logo\_url: '[https://example.com/logo.png](https://example.com/logo.png)' /Accessibility considerations: The component is decorative and uses visual placeholders; the logo image uses an empty attribute to indicate it's non-informative. If the preview conveys semantic meaning in your UI, provide appropriate accessible labeling on the surrounding container (e.g., ) when used in interactive or informative contexts. * score: 4 ### component LetterheadPreview * file: src/platform/templates/components/LetterheadPreview\.tsx:96 * kind: component * core: platform * spec: (none) * summary: Render a scalable preview of a letterhead using the provided partial letterhead configuration.Renders an 8.5x11 preview including an optional top color bar, header (logo, organization name,address, contact), content placeholder (editable or read-only skeleton), and footer (confidentialitytext and page number). Sections render only when their corresponding configuration flags are notexplicitly set to , and missing data is handled gracefully. * params: * props — Component props - letterhead: Partial letterhead data that drives the preview (header/footer configs, logo, organization text, address, contact info, logo sizing/position). Missing fields are ignored. - scale: Scale factor applied to the preview container (default: 1). - className: Additional CSS classes applied to the outer preview container. - isEditing: When , shows an editing placeholder in the content area; otherwise shows a read-only skeleton (default: ). * returns: A React element containing the rendered letterhead preview. * example: | LetterheadPreview letterhead= org\_name\_display: 'Acme Corp', logo\_url: '/logo.png' scale=0.8 isEditing=true/Accessibility considerations:- The logo image includes an attribute and the organization name is rendered as a heading to assist screen reader navigation. * score: 4 ### component LineageVisualization * file: src/platform/org-data-sync/components/LineageVisualization.tsx:47 * kind: component * core: platform * spec: (none) * summary: Utility for lineage visualization. * score: 1 ### component LinkPreview * file: src/platform/messaging/components/LinkPreview\.tsx:28 * kind: component * core: platform * spec: (none) * summary: Compact link preview card for messaging. * score: 2 ### component LivePreviewPanel * file: src/platform/email-signatures/components/LivePreviewPanel.tsx:23 * kind: component * core: platform * spec: (none) * summary: Inline real-time preview of the rendered signature with sample data. * score: 2 ### component LoadDefaultMappingsButton * file: src/platform/settings/pages/data-migration/components/LoadDefaultMappingsButton.tsx:213 * kind: component * core: platform * spec: (none) * summary: Utility for load default mappings button. * score: 1 ### component LockConflictDialog * file: src/platform/wizards/components/LockConflictDialog.tsx:32 * kind: component * core: platform * spec: (none) * summary: Utility for lock conflict dialog. * score: 1 ### component LockScreenOverlay * file: src/platform/auth/app-lock/LockScreenOverlay.tsx:42 * kind: component * core: platform * spec: (none) * summary: Full-screen lock overlay displayed when the app is locked.Covers all content to prevent PHI exposure. * score: 2 ### component LoginAssetsTab * file: src/platform/theming/components/LoginAssetsTab.tsx:71 * kind: component * core: platform * spec: (none) * summary: Login branding assets tab with import/export functionality. * score: 2 ### component LoginBrandPanel * file: src/platform/auth/components/LoginBrandPanel.tsx:33 * kind: component * core: platform * spec: (none) * summary: Renders the logo, wordmark, tagline, and capability pillars for the loginpage. Desktop variant includes the real ; mobile variant is wrapped in so assistive technology reads only the card heading.Accepts optional PF-95 tenant branding to override the default Encore OSpresentation (logo image, welcome text). * score: 2 ### component LogoUpload * file: src/platform/templates/components/LogoUpload.tsx:67 * kind: component * core: platform * spec: (none) * summary: Utility for logo upload. * score: 1 ### component LogoUpload * file: src/platform/templates/components/LogoUploadEnhanced.tsx:121 * kind: component * core: platform * spec: (none) * summary: Enhanced logo upload component with validation and preview. Provides drag-and-drop upload for letterhead logos withformat validation (PNG/JPG only), dimension warnings, and size preview\.SVG files are explicitly rejected with helpful messaging. * score: 2 ### component LogoUploadSection * file: src/platform/email-signatures/components/LogoUploadSection.tsx:32 * kind: component * core: platform * spec: (none) * summary: Drag-and-drop or click-to-upload logo with preview and remove. * score: 2 ### component LookupFieldRenderer * file: src/platform/field-config/components/LookupFieldRenderer.tsx:91 * kind: component * core: platform * spec: (none) * summary: Utility for lookup field renderer. * score: 1 ### component LookupMultiselectField * file: src/platform/forms/components/LookupMultiselectField.tsx:36 * kind: component * core: platform * spec: (none) * summary: Lookup-backed multi-select field for form rendering. * score: 2 ### component LookupSelectField * file: src/platform/forms/components/LookupSelectField.tsx:35 * kind: component * core: platform * spec: (none) * summary: Lookup-backed single-select field for form rendering. * score: 2 ### component MappingEditorDialog * file: src/platform/settings/pages/data-migration/components/MappingEditorDialog.tsx:232 * kind: component * core: platform * spec: (none) * summary: Utility for mapping editor dialog. * score: 1 ### component MappingsTab * file: src/platform/settings/pages/data-migration/components/MappingsTab.tsx:23 * kind: component * core: platform * spec: (none) * summary: Utility for mappings tab. * score: 1 ### component MappingTemplateDialog * file: src/platform/import/components/MappingTemplateDialog.tsx:30 * kind: component * core: platform * spec: (none) * summary: Dialog for saving/loading/deleting mapping templates. * score: 2 ### component MarketplaceEmptyState * file: src/platform/wizards/components/marketplace/MarketplaceEmptyState.tsx:17 * kind: component * core: platform * spec: (none) * summary: Utility for marketplace empty state. * score: 1 ### component MarketplaceFilters * file: src/platform/wizards/components/marketplace/MarketplaceFilters.tsx:59 * kind: component * core: platform * spec: (none) * summary: Utility for marketplace filters. * score: 1 ### component MarketplaceListingCard * file: src/platform/wizards/components/marketplace/MarketplaceListingCard.tsx:28 * kind: component * core: platform * spec: (none) * summary: Utility for marketplace listing card. * score: 1 ### component MarketplaceListingDetailPage * file: src/platform/wizards/pages/MarketplaceListingDetailPage.tsx:30 * kind: component * core: platform * spec: (none) * summary: Utility for marketplace listing detail page. * score: 1 ### component MarketplacePage * file: src/platform/wizards/pages/MarketplacePage.tsx:31 * kind: component * core: platform * spec: (none) * summary: Utility for marketplace page. * score: 1 ### component MarketplacePreviewDialog * file: src/platform/wizards/components/marketplace/MarketplacePreviewDialog.tsx:28 * kind: component * core: platform * spec: (none) * summary: Utility for marketplace preview dialog. * score: 1 ### component MarketplaceRatingStars * file: src/platform/wizards/components/marketplace/MarketplaceRatingStars.tsx:35 * kind: component * core: platform * spec: (none) * summary: Utility for marketplace rating stars. * score: 1 ### component MarketplaceReviewsList * file: src/platform/wizards/components/marketplace/MarketplaceReviewsList.tsx:29 * kind: component * core: platform * spec: (none) * summary: Utility for marketplace reviews list. * score: 1 ### component MatrixTable * file: src/platform/table-v2/components/MatrixTable.tsx:74 * kind: component * core: platform * spec: (none) * summary: Standalone matrix/pivot table with sticky row headers. * score: 5 ### component MemberManageSheet * file: src/platform/messaging/components/MemberManageSheet.tsx:37 * kind: component * core: platform * spec: (none) * summary: Utility for member manage sheet. * score: 1 ### component MessageAttachment * file: src/platform/messaging/components/MessageAttachment.tsx:39 * kind: component * core: platform * spec: (none) * summary: Renders attachment preview or download link for non-text messages with a file. * score: 2 ### component MessageBubble * file: src/platform/messaging/components/MessageBubble.tsx:46 * kind: component * core: platform * spec: (none) * summary: Utility for message bubble. * score: 1 ### component MessageComposer * file: src/platform/messaging/components/MessageComposer.tsx:44 * kind: component * core: platform * spec: (none) * summary: Utility for message composer. * score: 1 ### component MessageContent * file: src/platform/messaging/components/MessageContent.tsx:102 * kind: component * core: platform * spec: (none) * summary: Utility for message content. * score: 1 ### component MessageSearchDialog * file: src/platform/messaging/components/MessageSearchDialog.tsx:24 * kind: component * core: platform * spec: (none) * summary: Utility for message search dialog. * score: 1 ### component MessageThread * file: src/platform/messaging/components/MessageThread.tsx:68 * kind: component * core: platform * spec: (none) * summary: Utility for message thread. * score: 1 ### component MessagingPage * file: src/platform/messaging/pages/MessagingPage.tsx:12 * kind: component * core: platform * spec: (none) * summary: Utility for messaging page. * score: 1 ### component MetricChart * file: src/platform/health/components/MetricChart.tsx:41 * kind: component * core: platform * spec: (none) * summary: Utility for metric chart. * score: 1 ### component MfaChallenge * file: src/platform/auth/components/MfaChallenge.tsx:30 * kind: component * core: platform * spec: (none) * summary: MFA challenge at login. Supports TOTP code entry and WebAuthn passkeyverification, depending on which verified factors the account has. * score: 2 ### component MfaEnrollment * file: src/platform/auth/components/MfaEnrollment.tsx:32 * kind: component * core: platform * spec: (none) * summary: MFA enrollment surface: TOTP authenticator app + WebAuthn passkeys. * score: 2 ### component MigrateWizardDialog * file: src/platform/wizards/components/MigrateWizardDialog.tsx:39 * kind: component * core: platform * spec: (none) * summary: Utility for migrate wizard dialog. * score: 1 ### component MigrationStepper * file: src/platform/settings/pages/data-migration/components/MigrationStepper.tsx:32 * kind: component * core: platform * spec: (none) * summary: Guided stepper banner for data migration workflow. * score: 2 ### component MinimalRichTextField * file: src/platform/forms/components/fields/RichTextField.tsx:540 * kind: component * core: platform * spec: (none) * summary: Minimal rich text field without toolbarUseful for simple formatting needs * score: 2 ### component MobileBreadcrumbs * file: src/platform/navigation/MobileBreadcrumbs.tsx:69 * kind: component * core: platform * spec: (none) * summary: Utility for mobile breadcrumbs. * score: 1 ### component MobileCarouselSkeleton * file: src/platform/dashboard/components/MobileCarouselSkeleton.tsx:6 * kind: component * core: platform * spec: (none) * summary: Loading skeleton that matches the carousel layout on mobile * score: 2 ### component MobileHomeHero * file: src/platform/dashboard/components/mobile/MobileHomeHero.tsx:43 * kind: component * core: platform * spec: (none) * summary: Renders the mobile-only Focus Bento hero for the platform Home dashboard. * score: 2 ### component MobileModuleIcon * file: src/platform/modules/MobileModuleIcon.tsx:24 * kind: component * core: platform * spec: (none) * summary: Utility for mobile module icon. * score: 1 ### component MobileModuleLauncherButton * file: src/platform/navigation/components/MobileModuleLauncherButton.tsx:27 * kind: component * core: platform * spec: (none) * summary: Utility for mobile module launcher button. * score: 1 ### component MobileModuleNavStrip * file: src/platform/navigation/components/MobileModuleNavStripImpl.tsx:23 * kind: component * core: platform * spec: (none) * summary: Horizontally scrollable strip of module section chips below MobileHeader.Auto-scrolls to keep the active chip visible. * score: 2 ### component MobileModuleSwitcher * file: src/platform/modules/MobileModuleSwitcher.tsx:19 * kind: component * core: platform * spec: (none) * summary: Utility for mobile module switcher. * score: 1 ### component MobileNav * file: src/platform/navigation/MobileNav.tsx:53 * kind: component * core: platform * spec: (none) * summary: Utility for mobile nav. * score: 1 ### component MobileNavDockSheetContent * file: src/platform/navigation/MobileNavDockSheetContent.tsx:178 * kind: component * core: platform * spec: (none) * summary: Utility for mobile nav dock sheet content. * score: 1 ### component MobileOrgSwitcher * file: src/platform/navigation/MobileOrgSwitcher.tsx:18 * kind: component * core: platform * spec: (none) * summary: Utility for mobile org switcher. * score: 1 ### component MobilePullToRefresh * file: src/platform/gestures/components/MobilePullToRefresh.tsx:27 * kind: component * core: platform * spec: (none) * summary: MobilePullToRefresh wraps content with pull-to-refresh only on mobile/touch devices * score: 5 ### component MobileSizeSelector * file: src/platform/dashboard/components/MobileSizeSelector.tsx:28 * kind: component * core: platform * spec: (none) * summary: Utility for mobile size selector. * score: 1 ### component MobileWidgetCarousel * file: src/platform/dashboard/components/MobileWidgetCarousel.tsx:85 * kind: component * core: platform * spec: (none) * summary: Swipeable widget carousel for mobile devicesShows one widget at a time with dot indicatorsSupports half-width widgets (2 per slide) and edit mode gestures * score: 2 ### component ModuleCard * file: src/platform/modules/ModuleCard.tsx:23 * kind: component * core: platform * spec: (none) * summary: Utility for module card. * score: 1 ### component ModuleConfigurationSection * file: src/platform/settings/components/ModuleConfigurationSection.tsx:25 * kind: component * core: platform * spec: (none) * summary: Utility for module configuration section. * score: 1 ### component ModuleCoverageTable * file: src/platform/health/components/ModuleCoverageTable.tsx:35 * kind: component * core: platform * spec: (none) * summary: Utility for module coverage table. * score: 1 ### component ModuleDashboard * file: src/platform/dashboard/components/ModuleDashboard.tsx:43 * kind: component * core: platform * spec: (none) * summary: Utility for module dashboard. * score: 1 ### component ModuleFormsPage * file: src/platform/forms/ModuleFormsPage.tsx:46 * kind: component * core: platform * spec: (none) * summary: Utility for module forms page. * score: 1 ### component ModuleHeader * file: src/platform/navigation/components/shared/ModuleHeader.tsx:21 * kind: component * core: platform * spec: (none) * summary: Utility for module header. * score: 1 ### component ModuleList * file: src/platform/navigation/components/ModuleList.tsx:17 * kind: component * core: platform * spec: (none) * summary: Lists all accessible modules in the sidebar.Groups modules into "Modules" (domain cores) and "Platform" sections. * score: 2 ### component ModuleOverridesSection * file: src/platform/provisioning/components/ModuleOverridesSection.tsx:42 * kind: component * core: platform * spec: (none) * summary: Collapsible module/settings override controls. Self-contained: holds the workingselection state and reports the diff-from-template payload upward via . * score: 2 ### component ModulePermissionGroup * file: src/platform/permissions/components/ModulePermissionGroup.tsx:26 * kind: component * core: platform * spec: (none) * summary: Utility for module permission group. * score: 1 ### component ModulePermissionsPage * file: src/platform/permissions/pages/ModulePermissionsPage.tsx:99 * kind: component * core: platform * spec: (none) * summary: Utility for module permissions page. * score: 1 ### component ModulePresetsManager * file: src/platform/settings/components/ModulePresetsManager.tsx:27 * kind: component * core: platform * spec: (none) * summary: Utility for module presets manager. * score: 1 ### component ModuleSettingsCard * file: src/platform/settings/components/ModuleSettingsCard.tsx:45 * kind: component * core: platform * spec: (none) * summary: Utility for module settings card. * score: 1 ### component ModuleSwitcher * file: src/platform/navigation/components/ModuleSwitcher.tsx:40 * kind: component * core: platform * spec: (none) * summary: Renders a module switcher dropdown that shows the current module (and sub-module when applicable) and lets the user navigate between modules and sibling sub-modules.Displays the current module icon and name in the trigger; when the app is on a sub-module route it shows a sub-module indicator and a quick-switch list of sibling sub-modules. The menu groups available modules into "Modules" (domain) and "Platform" sections and highlights the active selection. * params: * props — This component does not accept any props; it reads navigation and module access from hooks. * example: | ModuleSwitcher /Accessibility:- The dropdown trigger is a focusable button and the dropdown content is keyboard navigable via the underlying DropdownMenu components.- Visual active and focus styles are provided; ensure color contrast remains sufficient for the applied design tokens. * score: 4 ### component ModuleWizardRenderer * file: src/platform/wizards/components/ModuleWizardRenderer.tsx:73 * kind: component * core: platform * spec: (none) * summary: Utility for module wizard renderer. * score: 1 ### component MultiPageFormRenderer * file: src/platform/forms/MultiPageFormRenderer.tsx:38 * kind: component * core: platform * spec: (none) * summary: Utility for multi page form renderer. * score: 1 ### component MyTasksPage * file: src/platform/tasks/pages/MyTasksPage.tsx:40 * kind: component * core: platform * spec: (none) * summary: Utility for my tasks page. * score: 1 ### component NavGroup * file: src/platform/navigation/primitives/NavGroup.tsx:29 * kind: component * core: platform * spec: (none) * summary: Canonical collapsible nav group: an optional overview link plus a list ofNavRow items, with controlled/uncontrolled open state, show-moretruncation, and keyboard support. Used across the sidebar surfaces. * score: 2 ### component NavGroupSection * file: src/platform/navigation/components/NavGroupSection.tsx:26 * kind: component * core: platform * spec: (none) * summary: Renders a section header divider in the sidebar navigation.Used to visually group related nav groups. * score: 2 ### component NavigationProvider * file: src/platform/navigation/NavigationProvider.tsx:14 * kind: component * core: platform * spec: (none) * summary: Provides navigation context to the entire app.Combines navigation state management with route-based module detection. * score: 2 ### component NavItem * file: src/platform/navigation/components/shared/NavItem.tsx:29 * kind: component * core: platform * spec: (none) * summary: Utility for nav item. * score: 1 ### component NavModeProvider * file: src/platform/navigation/NavModeContext.tsx:40 * kind: component * core: platform * spec: (none) * summary: Provider for sidebar open/collapsed state. * score: 2 ### component NavRow * file: src/platform/navigation/primitives/NavRow\.tsx:33 * kind: component * core: platform * spec: (none) * summary: Canonical desktop nav-item row. The single source of truth for nav rowgeometry, focus ring, touch target, active state, and badge. This is thecanonical row primitive and applies the unified active state via; other sidebar surfaces are migrated to it in later phases. * score: 2 ### component NavSkeleton * file: src/platform/navigation/components/NavSkeleton.tsx:18 * kind: component * core: platform * spec: (none) * summary: Utility for nav skeleton. * score: 1 ### component NavTelemetryPage * file: src/platform/navigation/telemetry/NavTelemetryPage.tsx:267 * kind: component * core: platform * spec: (none) * summary: NavTelemetryPage — org-admin entry point for navigation analytics.Wrapped in ; non-admins seethe standard access-denied screen. * score: 2 ### component NestedCellRenderer * file: src/platform/table-v2/components/NestedCellRenderer.tsx:35 * kind: component * core: platform * spec: (none) * summary: Renders nested cell values: arrays as badges, objects as key-value lists. * score: 5 ### component NewProvisioningRequestDialog * file: src/platform/provisioning/components/NewProvisioningRequestDialog.tsx:52 * kind: component * core: platform * spec: (none) * summary: Utility for new provisioning request dialog. * score: 1 ### component NodePalette * file: src/platform/workflow/components/NodePalette.tsx:24 * kind: component * core: platform * spec: (none) * summary: Collapsible sidebar with draggable node types for the diagram builder. * score: 2 ### component NoOrganizationState * file: src/platform/dashboard/components/NoOrganizationState.tsx:15 * kind: component * core: platform * spec: (none) * summary: Renders a prompt to select or create an organization when none is active. * score: 2 ### component NotesStep * file: src/platform/telephony/components/quick-disposition-steps/NotesStep.tsx:26 * kind: component * core: platform * spec: (none) * summary: Optional notes step with snippet chips for common phrases.Clicking a chip appends text to the textarea. * score: 2 ### component NotificationCenter * file: src/platform/notifications/NotificationCenter.tsx:166 * kind: component * core: platform * spec: (none) * summary: Utility for notification center. * score: 1 ### component NotificationFilters * file: src/platform/notifications/components/NotificationFilters.tsx:22 * kind: component * core: platform * spec: (none) * summary: Utility for notification filters. * score: 1 ### component NotificationGroupItem * file: src/platform/notifications/components/NotificationGroup.tsx:22 * kind: component * core: platform * spec: (none) * summary: Utility for notification group item. * score: 1 ### component NotificationItem * file: src/platform/notifications/NotificationItem.tsx:25 * kind: component * core: platform * spec: (none) * summary: Utility for notification item. * score: 1 ### component NotificationItemSwipeable * file: src/platform/notifications/components/NotificationItemSwipeable.tsx:37 * kind: component * core: platform * spec: (none) * summary: Renders a wrapped with mobile swipe actions:left → toggle read/unread, right → delete. * score: 2 ### component NotificationPreferencesPage * file: src/platform/notifications/NotificationPreferencesPage.tsx:114 * kind: component * core: platform * spec: (none) * summary: Utility for notification preferences page. * score: 1 ### component NotificationsPage * file: src/platform/notifications/NotificationsPage.tsx:24 * kind: component * core: platform * spec: (none) * summary: Utility for notifications page. * score: 1 ### component NotificationTestPage * file: src/platform/notifications/NotificationTestPage.tsx:18 * kind: component * core: platform * spec: (none) * summary: Utility for notification test page. * score: 1 ### component NumberField * file: src/platform/forms/components/fields/NumberField.tsx:26 * kind: component * core: platform * spec: (none) * summary: Utility for number field. * score: 1 ### component OAuthConnectButton * file: src/platform/integrations/components/OAuthConnectButton.tsx:25 * kind: component * core: platform * spec: (none) * summary: Utility for oauth connect button. * score: 1 ### component OAuthProviderList * file: src/platform/integrations/components/OAuthProviderList.tsx:33 * kind: component * core: platform * spec: (none) * summary: Utility for oauth provider list. * score: 1 ### component OAuthStatusBadge * file: src/platform/integrations/components/OAuthStatusBadge.tsx:21 * kind: component * core: platform * spec: (none) * summary: Utility for oauth status badge. * score: 1 ### component ObjectCard * file: src/platform/data-manager/components/ObjectCard.tsx:31 * kind: component * core: platform * spec: (none) * summary: Utility for object card. * score: 1 ### component ObjectDetailPage * file: src/platform/data-manager/pages/ObjectDetailPage.tsx:58 * kind: component * core: platform * spec: (none) * summary: Utility for object detail page. * score: 1 ### component ObjectPermissionMatrix * file: src/platform/data-manager/components/ObjectPermissionMatrix.tsx:44 * kind: component * core: platform * spec: (none) * summary: Renders a permissions matrix table that displays role labels, CRUD checkboxes, and a site-scope selector for each role.The component expects rows to be pre-ordered by the parent; it does not perform internal sorting. System roles (determined by or ) are marked with a "System" badge and all controls for those rows are disabled. * params: * props — Component props - permissions: Array of permission rows to render; each row must include role, roleLabel, isSystemRole (optional), boolean flags (, , , ) and . - onPermissionChange: Callback invoked when a permission field or site scope changes. Called with where is one of . - disabled: When , disables all interactive controls in the matrix (default: ).Accessibility considerations:- Controls are standard form elements (Checkbox, Select) and rely on their underlying accessible implementations.- System roles are indicated with a visual badge and have their inputs disabled to prevent interaction. * returns: A table-like JSX element showing roles, CRUD permission checkboxes, and a site-scope dropdown for each provided permission row. * example: | ObjectPermissionMatrix permissions=\[ role: 'editor', roleLabel: 'Editor', can\_view: true, can\_create: false, can\_edit: true, can\_delete: false, site\_scope: 'assigned' ] onPermissionChange=(role, field, value) = handleChange(role, field, value)/ * score: 4 ### component ObjectPermissionsTab * file: src/platform/data-manager/components/ObjectPermissionsTab.tsx:87 * kind: component * core: platform * spec: (none) * summary: Renders the Object Permissions tab allowing administrators to view, edit, reset, and save object- and field-level permissions for a given object.Displays an object-level permission matrix and a field-level permissions section populated from dynamic role and field data; exposes controls to reset unsaved edits or persist changes. * params: * props — Component props - objectApiName: The API name of the object whose permissions are being managed (used for loading and saving permission records). - objectDisplayName: Human-readable object name used in UI text and descriptions. * example: | ObjectPermissionsTab objectApiName="invoice" objectDisplayName="Invoice"/Accessibility considerations:- Interactive controls provided by the permission matrix and field section should be reachable via keyboard and announce their state to assistive technologies.- Ensure any custom cell controls used inside the matrix or field list include appropriate ARIA labels and focus outlines. * score: 4 ### component ObjectsTable * file: src/platform/data-manager/components/ObjectsTable.tsx:34 * kind: component * core: platform * spec: (none) * summary: Utility for objects table. * score: 1 ### component OccupancyRateWidget * file: src/platform/dashboard/widgets/OccupancyRateWidget.tsx:41 * kind: component * core: platform * spec: (none) * summary: Utility for occupancy rate widget. * score: 1 ### component OnboardingStepContent * file: src/platform/import/components/OnboardingStepContent.tsx:38 * kind: component * core: platform * spec: (none) * summary: Self-contained import flow for a single onboarding step. * score: 2 ### component OnboardingVocabularyStep * file: src/platform/import/components/OnboardingVocabularyStep.tsx:31 * kind: component * core: platform * spec: (none) * summary: Renders the "Review Vocabularies" onboarding step.Read-only — links out to the full picklist settings page for editing. * score: 2 ### component OnboardingWizardPage * file: src/platform/import/pages/OnboardingWizardPage.tsx:70 * kind: component * core: platform * spec: (none) * summary: Onboarding wizard page with timeline layout and session persistence. * score: 2 ### component OnlineStatusBadge * file: src/platform/messaging/components/OnlineStatusBadge.tsx:17 * kind: component * core: platform * spec: (none) * summary: Utility for online status badge. * score: 1 ### component OOOBadge * file: src/platform/integrations/components/OOOBadge.tsx:21 * kind: component * core: platform * spec: (none) * summary: Utility for ooobadge. * score: 1 ### component OperatorSelect * file: src/platform/conditional-logic/components/builder/OperatorSelect.tsx:47 * kind: component * core: platform * spec: (none) * summary: Utility for operator select. * score: 1 ### component OrganizationBrandingSettings * file: src/platform/organizations/components/OrganizationBrandingSettings.tsx:23 * kind: component * core: platform * spec: (none) * summary: Utility for organization branding settings. * score: 1 ### component OrganizationProvider * file: src/platform/organizations/OrganizationContext.tsx:109 * kind: component * core: platform * spec: (none) * summary: Utility for organization provider. * score: 1 ### component OrganizationSelector * file: src/platform/wizards/components/marketplace/OrganizationSelector.tsx:31 * kind: component * core: platform * spec: (none) * summary: Utility for organization selector. * score: 1 ### component OrganizationSettings * file: src/platform/organizations/OrganizationSettings.tsx:50 * kind: component * core: platform * spec: (none) * summary: Utility for organization settings. * score: 1 ### component OrganizationSetupWizardPage * file: src/platform/setup/components/OrganizationSetupWizardPage.tsx:1050 * kind: component * core: platform * spec: (none) * summary: Utility for organization setup wizard page. * score: 1 ### component OrganizationSignatureEditor * file: src/platform/email-signatures/components/OrganizationSignatureEditor.tsx:37 * kind: component * core: platform * spec: (none) * summary: Full editor for the organization's default email signature. * score: 2 ### component OrganizationSignatureSettingsPage * file: src/platform/email-signatures/pages/OrganizationSignatureSettingsPage.tsx:18 * kind: component * core: platform * spec: (none) * summary: Admin settings page for managing the organization's default email signature. * score: 2 ### component OrgDashboardDefaultsDialog * file: src/platform/dashboard/components/OrgDashboardDefaultsDialog.tsx:28 * kind: component * core: platform * spec: (none) * summary: Org admin dialog for default dashboard widgets and quick action visibility (JSON on ). * score: 2 ### component OrgProfileSeeder * file: src/platform/knowledge/components/OrgProfileSeeder.tsx:61 * kind: component * core: platform * spec: (none) * summary: Guided org\_profile authoring surface (import-or-author → edit → publish).Renders the current published org\_profile narrative (if any) plus a two-branch authoringflow. The import branch opens and seeds a draft linked by; the author branch starts from blank (or ). Eitherway the admin edits the title/summary/content, then publishes — at which point theserver-side supersede trigger archives the prior published profile and PF-60 embeds thenew one. The category is fixed; no category picker is shown. * params: * props — * score: 2 ### component OrgSiteSwitcher * file: src/platform/organizations/OrgSiteSwitcher.tsx:19 * kind: component * core: platform * spec: (none) * summary: Utility for org site switcher. * score: 1 ### component OrgSlugProvider * file: src/platform/organizations/hooks/OrgSlugProvider.tsx:18 * kind: component * core: platform * spec: (none) * summary: Provider that wraps children inside OrgSlugRoute to enable org-aware links. * score: 2 ### component OrgSlugRoute * file: src/platform/organizations/routing/OrgSlugRoute.tsx:22 * kind: component * core: platform * spec: (none) * summary: Utility for org slug route. * score: 1 ### component OrgSwitcherContent * file: src/platform/navigation/components/SidebarOrgSwitcher.tsx:128 * kind: component * core: platform * spec: (none) * summary: Utility for org switcher content. * score: 1 ### component OutboundWebhookCard * file: src/platform/integrations/components/OutboundWebhookCard.tsx:19 * kind: component * core: platform * spec: (none) * summary: Utility for outbound webhook card. * score: 1 ### component OutboundWebhookForm * file: src/platform/integrations/components/OutboundWebhookForm.tsx:27 * kind: component * core: platform * spec: (none) * summary: Utility for outbound webhook form. * score: 1 ### component OutboundWebhookList * file: src/platform/integrations/components/OutboundWebhookList.tsx:29 * kind: component * core: platform * spec: (none) * summary: Utility for outbound webhook list. * score: 1 ### component OverrideEditor * file: src/platform/jurisdiction/components/OverrideEditor.tsx:123 * kind: component * core: platform * spec: (none) * summary: Rule pack override editor with tabs (desktop) and accordion (mobile). * score: 2 ### component OverrideEditorSkeleton * file: src/platform/jurisdiction/components/OverrideEditor.tsx:235 * kind: component * core: platform * spec: (none) * summary: Skeleton loading state for the override editor (3 rows per section). * score: 2 ### component PageAccessDenied * file: src/platform/forms/components/PageAccessDenied.tsx:20 * kind: component * core: platform * spec: (none) * summary: Displays a user-friendly message when access to a form page is denied. * score: 2 ### component PageNavigationControls * file: src/platform/forms/components/PageNavigationControls.tsx:27 * kind: component * core: platform * spec: (none) * summary: Utility for page navigation controls. * score: 1 ### component PageSelector * file: src/platform/forms/components/PageSelector.tsx:22 * kind: component * core: platform * spec: (none) * summary: Utility for page selector. * score: 1 ### component ParticipantsPane * file: src/platform/cowork/components/ParticipantsPane.tsx:43 * kind: component * core: platform * spec: (none) * summary: ParticipantsPane — right column of the Cowork workspace showing who ispresent, which agents are participating, and (for manage holders) controlsto add or remove agent participants. * score: 2 ### component PasskeyManagementSection * file: src/platform/auth/passkey/PasskeyManagementSection.tsx:26 * kind: component * core: platform * spec: (none) * summary: Settings card for managing passwordless sign-in passkeys. * score: 2 ### component PasskeySignInButton * file: src/platform/auth/passkey/PasskeySignInButton.tsx:24 * kind: component * core: platform * spec: (none) * summary: Passwordless passkey sign-in trigger. * score: 2 ### component PasswordStrengthIndicator * file: src/platform/auth/components/PasswordStrengthIndicator.tsx:20 * kind: component * core: platform * spec: (none) * summary: Visual password strength indicator with requirement checklist. * score: 2 ### component PdfPreviewPanel * file: src/platform/templates/components/PdfPreviewPanel.tsx:161 * kind: component * core: platform * spec: (none) * summary: Renders a preview of a document with letterhead styling. * score: 2 ### component PDFViewer * file: src/platform/documents/viewers/PDFViewer.tsx:24 * kind: component * core: platform * spec: (none) * summary: PDF Viewer component using react-pdf.This component is lazy-loaded to reduce initial bundle size.The react-pdf library (\~1.6MB) only loads when viewing PDFs. * score: 2 ### component PeakUsageCard * file: src/platform/health/components/PeakUsageCard.tsx:23 * kind: component * core: platform * spec: (none) * summary: Utility for peak usage card. * score: 1 ### component PendingActionsWidget * file: src/platform/dashboard/widgets/PendingActionsWidget.tsx:23 * kind: component * core: platform * spec: (none) * summary: Render the Pending Actions dashboard widget using the unified inbox countsso totals always match the inbox page. * score: 2 ### component PendingActivationPage * file: src/platform/auth/PendingActivationPage.tsx:27 * kind: component * core: platform * spec: (none) * summary: Full-page view for users awaiting admin activation approval. * score: 2 ### component PendingApprovalsCard * file: src/platform/documents/components/PendingApprovalsCard.tsx:15 * kind: component * core: platform * spec: (none) * summary: Utility for pending approvals card. * score: 1 ### component PendingApprovalsPage * file: src/platform/documents/pages/PendingApprovalsPage.tsx:24 * kind: component * core: platform * spec: (none) * summary: Utility for pending approvals page. * score: 1 ### component PendingSubmissionsWidget * file: src/platform/dashboard/widgets/PendingSubmissionsWidget.tsx:19 * kind: component * core: platform * spec: (none) * summary: Utility for pending submissions widget. * score: 1 ### component PeopleDirectoryDialog * file: src/platform/messaging/components/PeopleDirectoryDialog.tsx:26 * kind: component * core: platform * spec: (none) * summary: Searchable directory showing all org members with online status and DM action. * score: 2 ### component PeoplePicker * file: src/platform/messaging/components/PeoplePicker.tsx:29 * kind: component * core: platform * spec: (none) * summary: Search-as-you-type people picker with avatar, status, and chip display. * score: 2 ### component PerformanceReportCard * file: src/platform/health/components/PerformanceReportCard.tsx:34 * kind: component * core: platform * spec: (none) * summary: Utility for performance report card. * score: 1 ### component PeriodComparisonSelector * file: src/platform/health/components/PeriodComparisonSelector.tsx:28 * kind: component * core: platform * spec: (none) * summary: Utility for period comparison selector. * score: 1 ### component PermanentDeleteDialog * file: src/platform/admin/components/PermanentDeleteDialog.tsx:22 * kind: component * core: platform * spec: (none) * summary: Utility for permanent delete dialog. * score: 1 ### component PermissionAssignmentMatrix * file: src/platform/permissions/components/PermissionAssignmentMatrix.tsx:28 * kind: component * core: platform * spec: (none) * summary: Utility for permission assignment matrix. * score: 1 ### component PermissionGate * file: src/platform/permissions/components/PermissionGate.tsx:66 * kind: component * core: platform * spec: (none) * summary: Gate component for conditionally rendering UI based on permissions * example: | // Single permissionPermissionGate permission="hr.employees.view" EmployeeList //PermissionGate // Multiple permissions (any)PermissionGate permission=\["hr.employees.view", "hr.employees.manage"] EmployeeActions //PermissionGate // Multiple permissions (all required)PermissionGate permission=\["hr.employees.view", "hr.employees.edit"] requireAll fallback=DisabledButtonNo Access/DisabledButton EditButton //PermissionGate * score: 5 ### component PermissionGateSkeleton * file: src/platform/permissions/components/PermissionGate.tsx:102 * kind: component * core: platform * spec: (none) * summary: Skeleton loading state for permission-gated content * score: 2 ### component PermissionMatrix * file: src/platform/users/PermissionMatrix.tsx:122 * kind: component * core: platform * spec: (none) * summary: Utility for permission matrix. * score: 1 ### component PermissionRow * file: src/platform/permissions/components/PermissionRow\.tsx:22 * kind: component * core: platform * spec: (none) * summary: Utility for permission row. * score: 1 ### component PermissionSearch * file: src/platform/permissions/components/PermissionSearch.tsx:28 * kind: component * core: platform * spec: (none) * summary: Utility for permission search. * score: 1 ### component PermissionsManager * file: src/platform/documents/PermissionsManager.tsx:44 * kind: component * core: platform * spec: (none) * summary: Utility for permissions manager. * score: 1 ### component PermissionsOverviewPage * file: src/platform/permissions/pages/PermissionsOverviewPage.tsx:195 * kind: component * core: platform * spec: (none) * summary: Utility for permissions overview page. * score: 1 ### component PermissionsV2Toggle * file: src/platform/organizations/components/PermissionsV2Toggle.tsx:21 * kind: component * core: platform * spec: (none) * summary: Utility for permissions v2 toggle. * score: 1 ### component PhoneField * file: src/platform/forms/components/fields/PhoneField.tsx:23 * kind: component * core: platform * spec: (none) * summary: Utility for phone field. * score: 1 ### component PhoneVerification * file: src/platform/auth/components/PhoneVerification.tsx:32 * kind: component * core: platform * spec: (none) * summary: Utility for phone verification. * score: 1 ### component PicklistBadge * file: src/platform/picklists/components/PicklistBadge.tsx:74 * kind: component * core: platform * spec: (none) * summary: Utility for picklist badge. * score: 1 ### component PicklistColorPicker * file: src/platform/picklists/components/PicklistColorPicker.tsx:41 * kind: component * core: platform * spec: (none) * summary: Utility for picklist color picker. * score: 1 ### component PicklistDetailPage * file: src/platform/picklists/pages/PicklistDetailPage.tsx:35 * kind: component * core: platform * spec: (none) * summary: Utility for picklist detail page. * score: 1 ### component PicklistExportDialog * file: src/platform/picklists/components/PicklistExportDialog.tsx:23 * kind: component * core: platform * spec: (none) * summary: Utility for picklist export dialog. * score: 1 ### component PicklistForm * file: src/platform/picklists/components/PicklistForm.tsx:45 * kind: component * core: platform * spec: (none) * summary: Utility for picklist form. * score: 1 ### component PicklistImportDialog * file: src/platform/picklists/components/PicklistImportDialog.tsx:32 * kind: component * core: platform * spec: (none) * summary: Utility for picklist import dialog. * score: 1 ### component PicklistItemForm * file: src/platform/picklists/components/PicklistItemForm.tsx:78 * kind: component * core: platform * spec: (none) * summary: Utility for picklist item form. * score: 1 ### component PicklistItemsEditor * file: src/platform/picklists/components/PicklistItemsEditor.tsx:108 * kind: component * core: platform * spec: (none) * summary: Utility for picklist items editor. * score: 1 ### component PicklistMultiselectField * file: src/platform/forms/components/fields/PicklistMultiselectField.tsx:34 * kind: component * core: platform * spec: (none) * summary: Picklist-backed multi-select field for form rendering. * score: 2 ### component PicklistRadioField * file: src/platform/forms/components/fields/PicklistRadioField.tsx:28 * kind: component * core: platform * spec: (none) * summary: Picklist-backed radio field for form rendering. * score: 2 ### component PicklistSelector * file: src/platform/picklists/components/PicklistSelector.tsx:30 * kind: component * core: platform * spec: (none) * summary: Utility for picklist selector. * score: 1 ### component PicklistSelectRenderer * file: src/platform/field-config/components/PicklistSelectRenderer.tsx:21 * kind: component * core: platform * spec: (none) * summary: Utility for picklist select renderer. * score: 1 ### component PicklistsGroupedTable * file: src/platform/picklists/components/PicklistsGroupedTable.tsx:36 * kind: component * core: platform * spec: (none) * summary: Renders picklists grouped by category with collapsible sections. Fetches the org's picklists via the shared hook(optionally narrowed by a client-side search box), groups them by in order, and renders each non-empty group as acollapsible section. Each picklist row links to its detail page. * score: 2 ### component PicklistsPage * file: src/platform/picklists/pages/PicklistsPage.tsx:27 * kind: component * core: platform * spec: (none) * summary: Utility for picklists page. * score: 1 ### component PicklistsTable * file: src/platform/picklists/components/PicklistsTable.tsx:23 * kind: component * core: platform * spec: (none) * summary: Utility for picklists table. * score: 1 ### component PicklistTemplateLibrary * file: src/platform/picklists/components/PicklistTemplateLibrary.tsx:97 * kind: component * core: platform * spec: (none) * summary: Picklist template library with DB-driven platform defaults and static starter examples. * score: 2 ### component PicklistTemplatePreviewDialog * file: src/platform/picklists/components/PicklistTemplatePreviewDialog.tsx:21 * kind: component * core: platform * spec: (none) * summary: Utility for picklist template preview dialog. * score: 1 ### component PieChartView * file: src/platform/reports/components/charts/PieChartView\.tsx:59 * kind: component * core: platform * spec: (none) * summary: Utility for pie chart view. * score: 1 ### component PinnedSection * file: src/platform/navigation/components/PinnedSection.tsx:105 * kind: component * core: platform * spec: (none) * summary: Utility for pinned section. * score: 1 ### component PinSetupDialog * file: src/platform/auth/app-lock/PinSetupDialog.tsx:33 * kind: component * core: platform * spec: (none) * summary: Dialog for setting or changing the app lock PIN. * score: 2 ### component PlatformHomePanel * file: src/platform/navigation/components/PlatformHomePanel.tsx:61 * kind: component * core: platform * spec: (none) * summary: Platform-home panel: shown in ContextualPanel when the user is NOT inside acore module. Renders the top-level platform routes (Dashboard, Inbox, Reports,Documents) plus the Settings section with admin-gated groups.Data is ported faithfully from the useMemo in AppSidebar(lines \~177–339). Task 5 will delete that copy once ContextualPanel is wiredinto AppSidebar. * score: 2 ### component PlatformModulesPage * file: src/platform/settings/pages/PlatformModulesPage.tsx:16 * kind: component * core: platform * spec: (none) * summary: Utility for platform modules page. * score: 1 ### component PreferencesForm * file: src/platform/users/PreferencesForm.tsx:30 * kind: component * core: platform * spec: (none) * summary: Utility for preferences form. * score: 1 ### component PrefillSummary * file: src/platform/forms/components/prefill/PrefillSummary.tsx:31 * kind: component * core: platform * spec: (none) * summary: Collapsible summary panel showing all prefilled fields and their sources. * score: 2 ### component PresenceAvatars * file: src/platform/realtime/components/PresenceAvatars.tsx:41 * kind: component * core: platform * spec: (none) * summary: Utility for presence avatars. * score: 1 ### component PresenceBadge * file: src/platform/integrations/components/PresenceBadge.tsx:71 * kind: component * core: platform * spec: (none) * summary: Renders a Teams presence indicator dot, with optional tooltip details. * score: 2 ### component PresetCard * file: src/platform/settings/components/PresetCard.tsx:42 * kind: component * core: platform * spec: (none) * summary: Utility for preset card. * score: 1 ### component PresetEditorDialog * file: src/platform/settings/components/PresetEditorDialog.tsx:33 * kind: component * core: platform * spec: (none) * summary: Utility for preset editor dialog. * score: 1 ### component PrioritySummaryCard * file: src/platform/dashboard/components/PrioritySummaryCard.tsx:19 * kind: component * core: platform * spec: (none) * summary: Utility for priority summary card. * score: 1 ### component ProcessCard * file: src/platform/automation/components/ProcessCard.tsx:32 * kind: component * core: platform * spec: (none) * summary: Renders a card for a business process with health gauge and metadata. * score: 2 ### component ProcessHealthBreakdown * file: src/platform/automation/components/ProcessHealthBreakdown.tsx:27 * kind: component * core: platform * spec: (none) * summary: Renders a breakdown of the 4 health score components. * score: 2 ### component ProcessHealthGauge * file: src/platform/automation/components/ProcessHealthGauge.tsx:41 * kind: component * core: platform * spec: (none) * summary: Renders a circular health score gauge with semantic color coding. * score: 2 ### component ProcessHealthTrendChart * file: src/platform/automation/components/ProcessHealthTrendChart.tsx:22 * kind: component * core: platform * spec: (none) * summary: Displays a line chart of health scores over the past 30 days. * score: 2 ### component ProcessImpactGraph * file: src/platform/automation/components/ProcessImpactGraph.tsx:43 * kind: component * core: platform * spec: (none) * summary: Visual impact graph for a business process.Shows the process as a central node connected to linked rules and workflows. * score: 2 ### component ProcessLinkedRules * file: src/platform/automation/components/ProcessLinkedRules.tsx:19 * kind: component * core: platform * spec: (none) * summary: Displays linked automation rules count and metadata. * score: 2 ### component ProcessLinkedWorkflows * file: src/platform/automation/components/ProcessLinkedWorkflows.tsx:19 * kind: component * core: platform * spec: (none) * summary: Displays linked workflow definitions count and metadata. * score: 2 ### component ProcessTableView * file: src/platform/automation/components/ProcessTableView\.tsx:38 * kind: component * core: platform * spec: (none) * summary: Renders business processes as a sortable data table with health, execution, and core columns. * score: 2 ### component ProfileComparison * file: src/platform/jurisdiction/components/ProfileComparison.tsx:119 * kind: component * core: platform * spec: (none) * summary: Dialog for comparing two jurisdiction profiles side-by-side. * score: 2 ### component ProfileForm * file: src/platform/users/ProfileForm.tsx:22 * kind: component * core: platform * spec: (none) * summary: Utility for profile form. * score: 1 ### component ProfilePage * file: src/platform/users/ProfilePage.tsx:33 * kind: component * core: platform * spec: (none) * summary: Renders the user profile settings page and redirects to the authentication route when no user is present.Displays a loading skeleton while user or profile data is loading, shows avatar upload, profile edit, and preferences sections when data is available, and exposes created/updated timestamps. * returns: The profile settings UI as a JSX element * score: 2 ### component ProfileSelector * file: src/platform/jurisdiction/components/ProfileSelector.tsx:37 * kind: component * core: platform * spec: (none) * summary: Profile selector dropdown grouped by state. * score: 2 ### component ProgressChecklist * file: src/platform/help/ProgressChecklist.tsx:52 * kind: component * core: platform * spec: (none) * summary: Progress Checklist for tracking completion of setup/onboarding tasks * score: 2 ### component ProgressGauge * file: src/platform/reports/components/charts/RadialBarChartView\.tsx:101 * kind: component * core: platform * spec: (none) * summary: Utility for progress gauge. * score: 1 ### component PromptTemplateStep * file: src/platform/ai/wizards/ai-skill-creation/steps/PromptTemplateStep.tsx:51 * kind: component * core: platform * spec: (none) * summary: Renders Step 2 (Prompt Template) with the wired author-time safety harness. * params: * props — The shared form instance + analytics callbacks. * score: 2 ### component PropagationStatus * file: src/platform/org-data-sync/components/PropagationStatus.tsx:54 * kind: component * core: platform * spec: (none) * summary: Utility for propagation status. * score: 1 ### component ProviderSelectionDialog * file: src/platform/banking/components/ProviderSelectionDialog.tsx:101 * kind: component * core: platform * spec: (none) * summary: Dialog for connecting a bank account via Plaid. * score: 2 ### component ProvisioningDashboardPage * file: src/platform/provisioning/pages/ProvisioningDashboardPage.tsx:44 * kind: component * core: platform * spec: (none) * summary: Utility for provisioning dashboard page. * score: 1 ### component ProvisioningRequestDetailSheet * file: src/platform/provisioning/components/ProvisioningRequestDetailSheet.tsx:51 * kind: component * core: platform * spec: (none) * summary: Utility for provisioning request detail sheet. * score: 1 ### component ProvisioningTemplatesPage * file: src/platform/provisioning/pages/ProvisioningTemplatesPage.tsx:48 * kind: component * core: platform * spec: (none) * summary: Utility for provisioning templates page. * score: 1 ### component PublishToMarketplaceDialog * file: src/platform/wizards/components/marketplace/PublishToMarketplaceDialog.tsx:37 * kind: component * core: platform * spec: (none) * summary: Utility for publish to marketplace dialog. * score: 1 ### component PublishVersionDialog * file: src/platform/wizards/components/PublishVersionDialog.tsx:26 * kind: component * core: platform * spec: (none) * summary: Utility for publish version dialog. * score: 1 ### component PullToRefresh * file: src/platform/gestures/components/PullToRefresh.tsx:24 * kind: component * core: platform * spec: (none) * summary: PullToRefresh wraps scrollable content with pull-down refresh * score: 5 ### component PushNotificationSettings * file: src/platform/notifications/components/PushNotificationSettings.tsx:52 * kind: component * core: platform * spec: (none) * summary: Utility for push notification settings. * score: 1 ### component PushTestCard * file: src/platform/notifications/components/testing/ChannelTestCards.tsx:26 * kind: component * core: platform * spec: (none) * summary: Renders the push test card interface. * score: 2 ### component PwaUpdateBanner * file: src/platform/pwa/components/PwaUpdateBanner.tsx:14 * kind: component * core: platform * spec: (none) * summary: Utility for pwa update banner. * score: 1 ### component PwaUpdatePrompt * file: src/platform/pwa/PwaUpdatePrompt.tsx:13 * kind: component * core: platform * spec: (none) * summary: Utility for pwa update prompt. * score: 1 ### component QueryPatternsList * file: src/platform/query-performance/components/QueryPatternsList.tsx:108 * kind: component * core: platform * spec: (none) * summary: Renders the query patterns table with drill-down to Slow Queries. * score: 2 ### component QueryPerformanceSettingsForm * file: src/platform/query-performance/components/QueryPerformanceSettingsForm.tsx:25 * kind: component * core: platform * spec: (none) * summary: Utility for query performance settings form. * score: 1 ### component QuickActionButton * file: src/platform/dashboard/components/QuickActionButton.tsx:26 * kind: component * core: platform * spec: (none) * summary: Shared quick-action control for dashboard section, cards, and similar surfaces. * score: 2 ### component QuickActionGrid * file: src/platform/navigation/components/QuickActionGrid.tsx:19 * kind: component * core: platform * spec: (none) * summary: Utility for quick action grid. * score: 1 ### component QuickActionsCard * file: src/platform/dashboard/components/QuickActionsCard.tsx:58 * kind: component * core: platform * spec: (none) * summary: Renders a card of quick navigation/action buttons with optional badges. * score: 2 ### component QuickActionsEditDialog * file: src/platform/dashboard/components/QuickActionsEditDialog.tsx:182 * kind: component * core: platform * spec: (none) * summary: Utility for quick actions edit dialog. * score: 1 ### component QuickActionsSection * file: src/platform/dashboard/components/QuickActionsSection.tsx:67 * kind: component * core: platform * spec: (none) * summary: Utility for quick actions section. * score: 1 ### component QuickDialDialog * file: src/platform/telephony/components/QuickDialDialog.tsx:37 * kind: component * core: platform * spec: (none) * summary: Quick Dial dialog for initiating click-to-call from any screen.Uses RingCentral RingOut to ring user's phone first, then connect.Validates that the current user has an extension mapping beforeallowing call initiation. * score: 2 ### component QuickTip * file: src/platform/help/QuickTip.tsx:69 * kind: component * core: platform * spec: (none) * summary: Utility for quick tip. * score: 1 ### component QuotaConfigTab * file: src/platform/quota/components/QuotaConfigTab.tsx:31 * kind: component * core: platform * spec: (none) * summary: Configuration tab displaying quota rules with create/edit capabilities. * score: 2 ### component QuotaFormDialog * file: src/platform/quota/components/QuotaFormDialog.tsx:58 * kind: component * core: platform * spec: (none) * summary: Dialog for creating or editing a resource quota rule. * score: 2 ### component QuotaManagementPage * file: src/platform/quota/pages/QuotaManagementPage.tsx:25 * kind: component * core: platform * spec: (none) * summary: Quota management page with tabbed interface for configuration, usage monitoring, and violation tracking. * score: 2 ### component RadialBarChartView * file: src/platform/reports/components/charts/RadialBarChartView\.tsx:30 * kind: component * core: platform * spec: (none) * summary: Utility for radial bar chart view. * score: 1 ### component RawDataExportButton * file: src/platform/data-manager/components/RawDataExportButton.tsx:21 * kind: component * core: platform * spec: (none) * summary: Utility for raw data export button. * score: 1 ### component RawDataImportWizard * file: src/platform/data-manager/components/RawDataImportWizard.tsx:63 * kind: component * core: platform * spec: (none) * summary: Utility for raw data import wizard. * score: 1 ### component RawDataPartialFailureSheet * file: src/platform/data-manager/components/RawDataPartialFailureSheet.tsx:23 * kind: component * core: platform * spec: (none) * summary: Displays partial failure details from a batch save operation. * score: 2 ### component RawDataRevertSheet * file: src/platform/data-manager/components/RawDataRevertSheet.tsx:42 * kind: component * core: platform * spec: (none) * summary: Sheet displaying recent batch saves with revert capability. * score: 2 ### component RawDataTab * file: src/platform/data-manager/components/RawDataTab.tsx:35 * kind: component * core: platform * spec: (none) * summary: Main container for the Raw Data tab with inline editing, undo/redo, and revert. * score: 2 ### component RawDataTable * file: src/platform/data-manager/components/RawDataTable.tsx:90 * kind: component * core: platform * spec: (none) * summary: Renders editable raw data records with custom-field edit highlighting. * score: 2 ### component RawDataToolbar * file: src/platform/data-manager/components/RawDataToolbar.tsx:41 * kind: component * core: platform * spec: (none) * summary: Toolbar with search, record count, export/import, undo/redo, and recent saves. * score: 2 ### component RealtimeConnectionBadge * file: src/platform/realtime/components/RealtimeConnectionBadge.tsx:30 * kind: component * core: platform * spec: (none) * summary: Utility for realtime connection badge. * score: 1 ### component RealtimeProvider * file: src/platform/realtime/RealtimeProvider.tsx:82 * kind: component * core: platform * spec: (none) * summary: Utility for realtime provider. * score: 1 ### component RecentCallsList * file: src/platform/telephony/components/RecentCallsList.tsx:49 * kind: component * core: platform * spec: (none) * summary: Utility for recent calls list. * score: 1 ### component RecentlyVisitedSection * file: src/platform/dashboard/components/RecentlyVisitedSection.tsx:18 * kind: component * core: platform * spec: (none) * summary: Utility for recently visited section. * score: 1 ### component RecipientManager * file: src/platform/reports/components/RecipientManager.tsx:20 * kind: component * core: platform * spec: (none) * summary: Utility for recipient manager. * score: 1 ### component RecordMetricValueDialog * file: src/platform/health/components/RecordMetricValueDialog.tsx:31 * kind: component * core: platform * spec: (none) * summary: Utility for record metric value dialog. * score: 1 ### component RegenerateFromProcedureDialog * file: src/platform/workflow/components/RegenerateFromProcedureDialog.tsx:38 * kind: component * core: platform * spec: (none) * summary: Utility for regenerate from procedure dialog. * score: 1 ### component RemoveLegalHoldDialog * file: src/platform/data-retention/components/RemoveLegalHoldDialog.tsx:15 * kind: component * core: platform * spec: (none) * summary: Utility for remove legal hold dialog. * score: 1 ### component ReplyPreview * file: src/platform/messaging/components/ReplyPreview\.tsx:20 * kind: component * core: platform * spec: (none) * summary: Utility for reply preview. * score: 1 ### component ReportBuilder * file: src/platform/reports/ReportBuilder.tsx:25 * kind: component * core: platform * spec: (none) * summary: Utility for report builder. * score: 1 ### component ReportHistory * file: src/platform/reports/ReportHistory.tsx:17 * kind: component * core: platform * spec: (none) * summary: Utility for report history. * score: 1 ### component ReportLibrary * file: src/platform/reports/ReportLibrary.tsx:68 * kind: component * core: platform * spec: (none) * summary: Utility for report library. * score: 1 ### component ReportParameters * file: src/platform/reports/ReportParameters.tsx:40 * kind: component * core: platform * spec: (none) * summary: Utility for report parameters. * score: 1 ### component ReportPermissionsForm * file: src/platform/reports/components/ReportPermissionsForm.tsx:39 * kind: component * core: platform * spec: (none) * summary: Form for managing report permissions (add/update/remove grants). * score: 2 ### component ReportResultTable * file: src/platform/reports/components/ReportResultTable.tsx:27 * kind: component * core: platform * spec: (none) * summary: Report result table using the platform DataTable (TanStack Table v8).Derives column definitions from column keys and enables sorting + filtering. * score: 2 ### component ReportRunHistory * file: src/platform/reports/components/ReportRunHistory.tsx:33 * kind: component * core: platform * spec: (none) * summary: Utility for report run history. * score: 1 ### component ReportScheduleDialog * file: src/platform/reports/components/ReportScheduleDialog.tsx:79 * kind: component * core: platform * spec: (none) * summary: Utility for report schedule dialog. * score: 1 ### component ReportScheduleList * file: src/platform/reports/components/ReportScheduleList.tsx:37 * kind: component * core: platform * spec: (none) * summary: Utility for report schedule list. * score: 1 ### component ReportsPage * file: src/platform/reports/ReportsPage.tsx:35 * kind: component * core: platform * spec: (none) * summary: Utility for reports page. * score: 1 ### component ReportViewer * file: src/platform/reports/ReportViewer.tsx:82 * kind: component * core: platform * spec: (none) * summary: Utility for report viewer. * score: 1 ### component RequirePermission * file: src/platform/permissions/components/RequirePermission.tsx:164 * kind: component * core: platform * spec: (none) * summary: Guard component for protecting entire pages or sections * example: | // Redirect on deniedRequirePermission permission="fa.bills.approve" redirectTo="/fa/bills" BillApprovalPage //RequirePermission // Show access deniedRequirePermission permission="system.admin.manage" AdminPanel //RequirePermission // Custom fallbackRequirePermission permission="hr.payroll.view" fallback=UpgradePrompt feature="Payroll" / PayrollDashboard //RequirePermission * score: 5 ### component ResetPasswordDialog * file: src/platform/users/ResetPasswordDialog.tsx:50 * kind: component * core: platform * spec: (none) * summary: Utility for reset password dialog. * score: 1 ### component ResponsiveAppLauncher * file: src/platform/modules/ResponsiveAppLauncher.tsx:13 * kind: component * core: platform * spec: (none) * summary: Utility for responsive app launcher. * score: 1 ### component ResponsiveNav * file: src/platform/navigation/ResponsiveNav.tsx:61 * kind: component * core: platform * spec: (none) * summary: Utility for responsive nav. * score: 1 ### component ResponsiveSizeSelector * file: src/platform/dashboard/components/ResponsiveSizeSelector.tsx:26 * kind: component * core: platform * spec: (none) * summary: Utility for responsive size selector. * score: 1 ### component RestoreRecordDialog * file: src/platform/admin/components/RestoreRecordDialog.tsx:32 * kind: component * core: platform * spec: (none) * summary: Utility for restore record dialog. * score: 1 ### component RetentionPolicyDialog * file: src/platform/data-retention/components/RetentionPolicyDialog.tsx:32 * kind: component * core: platform * spec: (none) * summary: Utility for retention policy dialog. * score: 1 ### component ReviewActivateStep * file: src/platform/ai/components/onboarding/ReviewActivateStep.tsx:31 * kind: component * core: platform * spec: (none) * summary: Renders the Review & Activate summary. * params: * props — . * score: 2 ### component ReviewField * file: src/platform/wizards/components/review/ReviewField.tsx:40 * kind: component * core: platform * spec: (none) * summary: ReviewFieldStandard label/value row for use inside . Handlesempty values consistently (em-dash fallback) and supports both inline andstacked layouts. * score: 5 ### component ReviewSection * file: src/platform/wizards/components/steps/ReviewSection.tsx:26 * kind: component * core: platform * spec: (none) * summary: Utility for review section. * score: 1 ### component ReviewStep * file: src/platform/ai/wizards/ai-skill-creation/steps/ReviewStep.tsx:39 * kind: component * core: platform * spec: (none) * summary: Renders Step 5 (Review) with the category-driven action summary. * params: * props — The shared form instance. * score: 2 ### component ReviewStep * file: src/platform/wizards/components/steps/ReviewStep.tsx:22 * kind: component * core: platform * spec: (none) * summary: Utility for review step. * score: 1 ### component RevokeConfirmDialog * file: src/platform/signatures/components/RevokeConfirmDialog.tsx:32 * kind: component * core: platform * spec: (none) * summary: Utility for revoke confirm dialog. * score: 1 ### component RevokeKeyDialog * file: src/platform/api-access/components/RevokeKeyDialog.tsx:22 * kind: component * core: platform * spec: (none) * summary: Destructive confirmation to revoke an API key. * score: 2 ### component RichTextField * file: src/platform/forms/components/fields/RichTextField.tsx:431 * kind: component * core: platform * spec: (none) * summary: Rich text field component using Tiptap editor * score: 2 ### component RichTextSection * file: src/platform/templates/components/RichTextSection.tsx:200 * kind: component * core: platform * spec: (none) * summary: Rich text section editor with Markdown support. Provides a textarea with formatting toolbar for bold, italic,and lists. Includes live preview toggle to see rendered Markdown.Supports template variable insertion. * score: 2 ### component RingCentralExtensionsManager * file: src/platform/settings/components/RingCentralExtensionsManager.tsx:63 * kind: component * core: platform * spec: (none) * summary: Utility for ring central extensions manager. * score: 1 ### component RingCentralQuickSetup * file: src/platform/settings/components/RingCentralQuickSetup.tsx:31 * kind: component * core: platform * spec: (none) * summary: Utility for ring central quick setup. * score: 1 ### component RingCentralSettingsPage * file: src/platform/settings/pages/RingCentralSettingsPage.tsx:664 * kind: component * core: platform * spec: (none) * summary: Page that consolidates RingCentral telephony configuration into a tabbed settings UI.Renders a guarded settings container that shows a loading skeleton while configuration loads,then displays connection status, extension mappings, feature toggles, and embeddable widget settingsacross four accessible tabs. Access is gated by the permission.Accessibility notes:- Tabs are keyboard-navigable and provide clear visual focus; ensure assistive labels remain visible.- The page content is permission-protected and will not render to users without the required permission. * params: * props — Component props (none). * example: | RingCentralSettingsPage / * score: 4 ### component RoleActionsMenu * file: src/platform/roles/components/RoleActionsMenu.tsx:21 * kind: component * core: platform * spec: (none) * summary: Utility for role actions menu. * score: 1 ### component RoleAssignmentDialog * file: src/platform/roles/components/RoleAssignmentDialog.tsx:72 * kind: component * core: platform * spec: (none) * summary: Utility for role assignment dialog. * score: 1 ### component RoleAssignmentDialog * file: src/platform/users/RoleAssignmentDialog.tsx:50 * kind: component * core: platform * spec: (none) * summary: Utility for role assignment dialog. * score: 1 ### component RoleForm * file: src/platform/roles/components/RoleForm.tsx:66 * kind: component * core: platform * spec: (none) * summary: Utility for role form. * score: 1 ### component RoleList * file: src/platform/roles/components/RoleList.tsx:40 * kind: component * core: platform * spec: (none) * summary: Utility for role list. * score: 1 ### component RolePermissionPreview * file: src/platform/users/RolePermissionPreview\.tsx:87 * kind: component * core: platform * spec: (none) * summary: Inline summary of what a role can do, shown beneath the role selector. * score: 2 ### component RoleSelector * file: src/platform/permissions/components/RoleSelector.tsx:169 * kind: component * core: platform * spec: (none) * summary: Unified role selector that displays both system roles and custom roles.Custom roles are fetched from the current organization. * score: 2 ### component RolesPage * file: src/platform/roles/pages/RolesPage.tsx:20 * kind: component * core: platform * spec: (none) * summary: Utility for roles page. * score: 1 ### component RollbackConfirmDialog * file: src/platform/import/components/RollbackConfirmDialog.tsx:23 * kind: component * core: platform * spec: (none) * summary: Destructive confirmation dialog for rolling back import batches. * score: 2 ### component RouteErrorBoundary * file: src/platform/navigation/components/RouteErrorBoundary.tsx:30 * kind: component * core: platform * spec: (none) * summary: Route-level error boundary that wraps route groups.Usage in App.tsx: * score: 2 ### component RunDetailPanel * file: src/platform/settings/pages/data-migration/components/RunDetailPanel.tsx:52 * kind: component * core: platform * spec: (none) * summary: Expandable detail panel for migration run diagnostics. * score: 2 ### component RunsTab * file: src/platform/settings/pages/data-migration/components/RunsTab.tsx:34 * kind: component * core: platform * spec: (none) * summary: Runs tab with expandable error detail panel. * score: 2 ### component RunTimelinePage * file: src/platform/agents/ui/RunTimelinePage.tsx:129 * kind: component * core: platform * spec: (none) * summary: Read-only Run Timeline page (PF-125 Phase 1). * score: 2 ### component SaveAsDocumentDialog * file: src/platform/workflow/components/SaveAsDocumentDialog.tsx:28 * kind: component * core: platform * spec: (none) * summary: Utility for save as document dialog. * score: 1 ### component ScheduledMessagesPanel * file: src/platform/messaging/components/ScheduledMessagesPanel.tsx:22 * kind: component * core: platform * spec: (none) * summary: Side panel showing pending scheduled messages for a conversation. * score: 2 ### component ScopeSelector * file: src/platform/api-access/components/ScopeSelector.tsx:27 * kind: component * core: platform * spec: (none) * summary: Grouped scope selector with "select all" per module, accordion on mobile. * score: 2 ### component ScrollAreaWithShadows * file: src/platform/navigation/components/ScrollAreaWithShadows.tsx:23 * kind: component * core: platform * spec: (none) * summary: Utility for scroll area with shadows. * score: 1 ### component SearchableCombobox * file: src/platform/forms/components/SearchableCombobox.tsx:34 * kind: component * core: platform * spec: (none) * summary: Utility for searchable combobox. * score: 1 ### component SectionConfigDialog * file: src/platform/page-layouts/components/SectionConfigDialog.tsx:39 * kind: component * core: platform * spec: (none) * summary: Utility for section config dialog. * score: 1 ### component SectionEditor * file: src/platform/page-layouts/components/SectionEditor.tsx:43 * kind: component * core: platform * spec: (none) * summary: Utility for section editor. * score: 1 ### component SectionEditor * file: src/platform/templates/components/SectionEditor.tsx:220 * kind: component * core: platform * spec: (none) * summary: Renders an editable, reorderable list of template sections with controls to add, update, remove, and reorder sections.Renders each section as a draggable card with inline name editing, a required toggle, and an expandable area for help text and default content. Provides an input to add a new section by name and a quick-add row for common section names. All mutations are propagated through the callback; when is true the UI disables editing, adding, and reordering.Accessibility considerations:- Drag handle exposes standard DnD keyboard and pointer interactions (keyboard sensor + sortable keyboard coordinates).- Inputs and buttons include visible focusable controls; ensure surrounding page provides context for the editor when used in complex layouts. * params: * props — Component props - value: Array of TemplateSection representing the current ordered sections. Each section's is used as the stable drag id. - onChange: Callback invoked with the new sections array whenever sections are added, removed, updated, or reordered. - disabled: If true, disables all interactive controls (default: false). - className: Optional additional className applied to the root container. * example: | SectionEditor value=sections onChange=(next) = setSections(next)/ * score: 4 ### component SectionRenderer * file: src/platform/page-layouts/components/rendering/SectionRenderer.tsx:48 * kind: component * core: platform * spec: (none) * summary: Utility for section renderer. * score: 1 ### component SectionSuggester * file: src/platform/templates/components/SectionSuggester.tsx:37 * kind: component * core: platform * spec: (none) * summary: Dialog for AI-powered section suggestions. User can select which sections to apply. * score: 2 ### component SecurityAlertConfigPage * file: src/platform/security/pages/SecurityAlertConfigPage.tsx:296 * kind: component * core: platform * spec: (none) * summary: Utility for security alert config page. * score: 1 ### component SecurityEventsPage * file: src/platform/security/pages/SecurityEventsPage.tsx:53 * kind: component * core: platform * spec: (none) * summary: Utility for security events page. * score: 1 ### component SecuritySettingsPage * file: src/platform/settings/SecuritySettingsPage.tsx:22 * kind: component * core: platform * spec: (none) * summary: Security settings page — consumes shared AppLockContext. * score: 2 ### component SeedOrgProfilePage * file: src/platform/knowledge/pages/SeedOrgProfilePage.tsx:26 * kind: component * core: platform * spec: (none) * summary: Renders the guided org-knowledge seeding entry as a standalone settings page.On a successful publish the user is returned to the Knowledge Base list so thenewly published article is visible alongside the rest of the catalog.Mounted at (guarded by ). * score: 2 ### component SelectAllCheckbox * file: src/platform/table-v2/features/RowSelection.tsx:72 * kind: component * core: platform * spec: (none) * summary: Checkbox for selecting/deselecting all rows on the current page. * score: 2 ### component SelectField * file: src/platform/forms/components/fields/SelectField.tsx:40 * kind: component * core: platform * spec: (none) * summary: Utility for select field. * score: 1 ### component SelectionActions * file: src/platform/table-v2/features/RowSelection.tsx:151 * kind: component * core: platform * spec: (none) * summary: Container that only renders children when rows are selected. * score: 2 ### component SelectionInfo * file: src/platform/table-v2/features/RowSelection.tsx:124 * kind: component * core: platform * spec: (none) * summary: Displays information about the current selection. * score: 2 ### component SelectRowCheckbox * file: src/platform/table-v2/features/RowSelection.tsx:99 * kind: component * core: platform * spec: (none) * summary: Checkbox for selecting/deselecting a single row. * score: 2 ### component ServiceAccountCard * file: src/platform/api-access/components/ServiceAccountCard.tsx:35 * kind: component * core: platform * spec: (none) * summary: Card component for a single service account. * score: 2 ### component ServiceAccountCardSkeleton * file: src/platform/api-access/components/ServiceAccountCard.tsx:100 * kind: component * core: platform * spec: (none) * summary: Skeleton card for loading state (renders 3 per CONTEXT.md). * score: 2 ### component ServiceAccountDetailPage * file: src/platform/api-access/pages/ServiceAccountDetailPage.tsx:40 * kind: component * core: platform * spec: (none) * summary: Detail view for a service account showing its API keys. * score: 2 ### component ServiceLinesStep * file: src/platform/ai/components/onboarding/ServiceLinesStep.tsx:31 * kind: component * core: platform * spec: (none) * summary: Renders the Service Lines & Programs step. * params: * props — . * score: 2 ### component SessionManagementPage * file: src/platform/sessions/pages/SessionManagementPage.tsx:28 * kind: component * core: platform * spec: (none) * summary: Utility for session management page. * score: 1 ### component SessionRecorderProvider * file: src/platform/analytics/useSessionRecorder.tsx:139 * kind: component * core: platform * spec: (none) * summary: Session recorder context providerProvides session recording capabilities to child components.Automatically handles consent and privacy controls. * score: 5 ### component SetProfilePhotoDialog * file: src/platform/headshot/components/SetProfilePhotoDialog.tsx:28 * kind: component * core: platform * spec: (none) * summary: Confirmation dialog for setting a generated headshot as profile photo. * score: 2 ### component SettingsAuditLog * file: src/platform/settings/components/SettingsAuditLog.tsx:36 * kind: component * core: platform * spec: (none) * summary: Utility for settings audit log. * score: 1 ### component SettingsErrorState * file: src/platform/settings/components/SettingsErrorState.tsx:31 * kind: component * core: platform * spec: (none) * summary: Render an error state card for settings pages with optional retry functionality.Displays a centered card with an alert icon, title, error details, and a retry button.If a custom description is not provided, the error's message is displayed. * params: * error — The error object to display * onRetry — Optional callback triggered when the retry button is clicked * title — Optional custom title (defaults to "Failed to load settings") * description — Optional custom description (defaults to error.message) * score: 2 ### component SettingsHub * file: src/platform/settings/SettingsHub.tsx:116 * kind: component * core: platform * spec: (none) * summary: Settings hub page that organizes and navigates to account, organization, and configuration settings.Renders a header and a tabbed interface containing responsive grids of settings cards. The "My Account"tab is available to all users; the "Organization", "Configuration", and "Module Settings" tabs are shownonly for users with the organization admin permission. * score: 2 ### component SettingsLoadingSkeleton * file: src/platform/settings/components/SettingsLoadingSkeleton.tsx:20 * kind: component * core: platform * spec: (none) * summary: Utility for settings loading skeleton. * score: 1 ### component SettingsOverviewPage * file: src/platform/settings/pages/SettingsOverviewPage.tsx:21 * kind: component * core: platform * spec: (none) * summary: Utility for settings overview page. * score: 1 ### component SettingsPageHeader * file: src/platform/settings/components/SettingsPageHeader.tsx:26 * kind: component * core: platform * spec: (none) * summary: Utility for settings page header. * score: 1 ### component SettingsPageLayout * file: src/platform/settings/components/SettingsPageLayout.tsx:34 * kind: component * core: platform * spec: (none) * summary: Standard shell for settings pages: container, loading/error gates, unsaved navigation guard. * score: 2 ### component SettingsTabs * file: src/platform/settings/components/SettingsTabs.tsx:23 * kind: component * core: platform * spec: (none) * summary: Settings tabs with horizontally scrollable triggers (mobile-friendly). * score: 2 ### component SetupCompletionDashboard * file: src/platform/setup/components/SetupCompletionDashboard.tsx:141 * kind: component * core: platform * spec: (none) * summary: Utility for setup completion dashboard. * score: 1 ### component SharedDashboardPage * file: src/platform/dashboard/pages/SharedDashboardPage.tsx:40 * kind: component * core: platform * spec: (none) * summary: Utility for shared dashboard page. * score: 1 ### component SharePointConfigurationCard * file: src/platform/settings/components/SharePointConfigurationCard.tsx:50 * kind: component * core: platform * spec: (none) * summary: Utility for share point configuration card. * score: 1 ### component SharePointDocumentBrowser * file: src/platform/integrations/components/SharePointDocumentBrowser.tsx:71 * kind: component * core: platform * spec: (none) * summary: Utility for share point document browser. * score: 1 ### component SharePointDocumentsPage * file: src/platform/documents/pages/SharePointDocumentsPage.tsx:116 * kind: component * core: platform * spec: (none) * summary: Utility for share point documents page. * score: 1 ### component ShortcutHelpPanel * file: src/platform/workflow/components/ShortcutHelpPanel.tsx:38 * kind: component * core: platform * spec: (none) * summary: Dialog listing all keyboard shortcuts for the diagram builder. * score: 2 ### component SidebarOrgSwitcher * file: src/platform/navigation/components/SidebarOrgSwitcher.tsx:27 * kind: component * core: platform * spec: (none) * summary: Utility for sidebar org switcher. * score: 1 ### component SidebarSearch * file: src/platform/navigation/components/SidebarSearch.tsx:24 * kind: component * core: platform * spec: (none) * summary: Inline search input for filtering sidebar modules.Shows as an icon button when collapsed, expands to full input when not collapsed. * score: 2 ### component SidebarSkeleton * file: src/platform/navigation/components/NavSkeleton.tsx:37 * kind: component * core: platform * spec: (none) * summary: Sidebar Skeleton for full sidebar loading state * score: 2 ### component SignatureBulkActions * file: src/platform/signatures/components/SignatureBulkActions.tsx:24 * kind: component * core: platform * spec: (none) * summary: Utility for signature bulk actions. * score: 1 ### component SignatureCanvas * file: src/platform/signatures/SignatureCanvas.tsx:29 * kind: component * core: platform * spec: (none) * summary: Utility for signature canvas. * score: 1 ### component SignatureDashboard * file: src/platform/signatures/SignatureDashboard.tsx:25 * kind: component * core: platform * spec: (none) * summary: Utility for signature dashboard. * score: 1 ### component SignatureDialog * file: src/platform/signatures/SignatureDialog.tsx:21 * kind: component * core: platform * spec: (none) * summary: Utility for signature dialog. * score: 1 ### component SignatureField * file: src/platform/forms/components/fields/SignatureField.tsx:49 * kind: component * core: platform * spec: (none) * summary: Utility for signature field. * score: 1 ### component SignatureFilters * file: src/platform/signatures/components/SignatureFilters.tsx:52 * kind: component * core: platform * spec: (none) * summary: Utility for signature filters. * score: 1 ### component SignaturePreviewDialog * file: src/platform/email-signatures/components/SignaturePreviewDialog.tsx:25 * kind: component * core: platform * spec: (none) * summary: Dialog displaying HTML and plain text preview of a rendered signature. * score: 2 ### component SignatureRequestDialog * file: src/platform/signatures/SignatureRequestDialog.tsx:56 * kind: component * core: platform * spec: (none) * summary: Utility for signature request dialog. * score: 1 ### component SignatureRequestsTable * file: src/platform/signatures/components/SignatureRequestsTable.tsx:29 * kind: component * core: platform * spec: (none) * summary: Utility for signature requests table. * score: 1 ### component SignatureStatusBadge * file: src/platform/signatures/SignatureStatusBadge.tsx:64 * kind: component * core: platform * spec: (none) * summary: Utility for signature status badge. * score: 1 ### component SkillApprovalQueuePage * file: src/platform/ai/pages/SkillApprovalQueuePage.tsx:106 * kind: component * core: platform * spec: (none) * summary: Renders the AI skill approval queue: org-authored skills awaiting review withapprove/reject actions gated on . * returns: The React element for the approval-queue page. * score: 2 ### component SkillConfigurationDialog * file: src/platform/ai/components/SkillConfigurationDialog.tsx:58 * kind: component * core: platform * spec: (none) * summary: Renders a dialog for viewing and editing an AI skill's configuration and overrides.The dialog lets an administrator enable/disable the skill, edit organization-levelcustom instructions, choose a model override, adjust temperature, toggle RAG usage,reset overridden values to defaults, and delete non-system (custom) skills.Accessibility:- Dialog, form controls, and action buttons include accessible labels and descriptions.- Ensure keyboard and screen-reader access for modal focus management provided by the Dialog and ConfirmationDialog components. * params: * props — Component props - skill: The skill to configure; when the dialog is closed. The component reads current values and override state from this object to initialize form fields. - onOpenChange: Callback invoked when the dialog open state should change (e.g., close the dialog after save/delete). Receives the new open state. * returns: A JSX element rendering the skill configuration dialog UI. * example: | SkillConfigurationDialog skill=selectedSkill onOpenChange=(open) = setSelectedSkill(open ? selectedSkill : null)/ * score: 4 ### component SkillLifecycleBadge * file: src/platform/ai/components/SkillLifecycleBadge.tsx:24 * kind: component * core: platform * spec: (none) * summary: Renders the governance lifecycle status of a skill as a semantic badge. * params: * status — The skill's . * score: 2 ### component SkillRecommendationStep * file: src/platform/ai/components/onboarding/SkillRecommendationStep.tsx:42 * kind: component * core: platform * spec: (none) * summary: Renders the Skill Recommendation & Enablement step. * params: * props — . * score: 2 ### component SkillSelector * file: src/platform/ai/components/SkillSelector.tsx:91 * kind: component * core: platform * spec: (none) * summary: Renders a categorized dropdown for selecting an AI skill.Displays grouped AI skills fetched for the provided module, shows loading and error states,and renders each skill with its icon, name, optional description, and optional RAG indicator.The component respects and props to adjust interactivity and visual detail.Accessibility: the trigger has an and the Select primitives providekeyboard navigation and proper ARIA semantics for the dropdown and list items. * params: * props — Component props - value: Currently selected skill code (string) or empty string for none - onChange: Callback invoked with the chosen when selection changes - module: Optional module filter used when fetching skills - placeholder: Placeholder text shown when no skill is selected (default: "Select AI skill...") - className: Optional CSS class name applied to top-level elements for styling - disabled: When true, the control is non-interactive (default: false) - compact: When true, renders a condensed view without descriptions or some badges (default: false) * example: | SkillSelector value=selectedSkillCode onChange=(code) = setSelectedSkillCode(code) module="chat" placeholder="Choose a skill..."/ * score: 4 ### component SkillVersionHistoryDrawer * file: src/platform/ai/components/SkillVersionHistoryDrawer.tsx:41 * kind: component * core: platform * spec: (none) * summary: Drawer presenting a skill's chronological version snapshots with a forward-only rollback.The prop (id + name + regulated flag) drives the drawer; a skill keeps it closed. is the open-state callback; gates the rollback action on the permission. * score: 2 ### component SLADefinitionForm * file: src/platform/sla/components/SLADefinitionForm.tsx:46 * kind: component * core: platform * spec: (none) * summary: SLA Definition create/edit form dialog. * score: 2 ### component SLAIndicator * file: src/platform/sla/components/SLAIndicator.tsx:115 * kind: component * core: platform * spec: (none) * summary: SLA badge indicator for entity pages using platform SLA data. * score: 2 ### component SLAInstanceActionDialog * file: src/platform/sla/components/SLAInstanceActionDialog.tsx:29 * kind: component * core: platform * spec: (none) * summary: Dialog for performing actions on an SLA instance. * score: 2 ### component SLAStatusBadge * file: src/platform/sla/components/SLAIndicator.tsx:92 * kind: component * core: platform * spec: (none) * summary: SLA status badge presenter with optional compact formatting. * score: 2 ### component SLAViolationsList * file: src/platform/health/components/SLAViolationsList.tsx:30 * kind: component * core: platform * spec: (none) * summary: Utility for slaviolations list. * score: 1 ### component SlugNestedContent * file: src/platform/router/SlugNestedContent.tsx:58 * kind: component * core: platform * spec: (none) * summary: Renders the correct module for org-scoped routes.Mirrors RouteLoader logic but uses the splat param instead of location.pathname. * score: 2 ### component SmallCellFootnote * file: src/platform/analytics/components/SuppressionBadge.tsx:41 * kind: component * core: platform * spec: (none) * summary: Disclosure footnote to place beneath any table/chart that may contain suppressed cells. * score: 2 ### component SMSTestCard * file: src/platform/notifications/components/testing/ChannelTestCards.tsx:410 * kind: component * core: platform * spec: (none) * summary: Renders the smstest card interface. * score: 2 ### component SnoozeMenu * file: src/platform/inbox/components/SnoozeMenu.tsx:32 * kind: component * core: platform * spec: (none) * summary: Utility for snooze menu. * score: 1 ### component SortableField * file: src/platform/page-layouts/components/SortableField.tsx:30 * kind: component * core: platform * spec: (none) * summary: Utility for sortable field. * score: 1 ### component SortableSection * file: src/platform/page-layouts/components/SortableSection.tsx:30 * kind: component * core: platform * spec: (none) * summary: Utility for sortable section. * score: 1 ### component SortableWidget * file: src/platform/dashboard/components/SortableWidget.tsx:28 * kind: component * core: platform * spec: (none) * summary: Utility for sortable widget. * score: 1 ### component SourceExplorer * file: src/platform/settings/pages/data-migration/components/SourceExplorer.tsx:21 * kind: component * core: platform * spec: (none) * summary: Utility for source explorer. * score: 1 ### component SourceTasksPanel * file: src/platform/tasks/components/SourceTasksPanel.tsx:32 * kind: component * core: platform * spec: (none) * summary: Displays tasks linked to a specific source entity with add/complete functionality. * score: 2 ### component SQLPreview * file: src/platform/reports/components/SQLPreview\.tsx:13 * kind: component * core: platform * spec: (none) * summary: Utility for sqlpreview. * score: 1 ### component SsoSetupWizard * file: src/platform/auth/sso/SsoSetupWizard.tsx:76 * kind: component * core: platform * spec: (none) * summary: Multi-step dialog guiding an org admin through SAML single sign-on againstMicrosoft Entra: claim a domain, verify ownership via a DNS TXT record, supplythe IdP metadata URL/entity ID, then test and activate the connection. * score: 2 ### component StaleDataIndicator * file: src/platform/dashboard/components/StaleDataIndicator.tsx:23 * kind: component * core: platform * spec: (none) * summary: Shows data freshness status with optional refresh button- Green/muted when fresh- Yellow/warning when stale (5 min) * score: 2 ### component StarterRolesWizard * file: src/platform/roles/components/StarterRolesWizard.tsx:45 * kind: component * core: platform * spec: (none) * summary: Utility for starter roles wizard. * score: 1 ### component StarterTemplatesBrowser * file: src/platform/templates/pages/StarterTemplatesBrowser.tsx:64 * kind: component * core: platform * spec: (none) * summary: Browser UI to discover and clone system "starter" document and approval templates.Renders searchable and industry-filterable lists of system document templates and approval chains,shows empty and loading states, and—when the current user has template management permission—allows cloning a selected template into the current organization via a preview dialog. * params: * props — This component does not accept any props; it reads organization, permissions, and templates from hooks. * example: | StarterTemplatesBrowser /Accessibility:- Search, filter, and actionable buttons are focusable and keyboard operable.- Clone flows open a preview dialog; the dialog should trap focus and return focus to the triggering control when closed. * score: 4 ### component StartEventNode * file: src/platform/workflow/components/swim-lane-nodes/StartEventNode.tsx:13 * kind: component * core: platform * spec: (none) * summary: Start event node — green circle with play icon. * score: 2 ### component StartMigrationDialog * file: src/platform/settings/pages/data-migration/components/StartMigrationDialog.tsx:35 * kind: component * core: platform * spec: (none) * summary: Dialog for starting a new migration run with optional mapping auto-fill. * score: 2 ### component StepConfigPanel * file: src/platform/wizards/components/StepConfigPanel.tsx:61 * kind: component * core: platform * spec: (none) * summary: Utility for step config panel. * score: 1 ### component StepFunnelChart * file: src/platform/wizards/components/analytics/StepFunnelChart.tsx:27 * kind: component * core: platform * spec: (none) * summary: Utility for step funnel chart. * score: 1 ### component StepIntro * file: src/platform/headshot/components/wizard/StepIntro.tsx:32 * kind: component * core: platform * spec: (none) * summary: Upload wizard intro step. * score: 1 ### component StepListItem * file: src/platform/wizards/components/StepListItem.tsx:33 * kind: component * core: platform * spec: (none) * summary: Utility for step list item. * score: 1 ### component StepReview * file: src/platform/headshot/components/wizard/StepReview\.tsx:31 * kind: component * core: platform * spec: (none) * summary: Review step showing summary before generation. * score: 2 ### component StepSkeleton * file: src/platform/wizards/components/steps/StepSkeleton.tsx:10 * kind: component * core: platform * spec: (none) * summary: Utility for step skeleton. * score: 1 ### component StepStyles * file: src/platform/headshot/components/wizard/StepStyles.tsx:63 * kind: component * core: platform * spec: (none) * summary: Style selection step with card grid. * score: 2 ### component StepTransition * file: src/platform/wizards/components/StepTransition.tsx:22 * kind: component * core: platform * spec: (none) * summary: Utility for step transition. * score: 1 ### component StepUpload * file: src/platform/headshot/components/wizard/StepUpload.tsx:35 * kind: component * core: platform * spec: (none) * summary: Upload step with drag-and-drop zone and file list. * score: 2 ### component StepValidationPanel * file: src/platform/wizards/components/StepValidationPanel.tsx:64 * kind: component * core: platform * spec: (none) * summary: Utility for step validation panel. * score: 1 ### component StepVisibilityPanel * file: src/platform/wizards/components/StepVisibilityPanel.tsx:27 * kind: component * core: platform * spec: (none) * summary: Utility for step visibility panel. * score: 1 ### component SubdomainTab * file: src/platform/theming/components/SubdomainTab.tsx:23 * kind: component * core: platform * spec: (none) * summary: Subdomain configuration tab for organization branding. * score: 2 ### component SubscriptionStatusPanel * file: src/platform/notifications/components/testing/SubscriptionStatusPanel.tsx:39 * kind: component * core: platform * spec: (none) * summary: Utility for subscription status panel. * score: 1 ### component SuggestedWorkspaceCard * file: src/platform/navigation/workspaces/admin/SuggestedWorkspaceCard.tsx:48 * kind: component * core: platform * spec: (none) * summary: Card presenting a single AI-proposed workspace recommendation with itsresolved core/group display labels and accept / edit-before-accepting /dismiss actions; all actions disable while is set. * score: 2 ### component SuppressionBadge * file: src/platform/analytics/components/SuppressionBadge.tsx:23 * kind: component * core: platform * spec: (none) * summary: A privacy-suppression indicator. When is omitted it shows (aprimary-suppressed small count); pass a neutral mark (e.g. "—") for a complementarysuppression, where the true value may be ≥ threshold and must not be implied. * score: 2 ### component SwimLaneCanvas * file: src/platform/workflow/SwimLaneCanvas.tsx:284 * kind: component * core: platform * spec: (none) * summary: Swim lane-aware workflow canvas.Lanes render as React Flow group nodes with visible headers.Supports drag-and-drop node creation from NodePalette.When used inside an existing ReactFlowProvider (e.g. the builder page),set to true to avoid nesting providers. * score: 2 ### component SwimLaneDiagramBuilderPage * file: src/platform/workflow/pages/SwimLaneDiagramBuilderPage.tsx:532 * kind: component * core: platform * spec: (none) * summary: Swim lane diagram builder with toolbar, node palette, and canvas.Wrapped in ReactFlowProvider so inner component can use useReactFlow. * score: 2 ### component SwimLaneDiagramListPage * file: src/platform/workflow/pages/SwimLaneDiagramListPage.tsx:86 * kind: component * core: platform * spec: (none) * summary: List page for swim lane diagrams with guided creation wizard. * score: 2 ### component SwimLaneTemplateList * file: src/platform/workflow/components/SwimLaneTemplateList.tsx:41 * kind: component * core: platform * spec: (none) * summary: Grid of swim lane diagram templates with "Use template" action. * score: 2 ### component SwimLaneTemplatesPage * file: src/platform/workflow/pages/SwimLaneTemplatesPage.tsx:15 * kind: component * core: platform * spec: (none) * summary: Page for browsing swim lane diagram templates. * score: 2 ### component SwipeableCardShell * file: src/platform/gestures/components/SwipeableCardShell.tsx:48 * kind: component * core: platform * spec: (none) * summary: Auto-mobile-detecting swipeable card shell. Prefer this over for any list/card row across cores; falls back to plain children on non-touch. * score: 2 ### component SwipeableListItem * file: src/platform/gestures/components/SwipeableListItem.tsx:42 * kind: component * core: platform * spec: (none) * summary: SwipeableListItem wraps list items with reveal actions * score: 5 ### component SwipeableSheet * file: src/platform/gestures/components/SwipeableSheet.tsx:30 * kind: component * core: platform * spec: (none) * summary: SwipeableSheet wraps content with swipe-to-dismiss capability * score: 5 ### component SwipeableWidget * file: src/platform/dashboard/components/SwipeableWidget.tsx:33 * kind: component * core: platform * spec: (none) * summary: Renders a widget wrapped with mobile swipe actions only when in edit mode:left → hide, right → resize. * score: 2 ### component SyncStatusPage * file: src/platform/org-data-sync/pages/SyncStatusPage.tsx:14 * kind: component * core: platform * spec: (none) * summary: Utility for sync status page. * score: 1 ### component SystemHealthDashboard * file: src/platform/health/pages/SystemHealthDashboard.tsx:43 * kind: component * core: platform * spec: (none) * summary: Utility for system health dashboard. * score: 1 ### component SystemHealthWidget * file: src/platform/dashboard/widgets/SystemHealthWidget.tsx:20 * kind: component * core: platform * spec: (none) * summary: Utility for system health widget. * score: 1 ### component SystemPicklistBanner * file: src/platform/picklists/components/SystemPicklistBanner.tsx:18 * kind: component * core: platform * spec: (none) * summary: Utility for system picklist banner. * score: 1 ### component SystemRolesList * file: src/platform/roles/components/SystemRolesList.tsx:171 * kind: component * core: platform * spec: (none) * summary: Utility for system roles list. * score: 1 ### component SystemTemplateCard * file: src/platform/wizards/components/SystemTemplateCard.tsx:20 * kind: component * core: platform * spec: (none) * summary: Utility for system template card. * score: 1 ### component SystemTemplatesSection * file: src/platform/wizards/components/SystemTemplatesSection.tsx:22 * kind: component * core: platform * spec: (none) * summary: Utility for system templates section. * score: 1 ### component TableFilters * file: src/platform/table-v2/components/TableFilters.tsx:34 * kind: component * core: platform * spec: (none) * summary: Utility for table filters. * score: 1 ### component TablePagination * file: src/platform/table-v2/components/LegacyTablePagination.tsx:40 * kind: component * core: platform * spec: (none) * summary: Utility for table pagination. * score: 1 ### component TablePagination * file: src/platform/table-v2/components/TablePagination.tsx:85 * kind: component * core: platform * spec: (none) * summary: TablePagination component for navigating paginated table data. * score: 5 ### component TableSelector * file: src/platform/reports/components/TableSelector.tsx:113 * kind: component * core: platform * spec: (none) * summary: Utility for table selector. * score: 1 ### component TagInput * file: src/platform/knowledge/components/TagInput.tsx:49 * kind: component * core: platform * spec: (none) * summary: Renders an editable tag input control that lets users add, remove, and view a list of tags.The component normalizes added tags to lowercase, enforces uniqueness and a maximum tag count,and calls with the updated tags array whenever tags are added or removed. * params: * props — Component props - tags: Current list of tags to display. - onChange: Callback invoked with the new tags array when tags change. - placeholder: Placeholder text shown in the input when empty (default: "Add tag..."). - maxTags: Maximum number of tags allowed; when reached the input is hidden and a notice is shown (default: 10). - className: Optional additional CSS class names applied to the component container. - disabled: When true, prevents adding or removing tags and disables the input (default: false).Accessibility:- Each tag includes a remove button with an of for screen readers.- The input element receives standard keyboard focus and supports Enter or comma to commit a tag and Backspace to remove the last tag when the input is empty. * returns: The rendered TagInput React element. * example: | TagInput tags=\['react', 'typescript'] onChange=(next) = setTags(next) placeholder="Add a topic..."/ * score: 4 ### component TanStackDataTable * file: src/platform/table-v2/components/TanStackDataTable.tsx:161 * kind: component * core: platform * spec: (none) * summary: TanStackDataTable - Backward-compatible DataTable using TanStack Table.This component accepts the same props as the PF-58 DataTable and rendersusing TanStack Table internally. Use this as a drop-in replacement duringmigration.Supports optional virtualization for large datasets:- Auto-enables for 500+ rows (configurable via virtualAutoThreshold)- Disabled automatically for expandable rows- Uses keyboard navigation (Home/End/PageUp/PageDown) T - Row data type, must have an 'id' field * score: 5 ### component TaskAnalyticsPage * file: src/platform/tasks/pages/TaskAnalyticsPage.tsx:179 * kind: component * core: platform * spec: (none) * summary: Utility for task analytics page. * score: 1 ### component TaskAutomationPage * file: src/platform/tasks/pages/TaskAutomationPage.tsx:25 * kind: component * core: platform * spec: (none) * summary: Utility for task automation page. * score: 1 ### component TaskAutomationRuleFormDialog * file: src/platform/tasks/components/TaskAutomationRuleFormDialog.tsx:49 * kind: component * core: platform * spec: (none) * summary: Utility for task automation rule form dialog. * score: 1 ### component TaskCard * file: src/platform/tasks/components/TaskCard.tsx:30 * kind: component * core: platform * spec: (none) * summary: Utility for task card. * score: 1 ### component TaskChecklistSection * file: src/platform/tasks/components/TaskChecklistSection.tsx:26 * kind: component * core: platform * spec: (none) * summary: Inline checklist editor — list items, toggle complete, add new, remove. * score: 2 ### component TaskCommentThread * file: src/platform/tasks/components/TaskCommentThread.tsx:32 * kind: component * core: platform * spec: (none) * summary: Utility for task comment thread. * score: 1 ### component TaskDashboardWidget * file: src/platform/tasks/components/TaskDashboardWidget.tsx:29 * kind: component * core: platform * spec: (none) * summary: Utility for task dashboard widget. * score: 1 ### component TaskDependencyEditor * file: src/platform/tasks/components/TaskDependencyEditor.tsx:30 * kind: component * core: platform * spec: (none) * summary: Utility for task dependency editor. * score: 1 ### component TaskDetailPage * file: src/platform/tasks/pages/TaskDetailPage.tsx:49 * kind: component * core: platform * spec: (none) * summary: Utility for task detail page. * score: 1 ### component TaskDiscussionThread * file: src/platform/tasks/components/TaskDiscussionThread.tsx:20 * kind: component * core: platform * spec: (none) * summary: Utility for task discussion thread. * score: 1 ### component TaskFormDialog * file: src/platform/tasks/components/TaskFormDialog.tsx:58 * kind: component * core: platform * spec: (none) * summary: Utility for task form dialog. * score: 1 ### component TaskList * file: src/platform/tasks/components/TaskList.tsx:40 * kind: component * core: platform * spec: (none) * summary: Utility for task list. * score: 1 ### component TaskNode * file: src/platform/workflow/components/swim-lane-nodes/TaskNode.tsx:17 * kind: component * core: platform * spec: (none) * summary: Task node — rounded card with label text. * score: 2 ### component TaskReportsPage * file: src/platform/tasks/pages/TaskReportsPage.tsx:225 * kind: component * core: platform * spec: (none) * summary: Utility for task reports page. * score: 1 ### component TaskTemplateFormDialog * file: src/platform/tasks/components/TaskTemplateFormDialog.tsx:38 * kind: component * core: platform * spec: (none) * summary: Utility for task template form dialog. * score: 1 ### component TaskTemplatePickerDialog * file: src/platform/tasks/components/TaskTemplatePickerDialog.tsx:24 * kind: component * core: platform * spec: (none) * summary: Utility for task template picker dialog. * score: 1 ### component TaskTemplatesPage * file: src/platform/tasks/pages/TaskTemplatesPage.tsx:26 * kind: component * core: platform * spec: (none) * summary: Utility for task templates page. * score: 1 ### component TaskTimeEntrySheet * file: src/platform/tasks/components/TaskTimeEntrySheet.tsx:35 * kind: component * core: platform * spec: (none) * summary: Utility for task time entry sheet. * score: 1 ### component TaskTimeSection * file: src/platform/tasks/components/TaskTimeSection.tsx:27 * kind: component * core: platform * spec: (none) * summary: Utility for task time section. * score: 1 ### component TeamsConfigurationCard * file: src/platform/settings/components/TeamsConfigurationCard.tsx:50 * kind: component * core: platform * spec: (none) * summary: Utility for teams configuration card. * score: 1 ### component TeamsNotificationConfig * file: src/platform/settings/components/TeamsNotificationConfig.tsx:47 * kind: component * core: platform * spec: (none) * summary: Utility for teams notification config. * score: 1 ### component TemplateCard * file: src/platform/reports/components/TemplateCard.tsx:28 * kind: component * core: platform * spec: (none) * summary: Utility for template card. * score: 1 ### component TemplateClonePreviewDialog * file: src/platform/templates/components/TemplateClonePreviewDialog.tsx:81 * kind: component * core: platform * spec: (none) * summary: Presents a modal dialog that previews a document or approval template's metadata and structure,lets the user edit a new name (and optionally mark a document template as active), and confirms cloning. * params: * open — Whether the dialog is visible * onOpenChange — Callback invoked when the dialog open state should change; receives the new open boolean * template — The template being previewed; null hides the dialog * templateType — Either or , controls which template details and structure are shown * onClone — Callback invoked when the user confirms cloning. Called with * isCloning — Optional flag indicating an in-progress clone operation (disables inputs and shows loading state). Defaults to Accessibility considerations:- The dialog uses a modal pattern and provides labeled controls for the template name and clone-as-active checkbox.- Structure lists include clear headings and ordinal badges to help screen reader users understand ordering. * example: | TemplateClonePreviewDialog open=isOpen onOpenChange=setIsOpen template=selectedTemplate templateType="document" onClone=(name, cloneAsActive) = handleCloneTemplate(name, cloneAsActive) isCloning=isSubmitting/ * score: 4 ### component TemplateEditorDialog * file: src/platform/dashboard/components/TemplateEditorDialog.tsx:37 * kind: component * core: platform * spec: (none) * summary: Utility for template editor dialog. * score: 1 ### component TemplateFormDialog * file: src/platform/provisioning/components/TemplateFormDialog.tsx:65 * kind: component * core: platform * spec: (none) * summary: Utility for template form dialog. * score: 1 ### component TemplateGalleryDialog * file: src/platform/email-signatures/components/TemplateGalleryDialog.tsx:22 * kind: component * core: platform * spec: (none) * summary: Dialog presenting pre-built signature templates for quick start. * score: 2 ### component TemplateImportExportDialog * file: src/platform/templates/components/TemplateImportExportDialog.tsx:164 * kind: component * core: platform * spec: (none) * summary: Utility for template import export dialog. * score: 1 ### component TemplateLibraryBrowser * file: src/platform/templates/components/TemplateLibraryBrowser.tsx:189 * kind: component * core: platform * spec: (none) * summary: Renders a category-based, searchable template library with optional preview and clone workflows.Displays templates grouped into System and Organization sections, supports category and industryfiltering, text search, grid/list view modes, and cloning system templates into the current organization. * params: * props — Component props - filterTypes: Optional list of template types to restrict which templates are shown. - onTemplateSelect: Optional callback invoked with a template when the user selects or successfully clones a template. - showPreview: Whether the preview panel and preview actions should be available (default: ). - className: Additional CSS class names to apply to the root container.Accessibility considerations:- Search, filter, and view mode controls are operable via keyboard.- Dialogs (preview and clone) trap focus while open and return focus on close.- Ensure sufficient color contrast for badges and buttons in custom themes. * example: | TemplateLibraryBrowser filterTypes=\['policy', 'report'] onTemplateSelect=(t) = console.log('selected', t.id) showPreview=true/ * score: 4 ### component TemplatePreviewDialog * file: src/platform/dashboard/components/TemplatePreviewDialog.tsx:27 * kind: component * core: platform * spec: (none) * summary: Utility for template preview dialog. * score: 1 ### component TemplatePreviewSwitcher * file: src/platform/templates/components/TemplatePreviewSwitcher.tsx:168 * kind: component * core: platform * spec: (none) * summary: Enhanced preview panel that lets users switch letterheads and document templates,toggle page orientation, and preview using sample or real document data.Renders controls for selecting an organization or system letterhead (with loadingand "No letterhead" options), an optional template selector, an optional orientationtoggle, and an optional sample-data switch. The selected options are propagated viacallbacks and the resolved content is passed to an embedded PDF preview panel. - sections: Array of PDF sections to render in the preview. - title: Document title shown in the preview. - subtitle: Document subtitle shown in the preview. - metadata: Document metadata (author, dates, version, number). - showApprovalBlock: When true, include an approval block in the preview. - selectedLetterheadId: Currently selected letterhead id, or / for none. - onLetterheadChange: Callback invoked with the new letterhead id or when selection changes. - documentTemplates: Optional list of document templates available for selection. - selectedTemplateId: Currently selected template id, or / for default. - onTemplateChange: Callback invoked with the new template id or when selection changes. - enableSampleData: When true, show a toggle to switch between sample and real data. - sampleSections: Sections to use when sample data mode is enabled (defaults provided). - sampleMetadata: Optional metadata to use in sample mode; if omitted a default with the current date is created. - showOrientationToggle: When true, show a control to toggle between portrait and landscape. - initialOrientation: Initial orientation, either or (used only on mount). - onOrientationChange: Callback invoked with the new orientation when toggled. - className: Optional additional container CSS class names. * example: | TemplatePreviewSwitcher sections=sections title="Policy" subtitle="Draft" metadata=metadata selectedLetterheadId=letterheadId onLetterheadChange=(id) = setLetterheadId(id) documentTemplates=templates selectedTemplateId=templateId onTemplateChange=(id) = setTemplateId(id) enableSampleData showOrientationToggle/Accessibility:- Select, switch, and button controls include labels and ids to support assistive technologies.- Ensure any custom styling preserves focus outlines and keyboard operability for all interactive controls. * score: 5 ### component TemplateSandbox * file: src/platform/templates/components/TemplateSandbox.tsx:98 * kind: component * core: platform * spec: (none) * summary: Utility for template sandbox. * score: 1 ### component TemplateSharingDialog * file: src/platform/templates/components/TemplateSharingDialog.tsx:92 * kind: component * core: platform * spec: (none) * summary: Utility for template sharing dialog. * score: 1 ### component TemplatesHubPage * file: src/platform/templates/pages/TemplatesHubPage.tsx:233 * kind: component * core: platform * spec: (none) * summary: Renders the Templates Hub page that centralizes access to Document, Form, Workflow, and Wizard templates.Presents a decision helper table to guide users to the appropriate template type, a responsive grid of templatecards with navigation controls, and a footer help alert linking to letterhead configuration. Navigation is handledvia react-router's navigation hooks and each interactive control routes to the corresponding management page. * params: * props — None. This component does not accept props. * example: | TemplatesHubPage /Accessibility considerations:- Table uses semantic table, thead, and tbody elements for assistive technology.- All actions (row "Go" buttons, card "Manage" buttons, and clickable cards) are keyboard-focusable and provide clear text labels for screen readers. * score: 4 ### component TemplatesLibraryPage * file: src/platform/page-layouts/pages/TemplatesLibraryPage.tsx:82 * kind: component * core: platform * spec: (none) * summary: Utility for templates library page. * score: 1 ### component TemplatesSettingsPage * file: src/platform/templates/pages/TemplatesSettingsPage.tsx:39 * kind: component * core: platform * spec: (none) * summary: Page component that provides a tabbed interface for managing letterheads, document templates,approval workflows, and starter templates. The active tab is synchronized with the query parameter in the URL and access is restricted to users with the permission.Accessibility: Tabs are keyboard-navigable through the underlying Tabs component; ensure theTabs implementation exposes appropriate ARIA roles and focus management for screen readers. * params: * props — Component props (none required) * returns: The page's JSX element representing the templates settings UI * example: | // Render inside application routing or a layoutTemplatesSettingsPage / * score: 4 ### component TemplateStatusBadge * file: src/platform/templates/components/TemplateStatusBadge.tsx:26 * kind: component * core: platform * spec: (none) * summary: Utility for template status badge. * score: 1 ### component TenantThemeProvider * file: src/platform/theming/components/TenantThemeProvider.tsx:29 * kind: component * core: platform * spec: (none) * summary: Provides tenant-specific CSS custom properties on .Must be rendered inside (authenticated shell).Does NOT block rendering while theme loads — children render immediatelywith platform defaults, then tenant overrides apply once fetched. * score: 2 ### component TerminologyManagementPage * file: src/platform/terminology/pages/TerminologyManagementPage.tsx:20 * kind: component * core: platform * spec: (none) * summary: PF-70-EN-01: Terminology management page.Provides ICD-10 hierarchy navigation, code set version management,and cross-code-set mapping administration. * score: 2 ### component TerminologyStep * file: src/platform/ai/components/onboarding/TerminologyStep.tsx:25 * kind: component * core: platform * spec: (none) * summary: Renders the Terminology & Voice step (optional). * params: * props — . * score: 2 ### component TestCallDialog * file: src/platform/settings/components/TestCallDialog.tsx:44 * kind: component * core: platform * spec: (none) * summary: Modal dialog that lets the user initiate a RingCentral Embeddable softphone test call.Presents the test phone number, shows widget readiness/login status, and starts a test call(expands the widget and dials the preset test number) when the primary action is confirmed.Accessibility: the dialog uses standard Dialog semantics; ensure focus is managed by the parentDialog component and that visual status text (e.g., "Loading...", "Not Logged In", "Ready")is perceivable by screen readers. * params: * props — Component props - open: Whether the dialog is open - onOpenChange: Callback invoked with the new open state when the dialog is requested to open or close * example: | TestCallDialog open=isDialogOpen onOpenChange=(open) = setDialogOpen(open) / * score: 4 ### component TestScenarioManager * file: src/platform/conditional-logic/components/builder/TestScenarioManager.tsx:46 * kind: component * core: platform * spec: (none) * summary: Utility for test scenario manager. * score: 1 ### component TestStep * file: src/platform/ai/wizards/ai-skill-creation/steps/TestStep.tsx:36 * kind: component * core: platform * spec: (none) * summary: Renders Step 4 (Test & Tune) with the mandatory test-run gate. * params: * props — The shared form instance + analytics callback. * score: 2 ### component TextareaField * file: src/platform/forms/components/fields/TextareaField.tsx:24 * kind: component * core: platform * spec: (none) * summary: Utility for textarea field. * score: 1 ### component TextField * file: src/platform/forms/components/fields/TextField.tsx:23 * kind: component * core: platform * spec: (none) * summary: Utility for text field. * score: 1 ### component TextViewer * file: src/platform/documents/TextViewer.tsx:18 * kind: component * core: platform * spec: (none) * summary: Utility for text viewer. * score: 1 ### component ThemePreview * file: src/platform/theming/components/ThemePreview\.tsx:106 * kind: component * core: platform * spec: (none) * summary: Inline preview that applies draft theme colors to a scoped subtree. * score: 2 ### component ThreadListPane * file: src/platform/cowork/components/ThreadListPane.tsx:31 * kind: component * core: platform * spec: (none) * summary: ThreadListPane — selectable conversation list for the Cowork workspace left column.Consumes PF-67 useConversations; realtime-backed via the hook's built-in subscription. * score: 2 ### component TimeMetricsChart * file: src/platform/wizards/components/analytics/TimeMetricsChart.tsx:26 * kind: component * core: platform * spec: (none) * summary: Utility for time metrics chart. * score: 1 ### component TimeRangeSelector * file: src/platform/health/components/TimeRangeSelector.tsx:28 * kind: component * core: platform * spec: (none) * summary: Utility for time range selector. * score: 1 ### component TransformPreviewCard * file: src/platform/settings/pages/data-migration/components/TransformPreviewCard.tsx:81 * kind: component * core: platform * spec: (none) * summary: Preview card for dry-run transformation of source data. * score: 2 ### component TransformRulesEditor * file: src/platform/settings/pages/data-migration/components/TransformRulesEditor.tsx:32 * kind: component * core: platform * spec: (none) * summary: Collapsible editor for transform rules on a mapping. * score: 2 ### component TrendChart * file: src/platform/health/components/TrendChart.tsx:27 * kind: component * core: platform * spec: (none) * summary: Utility for trend chart. * score: 1 ### component TrustRow * file: src/platform/auth/components/LoginBrandPanel.tsx:118 * kind: component * core: platform * spec: (none) * summary: Renders HIPAA / SOC 2 / Encryption trust badges.Used in both the desktop left panel and below the mobile card. * score: 2 ### component TypingIndicator * file: src/platform/messaging/components/TypingIndicator.tsx:18 * kind: component * core: platform * spec: (none) * summary: Utility for typing indicator. * score: 1 ### component TypographyTab * file: src/platform/theming/components/TypographyTab.tsx:23 * kind: component * core: platform * spec: (none) * summary: Typography settings tab for font family and heading font selection. * score: 2 ### component UnifiedInboxPage * file: src/platform/inbox/UnifiedInboxPage.tsx:296 * kind: component * core: platform * spec: (none) * summary: Utility for unified inbox page. * score: 1 ### component UnreadSeparator * file: src/platform/messaging/components/UnreadSeparator.tsx:9 * kind: component * core: platform * spec: (none) * summary: Visual separator indicating the start of unread messages. * score: 2 ### component UnsavedChangesBar * file: src/platform/data-manager/components/UnsavedChangesBar.tsx:21 * kind: component * core: platform * spec: (none) * summary: Utility for unsaved changes bar. * score: 1 ### component UnsavedChangesDialog * file: src/platform/settings/components/UnsavedChangesDialog.tsx:12 * kind: component * core: platform * spec: (none) * summary: Confirmation when leaving a settings page with unsaved edits. * score: 2 ### component UploadVersionDialog * file: src/platform/documents/UploadVersionDialog.tsx:21 * kind: component * core: platform * spec: (none) * summary: Utility for upload version dialog. * score: 1 ### component UsageDashboardTab * file: src/platform/quota/components/UsageDashboardTab.tsx:35 * kind: component * core: platform * spec: (none) * summary: Usage dashboard tab showing current resource consumption against quota limits. * score: 2 ### component UserManagement * file: src/platform/users/UserManagement.tsx:60 * kind: component * core: platform * spec: (none) * summary: Utility for user management. * score: 1 ### component UserMenu * file: src/platform/navigation/UserMenu.tsx:51 * kind: component * core: platform * spec: (none) * summary: Utility for user menu. * score: 1 ### component UserProfileCard * file: src/platform/navigation/UserProfileCard.tsx:28 * kind: component * core: platform * spec: (none) * summary: Utility for user profile card. * score: 1 ### component UserSignatureEditor * file: src/platform/email-signatures/components/UserSignatureEditor.tsx:40 * kind: component * core: platform * spec: (none) * summary: Editor for a user's personal email signature, showing inherited org template. * score: 2 ### component UserSignatureSettingsPage * file: src/platform/email-signatures/pages/UserSignatureSettingsPage.tsx:19 * kind: component * core: platform * spec: (none) * summary: User settings page for customizing personal email signature. * score: 2 ### component ValidationAnalyticsReport * file: src/platform/validation/components/ValidationAnalyticsReport.tsx:19 * kind: component * core: platform * spec: (none) * summary: Simple table showing failure count per rule, sorted by count descending. * score: 2 ### component ValidationRuleBuilder * file: src/platform/wizards/components/ValidationRuleBuilder.tsx:107 * kind: component * core: platform * spec: (none) * summary: Utility for validation rule builder. * score: 1 ### component ValidationRuleFormDialog * file: src/platform/validation/components/ValidationRuleFormDialog.tsx:43 * kind: component * core: platform * spec: (none) * summary: Dialog for creating or editing a validation rule. * score: 2 ### component ValidationRulesListPage * file: src/platform/validation/components/ValidationRulesListPage.tsx:29 * kind: component * core: platform * spec: (none) * summary: Table listing all validation rules for the organization. * score: 2 ### component ValidationRulesPage * file: src/platform/validation/pages/ValidationRulesPage.tsx:19 * kind: component * core: platform * spec: (none) * summary: Validation Rules hub page with three tabs: Rules, Analytics, Settings. * score: 2 ### component ValidationSettingsSection * file: src/platform/validation/components/ValidationSettingsSection.tsx:24 * kind: component * core: platform * spec: (none) * summary: Settings section for validation configuration: async timeout and default phone format. * score: 2 ### component ValueEditor * file: src/platform/conditional-logic/components/builder/ValueEditor.tsx:41 * kind: component * core: platform * spec: (none) * summary: Utility for value editor. * score: 1 ### component ValueMappingStep * file: src/platform/import/components/ValueMappingStep.tsx:104 * kind: component * core: platform * spec: (none) * summary: Value mapping reconciliation step for the PF-88 import flow. * score: 2 ### component VariableBadge * file: src/platform/templates/components/VariableInserter.tsx:205 * kind: component * core: platform * spec: (none) * summary: Inline badge for displaying a variable in content * score: 2 ### component VariableHelpSection * file: src/platform/email-signatures/components/VariableHelpSection.tsx:16 * kind: component * core: platform * spec: (none) * summary: Displays available template variables with copy-to-clipboard buttons. * score: 2 ### component VariableInserter * file: src/platform/templates/components/VariableInserter.tsx:44 * kind: component * core: platform * spec: (none) * summary: Dropdown component for inserting template variables. * score: 2 ### component VersionBadge * file: src/platform/pwa/components/VersionBadge.tsx:12 * kind: component * core: platform * spec: (none) * summary: Utility for version badge. * score: 1 ### component VersionCheck * file: src/platform/pwa/components/VersionCheck.tsx:20 * kind: component * core: platform * spec: (none) * summary: Checks the deployed app version periodically and shows an update banner when a new version is detected.Schedules an initial deferred version check (using requestIdleCallback with a timeout or a timeout fallback),then polls /version.json every 5 minutes. When the fetched version differs from the cached version inlocalStorage, displays a PWA update banner that allows the user to reload or snooze the update.Accessibility: the rendered update banner (PwaUpdateBanner) should provide clear focus management andaccessible labels; this component renders nothing when no update is available. * returns: The update banner element when a new version is detected, or when no update is needed. * example: | VersionCheck / * score: 5 ### component VersionComparisonView * file: src/platform/documents/pages/VersionComparisonView\.tsx:24 * kind: component * core: platform * spec: (none) * summary: Page component for comparing two document versions side-by-side. * score: 2 ### component ViewerLoadingSkeleton * file: src/platform/documents/components/ViewerLoadingSkeleton.tsx:13 * kind: component * core: platform * spec: (none) * summary: Loading skeleton for document viewers.Displays appropriate skeleton UI based on the document type being loaded. * score: 2 ### component ViolationsTab * file: src/platform/quota/components/ViolationsTab.tsx:31 * kind: component * core: platform * spec: (none) * summary: Violations tab listing quota breaches with filtering and export. * score: 2 ### component VirtualizedTable * file: src/platform/table-v2/components/VirtualizedTable.tsx:107 * kind: component * core: platform * spec: (none) * summary: VirtualizedTable component for rendering large datasets efficiently. * score: 5 ### component VirtualizedTableBody * file: src/platform/table-v2/components/VirtualizedTableBody.tsx:47 * kind: component * core: platform * spec: (none) * summary: Virtualized table body that only renders visible rows.Uses absolute positioning to place rows within a fixed-height container,enabling smooth scrolling for large datasets. * score: 2 ### component VisibilityConditionRow * file: src/platform/wizards/components/VisibilityConditionRow\.tsx:36 * kind: component * core: platform * spec: (none) * summary: Utility for visibility condition row. * score: 1 ### component VisibilityRuleEditor * file: src/platform/page-layouts/components/VisibilityRuleEditor.tsx:51 * kind: component * core: platform * spec: (none) * summary: Utility for visibility rule editor. * score: 1 ### component WebhookDeliveryDetail * file: src/platform/integrations/components/WebhookDeliveryDetail.tsx:55 * kind: component * core: platform * spec: (none) * summary: Utility for webhook delivery detail. * score: 1 ### component WebhookDeliveryLog * file: src/platform/integrations/components/WebhookDeliveryLog.tsx:35 * kind: component * core: platform * spec: (none) * summary: Utility for webhook delivery log. * score: 1 ### component WebVitalsCard * file: src/platform/health/components/WebVitalsCard.tsx:120 * kind: component * core: platform * spec: (none) * summary: Utility for web vitals card. * score: 1 ### component WelcomeHub * file: src/platform/auth/WelcomeHub.tsx:31 * kind: component * core: platform * spec: (none) * summary: Employee Welcome Hub with onboarding soft checklist. * score: 2 ### component WidgetConfigDialog * file: src/platform/analytics/dashboard/WidgetConfigDialog.tsx:59 * kind: component * core: platform * spec: (none) * summary: Modal dialog for adding or editing a single analytics canvas tile.Renders a two-panel layout: a left form panel (registry pickers, chart-type select, span select,optional title) and a right live-preview panel (stubbed in unit tests; real in production).Validates on submit — calls onSubmit only when the zod schema passes. * score: 2 ### component WidgetDrawer * file: src/platform/dashboard/components/WidgetDrawer.tsx:29 * kind: component * core: platform * spec: (none) * summary: Utility for widget drawer. * score: 1 ### component WidgetErrorBoundary * file: src/platform/dashboard/components/WidgetErrorBoundary.tsx:48 * kind: component * core: platform * spec: (none) * summary: Utility for widget error boundary. * score: 1 ### component WidgetExpandedDialog * file: src/platform/dashboard/components/WidgetExpandedDialog.tsx:31 * kind: component * core: platform * spec: (none) * summary: Utility for widget expanded dialog. * score: 1 ### component WidgetGrid * file: src/platform/dashboard/components/WidgetGrid.tsx:30 * kind: component * core: platform * spec: (none) * summary: Utility for widget grid. * score: 1 ### component WidgetLastUpdated * file: src/platform/dashboard/components/WidgetLastUpdated.tsx:31 * kind: component * core: platform * spec: (none) * summary: Display when widget data was last updatedShows warning color when data is stale (older than maxAge)Optionally includes a manual refresh buttonNote: This component expects a TooltipProvider to be present in the component tree.The app-level TooltipProvider should be used; do not wrap with nested providers. * score: 2 ### component WidgetSection * file: src/platform/dashboard/components/WidgetSection.tsx:31 * kind: component * core: platform * spec: (none) * summary: Utility for widget section. * score: 1 ### component WidgetSizeSelector * file: src/platform/dashboard/components/WidgetSizeSelector.tsx:23 * kind: component * core: platform * spec: (none) * summary: Utility for widget size selector. * score: 1 ### component WidgetSkeleton * file: src/platform/dashboard/components/WidgetSkeleton.tsx:16 * kind: component * core: platform * spec: (none) * summary: Utility for widget skeleton. * score: 1 ### component WidgetWrapper * file: src/platform/dashboard/components/WidgetWrapper.tsx:41 * kind: component * core: platform * spec: (none) * summary: Utility for widget wrapper. * score: 1 ### component WizardAnalyticsDashboard * file: src/platform/wizards/components/WizardAnalyticsDashboard.tsx:27 * kind: component * core: platform * spec: (none) * summary: Utility for wizard analytics dashboard. * score: 1 ### component WizardAnalyticsPage * file: src/platform/wizards/pages/WizardAnalyticsPage.tsx:40 * kind: component * core: platform * spec: (none) * summary: Utility for wizard analytics page. * score: 1 ### component WizardBuilder * file: src/platform/wizards/components/WizardBuilder.tsx:47 * kind: component * core: platform * spec: (none) * summary: Utility for wizard builder. * score: 1 ### component WizardBuilderPage * file: src/platform/wizards/pages/WizardBuilderPage.tsx:113 * kind: component * core: platform * spec: (none) * summary: Utility for wizard builder page. * score: 1 ### component WizardCompleteStep * file: src/platform/wizards/components/WizardCompleteStep.tsx:37 * kind: component * core: platform * spec: (none) * summary: Utility for wizard complete step. * score: 1 ### component WizardCreatePage * file: src/platform/wizards/pages/WizardCreatePage.tsx:180 * kind: component * core: platform * spec: (none) * summary: Utility for wizard create page. * score: 1 ### component WizardFormDialog * file: src/platform/page-layouts/components/wizards/WizardFormDialog.tsx:46 * kind: component * core: platform * spec: (none) * summary: Utility for wizard form dialog. * score: 1 ### component WizardIconAuditPage * file: src/platform/wizards/pages/WizardIconAuditPage.tsx:60 * kind: component * core: platform * spec: (none) * summary: Wizard step icon audit page. * score: 1 ### component WizardList * file: src/platform/page-layouts/components/wizards/WizardList.tsx:27 * kind: component * core: platform * spec: (none) * summary: Utility for wizard list. * score: 1 ### component WizardListPage * file: src/platform/wizards/pages/WizardListPage.tsx:25 * kind: component * core: platform * spec: (none) * summary: Utility for wizard list page. * score: 1 ### component WizardMigrationSection * file: src/platform/wizards/components/WizardMigrationSection.tsx:165 * kind: component * core: platform * spec: (none) * summary: Utility for wizard migration section. * score: 1 ### component WizardNavigation * file: src/platform/forms/components/wizard/WizardNavigation.tsx:17 * kind: component * core: platform * spec: (none) * summary: Utility for wizard navigation. * score: 1 ### component WizardPageShell * file: src/platform/wizards/components/WizardPageShell.tsx:71 * kind: component * core: platform * spec: (none) * summary: Full-height flex wrapper that gives a route-level wizard the vertical context itneeds without claiming any layout concern the wizard or app shell already owns. * score: 2 ### component WizardPreview * file: src/platform/wizards/components/WizardPreview\.tsx:32 * kind: component * core: platform * spec: (none) * summary: Utility for wizard preview. * score: 1 ### component WizardPreviewField * file: src/platform/wizards/components/WizardPreviewField.tsx:24 * kind: component * core: platform * spec: (none) * summary: Utility for wizard preview field. * score: 1 ### component WizardPreviewForm * file: src/platform/wizards/components/WizardPreviewForm.tsx:19 * kind: component * core: platform * spec: (none) * summary: Utility for wizard preview form. * score: 1 ### component WizardReviewLayout * file: src/platform/wizards/components/review/WizardReviewLayout.tsx:39 * kind: component * core: platform * spec: (none) * summary: WizardReviewLayoutOuter container for a wizard's "Review & Submit" step. Provides thestandard shell so each wizard's ReviewStep justneeds to drop in children. * score: 5 ### component WizardReviewSection * file: src/platform/wizards/components/review/WizardReviewSection.tsx:50 * kind: component * core: platform * spec: (none) * summary: WizardReviewSectionOne section card on a wizard's "Review & Submit" step. Provides thestandard shell so per-wizard ReviewStep files don't have to recreate it.- 44px touch target on the Edit button (a11y)- for screen-reader clarity- Edit button is omitted when is not providedRecommended composition: pair with for label/value rowsinside the section.Replaces the duplicated section pattern across CE / GR / HR wizards(CCR R-T2.1). * score: 2 ### component WizardRun * file: src/platform/page-layouts/components/wizards/WizardRun.tsx:28 * kind: component * core: platform * spec: (none) * summary: Utility for wizard run. * score: 1 ### component WizardSettingsDialog * file: src/platform/wizards/components/WizardSettingsDialog.tsx:29 * kind: component * core: platform * spec: (none) * summary: Utility for wizard settings dialog. * score: 1 ### component WizardShell * file: src/platform/wizards/components/WizardShell/WizardShell.tsx:91 * kind: component * core: platform * spec: (none) * summary: Utility for wizard shell. * score: 1 ### component WizardStepContent * file: src/platform/forms/components/wizard/WizardStepContent.tsx:17 * kind: component * core: platform * spec: (none) * summary: Utility for wizard step content. * score: 1 ### component WizardStepper * file: src/platform/forms/components/wizard/WizardStepper.tsx:285 * kind: component * core: platform * spec: (none) * summary: Utility for wizard stepper. * score: 1 ### component WizardVersionDiff * file: src/platform/wizards/components/WizardVersionDiff.tsx:31 * kind: component * core: platform * spec: (none) * summary: Utility for wizard version diff. * score: 1 ### component WizardVersionHistory * file: src/platform/wizards/components/WizardVersionHistory.tsx:28 * kind: component * core: platform * spec: (none) * summary: Utility for wizard version history. * score: 1 ### component WizardVersionPreview * file: src/platform/wizards/components/WizardVersionPreview\.tsx:27 * kind: component * core: platform * spec: (none) * summary: Utility for wizard version preview. * score: 1 ### component WorkflowCanvas * file: src/platform/workflow/WorkflowCanvas.tsx:68 * kind: component * core: platform * spec: (none) * summary: Render a configurable workflow canvas backed by ReactFlow for interactive graph visualization.Renders nodes and edges from provided initial data, manages internal state, and forwards user interactions(node/edge changes, connections, clicks) to optional callbacks. Supports a read-only mode that disablesediting and restricts allowed node changes, and exposes options for grid snapping, auto fit, minimap and controls. * params: * props — Component props - initialNodes: Initial array of nodes to display on the canvas - initialEdges: Initial array of edges to display on the canvas - nodeTypes: Mapping of custom node type keys to React component renderers - snapToGrid: Whether node dragging snaps to a grid (default: true) - snapGrid: Grid size used when snapping (default: \[20, 20]) - fitView: Whether the view should automatically fit the graph on load (default: true) - showMiniMap: Show a MiniMap overview (default: true) - showControls: Show the standard ReactFlow controls (default: true) - readOnly: Disable interactive editing and connecting when true (default: false) - onNodesChange: Optional callback invoked with the latest nodes after user-driven changes - onEdgesChange: Optional callback invoked with the latest edges after user-driven changes - onNodeClick: Optional callback invoked when a node is clicked; receives the clicked node - onPaneClick: Optional callback invoked when the canvas background is clicked - onConnect: Optional callback invoked when a new connection is established; receives - className: Optional additional CSS classes applied to the canvas containerAccessibility considerations:- When used interactively, ensure keyboard and screen-reader access to any custom node content provided via .- In read-only mode the component disables drag/connect interactions but still exposes click events for assistive technologies. * score: 4 ### component WorkOrderSummaryWidget * file: src/platform/dashboard/widgets/WorkOrderSummaryWidget.tsx:49 * kind: component * core: platform * spec: (none) * summary: Utility for work order summary widget. * score: 1 ### component WorkspaceBuilderPage * file: src/platform/navigation/workspaces/admin/WorkspaceBuilderPage.tsx:542 * kind: component * core: platform * spec: (none) * summary: Route entry point for the admin workspace builder. Gates the page body behindthe permission via . * score: 2 ### component WorkspaceHubPage * file: src/platform/navigation/workspaces/WorkspaceHubPage.tsx:16 * kind: component * core: platform * spec: (none) * summary: Orientation hub for a workspace lens ().The composed navigation for a workspace lives in the sidebar; this page is alightweight landing surface that names the workspace and surfaces any"needs attention" counters once those per-core sources are wired in. * score: 2 ### component WorkspaceList * file: src/platform/navigation/components/WorkspaceList.tsx:24 * kind: component * core: platform * spec: (none) * summary: "Workspaces" switcher section for the all-modules sidebar view\.Lists provisional role-based workspace lenses the user can jump into.Visibility is gated only on each workspace's own top-level field (if present); per-group permission filtering happens inside theworkspace via useWorkspaceNav. Renders nothing when no workspace is visible. * score: 2 ### component WorkspaceNav * file: src/platform/navigation/components/WorkspaceNav.tsx:30 * kind: component * core: platform * spec: (none) * summary: Composed cross-core nav for an active workspace lens.Renders the workspace's permission-filtered NavSubGroups (from) using the shared primitive, plus an"Exit workspace" affordance that calls .Shown in whenever is set. * score: 2 ## Functions & utilities ### function \_\_getBaselineForTests * file: src/platform/theming/devChecks/verifyDefaultsRestored.ts:117 * kind: function * core: platform * spec: (none) * summary: Test-only accessor. * score: 1 ### function \_\_resetBaselineForTests * file: src/platform/theming/devChecks/verifyDefaultsRestored.ts:111 * kind: function * core: platform * spec: (none) * summary: Test-only: forget the captured baseline so the next call re-reads . Not exported from the package barrel. * score: 4 ### function \_flushForTesting * file: src/platform/gestures/utils/trackGestureEvent.ts:117 * kind: function * core: platform * spec: (none) * summary: Exposed for testing — force immediate flush * score: 4 ### function \_getQueueLength * file: src/platform/gestures/utils/trackGestureEvent.ts:122 * kind: function * core: platform * spec: (none) * summary: Exposed for testing — get current queue length * score: 4 ### function \_resetAllowlistCache * file: src/platform/ai/mcp-config.ts:55 * kind: function * core: platform * spec: (none) * summary: Reset the cached allowlist for tests that mutate . * score: 4 ### function \_resetForTesting * file: src/platform/gestures/utils/trackGestureEvent.ts:127 * kind: function * core: platform * spec: (none) * summary: Cleanup for testing * score: 1 ### function \_resetPrefetchRegistry * file: src/platform/routing/prefetch/registry.ts:89 * kind: function * core: platform * spec: (none) * summary: Test-only: drop all registered prefetchers. * score: 4 ### function activateEntraProvisioning * file: src/platform/integrations/hooks/useEntraSetup.ts:151 * kind: function * core: platform * spec: (none) * summary: Step 4: enable provisioning for the org (mirrors the flat card's enable toggle). * score: 4 ### function activateSsoProvider * file: src/platform/auth/sso/useSsoSetup.ts:110 * kind: function * core: platform * spec: (none) * summary: Step 4: register the SAML provider with Supabase Auth and activate it. * score: 4 ### function addBusinessDays * file: src/platform/calendar/lib/business-day-utils.ts:76 * kind: function * core: platform * spec: (none) * summary: Adds N business days to a date, skipping non-working days and holidays. * params: * date — Starting date. * days — Number of business days to add (must be = 0). * businessHours — Business hours configuration map. * holidays — List of calendar holidays. * returns: The resulting date after adding business days. * score: 4 ### function addConditionToGroup * file: src/platform/conditional-logic/builder/utils.ts:266 * kind: function * core: platform * spec: (none) * summary: Add a condition to a group * score: 1 ### function addCustomTab * file: src/platform/telephony/lib/embeddable-tabs.ts:120 * kind: function * core: platform * spec: (none) * summary: Add a custom tab to the widget.The tab will be registered and content set. * score: 4 ### function addGroupToGroup * file: src/platform/conditional-logic/builder/utils.ts:290 * kind: function * core: platform * spec: (none) * summary: Add a nested group * score: 1 ### function addThreadAgent * file: src/platform/cowork/threadsService.ts:44 * kind: function * core: platform * spec: (none) * summary: Register an agent as an attributed thread participant. The RPC resolves the agent'sPF-30-EN-01 scoped principal, asserts same-org, and requires a LIVE pf.cowork.participatedelegation (via pf\_agent\_can) plus that currently holds pf.cowork.participate.Returns the new pf\_thread\_agents id. * score: 4 ### function AgentMessageBadge * file: src/platform/cowork/components/AgentMessageBadge.tsx:44 * kind: function * core: platform * spec: (none) * summary: Agent participation badge (PF-124 Phase 2). Compact form: the agent name in the mode-aware / pair (UX-9 semantic tokens — never ). * score: 4 ### function aggregatePatterns * file: src/platform/query-performance/hooks/useQueryPatterns.ts:32 * kind: function * core: platform * spec: (none) * summary: Aggregate query logs by fingerprint into pattern summaries. * params: * logs — Raw log rows * returns: Sorted array of QueryPatternSummary (by total time descending) * score: 4 ### function AIAssistantInline * file: src/platform/ai/widgets/AIAssistantInline.tsx:25 * kind: function * core: platform * spec: (none) * summary: Utility for aiassistant inline. * score: 1 ### function aiToUIMessage * file: src/platform/ai/utils/messageConversion.ts:36 * kind: function * core: platform * spec: (none) * summary: Maps an to a with a single text part and metadata for timestamp round-trip. * score: 4 ### function applyBillingOverrides * file: src/platform/clinical/billing/applyBillingOverrides.ts:22 * kind: function * core: platform * spec: (none) * summary: Applies billing overrides to a single suggestion. * params: * suggestion — The base billing suggestion (or null) * overrides — The aggregated override config for the current payer/org * returns: The modified suggestion, or null if suppressed * score: 4 ### function applyClientFilters * file: src/platform/table-v2/utils/filter/client.ts:35 * kind: function * core: platform * spec: (none) * summary: Apply multiple filter predicates to an in-memory array.All predicates must pass (AND logic). * params: * items — Array of items to filter * filters — Array of filter predicates * returns: Filtered array * example: | const users = \[ name: 'John', age: 30 , name: 'Jane', age: 25 ];const filters = \[ predicate: (u) = u.age 20 , predicate: (u) = u.name.startsWith('J') ,];const result = applyClientFilters(users, filters);// \[ name: 'John', age: 30 , name: 'Jane', age: 25 ] * score: 4 ### function applyComplementarySuppression * file: src/platform/analytics/complementary-suppression.ts:75 * kind: function * core: platform * spec: (none) * summary: Apply primary + complementary small-cell suppression to a 2-D count table. * score: 4 ### function applyCompositeMeasures * file: src/platform/analytics/serving/composite.ts:100 * kind: function * core: platform * spec: (none) * summary: Combine the plan's measures over (already grouped by ).Returns flat rows, each carrying the row-dimension key, every measure value (or null whensuppressed), and a field for derived measures. * score: 4 ### function applyConditionalLogic * file: src/platform/forms/validationV2.ts:75 * kind: function * core: platform * spec: (none) * summary: Filter and transform fields based on conditional logic * params: * fields — All form fields * formData — Current form data * returns: Visible fields with updated required/readonly status * score: 4 ### function applyFilterGroup * file: src/platform/table-v2/utils/filter/client.ts:182 * kind: function * core: platform * spec: (none) * summary: Apply a FilterGroup to an in-memory array.Supports the same filter structure as applyFilters for Supabase. * params: * items — Array of items to filter * filterGroup — Filter group to apply * returns: Filtered array * example: | const filters: FilterGroup = operator: 'AND', filters: \[ field: 'status', operator: 'equals', value: 'active' , field: 'age', operator: 'gte', value: 21 , ],;const result = applyFilterGroup(users, filters); * score: 4 ### function applyFilters * file: src/platform/table-v2/utils/filter/builder.ts:187 * kind: function * core: platform * spec: (none) * summary: Apply filters to a Supabase query builder. * params: * builder — Supabase PostgrestFilterBuilder * filterGroup — Filter group containing filters and logical operator * options — Optional configuration * returns: Modified query builder * example: | const filters: FilterGroup = operator: 'AND', filters: \[ field: 'status', operator: 'equals', value: 'active' , field: 'name', operator: 'contains', value: 'john' , ],;const query = supabase.from('users').select('\*');const filteredQuery = applyFilters(query, filters); * score: 4 ### function applyFullHpExamGate * file: src/platform/clinical/blocks/ros-exam/full-hp-gate.ts:58 * kind: function * core: platform * spec: (none) * summary: Apply the TJC full-H\&P gate to a resolved surface (pure).When the TJC overlay is active AND the encounter meets ,the block is marked required (source), being appended if the surface did not already compose it.In every other case — CARF-only, no overlay, or condition unmet — theresolution is returned unchanged, so the exam block keeps whatever advisory() composition it had. * params: * resolved — the CL-75 resolved surface to gate. * context — the org/encounter overlay context. * returns: a new resolved surface (never mutates the input). * score: 4 ### function applyPiiPhiFilter * file: src/platform/export/utils/filterPiiPhi.ts:54 * kind: function * core: platform * spec: (none) * summary: Apply PII/PHI filter to a single row based on entity config. * params: * row — Data row (will NOT be mutated; returns a new object) * config — Field-level filter configuration for this entity type * returns: Filtered copy of the row * score: 4 ### function applyPrimarySuppressionWithThreshold * file: src/platform/analytics/suppression.ts:50 * kind: function * core: platform * spec: (none) * summary: Mask a single grouped count against a minimum-cell-size threshold.Suppresses when is below (strict ), or is negative / non-finite.A suppressed result carries (the count is dropped, not rounded) and a display token (the standard HIPAA small-cell presentation for a singlevalue). A visible result truncates to an integer. * params: * count — the raw group population. * threshold — minimum cell size; defaults to the CL-35 parity value (5). PF-123 passes the PF-96-resolved value (federal baseline ). * score: 4 ### function applyRailOrder * file: src/platform/navigation/utils/apply-rail-order.ts:18 * kind: function * core: platform * spec: (none) * summary: Partition accessible modules into pinned (in order) + unpinned(in , with any not-yet-ordered ids appended in their accessible order).Ids in prefs that are NOT in (lost access) are dropped silently. * score: 4 ### function applyServingSuppression * file: src/platform/analytics/serving/mart-suppression.ts:81 * kind: function * core: platform * spec: (none) * summary: Reshape grouped mart rows into a count matrix, apply primary + complementary suppressionat the resolved minimum cell size, and return labeled masked cells. * score: 4 ### function applySorting * file: src/platform/table-v2/utils/sort/config.ts:102 * kind: function * core: platform * spec: (none) * summary: Apply sorting to a Supabase query builderSupports single field sorting or multi-field sorting with priority.First field in the array has highest priority. * params: * builder — Supabase query builder * sortInput — Sort configuration (single or multi-field) * options — Optional configuration * returns: Modified query builder * example: | // Single field sortconst query = applySorting( supabase.from('users').select('*'), field: 'created\_at', direction: 'desc' ); // Multi-field sortconst query = applySorting( supabase.from('users').select('*'), sorts: \[ field: 'status', direction: 'asc' , field: 'created\_at', direction: 'desc' ] ); * score: 4 ### function applyTransform * file: src/platform/import/mapping/applyTransforms.ts:46 * kind: function * core: platform * spec: (none) * summary: Apply a transform to a single cell value. * score: 4 ### function applyTransformsToRows * file: src/platform/import/mapping/applyTransforms.ts:86 * kind: function * core: platform * spec: (none) * summary: Apply transforms to all rows for mapped fields. * score: 4 ### function applyWidgetOrder * file: src/platform/dashboard/utils/widget-preferences.ts:17 * kind: function * core: platform * spec: (none) * summary: Apply a new visible-widget order while preserving hidden widgets and metadata. * score: 4 ### function approveAgentAction * file: src/platform/ai/agentic/intake-write-rpc-adapters.ts:115 * kind: function * core: platform * spec: (none) * summary: PF-126 approve wrapper (test/UI only — staff path). Returns the single-use grant token ONCE. * score: 4 ### function approveConnector * file: src/platform/analytics/hooks/useAnalyticsConnectors.ts:43 * kind: function * core: platform * spec: (none) * summary: Calls the perm-gated SECURITY DEFINER RPC.Records server-side — never auto-approved. * score: 4 ### function archiveAgent * file: src/platform/cowork/agentsService.ts:87 * kind: function * core: platform * spec: (none) * summary: Soft-archive an agent (status → 'archived'). RLS scopes the row to the caller's org. * score: 4 ### function asamLocRowToFormValues * file: src/platform/clinical/blocks/asam-loc-adapter.ts:129 * kind: function * core: platform * spec: (none) * summary: Map a persisted cl\_loc\_assessments row back to the block's form values. * score: 4 ### function assembleArtifactPromptContext * file: src/platform/ai/agentic/artifact-prompt-context.ts:110 * kind: function * core: platform * spec: (none) * summary: Assemble prompt-safe context from one or more PF-128 artifact versions. EVERY version must pass; the FIRST failure throws andblocks the whole assembly (fail-closed) — so a single poisoned/unscreened artifact prevents thedownstream prompt from being built at all. Returns the joined prompt-safe text. * score: 4 ### function assessmentRowToFormValues * file: src/platform/clinical/blocks/suicide/suicide-assessment-adapter.ts:95 * kind: function * core: platform * spec: (none) * summary: Map a persisted assessment row back to the block's form values. * score: 4 ### function assignGoogleLicense * file: src/platform/integrations/google-workspace.ts:142 * kind: function * core: platform * spec: (none) * summary: Assigns a Google Workspace product/SKU license through the PF-101 license edge function. * score: 4 ### function assignPageToField * file: src/platform/forms/utils/sectionPageMapping.ts:59 * kind: function * core: platform * spec: (none) * summary: Assign a page ID to a field configuration based on section * score: 4 ### function auditAllWizards * file: src/platform/wizards/audit/orchestrator.ts:50 * kind: function * core: platform * spec: (none) * summary: Run all static checks across the registry (template from migrations, columns/enums from types.ts). Throws nothing — source errors become findings. * score: 4 ### function auditAllWizardsLive * file: src/platform/wizards/audit/orchestrator.ts:132 * kind: function * core: platform * spec: (none) * summary: Live-lane audit: runs the same checks as the static lane but sourced from therunning stack (authoritative), and additionally emits migration↔live-DB findings. Async; callers obtain a from . * score: 4 ### function auditMcpRejections * file: src/platform/ai/mcp-rejection-audit.ts:66 * kind: function * core: platform * spec: PF-127 * summary: Write a denied/not\_allowlisted row for each rejected MCP server.Returns the count successfully written. FAIL-SOFT: an individual audit error (returned orthrown) is swallowed so a logging failure never breaks the agent run. * score: 5 ### function auditValueCoverage * file: src/platform/import/mapping/auditValueCoverage.ts:51 * kind: function * core: platform * spec: (none) * summary: Audit how completely a set of source values maps onto the resolved targets.Contract:- Empty / whitespace-only source values are ignored.- Source values are de-duplicated; a value appearing N times counts once.- Each distinct value is classified via ; counts as mapped, anything else () is unmapped.- is the number of distinct values that matched.- lists the distinct misses in original casing, stable first-seen order.- is , or when there are no distinct source values (nothing to map ⇒ full coverage).- is for (fail-open default), and for only when there are zero unmapped values (100% coverage). * params: * sourceValues — Raw values observed in an import column (may contain dups / blanks). * targets — Resolved target options (value + label + optional aliases). * strictness — The binding's enforcement policy. * returns: A summarising mapped/unmapped coverage. * score: 4 ### function autoMapColumns * file: src/platform/data-manager/utils/csvUtils.ts:92 * kind: function * core: platform * spec: (none) * summary: Auto-detect column mappings based on header similarity * score: 4 ### function autoMapRawDataColumns * file: src/platform/data-manager/utils/rawDataImportUtils.ts:24 * kind: function * core: platform * spec: (none) * summary: Auto-detect column mappings based on header similarity * score: 4 ### function boolToCoded * file: src/platform/clinical/blocks/suicide/mapping.ts:21 * kind: function * core: platform * spec: (none) * summary: Coerce a boolean column back to its code. * score: 4 ### function buildAmendmentRow * file: src/platform/clinical/plan/record-amendment.ts:43 * kind: function * core: platform * spec: (none) * summary: Build the sanitized cl\_treatment\_plan\_amendments insert row (amended\_by → DB default auth.uid()). * score: 4 ### function buildAsamDimensionScores * file: src/platform/clinical/blocks/asam-loc-adapter.ts:98 * kind: function * core: platform * spec: (none) * summary: Build the CL-49 JSONB from the block's flat rating/notesfields. Dimensions without a valid 0–4 rating are omitted entirely (a notewithout a rating has no home in ). * score: 4 ### function buildAsamLocRow * file: src/platform/clinical/blocks/asam-loc-adapter.ts:154 * kind: function * core: platform * spec: (none) * summary: Build a sanitized cl\_loc\_assessments row: tenant/chart from resolved context,dimension scores composed from flat fields, block linkage in custom\_fields(merged over any existing custom\_fields so foreign keys other writers putthere survive). * score: 4 ### function buildAssessmentRow * file: src/platform/clinical/blocks/suicide/suicide-assessment-adapter.ts:70 * kind: function * core: platform * spec: (none) * summary: Build the sanitized cl\_risk\_screenings upsert row for an assessment instance. * score: 4 ### function buildCategorizePrompt * file: src/platform/ai/utils/aiPromptBuilder.ts:122 * kind: function * core: platform * spec: (none) * summary: Build a categorization prompt * score: 1 ### function buildChannelName * file: src/platform/realtime/utils/channelNaming.ts:41 * kind: function * core: platform * spec: (none) * summary: Build a deterministic channel name. * params: * type — | | * resource — Table name (db) or logical channel name (broadcast/presence) * discriminator — Optional filter string or extra key to distinguish channels on the same resource but with different filters. * orgId — Optional organization ID. When provided for or channels, the name is prefixed with to enforce tenant isolation at the topic level. Ignored for channels. * returns: A stable string suitable as a Supabase channel name. * score: 4 ### function buildCompletenessAlert * file: src/platform/clinical/completeness/completenessAlert.ts:48 * kind: function * core: platform * spec: (none) * summary: Shape a PHI-free alert payload from a completeness result. * params: * result — the computed surface completeness. * ctx — the encounter reference the alert is about. * returns: a payload containing only allow-listed non-PHI fields. * score: 4 ### function buildConfirmedSkillOverrides * file: src/platform/ai/lib/onboarding-logic.ts:100 * kind: function * core: platform * spec: (none) * summary: Map an admin's confirmed selection to the override rows to upsert.Recommend-and-confirm contract (AC-5 / AC-6): - Only codes present in BOTH the recommended set and the confirmed set yield a row (a confirmed code that isn't a current recommendation is ignored — the wizard only enables what it actually recommended). - Each row is , org-scoped, keyed by the catalog . - Zero confirmed codes ⇒ zero rows (a valid, explicit "enable nothing" choice). - The result NEVER contains an key/column — module defaults remain the MODULE\_DEFAULT\_SKILLS TS constant (out of scope for v1). * score: 4 ### function buildContactTabContent * file: src/platform/telephony/lib/embeddable-tabs.ts:272 * kind: function * core: platform * spec: (none) * summary: Build HTML content for contact info tab * score: 4 ### function buildDischargeSummaryRow * file: src/platform/clinical/blocks/discharge/discharge-summary-adapter.ts:111 * kind: function * core: platform * spec: (none) * summary: Build the sanitized column row for a discharge summary:tenant/chart/encounter/version injected from context, unknown keys dropped, omitted (partial-update semantics on the update path). * score: 4 ### function buildDockModules * file: src/platform/navigation/dock-modules.ts:165 * kind: function * core: platform * spec: (none) * summary: Build dock modules from the loaded registry snapshot (may grow as chunks load). * score: 4 ### function builderStateToRule * file: src/platform/conditional-logic/builder/utils.ts:115 * kind: function * core: platform * spec: (none) * summary: Convert ConditionBuilderState to ConditionalRuleV2 * score: 4 ### function buildExamFindingRow * file: src/platform/clinical/blocks/exam-adapter.ts:39 * kind: function * core: platform * spec: (none) * summary: Build a sanitized exam-finding row: tenant/encounter/version from context, unknown columns dropped, undefined omitted. * score: 4 ### function buildILikeOrConditions * file: src/platform/search/utils.ts:87 * kind: function * core: platform * spec: (none) * summary: Build ILIKE OR conditions for multi-field search. * params: * fields — Array of field names to search * escapedQuery — The escaped search query * returns: Supabase OR filter string * example: | buildILikeOrConditions(\['name', 'email'], 'john')// Returns 'name.ilike.%john%,email.ilike.%john%' * score: 4 ### function buildImportStoragePath * file: src/platform/import/storage.ts:14 * kind: function * core: platform * spec: (none) * summary: Build a tenant-scoped storage path for an import file. * example: | buildImportStoragePath('org-uuid', 'batch-uuid', 'employees.csv')// → 'imports/org-uuid/batch-uuid/employees.csv' * score: 4 ### function buildLegacyLabelPreferenceKeyMap * file: src/platform/navigation/quick-action-catalog.ts:135 * kind: function * core: platform * spec: (none) * summary: Builds a lookup from legacy dashboard preference id () to action\_key. * score: 4 ### function buildLoadingContent * file: src/platform/telephony/lib/embeddable-tabs.ts:344 * kind: function * core: platform * spec: (none) * summary: Build loading state content * score: 1 ### function buildMcpRejectionLog * file: src/platform/ai/mcp-rejection-audit.ts:45 * kind: function * core: platform * spec: PF-127 * summary: Build the params for one rejected MCP server (keys + decision only — PHI-free). * score: 5 ### function buildMedicationRow * file: src/platform/clinical/blocks/meds/med-list-adapter.ts:82 * kind: function * core: platform * spec: (none) * summary: Build a sanitized cl\_medications insert row for a NEW block-added entry:tenant/chart/encounter/version stamped from context, defaulting to'reported' and to 'active' (CHECK-safe defaults, spec Assumption 3). * score: 4 ### function buildMetabolicEntryRow * file: src/platform/clinical/blocks/metabolic-adapter.ts:59 * kind: function * core: platform * spec: (none) * summary: Build a sanitized panel-entry row: tenant/chart/encounter/version keys come fromcontext (a client cannot spoof them), NOT NULL floors at 'due', NOT NULL floors at (a PostgREST multi-row insert null-fills keys theother rows carry, so it must always be present), and empty-string timestamps arenullified (never to a timestamptz column). * score: 4 ### function buildModuleOverridesPayload * file: src/platform/provisioning/lib/moduleOverridesForm.ts:156 * kind: function * core: platform * spec: (none) * summary: Build the flat payload as a diff against the template defaults: - carries only modules whose checkbox differs from the template (explicit when unchecked, when re-checked); unchanged modules are omitted. - Each scalar key is included only when it is a valid in-range number that differs from the template default; blank/out-of-range/unchanged values are omitted.Returns when nothing was customized, so the caller sends no override at alland provisioning uses pure template defaults. * score: 4 ### function buildModuleRoute * file: src/platform/navigation/utils/navigation-utils.ts:83 * kind: function * core: platform * spec: (none) * summary: Build a module route with optional sub-route * score: 4 ### function buildMseUpsertRow * file: src/platform/clinical/blocks/mse-adapter.ts:108 * kind: function * core: platform * spec: (none) * summary: Build the sanitized upsert row for an MSE instance: tenant/encounter/version keyscome from context (a client cannot spoof them), unknown columns are dropped, and fields are omitted so an upsert never nulls existing values. * score: 4 ### function buildNavGroupPageEntries * file: src/platform/navigation/search-catalog.ts:81 * kind: function * core: platform * spec: (none) * summary: Build page entries from ALL nav groups on accessible modules.Covers both regular nav groups ( absent/false) and sub-modulegroups (), replacing the previous split that only indexedsub-module items and omitted everything in regular nav groups (e.g. Finance's"General Ledger", "Accounts Receivable", "Reports & Analytics" sections).- Group-level gates the entire group.- Item-level gates individual items within the group.- Items are deduplicated per-module by route to avoid double-entries where the same route appears in both and a navGroup. * params: * modules — Accessible module definitions from . * userPermissions — All permissions held by the current user. * score: 4 ### function buildNoMatchContent * file: src/platform/telephony/lib/embeddable-tabs.ts:355 * kind: function * core: platform * spec: (none) * summary: Build empty/no match state content * score: 4 ### function buildPartnerTabContent * file: src/platform/telephony/lib/embeddable-tabs.ts:315 * kind: function * core: platform * spec: (none) * summary: Build HTML content for partner info tab * score: 4 ### function buildPayrollForms * file: src/platform/onboarding/integrations/payrollIntegration.ts:57 * kind: function * core: platform * spec: (none) * summary: Build the list of payroll forms with completion status * score: 4 ### function buildProcessDiscoveredPayload * file: src/platform/events/publishers/processHealthPublisher.ts:75 * kind: function * core: platform * spec: (none) * summary: Creates a event payload. * params: * params — The discovery parameters. * returns: A typed event payload ready for publishing. * score: 1 ### function buildProcessHealthChangedPayload * file: src/platform/events/publishers/processHealthPublisher.ts:48 * kind: function * core: platform * spec: (none) * summary: Creates a event payload. * params: * params — The health change parameters. * returns: A typed event payload ready for publishing. * score: 1 ### function buildPrompt * file: src/platform/ai/utils/aiPromptBuilder.ts:53 * kind: function * core: platform * spec: (none) * summary: Build a structured prompt from configuration * score: 4 ### function buildQuickActionsPool * file: src/platform/dashboard/lib/quickActionsPool.ts:116 * kind: function * core: platform * spec: (none) * summary: Returns every quick action the user may customize or see, merged with preferences. * score: 4 ### function buildRecommendationBody * file: src/platform/ai/agentic/intake-artifact.ts:29 * kind: function * core: platform * spec: (none) * summary: Render the recommendation + proposed appointment as markdown (the artifact body). * score: 4 ### function buildReconciliationRow * file: src/platform/clinical/blocks/meds/med-reconciliation-adapter.ts:69 * kind: function * core: platform * spec: (none) * summary: Build the sanitized cl\_medication\_reconciliations row (tenant keys from context). * score: 4 ### function buildRegistry * file: src/platform/analytics/semantic-compiler.ts:94 * kind: function * core: platform * spec: (none) * summary: Build a from a list of definitions (e.g. pf\_analytics\_semantic\_models rows). * score: 4 ### function buildRosEntryRow * file: src/platform/clinical/blocks/ros-adapter.ts:68 * kind: function * core: platform * spec: (none) * summary: Build a sanitized ROS row: tenant/encounter/version from context, unknown columns dropped, undefined omitted. * score: 4 ### function buildSafetyPlanRow * file: src/platform/clinical/blocks/suicide/safety-plan-adapter.ts:49 * kind: function * core: platform * spec: (none) * summary: Build the cl\_safety\_plans column row for a safety plan (Stanley-Brown six + attestation). * score: 4 ### function buildScreenRow * file: src/platform/clinical/blocks/suicide/suicide-screen-adapter.ts:51 * kind: function * core: platform * spec: (none) * summary: Build the sanitized cl\_risk\_screenings upsert row for a screen instance (tenant keys from context). * score: 4 ### function buildSdohScreeningRow * file: src/platform/clinical/blocks/sdoh-adapter.ts:73 * kind: function * core: platform * spec: (none) * summary: Build the sanitized cl\_sdoh\_screenings upsert row for a screening instance (tenant keys from context). * score: 4 ### function buildSLANotificationPayload * file: src/platform/sla/services/sla-notifications.ts:30 * kind: function * core: platform * spec: (none) * summary: Builds a notification payload from an SLA instance.Ensures no PHI is included — IDs only. * score: 4 ### function buildSuggestPrompt * file: src/platform/ai/utils/aiPromptBuilder.ts:141 * kind: function * core: platform * spec: (none) * summary: Build a suggestion prompt * score: 1 ### function buildSummarizePrompt * file: src/platform/ai/utils/aiPromptBuilder.ts:93 * kind: function * core: platform * spec: (none) * summary: Build a summarization prompt * score: 1 ### function buildSystemPrompt * file: src/platform/ai/utils/aiPromptBuilder.ts:33 * kind: function * core: platform * spec: (none) * summary: Build a system prompt based on module context * score: 4 ### function buildVitalSignsRow * file: src/platform/clinical/blocks/vitals-adapter.ts:78 * kind: function * core: platform * spec: (none) * summary: Build the sanitized cl\_vital\_signs upsert row: tenant/chart/encounter/versionkeys come from context (a client cannot spoof them), numeric axes are coerced, fields are omitted so an upsert never nulls existing values, andNOT NULL defaults to now. * score: 4 ### function buildWizardCreateSpecs * file: src/platform/wizards/audit/wizard-create-specs-bridge.ts:19 * kind: function * core: platform * spec: (none) * summary: Build the spec→wizard bridge consumed by tools/eos-spec (a separate workspacethat cannot import src/). Keyed by upper-cased specId; includes every registryentry that declares a . The committed JSON(docs/reports/wizard-create-specs.json) is generated from this by and drift-guarded by a unit test (Task 3). * score: 4 ### function buildWizardGenerationPrompt * file: src/platform/wizards/ai/prompts.ts:65 * kind: function * core: platform * spec: (none) * summary: Build a user prompt for wizard generation * score: 4 ### function buildWizardModificationPrompt * file: src/platform/wizards/ai/prompts.ts:80 * kind: function * core: platform * spec: (none) * summary: Build a user prompt for modifying an existing wizard * score: 4 ### function calculateEnrollmentDeadline * file: src/platform/onboarding/integrations/benefitsIntegration.ts:41 * kind: function * core: platform * spec: (none) * summary: Calculate enrollment deadline from hire date * score: 4 ### function calculateGlobalUnreadCount * file: src/platform/messaging/utils/unreadCalculator.ts:14 * kind: function * core: platform * spec: (none) * summary: Calculate total unread count across all conversations * score: 4 ### function calculateImpactGraphLayout * file: src/platform/automation/components/impact-graph/impactGraphLayout.ts:23 * kind: function * core: platform * spec: (none) * summary: Calculate layout for the process impact graph.Process at top center, rules below-left, workflows below-right. * score: 4 ### function calculateMilestoneDates * file: src/platform/onboarding/integrations/milestonePresets.ts:244 * kind: function * core: platform * spec: (none) * summary: Calculate milestone due dates from start date * score: 4 ### function calculateNextRetry * file: src/platform/notifications/utils/retry.ts:34 * kind: function * core: platform * spec: (none) * summary: Calculates the next retry time based on the current attempt number. * params: * attemptNumber — Current attempt number (0-based) * returns: Next retry Date, or null if max retries exceeded * score: 4 ### function calculatePagination * file: src/platform/table-v2/utils/pagination/utils.ts:43 * kind: function * core: platform * spec: (none) * summary: Calculate pagination metadata from configurationHandles edge cases:- Page 0 or negative → normalized to 1- Page beyond total → clamped to last page- Empty results (total=0) → from=0, to=0, totalPages=1- pageSize 0 or negative → normalized to 1 * params: * config — Pagination configuration * returns: Pagination result with offset, limit, and metadata * score: 4 ### function calculateRange * file: src/platform/table-v2/utils/pagination/utils.ts:97 * kind: function * core: platform * spec: (none) * summary: Calculate the range parameters for Supabase .range() methodSupabase uses inclusive start and end indexes (0-indexed) * params: * config — Pagination configuration * returns: Tuple of \[start, end] for Supabase .range() * score: 4 ### function calculateReorderItems * file: src/platform/page-layouts/utils.ts:155 * kind: function * core: platform * spec: (none) * summary: Calculate new display\_order values after reorderingReturns items with updated display\_order based on new position * score: 4 ### function calculateResizeDimensions * file: src/platform/upload/image-utils.ts:171 * kind: function * core: platform * spec: (none) * summary: Calculate new dimensions maintaining aspect ratio. * score: 4 ### function cancelAgentRun * file: src/platform/agents/runsService.ts:63 * kind: function * core: platform * spec: (none) * summary: Operator cancel: advance a non-terminal run to via the governed RPC.The RPC re-validates the transition graph and the caller's permission server-side; this wrapper never writes lifecycle\_state directly. * score: 4 ### function canEditField * file: src/platform/field-config/utils.ts:26 * kind: function * core: platform * spec: (none) * summary: Check if user role can edit field * score: 4 ### function canReceivePushNotifications * file: src/platform/pwa/utils/platformDetection.ts:32 * kind: function * core: platform * spec: (none) * summary: Check if the current platform/context can receive push notifications. * score: 4 ### function canViewField * file: src/platform/field-config/utils.ts:17 * kind: function * core: platform * spec: (none) * summary: Check if user role can view field * score: 4 ### function canViewLayoutField * file: src/platform/page-layouts/utils/visibilityUtils.ts:17 * kind: function * core: platform * spec: (none) * summary: Check if a field is visible to the current user based on their role.Logic:- If visibility\_roles is empty/null → visible to all- If visibility\_roles has values → user role must be in array- If userRole is null → show all fields (unauthenticated fallback) * score: 4 ### function captureBaselineFallbacks * file: src/platform/theming/devChecks/verifyDefaultsRestored.ts:96 * kind: function * core: platform * spec: (none) * summary: Capture the platform fallback resolved value for every entry. Must be called once at app start, BEFORE any tenant theme has beenapplied — once an override is in place, returns theoverridden value and the platform fallback is unrecoverable.Idempotent: subsequent calls are no-ops. * score: 4 ### function checkEntraConsent * file: src/platform/integrations/hooks/useEntraSetup.ts:97 * kind: function * core: platform * spec: (none) * summary: Step 2 gate: poll admin-consent status. Reads entra\_consent\_granted\_at via theorg\_admin-gated RPC (set by the entra-oauth callback once consent completes). * score: 4 ### function checkEnumOptions * file: src/platform/wizards/audit/checks.ts:119 * kind: function * core: platform * spec: (none) * summary: Check 2: every template option must be a member of the target column'sDB enum. Keyed on field == column name (the common convention; the livelane is the authoritative cross-check for any mapper-renamed field). Fields whosename is not an enum column on the target table are skipped — no false positives. * score: 4 ### function checkFieldCoverage * file: src/platform/wizards/audit/checks.ts:16 * kind: function * core: platform * spec: (none) * summary: Check 1: template fields must be accepted by the schema; schema-required fields must be in the template. * score: 4 ### function checkMapperSink * file: src/platform/wizards/audit/checks.ts:89 * kind: function * core: platform * spec: (none) * summary: Check 4: every key the mapper emits must be a real column on the target table. * score: 4 ### function checkMicrophonePermission * file: src/platform/telephony/lib/embeddable-utils.ts:192 * kind: function * core: platform * spec: (none) * summary: Check current microphone permission stateReturns null if permission API not available * score: 4 ### function checkNotNullCoverage * file: src/platform/wizards/audit/checks.ts:62 * kind: function * core: platform * spec: (none) * summary: Check 3: every NOT-NULL-no-default column must be template-required or mapper-defaulted. * score: 4 ### function checkOrgSudEmbedAuthorization * file: src/platform/clinical/consent/checkOrgSudEmbedAuthorization.ts:36 * kind: function * core: platform * spec: (none) * summary: Resolve whether an organization holds a standing Part-2-embed authorization.Fail-closed: returns on any error or missing config. Delegates to the SECURITY DEFINER resolver so the same fail-closedread backs both this app surface and the serving RPC. * params: * organizationId — the org to check. * client — Supabase client (defaults to the app singleton); injectable for tests. * score: 4 ### function classifyAIUnavailability * file: src/platform/ai/lib/aiDegradation.ts:86 * kind: function * core: platform * spec: (none) * summary: Classify an AI error and decide the appropriate degradation mode.This is the single decision point for all client-side AI degradation.Callers pass the error from their AI hook; they receive back a telling them which UX path to show\.Rules (evaluated in order):1. → (AI was never attempted / state not initialised).2. → with from the error.3. → (gateway down, try again later).4. → (client connectivity issue).5. → (response corrupt; retry unlikely to help).6. → (admin action required, not a user retry).7. → (PHI guard; never surface AI output).8. Unknown / raw Error → (safe default). * params: * error — The AIError from a hook, a raw Error, or null. * returns: A the caller should act on. * score: 4 ### function classifyDistinctValues * file: src/platform/import/mapping/valueMatching.ts:178 * kind: function * core: platform * spec: (none) * summary: Classify all distinct values for a source column against the target options. * params: * distinctValues — Map of for a source column. * options — Resolved target options with optional aliases. * returns: An array of , one per distinct value. * score: 4 ### function classifySkillRouting * file: src/platform/ai/wizards/ai-skill-creation/routing.ts:30 * kind: function * core: platform * spec: (none) * summary: Classify a skill category into its Step-5 governance route (AC-5).Note: enforces the same routing server-side (and additionallyforces to regardless of category). This clientclassifier only drives the primary-action label / confirmation copy. * params: * category — The skill's category. * returns: for regulated categories, else . * score: 4 ### function classifyValue * file: src/platform/import/mapping/valueMatching.ts:87 * kind: function * core: platform * spec: (none) * summary: Classify a single distinct incoming value against the resolved target options. * params: * incomingValue — The raw string value found in the import file. * rowCount — How many rows contain this value. * options — Resolved target options (value + label + optional aliases). * returns: A describing whether the value matched and how. * score: 4 ### function clear * file: src/platform/cache/store.ts:48 * kind: function * core: platform * spec: (none) * summary: Prefix match: remove all keys that start with pattern. * score: 4 ### function clearAllRegisteredCaches * file: src/platform/cache/registry.ts:23 * kind: function * core: platform * spec: (none) * summary: Invoke all registered cache-clear handlers (best-effort, failures swallowed). * score: 4 ### function clearAllTabs * file: src/platform/telephony/lib/embeddable-tabs.ts:238 * kind: function * core: platform * spec: (none) * summary: Remove all custom tabs and reset service registration * score: 4 ### function clearBiometricCredential * file: src/platform/auth/app-lock/biometric-utils.ts:168 * kind: function * core: platform * spec: (none) * summary: Clear the stored biometric credential. * score: 4 ### function clearClientCachesOnSignOut * file: src/platform/auth/clearClientCachesOnSignOut.ts:14 * kind: function * core: platform * spec: (none) * summary: Best-effort cache wipe; failures are swallowed (sign-out must still proceed). * score: 4 ### function clearInstanceId * file: src/platform/wizards/utils/trackWizardEvent.ts:60 * kind: function * core: platform * spec: (none) * summary: Clear the current instance ID (on wizard completion or cancel) * score: 4 ### function clearOrganizationSetupDraft * file: src/platform/setup/hooks/organizationSetupUtils.ts:103 * kind: function * core: platform * spec: (none) * summary: Clear draft (e.g. after completion or cancel). * score: 4 ### function clearQueryCache * file: src/platform/offline/queryPersistence.ts:313 * kind: function * core: platform * spec: (none) * summary: Clear all persisted query data (localforage clear + dropInstance).Best-effort: errors are ignored so sign-out always proceeds; generation guard prevents stale async reloads. * score: 4 ### function clearSchemaCache * file: src/platform/forms/validation.ts:76 * kind: function * core: platform * spec: (none) * summary: Clear the schema cache (useful for testing or memory management) * score: 4 ### function clearSentryUser * file: src/platform/monitoring/sentry-context.ts:43 * kind: function * core: platform * spec: (none) * summary: Clear Sentry user context on logout. Also clears tenant tags. * score: 4 ### function clearStoredPin * file: src/platform/auth/app-lock/pin-utils.ts:117 * kind: function * core: platform * spec: (none) * summary: Remove the stored PIN data from sessionStorage. * score: 4 ### function clearStoredSessions * file: src/platform/analytics/sessionRecorder.ts:481 * kind: function * core: platform * spec: (none) * summary: Clear stored sessions * score: 1 ### function clearTenantInlineStyles * file: src/platform/theming/utils/tenantInlineStyles.ts:8 * kind: function * core: platform * spec: (none) * summary: Remove every inline tenant override written by theming flows from .Exposed for both the provider lifecycle cleanup and synchronous reset flows. * score: 4 ### function clearUserCache * file: src/platform/auth/useCurrentUser.ts:130 * kind: function * core: platform * spec: (none) * summary: Utility for clear user cache. * score: 1 ### function clearValidationCache * file: src/platform/events/eventPayloadValidation.ts:187 * kind: function * core: platform * spec: (none) * summary: Clear the compiled schema cache. Useful for testing. * score: 4 ### variable clearWidgetCache * file: src/platform/dashboard/utils/widgetCache.ts:131 * kind: variable * core: platform * spec: (none) * summary: Clear widget cache - specific widget or all for an organizationorganizationId is required when clearing specific widgets * score: 2 ### function cloneGroup * file: src/platform/conditional-logic/builder/utils.ts:230 * kind: function * core: platform * spec: (none) * summary: Clone a group deeply * score: 1 ### function codedToBool * file: src/platform/clinical/blocks/suicide/mapping.ts:14 * kind: function * core: platform * spec: (none) * summary: Coerce a code to a boolean; unknown/blank → null. * score: 4 ### function coerceToArray * file: src/platform/conditional-logic/utils/operators.ts:50 * kind: function * core: platform * spec: (none) * summary: Coerce value to array for array comparisons * score: 4 ### function coerceToDate * file: src/platform/conditional-logic/utils/operators.ts:25 * kind: function * core: platform * spec: (none) * summary: Coerce value to Date for date comparisons * score: 4 ### function coerceToDate * file: src/platform/conditional-logic/validation/crossFieldEvaluator.ts:15 * kind: function * core: platform * spec: (none) * summary: Coerce a value to a Date object * score: 4 ### function coerceToNumber * file: src/platform/conditional-logic/utils/operators.ts:13 * kind: function * core: platform * spec: (none) * summary: Coerce value to number for numeric comparisons * score: 4 ### function coerceToNumber * file: src/platform/conditional-logic/validation/crossFieldEvaluator.ts:40 * kind: function * core: platform * spec: (none) * summary: Coerce a value to a number * score: 1 ### function coerceToString * file: src/platform/conditional-logic/utils/operators.ts:41 * kind: function * core: platform * spec: (none) * summary: Coerce value to string for text comparisons * score: 4 ### function colorToHslTriplet * file: src/platform/theming/utils/contrast.ts:136 * kind: function * core: platform * spec: (none) * summary: Convert any color string (hex, rgb(), hsl()) to a triplet(no wrapper) for use as a CSS custom property value that can becomposed via or .Returns if the input cannot be parsed. * score: 4 ### function combineFieldGroups * file: src/platform/page-layouts/generators/fieldGroupingRules.ts:315 * kind: function * core: platform * spec: (none) * summary: Combine standard and custom field groups into a complete layout structure. * score: 4 ### function combineSectionsWithFields * file: src/platform/page-layouts/utils.ts:60 * kind: function * core: platform * spec: (none) * summary: Combine sections with their fields, sorted by display\_order * score: 4 ### function combineValidationErrors * file: src/platform/wizards/hooks/useExpressionValidation.ts:183 * kind: function * core: platform * spec: (none) * summary: Utility to combine expression validation with simple validation.Expression errors are aggregated under the reserved key,which contains an array of error messages from expression-based rules.Consumers should merge this with field-level errors for display. * score: 4 ### function compareDates * file: src/platform/conditional-logic/validation/crossFieldEvaluator.ts:60 * kind: function * core: platform * spec: (none) * summary: Compare two dates * score: 1 ### function compareMetadata * file: src/platform/documents/utils/documentDiff.ts:118 * kind: function * core: platform * spec: (none) * summary: Compare metadata objects from two document versions. * params: * metadataA — Metadata from version A * metadataB — Metadata from version B * returns: List of field-level changes * score: 4 ### function compareNumbers * file: src/platform/conditional-logic/validation/crossFieldEvaluator.ts:94 * kind: function * core: platform * spec: (none) * summary: Compare two numbers * score: 1 ### function compareValues * file: src/platform/reports/utils/exportUtils.ts:310 * kind: function * core: platform * spec: (none) * summary: Sort comparison function that handles various types * score: 4 ### function compileAnalyticsQuery * file: src/platform/analytics/semantic-compiler.ts:121 * kind: function * core: platform * spec: (none) * summary: Compile + validate an analytics query spec against the registry allowlist and budget.Throws on any violation; returns a otherwise. * score: 4 ### function compileCaptureTrace * file: src/platform/automation/portal/recorder/compile.ts:106 * kind: function * core: platform * spec: (none) * summary: Compile a raw capture trace into the canonical, worker-executable flow definition.Pure and deterministic; emits no captured values. * score: 4 ### function compressImage * file: src/platform/upload/image-utils.ts:277 * kind: function * core: platform * spec: (none) * summary: Compress an image by reducing quality.Optionally converts to WebP if supported and smaller.Returns original file if animated GIF. * score: 4 ### function computeBenefitsStatus * file: src/platform/onboarding/computeOnboardingProgress.ts:115 * kind: function * core: platform * spec: (none) * summary: Calculate benefits section status * score: 4 ### function computeChecklistStatus * file: src/platform/onboarding/computeOnboardingProgress.ts:49 * kind: function * core: platform * spec: (none) * summary: Calculate checklist section status * score: 4 ### function computeCompleteness * file: src/platform/clinical/completeness/computeCompleteness.ts:23 * kind: function * core: platform * spec: (none) * summary: Compute an encounter/surface's documentation completeness from the resolvedrequired set and each block's satisfaction. * params: * input — the surface, resolution status, required blocks, and per-block satisfaction. * returns: the completeness score + source-tagged missing-required list (fail-closed when unresolved). * score: 4 ### function computeCredentialStatus * file: src/platform/onboarding/computeOnboardingProgress.ts:80 * kind: function * core: platform * spec: (none) * summary: Calculate credentials section status * score: 4 ### function computeDeviceFingerprint * file: src/platform/sessions/utils/deviceFingerprint.ts:59 * kind: function * core: platform * spec: (none) * summary: Compute a SHA-256 fingerprint from device metadata.Uses Web Crypto API (available in all modern browsers). * score: 4 ### function computeDischargeSummaryDue * file: src/platform/clinical/blocks/discharge/timeliness.ts:64 * kind: function * core: platform * spec: (none) * summary: The due date = the Nth working day (Mon–Fri) after the discharge date, as a string. Deterministic UTC date math (no clock/timezone input).A corrupt discharge date or non-positive window → (nothing can bescheduled from corrupt input; callers treat null as "window unresolved"). * score: 4 ### function computeJobDescriptionStatus * file: src/platform/onboarding/computeOnboardingProgress.ts:191 * kind: function * core: platform * spec: (none) * summary: Calculate job description section status * score: 4 ### function computeLogicalParent * file: src/platform/navigation/utils/navigation-utils.ts:144 * kind: function * core: platform * spec: (none) * summary: PF-37: Compute the logical parent path for a given pathname.Used as a fallback when there's no in-app history (deep link / refresh) sothe mobile Back button still lands the user somewhere sensible instead ofa 404 mid-segment.Behavior: 1. Strip the prefix (PF-74) before slicing, then re-prefix so org context is preserved. 2. Walk up one segment at a time, stopping at the first ancestor that exists in . If none match, fall back to walking up one segment. 3. Root () returns . * example: | computeLogicalParent('/hr/employees/123/edit', knownRoutes) → '/hr/employees/123' computeLogicalParent('/o/acme/hr/employees/123', knownRoutes) → '/o/acme/hr/employees' * score: 4 ### function computeMilestoneStatus * file: src/platform/onboarding/computeOnboardingProgress.ts:205 * kind: function * core: platform * spec: (none) * summary: Calculate milestone status based on days elapsed * score: 4 ### function computeOnboardingProgress * file: src/platform/onboarding/computeOnboardingProgress.ts:308 * kind: function * core: platform * spec: (none) * summary: Main computation function: transforms raw data into OnboardingStatus * score: 4 ### function computePersonaSectionOrder * file: src/platform/navigation/persona/computePersonaSectionOrder.ts:6 * kind: function * core: platform * spec: (none) * summary: First persona whose has a granted key wins; else default order. Pure. * score: 4 ### function computeQuickActionKey * file: src/platform/navigation/quick-action-catalog.ts:46 * kind: function * core: platform * spec: (none) * summary: Computes a stable action key from module scope, optional nav group, and route. * params: * moduleId — Module id (, , …) * navGroupId — Optional when the action is defined on a subgroup * route — Target route for the action * score: 4 ### function computeReassessmentDue * file: src/platform/clinical/blocks/suicide/reassessment.ts:23 * kind: function * core: platform * spec: (none) * summary: The reassessment due timestamp = last-assessed + cadence days (ISO 8601). Acorrupt (or non-finite ) would otherwisepropagate to , which throws on thissafety-critical path. Fail safe instead — consistent with's treatment of a corrupt due date — by returningthe epoch so the computed due date reads as immediately overdue rather thancrashing the crisis surface. * score: 4 ### function computeReorder * file: src/platform/navigation/utils/rail-dnd.ts:15 * kind: function * core: platform * spec: (none) * summary: Given a current ordered list of ids and the active/over ids from adnd-kit , compute the new ordered list after the move.Returns when the drag is a no-op (active === over, or either isnot found in ). * score: 4 ### function computeReviewDueDate * file: src/platform/clinical/plan/plan-cadence.ts:35 * kind: function * core: platform * spec: (none) * summary: The review due date = effective date + cadence days (ISO date, ). * score: 4 ### function computeRosExtent * file: src/platform/clinical/blocks/ros-exam/ros-extent.ts:49 * kind: function * core: platform * spec: (none) * summary: Compute the advisory ROS extent for one encounter's ROS entry collection(per-system rows + optional summary header row, the shape theCL-77 adapter reads/writes).- — nothing documented (or the header marks the ROS not performed).- — exactly 1 distinct system documented.- — 2–9 distinct systems documented.- — ≥10 distinct systems documented, or ≥1 documented system plus the header's all-other-systems-negative attestation (1997-DG complete-ROS notation). * params: * entries — the encounter's ROS rows; null/undefined reads as . * returns: the advisory extent — display/PM-78 input only, never a sign gate. * score: 4 ### function computeSchemaDiff * file: src/platform/events/computeSchemaDiff.ts:27 * kind: function * core: platform * spec: (none) * summary: Compute a diff between two JSON Schema objects. * score: 4 ### function computeSkillsStatus * file: src/platform/onboarding/computeOnboardingProgress.ts:172 * kind: function * core: platform * spec: (none) * summary: Calculate skills section status * score: 4 ### function computeTaxStatus * file: src/platform/onboarding/computeOnboardingProgress.ts:145 * kind: function * core: platform * spec: (none) * summary: Calculate tax forms section status * score: 4 ### function computeTbScreeningDue * file: src/platform/clinical/blocks/ros-exam/tb-screening.ts:52 * kind: function * core: platform * spec: (none) * summary: Compute the TB-screening-due indicator from an admission date + resolvedwindow (pure). A corrupt admission date fails safe: due immediately (epoch)rather than silently reading "not due". * score: 4 ### function computeTextDiff * file: src/platform/documents/utils/documentDiff.ts:58 * kind: function * core: platform * spec: (none) * summary: Compute a text diff between two strings. * params: * textA — The "before" text * textB — The "after" text * returns: Unified and side-by-side diff results * score: 4 ### function computeTimeliness * file: src/platform/clinical/completeness/timeliness.ts:24 * kind: function * core: platform * spec: (none) * summary: Compute the timeliness status for an encounter's documentation. * params: * encounterDate — the encounter's date/time (ISO). * timelinessHours — PF-96 for the surface, or null when unset. * now — the current time (injected for determinism). * hasMissingRequired — whether a required element is still unsatisfied. * returns: the deadline and whether the documentation is overdue. * score: 4 ### function computeWeightedProgress * file: src/platform/onboarding/computeOnboardingProgress.ts:249 * kind: function * core: platform * spec: (none) * summary: Calculate weighted overall progress with automatic redistribution * score: 4 ### function confidenceToBadgeVariant * file: src/platform/ai/utils/confidence.ts:24 * kind: function * core: platform * spec: (none) * summary: Map a 0–1 confidence score to a Badge variant (high=default, medium=secondary, low=outline). * score: 4 ### function confidenceToLevel * file: src/platform/ai/utils/confidence.ts:16 * kind: function * core: platform * spec: (none) * summary: Bucket a 0–1 confidence score into a tier: 0.8+ is high, 0.5+ is medium, else low. * score: 4 ### function confidenceToPercent * file: src/platform/ai/utils/confidence.ts:30 * kind: function * core: platform * spec: (none) * summary: Render a 0–1 confidence score as a rounded percentage string, e.g. . * score: 4 ### function connectLive * file: src/platform/wizards/audit/sources/live-source.ts:20 * kind: function * core: platform * spec: (none) * summary: Connect to the local stack, or return when it is unreachable (connectionrefused / not found / timed out) so callers skip cleanly. Any OTHER error(e.g. auth failure against a reachable server) is thrown — a reachable stackwith a broken query must fail loudly, never skip. * score: 4 ### function containsInjection * file: src/platform/notifications/utils/templateValidation.ts:43 * kind: function * core: platform * spec: (none) * summary: Check if a template body contains potential script injection patterns * score: 4 ### function containsPHI * file: src/platform/ai/widgets/utils/sanitizeForAI.ts:115 * kind: function * core: platform * spec: (none) * summary: Quick check if text contains PHI/PII * score: 4 ### function containsUnredactedPhi * file: src/platform/ai/phi-redaction-core.ts:196 * kind: function * core: platform * spec: (none) * summary: True when redacted text still contains a recognizable identifier (a residual-PHI tripwire). * score: 4 ### function containsUnsafeContent * file: src/platform/table-v2/utils/sanitize.ts:29 * kind: function * core: platform * spec: (none) * summary: Utility for contains unsafe content. * score: 1 ### function contrastRatio * file: src/platform/dev/pages/brandingContrast.ts:72 * kind: function * core: platform * spec: (none) * summary: WCAG 2.1 contrast ratio between two RGB triplets. Returns a value in. Used by the swatch tile to flag AA failures. * score: 4 ### function contrastRatio * file: src/platform/theming/utils/contrast.ts:93 * kind: function * core: platform * spec: (none) * summary: Calculate contrast ratio between two color strings (hex, rgb, or hsl).Returns a value between 1 and 21. * score: 4 ### function convertColumn * file: src/platform/table-v2/adapter/columnConverter.ts:84 * kind: function * core: platform * spec: (none) * summary: Converts a single PF-58 Column to a TanStack ColumnDef. * params: * column — PF-58 column definition * options — Conversion options * returns: TanStack column definition * score: 4 ### function convertColumns * file: src/platform/table-v2/adapter/columnConverter.ts:148 * kind: function * core: platform * spec: (none) * summary: Converts an array of PF-58 Columns to TanStack ColumnDefs. * params: * columns — Array of PF-58 column definitions * options — Conversion options * returns: Conversion result with columns and metadata * score: 4 ### function convertColumnVisibility * file: src/platform/table-v2/adapter/propsAdapter.ts:111 * kind: function * core: platform * spec: (none) * summary: Converts column visibility settings to TanStack VisibilityState. * score: 4 ### function convertGroupBy * file: src/platform/table-v2/adapter/propsAdapter.ts:133 * kind: function * core: platform * spec: (none) * summary: Converts groupBy prop to TanStack GroupingState. * score: 4 ### function convertPaginationConfig * file: src/platform/table-v2/adapter/propsAdapter.ts:69 * kind: function * core: platform * spec: (none) * summary: Converts PF-58 PaginationConfig to TanStack PaginationState. * score: 4 ### function convertRowSelectionState * file: src/platform/table-v2/adapter/propsAdapter.ts:100 * kind: function * core: platform * spec: (none) * summary: Converts TanStack RowSelectionState back to selected rows array. * score: 4 ### function convertSelectionConfig * file: src/platform/table-v2/adapter/propsAdapter.ts:83 * kind: function * core: platform * spec: (none) * summary: Converts PF-58 SelectionConfig to TanStack RowSelectionState. * score: 4 ### function convertSortConfig * file: src/platform/table-v2/adapter/propsAdapter.ts:41 * kind: function * core: platform * spec: (none) * summary: Converts PF-57 SortConfig to TanStack SortingState. * score: 4 ### function convertSortingState * file: src/platform/table-v2/adapter/propsAdapter.ts:55 * kind: function * core: platform * spec: (none) * summary: Converts TanStack SortingState to PF-57 SortConfig. * score: 4 ### function convertStickyColumns * file: src/platform/table-v2/adapter/propsAdapter.ts:118 * kind: function * core: platform * spec: (none) * summary: Converts sticky columns to TanStack ColumnPinningState. * score: 4 ### function createA4OnboardingTask * file: src/platform/onboarding/integrations/payrollIntegration.ts:199 * kind: function * core: platform * spec: (none) * summary: Create Arizona A-4 onboarding task configuration (for AZ employees) * score: 4 ### function createAgent * file: src/platform/cowork/agentsService.ts:59 * kind: function * core: platform * spec: (none) * summary: Create an agent. organization\_id is forced from the caller, never trusted from input. * score: 4 ### function createApiCallTracker * file: src/platform/quota/api-call-tracker.ts:33 * kind: function * core: platform * spec: (none) * summary: Factory to create the API call tracker instance. * score: 4 ### function createAsyncValidator * file: src/platform/wizards/utils/async-validation.ts:37 * kind: function * core: platform * spec: (none) * summary: Create an async validator function from a rule * score: 4 ### function createBenefitsOnboardingTask * file: src/platform/onboarding/integrations/benefitsIntegration.ts:157 * kind: function * core: platform * spec: (none) * summary: Create benefits enrollment onboarding task configuration * score: 4 ### function createBlockAdapterRegistry * file: src/platform/clinical/blocks/adapter-registry.ts:39 * kind: function * core: platform * spec: (none) * summary: Create an isolated registry instance (the app uses the singleton). * score: 4 ### function createBulkOperation * file: src/platform/bulk-operations/api.ts:15 * kind: function * core: platform * spec: (none) * summary: Create a new bulk operation with individual item tracking.Enforces one-at-a-time guard per organization. * score: 4 ### function createCacheKey * file: src/platform/cache/key-builder.ts:5 * kind: function * core: platform * spec: (none) * summary: PF-51: Cache key format org-orgId:namespace:key. Per CONTEXT: validate/throw if no org. * score: 4 ### function createCapabilityValidator * file: src/platform/ai/agentic/intake-rpc-adapters.ts:75 * kind: function * core: platform * spec: (none) * summary: PF-30-EN-01 capability-token validation (the resolver's injected ; unused for ungated reads). * score: 4 ### function createComparisonValidation * file: src/platform/conditional-logic/validation/utils.ts:63 * kind: function * core: platform * spec: (none) * summary: Create a general comparison validation rule * score: 4 ### function createConnectorMediator * file: src/platform/ai/agentic/connector-mediator.ts:31 * kind: function * core: platform * spec: PF-127 * summary: Build a connector mediator bound to one acting principal. * score: 5 ### function createDateRangeValidation * file: src/platform/conditional-logic/validation/utils.ts:15 * kind: function * core: platform * spec: (none) * summary: Create a date range validation rule * score: 4 ### function createDebouncedAsyncValidator * file: src/platform/wizards/utils/async-validation.ts:134 * kind: function * core: platform * spec: (none) * summary: Create a debounced async validator * score: 4 ### function createDefaultBusinessHours * file: src/platform/calendar/lib/business-day-utils.ts:132 * kind: function * core: platform * spec: (none) * summary: Creates a default business hours map (Mon–Fri 09:00–17:00).Useful as a fallback when no calendar is configured. * score: 4 ### function createDirectDepositTask * file: src/platform/onboarding/integrations/payrollIntegration.ts:181 * kind: function * core: platform * spec: (none) * summary: Create direct deposit onboarding task configuration * score: 4 ### function createEdgeModelAdapter * file: src/platform/ai/agentic/intake-model-adapter.ts:33 * kind: function * core: platform * spec: (none) * summary: Build the single-turn model adapter. * score: 4 ### function createEmptyCondition * file: src/platform/conditional-logic/builder/utils.ts:462 * kind: function * core: platform * spec: (none) * summary: Create an empty condition * score: 1 ### function createEmptyGroup * file: src/platform/conditional-logic/builder/utils.ts:474 * kind: function * core: platform * spec: (none) * summary: Create an empty group * score: 1 ### function createEmptyV2Rule * file: src/platform/conditional-logic/utils/migration.ts:124 * kind: function * core: platform * spec: (none) * summary: Create an empty V2 rule * score: 1 ### function createEncoreOpenAiSseTransport * file: src/platform/ai/utils/encoreOpenAiSseChatTransport.ts:115 * kind: function * core: platform * spec: (none) * summary: that POSTs JSON to a Supabase edge function and maps the SSE response to UI chunks. * score: 4 ### function createEncoreSkillChatTransport * file: src/platform/ai/utils/encoreOpenAiSseChatTransport.ts:181 * kind: function * core: platform * spec: (none) * summary: Skill-aware transport: tries when a skill is active, then matches legacy fallbacks to . * score: 4 ### function createExpandColumn * file: src/platform/table-v2/adapter/columnConverter.ts:227 * kind: function * core: platform * spec: (none) * summary: Creates an expand column for expandable rows. * returns: TanStack column definition for expand button * score: 4 ### function createExportSignedUrl * file: src/platform/reports/hooks/useReportExport.ts:68 * kind: function * core: platform * spec: (none) * summary: Creates a signed URL for a file in the reports-exports bucket. * score: 4 ### function createFieldFilter * file: src/platform/table-v2/utils/filter/client.ts:53 * kind: function * core: platform * spec: (none) * summary: Create a client filter from a field comparison. * params: * field — Field name to compare * operator — Comparison operator * value — Value to compare against * returns: ClientFilter object * example: | const ageFilter = createFieldFilterUser('age', 'gt', 21);const adults = applyClientFilters(users, \[ageFilter]); * score: 4 ### function createFilter * file: src/platform/table-v2/utils/filter/builder.ts:255 * kind: function * core: platform * spec: (none) * summary: Create a simple filter object.Helper function for building filters programmatically. * score: 4 ### function createFilterGroup * file: src/platform/table-v2/utils/filter/builder.ts:263 * kind: function * core: platform * spec: (none) * summary: Create a filter group.Helper function for building filter groups programmatically. * score: 4 ### function createFlagCheck * file: src/platform/ai/agentic/intake-rpc-adapters.ts:86 * kind: function * core: platform * spec: (none) * summary: PF-45 flag check for (the loop's injected ). * score: 4 ### function createGoogleCalendarEvent * file: src/platform/integrations/google-workspace.ts:50 * kind: function * core: platform * spec: (none) * summary: Create a Google Calendar event (with optional Meet) via PF-101.Throws when the org lacks a connection, capability is disabled, or domainmismatch is detected. Consumers should surface the error through theirstandard toast pipeline. * score: 4 ### function createGovernanceGate * file: src/platform/ai/agentic/intake-write-rpc-adapters.ts:85 * kind: function * core: platform * spec: (none) * summary: PF-126 gate wrapper (the GovernedWriteDeps.gate). Org is resolved server-side from the run. * score: 4 ### function createInitialBuilderState * file: src/platform/conditional-logic/builder/utils.ts:485 * kind: function * core: platform * spec: (none) * summary: Create initial state for the builder * score: 4 ### function createInitialState * file: src/platform/table-v2/adapter/propsAdapter.ts:312 * kind: function * core: platform * spec: (none) * summary: Creates initial adapter state from PF-58 props. * score: 4 ### function createIntakeReadExecutor * file: src/platform/ai/agentic/intake-read-tools.ts:88 * kind: function * core: platform * spec: (none) * summary: Build the read dispatcher (the injected ). * score: 4 ### function createIntakeReadSources * file: src/platform/ai/agentic/intake-sources.ts:27 * kind: function * core: platform * spec: (none) * summary: Build the production read sources bound to one org + authenticated client. * score: 4 ### function createIntakeToolResolver * file: src/platform/ai/agentic/tool-resolver.ts:16 * kind: function * core: platform * spec: (none) * summary: Build a read-only tool resolver bound to one org + principal. * score: 4 ### function createIntakeWriteExecutor * file: src/platform/ai/agentic/intake-write-tools.ts:71 * kind: function * core: platform * spec: (none) * summary: Build the post-approval write executor (used ONLY by the governed-writes orchestrator). * score: 4 ### function createIntakeWriteRpcs * file: src/platform/ai/agentic/intake-write-rpc-adapters.ts:22 * kind: function * core: platform * spec: (none) * summary: The two governed write-RPC callers (match IntakeWriteExecutorDeps.createAppointment/advanceIntakeStatus). * score: 4 ### function createMarketplaceSnapshot * file: src/platform/wizards/utils/createMarketplaceSnapshot.ts:24 * kind: function * core: platform * spec: (none) * summary: Creates a sanitized snapshot of a wizard template for marketplace.Strips organization-specific data and sensitive configuration. * score: 4 ### function createMcpConnection * file: src/platform/ai/mcp-client.ts:44 * kind: function * core: platform * spec: (none) * summary: Creates a lightweight MCP connection descriptor. * params: * config — MCP server configuration. * returns: Connection descriptor used by . * score: 4 ### function createMessagePreview * file: src/platform/messaging/utils/messageFormatter.ts:45 * kind: function * core: platform * spec: (none) * summary: Create message preview (truncate + remove newlines). * score: 4 ### function createMultiSortConfig * file: src/platform/table-v2/utils/sort/config.ts:160 * kind: function * core: platform * spec: (none) * summary: Helper to create a MultiSortConfig * score: 4 ### function createNumericComparisonValidation * file: src/platform/conditional-logic/validation/utils.ts:42 * kind: function * core: platform * spec: (none) * summary: Create a numeric comparison validation rule * score: 4 ### function createOfflineQueryClient * file: src/platform/offline/queryPersistence.ts:214 * kind: function * core: platform * spec: (none) * summary: Default QueryClient configuration for offline support * score: 4 ### function createPersistedQueryClient * file: src/platform/offline/queryPersistence.ts:262 * kind: function * core: platform * spec: (none) * summary: Create a complete persisted query client setup * params: * options — Persistence options * returns: QueryClient and persistence configuration * score: 4 ### function createPreviewSignature * file: src/platform/email-signatures/utils/variables.ts:73 * kind: function * core: platform * spec: (none) * summary: Creates a typed EmailSignature stub for preview rendering.Fills all required Row fields with safe defaults so no is needed. * score: 4 ### function createQueryPersister * file: src/platform/offline/queryPersistence.ts:199 * kind: function * core: platform * spec: (none) * summary: Create a persister for TanStack Query * score: 4 ### function createRunRpcs * file: src/platform/ai/agentic/intake-rpc-adapters.ts:26 * kind: function * core: platform * spec: (none) * summary: PF-125 lifecycle + checkpoint writers (the loop's injected ). * score: 4 ### function createSelectionColumn * file: src/platform/table-v2/adapter/columnConverter.ts:191 * kind: function * core: platform * spec: (none) * summary: Creates a selection column for row selection. * returns: TanStack column definition for selection checkbox * score: 4 ### function createSelectionColumnDef * file: src/platform/table-v2/features/RowSelection.tsx:35 * kind: function * core: platform * spec: (none) * summary: Creates a selection column definition for row selection. T - Row data type * params: * options — Selection options * returns: Column definition for selection * score: 4 ### function createSessionRecord * file: src/platform/sessions/hooks/useCreateSession.ts:20 * kind: function * core: platform * spec: (none) * summary: Creates a session record and upserts the device record.Called after successful sign-in (post-MFA if applicable). * score: 4 ### function createSessionRecorder * file: src/platform/analytics/sessionRecorder.ts:376 * kind: function * core: platform * spec: (none) * summary: Create a new session recorder instance * params: * config — Recorder configuration * returns: Session recorder instance * score: 4 ### function createSettingsTransform * file: src/platform/settings/utils/settings-transform.ts:73 * kind: function * core: platform * spec: (none) * summary: Creates a typed transform function for a specific settings type.Useful when you need to ensure type safety for specific settings. * returns: Typed transform function for the specified settings type * example: | type FASettings = invoice\_prefix: string | null; due\_days: number | null ;const transformFA = createSettingsTransformFASettings();const formValues = transformFA(settings); * score: 4 ### function createSimpleRequiredRule * file: src/platform/conditional-logic/utils/migration.ts:148 * kind: function * core: platform * spec: (none) * summary: Create a V2 rule with simple required condition * score: 4 ### function createSimpleVisibilityRule * file: src/platform/conditional-logic/utils/migration.ts:131 * kind: function * core: platform * spec: (none) * summary: Create a V2 rule with simple visibility condition * score: 4 ### function createSortConfig * file: src/platform/table-v2/utils/sort/config.ts:149 * kind: function * core: platform * spec: (none) * summary: Helper to create a SortConfig * score: 1 ### function createSsoProviderWithDomain * file: src/platform/auth/sso/useSsoSetup.ts:57 * kind: function * core: platform * spec: (none) * summary: Step 1: create the provider (pending) + a domain-ownership claim with a freshverification token. Returns the IDs and the DNS TXT value to publish. * score: 4 ### function createTableOptions * file: src/platform/table-v2/adapter/propsAdapter.ts:169 * kind: function * core: platform * spec: (none) * summary: Creates TanStack Table options from PF-58 DataTableProps. * params: * props — PF-58 DataTable props * options — Adapter options with state and callbacks * returns: Partial TanStack table options * score: 4 ### function createThread * file: src/platform/cowork/threadsService.ts:25 * kind: function * core: platform * spec: (none) * summary: Create a cowork Thread (pf\_threads) over an existing PF-67 conversation. Returns the new thread id. * score: 4 ### function createToolAudit * file: src/platform/ai/agentic/intake-rpc-adapters.ts:52 * kind: function * core: platform * spec: (none) * summary: PF-127 content-free invocation audit (the resolver's injected ). Thread-bound for the 2d surface. * score: 4 ### function createTrackedFetch * file: src/platform/monitoring/api-metrics.ts:199 * kind: function * core: platform * spec: (none) * summary: Create a wrapped fetch function that tracks metrics * score: 4 ### function createW4OnboardingTask * file: src/platform/onboarding/integrations/payrollIntegration.ts:163 * kind: function * core: platform * spec: (none) * summary: Create W-4 onboarding task configuration * score: 4 ### function createZodSchemaFromJsonSchema * file: src/platform/forms/utils/schemaExport.ts:237 * kind: function * core: platform * spec: (none) * summary: Create a Zod schema from JSON Schema (placeholder)Note: Full JSON Schema to Zod conversion is complex.For now, this returns a passthrough schema.Consider using 'json-schema-to-zod' package for full conversion. * params: * \_jsonSchema — JSON Schema object (currently unused) * returns: A passthrough Zod schema (z.unknown()) * score: 4 ### function crossModuleSubmit * file: src/platform/wizards/utils/crossModuleSubmit.ts:75 * kind: function * core: platform * spec: (none) * summary: Submit wizard data to multiple module tables. * params: * values — The collected wizard form values * targets — Array of module targets with table and field mappings * organizationId — Current organization ID * userId — Current user ID * returns: Result object with success status and any errors * score: 4 ### function csvRowToCustomFields * file: src/platform/data-manager/utils/rawDataImportUtils.ts:145 * kind: function * core: platform * spec: (none) * summary: Convert CSV row to custom\_fields partial object * score: 4 ### function customConfigToWidgetDefinition * file: src/platform/dashboard/utils/custom-widget-adapter.tsx:30 * kind: function * core: platform * spec: (none) * summary: Synthesize a WidgetDefinition for a custom (no-code) widget config so it flows through the normal grid render path. Component identity is stable per config.id; content stays fresh. * score: 4 ### function dbWorkspaceToDefinition * file: src/platform/navigation/workspaces/dbWorkspaceToDefinition.ts:23 * kind: function * core: platform * spec: (none) * summary: Pure: DB row → WorkspaceDefinition. Resolves the icon name to a LucideIcon (fallback LayoutGrid). * score: 4 ### function debounce * file: src/platform/wizards/utils/async-validation.ts:105 * kind: function * core: platform * spec: (none) * summary: Debounce helper for async validation with cancel support * score: 4 ### function decideSudEmbedGate * file: src/platform/analytics/embed/sud-embed-gate.ts:48 * kind: function * core: platform * spec: (none) * summary: Decide whether SUD-derived values may be served on the external-embed path.Fail-closed: only SUD-derived content is gated, and it is blocked unless the org isexplicitly Part-2-embed authorized. Everything non-SUD passes unconditionally. * score: 4 ### function deepTransformSettingsForForm * file: src/platform/settings/utils/settings-transform.ts:94 * kind: function * core: platform * spec: (none) * summary: Deep transform for nested settings objects.Recursively converts null to undefined at all levels. * params: * settings — Settings object with potential nested objects * returns: Deep transformed settings object * example: | const settings = general: name: null, active: true , advanced: timeout: null ;const result = deepTransformSettingsForForm(settings);// general: name: undefined, active: true , advanced: timeout: undefined * score: 4 ### function defaultArtifactScreen * file: src/platform/ai/agentic/artifact-prompt-context.ts:66 * kind: function * core: platform * spec: (none) * summary: The default PF-27-EN-01 screen: re-run the (already-redacted) projection through the two-pathenforcer on the standard lane. Returns the prompt-safe text; throws ifthe content cannot be safely dispatched (propagated as a block, fail-closed). * score: 4 ### function defaultMemoryScreen * file: src/platform/ai/agentic/agent-memory-adapters.ts:35 * kind: function * core: platform * spec: (none) * summary: The default PF-27-EN-01 two-path screen: run the content through the enforcer as a standard-lane step. On the standard lane it returns the redacted, prompt-safe text (the value we storeas and the gate for recalled rows). A misconfigured step that would requireunredacted PHI on a non-PHI lane throws — propagated to fail closed. * score: 4 ### function deleteFile * file: src/platform/upload/service.ts:331 * kind: function * core: platform * spec: (none) * summary: Delete a file from storage with tenant isolation check. * score: 4 ### function deletePasskey * file: src/platform/auth/passkey/passkey-utils.ts:179 * kind: function * core: platform * spec: (none) * summary: Delete a passkey. * score: 1 ### function deriveAssessmentRiskLevel * file: src/platform/clinical/blocks/suicide/suicide-assessment-adapter.ts:63 * kind: function * core: platform * spec: (none) * summary: Resolve the assessment's NOT NULL risk\_level: an explicit level wins; else a conservative moderate floor. * score: 4 ### function deriveForegroundHex * file: src/platform/theming/utils/derive-foreground.ts:43 * kind: function * core: platform * spec: (none) * summary: Convenience wrapper that returns the chosen foreground as / for callers (like the live-preview wrapper) that compose inline values rather than CSS custom properties. * score: 4 ### function deriveForegroundTriplet * file: src/platform/theming/utils/derive-foreground.ts:31 * kind: function * core: platform * spec: (none) * summary: Derive the WCAG-AA-safe foreground for a given surface color. * params: * surface — Any color string accepted by (hex, , ). Invalid input falls back to which yields the white foreground triplet. * returns: A CSS triplet (no wrapper) suitable for direct assignment to a CSS variable. * example: | deriveForegroundTriplet('#FFD700'); // '0 0% 0%' (near-black for yellow)deriveForegroundTriplet('#1e3a8a'); // '0 0% 100%' (white for dark blue) * score: 4 ### function deriveInputSchema * file: src/platform/automation/portal/recorder/compile.ts:163 * kind: function * core: platform * spec: (none) * summary: JSON-schema () built from a definition's parameterized fill steps. * score: 4 ### function deriveNeedsIdentified * file: src/platform/clinical/blocks/sdoh-adapter.ts:67 * kind: function * core: platform * spec: (none) * summary: Derive for the row: an explicit array wins; otherwise thedomain keys answered (so the parent CL-18 referral/event flowkeeps working for block-created screenings). * score: 4 ### function derivePin * file: src/platform/auth/app-lock/pin-utils.ts:43 * kind: function * core: platform * spec: (none) * summary: Derive a 256-bit key from and using PBKDF2-SHA256.Returns a 64-character lowercase hex string. * score: 4 ### function deriveProviderWritableVars * file: src/platform/theming/devChecks/auditTenantVars.ts:66 * kind: function * core: platform * spec: (none) * summary: Re-derive the full set of provider-writable vars from the same constants uses. * score: 4 ### function deriveReconciliationStatus * file: src/platform/clinical/blocks/meds/med-reconciliation-adapter.ts:59 * kind: function * core: platform * spec: (none) * summary: Derive the CHECK-safe workflow status: an explicit valid status wins; otherwisea recorded outcome marks the reconciliation 'completed', else 'in\_progress'. * score: 4 ### function deriveScreenRiskLevel * file: src/platform/clinical/blocks/suicide/suicide-screen-adapter.ts:44 * kind: function * core: platform * spec: (none) * summary: Derive a NOT NULL risk level for a screen. An explicit level wins; otherwiseONLY an explicit result maps to . A , ,, or any other/unset result floors at so arefused or incomplete suicide screen is never recorded as explicitly low risk(the conservative floor also used by the assessment adapter). * score: 4 ### function deriveTemplateModuleDefaults * file: src/platform/provisioning/lib/moduleOverridesForm.ts:100 * kind: function * core: platform * spec: (none) * summary: Effective module on/off defaults for a template: the platform default map (all knownmodules) overlaid with any map the template\_config or the state-awarebundle's baseline\_settings declares. The bundle wins last because Step 4b actually writesits baseline to the column, superseding template\_config. * score: 4 ### function deriveTemplateScalarDefaults * file: src/platform/provisioning/lib/moduleOverridesForm.ts:120 * kind: function * core: platform * spec: (none) * summary: Effective scalar setting defaults: each setting's column DEFAULT overlaid with the valuethe bundle baseline (then template\_config) specifies, when a finite number. Bundle winsover template\_config for the same reason as modules. * score: 4 ### function destroyGlobalRecorder * file: src/platform/analytics/sessionRecorder.ts:406 * kind: function * core: platform * spec: (none) * summary: Destroy global recorder (for consent revocation) * score: 4 ### function detectConflicts * file: src/platform/picklists/utils/importValidation.ts:140 * kind: function * core: platform * spec: (none) * summary: Compare import records against existing org picklists to detect conflicts * score: 4 ### function detectExecutionSpikes * file: src/platform/query-performance/anomaly-rules.ts:76 * kind: function * core: platform * spec: (none) * summary: Detect execution time spikes by comparing current p95 against baseline. * params: * currentMetrics — Map of fingerprint → current p95 execution time (ms) * baselines — Array of established baselines with p95 values * spikeThresholdPercent — Percentage increase that triggers a spike (e.g. 50 means 50% above baseline) * returns: Array of anomaly results for execution spikes * score: 4 ### function detectNewPatterns * file: src/platform/query-performance/anomaly-rules.ts:43 * kind: function * core: platform * spec: (none) * summary: Detect new query patterns by comparing current fingerprints against known baselines. * params: * currentFingerprints — Set of fingerprints observed in the current window * knownBaselines — Array of previously established baselines * returns: Array of anomaly results for new patterns * score: 4 ### function detectPhi * file: src/platform/ai/phi-redaction-core.ts:185 * kind: function * core: platform * spec: (none) * summary: Detect (do not redact) PHI: returns the category tokens present, or an empty array. * score: 4 ### function dialNumber * file: src/platform/telephony/lib/embeddable-events.ts:223 * kind: function * core: platform * spec: (none) * summary: Initiate a new call via the Embeddable widget * score: 4 ### function diffRecommendedAgainstEnabled * file: src/platform/ai/lib/onboarding-logic.ts:127 * kind: function * core: platform * spec: (none) * summary: Diff the recommended set against the currently-enabled set for the edit-profilere-run mode (Decisions §"Re-run behavior"): when isalready set, Step 6 asks the admin to confirm CHANGES rather than running blind.Returns the codes newly recommended (not yet enabled) and the enabled codes nolonger recommended — the wizard renders both for explicit confirmation. * score: 4 ### function diffThemeRoundTrip * file: src/platform/theming/utils/diffTheme.ts:87 * kind: function * core: platform * spec: (none) * summary: Compare an imported payload to the current active theme. * params: * imported — Parsed JSON payload produced by export. * current — Active row to round-trip against. * options — Strict mode flags. When is , missing PF-95 deep-theming fields fall back to the current theme's value and are reported as rather than . * score: 4 ### function dischargeSummaryRowToFormValues * file: src/platform/clinical/blocks/discharge/discharge-summary-adapter.ts:135 * kind: function * core: platform * spec: (none) * summary: Map a persisted row back to the block's form values. * score: 4 ### function dispatchPortalRun * file: src/platform/automation/portal/seam.ts:48 * kind: function * core: platform * spec: (none) * summary: Dispatch a portal-bot run through the platform automation seam. Returns therun id and (when the runner completed synchronously, e.g. fixture transport oran inline run) its terminal status + result. * score: 4 ### function domainFromEmail * file: src/platform/auth/sso/useSsoLogin.ts:47 * kind: function * core: platform * spec: (none) * summary: Derive the email domain (lowercased) or null. * score: 4 ### function downloadCSV * file: src/platform/data-manager/utils/rawDataCsvUtils.ts:121 * kind: function * core: platform * spec: (none) * summary: Trigger a file download in the browser * score: 4 ### function downloadCSV * file: src/platform/signatures/utils/csvExport.ts:82 * kind: function * core: platform * spec: (none) * summary: Download data as a CSV file. * score: 1 ### function downloadExport * file: src/platform/picklists/utils/exportSerialization.ts:77 * kind: function * core: platform * spec: (none) * summary: Trigger browser download of export content * score: 4 ### function downloadPdf * file: src/platform/documents/pdfGenerator.ts:273 * kind: function * core: platform * spec: (none) * summary: Generate and download PDF from element * score: 4 ### function downloadPdf * file: src/platform/templates/hooks/useGenerateTemplatedPdf.ts:132 * kind: function * core: platform * spec: (none) * summary: Initiates a download of a PDF by creating and programmatically clicking a temporary anchor element. * params: * url — The URL of the PDF to download. * fileName — The file name to suggest for the downloaded file. * returns: void * example: | // Start download of a PDF located at a remote URLdownloadPdf('[https://cdn.example.com/reports/annual.pdf](https://cdn.example.com/reports/annual.pdf)', 'annual-report.pdf'); * score: 4 ### function downloadSchemaAsJson * file: src/platform/forms/utils/schemaExport.ts:205 * kind: function * core: platform * spec: (none) * summary: Create a downloadable JSON file from schema * params: * schema — JSON Schema object * filename — Download filename * score: 4 ### function driftFindings * file: src/platform/wizards/audit/orchestrator.ts:74 * kind: function * core: platform * spec: (none) * summary: Diff static (migration / types.ts) vs live (DB) contracts into findings.Compares template field NAMES and table COLUMN names only (not option values),so an intentional option-only fix (e.g. 20260613050000) does not register asdrift. — drift is informational, ratchetable via baseline. * score: 4 ### function EmbeddableCustomTabs * file: src/platform/telephony/components/EmbeddableCustomTabs.tsx:59 * kind: function * core: platform * spec: (none) * summary: Component that manages custom tabs in the RingCentral Embeddable widget.Automatically:- Shows contact tab when call matches a CRM contact- Shows partner tab when call matches a CRM partner- Removes tabs when call ends- Tracks performance metrics for matching and rendering (T19) * example: | // In EmbeddableWrapper.tsxEmbeddableCustomTabs enabled=embeddableCustomTabsEnabled / * score: 4 ### function emitOnboardingEvent * file: src/platform/ai/utils/aiOnboardingAnalytics.ts:54 * kind: function * core: platform * spec: (none) * summary: Emit one onboarding analytics event (fire-and-forget).PF-135 Wave 2-0: this is a bespoke wizard (no row), so eventscarry a stable slug. The previous was alabel, not a UUID, so 's UUID guard silently dropped every event. * params: * params — The event name, identifiers, and a PHI-free payload. * score: 4 ### function emitSkillWizardEvent * file: src/platform/ai/wizards/ai-skill-creation/analytics.ts:45 * kind: function * core: platform * spec: (none) * summary: Emit one skill-wizard analytics event (fire-and-forget). * params: * params — The event name, identifiers, and a PHI-free payload. * score: 4 ### function encoreUiMessagesToChatPayload * file: src/platform/ai/utils/encoreOpenAiSseChatTransport.ts:18 * kind: function * core: platform * spec: (none) * summary: Map UI messages (text parts only) to for / . * score: 4 ### function endApiCall * file: src/platform/monitoring/api-metrics.ts:116 * kind: function * core: platform * spec: (none) * summary: End tracking an API call and record metrics * score: 4 ### function enforceExternalModelStep * file: src/platform/ai/phi-two-path-enforcer.ts:74 * kind: function * core: platform * spec: (none) * summary: Apply the two-path rule to one external-model-reaching step (FR-8). Exactly one path is legal: - **local embedding** (no egress) → exempt: dispatch raw. - **Path (i) — PHI lane** (BAA/ZDR, cl/pm): PHI is permitted; is NOT applied. - **Path (ii) — non-PHI lane**: is MANDATORY and fail-closed; a step that declares it needs unredacted PHI on a non-PHI lane throws (rejected, not degraded).Fail-closed: if throws (the PM-64 contract on bad input or an internal error), the throwpropagates and the caller MUST skip the model call, forwarding zero original text. * params: * step — The step to evaluate (lane already resolved by the caller via resolveModels). * redact — The canonical redactor (injected). MAY throw fail-closed. * score: 4 ### function enforceSsoGate * file: src/platform/auth/sso/useSsoLogin.ts:136 * kind: function * core: platform * spec: (none) * summary: Apply the known-employees-only gate to the current session. Call once after asession is detected on load (e.g. returning from the IdP). * score: 4 ### function enhanceBenefitsStatus * file: src/platform/onboarding/integrations/benefitsIntegration.ts:115 * kind: function * core: platform * spec: (none) * summary: Enhance benefits status with integration-specific fields * score: 4 ### function enhancePayrollStatus * file: src/platform/onboarding/integrations/payrollIntegration.ts:129 * kind: function * core: platform * spec: (none) * summary: Enhance tax status with integration-specific fields * score: 4 ### function enqueueWorkflowExecution * file: src/platform/workflow/execution.ts:80 * kind: function * core: platform * spec: (none) * summary: Enqueue an FW workflow execution through the platform seam. * score: 4 ### function enrollBiometric * file: src/platform/auth/app-lock/biometric-utils.ts:78 * kind: function * core: platform * spec: (none) * summary: Enroll a biometric credential using the platform authenticator.Requires a user gesture (e.g. button click). * params: * userId — The current user's UUID, used as the WebAuthn user handle. * returns: The enrolled credential reference to persist. * score: 4 ### function entraHealthBadgeLabel * file: src/platform/integrations/entra-health.ts:102 * kind: function * core: platform * spec: (none) * summary: User-facing badge label for each health status. * score: 4 ### function escapeILikePattern * file: src/platform/search/utils.ts:32 * kind: function * core: platform * spec: (none) * summary: Escape special characters in ILIKE patterns to prevent injection.Characters %, \_, and have special meaning in LIKE/ILIKE patterns. * params: * pattern — The search pattern to escape * returns: The escaped pattern safe for ILIKE queries * example: | escapeILikePattern('50%') // Returns '50'escapeILikePattern('test\_value') // Returns * score: 4 ### function evaluateAnomalyRules * file: src/platform/query-performance/anomaly-rules.ts:123 * kind: function * core: platform * spec: (none) * summary: Run all anomaly detection rules and return combined results. * params: * config — Anomaly detection configuration (which rules are enabled) * currentFingerprints — Fingerprints observed in current window * currentMetrics — Map of fingerprint → current p95 execution time * baselines — Known baseline patterns * returns: Combined array of anomaly detection results * score: 4 ### function evaluateBranchConfig * file: src/platform/wizards/utils/evaluateBranchCondition.ts:111 * kind: function * core: platform * spec: (none) * summary: Evaluate a branch configuration and return the target step IDEvaluates conditions in order, returns first match or default * score: 4 ### function evaluateComparison * file: src/platform/conditional-logic/validation/crossFieldEvaluator.ts:116 * kind: function * core: platform * spec: (none) * summary: Evaluate comparison based on type * score: 4 ### function evaluateCondition * file: src/platform/approvals/evaluateRoutingRules.ts:34 * kind: function * core: platform * spec: (none) * summary: Evaluate a single FW-17 condition against the entity payload. * score: 4 ### function evaluateCondition * file: src/platform/conditional-logic/utils/evaluator.ts:29 * kind: function * core: platform * spec: (none) * summary: Evaluate a single condition against form values * params: * condition — The condition to evaluate * formValues — Current form field values * returns: boolean - Whether the condition is met * score: 4 ### function evaluateCondition * file: src/platform/page-layouts/utils/evaluateVisibility.ts:12 * kind: function * core: platform * spec: (none) * summary: Evaluate a single visibility condition against form values. * score: 4 ### function evaluateCondition * file: src/platform/wizards/utils/evaluateBranchCondition.ts:18 * kind: function * core: platform * spec: (none) * summary: Evaluate a single branch condition against form values * score: 4 ### function evaluateConditionalLogic * file: src/platform/forms/validation.ts:280 * kind: function * core: platform * spec: (none) * summary: Evaluate conditional logic for a fieldReturns true if field should be shown, false if hidden * score: 4 ### function evaluateConditionalLogicV2 * file: src/platform/forms/validationV2.ts:40 * kind: function * core: platform * spec: (none) * summary: Evaluate conditional logic for a field using V2 engineSupports both V1 (show\_if/hide\_if) and V2 (visibility/requiredIf/readonlyIf) formats * params: * field — Form field definition * formData — Current form data * returns: Conditional evaluation result * score: 4 ### function evaluateConditionalRule * file: src/platform/field-config/utils.ts:36 * kind: function * core: platform * spec: (none) * summary: Evaluate conditional visibility rule * score: 4 ### function evaluateConditionalRuleV2 * file: src/platform/conditional-logic/utils/evaluator.ts:139 * kind: function * core: platform * spec: (none) * summary: Main entry point - evaluate any conditional rule (V1 or V2)Automatically migrates V1 rules to V2 format for evaluation * params: * rule — V1 or V2 conditional rule * formValues — Current form field values * returns: ConditionalRuleResult - visibility, required, readonly status * score: 4 ### function evaluateConditionGroup * file: src/platform/conditional-logic/utils/evaluator.ts:52 * kind: function * core: platform * spec: (none) * summary: Recursively evaluate a condition group (AND/OR) * params: * group — The condition group to evaluate * formValues — Current form field values * depth — Current nesting depth (for safety limit) * returns: boolean - Whether the group condition is met * score: 4 ### function evaluateCrossFieldValidation * file: src/platform/conditional-logic/validation/crossFieldEvaluator.ts:216 * kind: function * core: platform * spec: (none) * summary: Evaluate a single cross-field validation * score: 4 ### function evaluateCrossFieldValidations * file: src/platform/conditional-logic/validation/crossFieldEvaluator.ts:251 * kind: function * core: platform * spec: (none) * summary: Evaluate all cross-field validations * score: 4 ### function evaluateCrossTimezoneConflict * file: src/platform/timezone/cross-timezone-conflict.ts:152 * kind: function * core: platform * spec: (none) * summary: Evaluate a candidate cross-site booking against one existing booking, returningboth the overlap verdict and the dual-timezone labels needed to explain it.Pure and side-effect free; the consumer decides how to surface the result. * score: 4 ### function evaluateFieldRules * file: src/platform/conditional-logic/utils/evaluator.ts:176 * kind: function * core: platform * spec: (none) * summary: Evaluate multiple fields at once for efficiency * params: * fieldRules — Map of field keys to their conditional rules * formValues — Current form field values * returns: Map of field keys to their evaluation results * score: 4 ### function evaluateFieldVisibility * file: src/platform/page-layouts/utils/evaluateVisibility.ts:44 * kind: function * core: platform * spec: (none) * summary: Evaluate whether a field should be visible based on visibility rules.If no rules target the field → visible.If any rule targeting the field evaluates to false → hidden.All rules for a field must pass for it to be visible. * score: 4 ### function evaluateNarrativePublish * file: src/platform/ai/lib/onboarding-logic.ts:158 * kind: function * core: platform * spec: (none) * summary: Author-time PHI gate for the Step-5 narrative publish (AC-4 / NFR-phi-1).The org-profile narrative is meant to be organizational facts only. Beforepublishing the PF-61 article we run the static PHI scan; if itdetects any identifier (SSN, MRN, phone, email, DOB-style date, address, ZIP,or caller-supplied names/ids), publish is blocked with a PHI-free reason so theadmin can edit. The draft is preserved (the caller does not upsert on a block). * params: * narrative — The "About " markdown the admin authored. * ctx — Optional caller-known identifiers (e.g. provider names) to literal-match. * score: 4 ### function evaluateOperator * file: src/platform/conditional-logic/utils/operators.ts:127 * kind: function * core: platform * spec: (none) * summary: Evaluate a single operator with field value and compare value * score: 4 ### function evaluatePayerMix * file: src/platform/ai/lib/onboarding-logic.ts:67 * kind: function * core: platform * spec: (none) * summary: Evaluate a payer-mix object for the SOFT, non-blocking sum-to-\~100 warning.Step 3 keeps onboarding low-friction for rough estimates: an out-of-band totalsurfaces a warning but never blocks advancing. An empty/all-zero mix is treatedas "not yet entered" → no warning (the field is optional). * score: 4 ### function evaluatePlanSignGate * file: src/platform/clinical/plan/measurable.ts:47 * kind: function * core: platform * spec: (none) * summary: Evaluate the sign-time measurable-objective gate. Under an active TJC overlay,any non-measurable objective blocks sign-off and is surfaced; without theoverlay the plan signs unimpeded. * score: 4 ### function evaluatePrefill * file: src/platform/forms/prefill/engine.ts:83 * kind: function * core: platform * spec: (none) * summary: Evaluates all active prefill rules for a form and returns merged defaultsand a provenance map.Rules are evaluated in priority order (ascending). For each field, the firstrule that successfully resolves a non-undefined value wins ("first-win"). * score: 4 ### function evaluateRule * file: src/platform/validation/validators.ts:36 * kind: function * core: platform * spec: (none) * summary: Evaluate a single value against a rule type and params. * score: 4 ### function evaluateSatisfaction * file: src/platform/clinical/completeness/satisfaction.ts:62 * kind: function * core: platform * spec: (none) * summary: Evaluate a loaded block instance for completeness satisfaction.Handles both single-row typed blocks (e.g. MSE → one flat object), a flattenedgeneric object, and **collection-shaped** typed blocks (CL-77 ROS/examadapters return an array): a non-empty collection counts as satisfied only whenat least one row carries real (non-structural) content — a collection of stubheader / rows does NOT (so a required ROS/exam block never readsfalsely-complete). * params: * row — the instance row, an array of rows, or null/undefined when none exists. * returns: whether the block is present and whether it is satisfied. * score: 4 ### function evaluateStoredRules * file: src/platform/validation/evaluateStoredRules.ts:36 * kind: function * core: platform * spec: (none) * summary: Evaluate all active stored rules for an org (optionally filtered by entity/field)against a given value. * params: * organizationId — Organization scope * value — The value to validate * options — Optional entity/field filters and field label * returns: Combined result: valid only if all rules pass * score: 4 ### function evaluateV2Rule * file: src/platform/conditional-logic/utils/evaluator.ts:104 * kind: function * core: platform * spec: (none) * summary: Evaluate a V2 conditional rule * params: * rule — V2 rule to evaluate * formValues — Current form field values * returns: ConditionalRuleResult - visibility, required, readonly status * score: 4 ### function evaluateValidationExpression * file: src/platform/wizards/utils/validationExpressionEvaluator.ts:464 * kind: function * core: platform * spec: (none) * summary: Evaluate a validation expression * score: 4 ### function evaluateVisibilityConditions * file: src/platform/wizards/utils/validation-executor.ts:342 * kind: function * core: platform * spec: (none) * summary: Evaluate visibility conditions * score: 1 ### variable exactRouteMatcher * file: src/platform/navigation/utils/active-nav-item.ts:115 * kind: variable * core: platform * spec: (none) * summary: Exact path equality — used by desktop (). * score: 2 ### function executeValidation * file: src/platform/wizards/utils/validation-executor.ts:45 * kind: function * core: platform * spec: (none) * summary: Execute all validation rules and return field errors * score: 4 ### function explainBaaStatus * file: src/platform/transcription/admin/lib/deriveBaaStatus.ts:35 * kind: function * core: platform * spec: (none) * summary: Human-readable explainer for the dialog's computed-status badge. * score: 4 ### function exportAnalyticsToCSV * file: src/platform/wizards/utils/exportAnalytics.ts:32 * kind: function * core: platform * spec: (none) * summary: Export wizard analytics to CSV format * score: 4 ### function exportFieldAsJsonSchema * file: src/platform/forms/utils/schemaExport.ts:136 * kind: function * core: platform * spec: (none) * summary: Export a single field as JSON Schema * params: * field — Form field definition * options — Export options * returns: JSON Schema representation of the field * score: 4 ### function exportFormAsJsonSchema * file: src/platform/forms/utils/schemaExport.ts:104 * kind: function * core: platform * spec: (none) * summary: Export a complete form definition as JSON Schema * params: * fields — Array of form field definitions * options — Export options * returns: JSON Schema representation of the form * score: 4 ### function exportFormAsOpenApiSchema * file: src/platform/forms/utils/schemaExport.ts:195 * kind: function * core: platform * spec: (none) * summary: Generate OpenAPI 3.0 compatible schema from form fieldsNote: Zod v4's native JSON Schema uses draft-2020-12.For strict OpenAPI 3.0 compatibility, post-processing may be needed. * params: * fields — Form field definitions * options — Export options * returns: OpenAPI 3.0 compatible schema * score: 4 ### function exportLineageCsv * file: src/platform/org-data-sync/utils/lineage-export.ts:34 * kind: function * core: platform * spec: (none) * summary: Provides export lineage csv functionality. * score: 4 ### function exportLineageJson * file: src/platform/org-data-sync/utils/lineage-export.ts:27 * kind: function * core: platform * spec: (none) * summary: Provides export lineage json functionality. * score: 4 ### function exportRecordsToCsv * file: src/platform/picklists/utils/exportSerialization.ts:52 * kind: function * core: platform * spec: (none) * summary: Serialize export records to CSV string (one row per item) * score: 4 ### function exportRecordsToJson * file: src/platform/picklists/utils/exportSerialization.ts:35 * kind: function * core: platform * spec: (none) * summary: Serialize export records to JSON string * score: 4 ### function exportSession * file: src/platform/analytics/sessionRecorder.ts:488 * kind: function * core: platform * spec: (none) * summary: Export session as JSON file * score: 1 ### function exportSignatureRequestsToCSV * file: src/platform/signatures/utils/csvExport.ts:101 * kind: function * core: platform * spec: (none) * summary: Export signature requests to CSV and trigger download. * score: 4 ### function exportToCSV * file: src/platform/reports/utils/exportUtils.ts:108 * kind: function * core: platform * spec: (none) * summary: Export data to CSV format * score: 1 ### function exportToExcel * file: src/platform/reports/utils/exportUtils.ts:127 * kind: function * core: platform * spec: (none) * summary: Export data to Excel format using wekanteam/exceljs * score: 4 ### function exportToJSON * file: src/platform/reports/utils/exportUtils.ts:172 * kind: function * core: platform * spec: (none) * summary: Export data to JSON format * score: 1 ### function exportToPDF * file: src/platform/reports/utils/exportUtils.ts:188 * kind: function * core: platform * spec: (none) * summary: Export data to PDF format using jspdf with tenant branding. * score: 4 ### function exportZodSchemaAsJsonSchema * file: src/platform/forms/utils/schemaExport.ts:170 * kind: function * core: platform * spec: (none) * summary: Export any Zod schema as JSON Schema * params: * schema — Any Zod schema * options — Export options * returns: JSON Schema representation * score: 4 ### function extractDistinctValues * file: src/platform/import/mapping/valueMatching.ts:197 * kind: function * core: platform * spec: (none) * summary: Extract distinct non-empty values and their row counts from a column in theparsed import rows. * params: * rows — All parsed rows from the import file. * sourceColumn — The column name to extract values from. * returns: A of distinct non-empty values. * score: 4 ### function extractMentionedUserIds * file: src/platform/messaging/utils/mentionParser.ts:62 * kind: function * core: platform * spec: (none) * summary: Extract mentioned user IDs from rich mention syntax. * score: 4 ### function extractSubdomain * file: src/platform/theming/utils/subdomain.ts:105 * kind: function * core: platform * spec: (none) * summary: Extract a tenant subdomain label from a browser host string.Returns the leading label (e.g. from ) whenthe host is a proper tenant subdomain, or in any other case:- Host equals the apex domain itself (no subdomain).- Host equals a known platform-level primary host (e.g. ).- The leading label is in the set.- The host does not appear to be a subdomain of at all.- is not provided (pre-auth page running in a dev env without the env var). * params: * host — (includes port if non-standard). * apex — Value of (e.g. ). Pass to always return . * score: 4 ### function extractTemplateVariables * file: src/platform/notifications/utils/templateValidation.ts:9 * kind: function * core: platform * spec: (none) * summary: Extract all variable\_key placeholders from a template string * score: 4 ### function extractVariables * file: src/platform/templates/utils/variableResolver.ts:222 * kind: function * core: platform * spec: (none) * summary: Extract all variable keys from a template string * score: 4 ### function fetchBedCensusSummary * file: src/platform/census/fetchBedCensusSummary.ts:25 * kind: function * core: platform * spec: (none) * summary: Fetch org-scoped bed census totals aligned with visibility. * score: 4 ### function fetchEntraPlatformSsoReady * file: src/platform/auth/sso/useSsoSetup.ts:130 * kind: function * core: platform * spec: (none) * summary: Platform-level SSO readiness (Supabase Azure provider configured by Encore ops). * score: 4 ### function fetchEntraTenantId * file: src/platform/integrations/hooks/useEntraSetup.ts:140 * kind: function * core: platform * spec: (none) * summary: Load the org's configured Entra tenant id after admin consent. * score: 4 ### function fetchIntakeAuditSurface * file: src/platform/ai/agentic/intake-audit-surface.ts:172 * kind: function * core: platform * spec: (none) * summary: Fetch the content-free audit surface for one intake thread. Throws (fail-closed) on any Supabaseerror — including the RPC's own when the caller lacks .Empty audit sets map to empty arrays (the RPC already returns , never null). * score: 4 ### function filterByAllowlist * file: src/platform/ai/mcp-config.ts:35 * kind: function * core: platform * spec: (none) * summary: Filter requested MCP server IDs against the configured allowlist. * score: 4 ### function filterByIndustry * file: src/platform/templates/utils/templateIndustry.ts:93 * kind: function * core: platform * spec: (none) * summary: Filter templates to those that belong to the specified industry. Returns the input array unchanged when is . Otherwise, returns only templates whose detected industry matches . * params: * templates — Array of templates (each must have a and may have a ) to filter * industry — Industry to filter by; use to skip filtering * returns: The filtered array of templates whose detected industry equals * score: 4 ### function filterByJurisdiction * file: src/platform/picklists/utils/referencePicklistUtils.ts:28 * kind: function * core: platform * spec: (none) * summary: Filters picklist items by jurisdiction (state code). Items with (national) always pass. Items with no jurisdiction tag also pass. When is null/undefined, all items are returned. * params: * items — Array of picklist items to filter. * stateCode — Two-letter state code (e.g. "AZ"), or null/undefined to skip filtering. * returns: Filtered array of picklist items matching the jurisdiction. * score: 4 ### function filterExpiredDrafts * file: src/platform/forms/hooks/useDraftExpiration.ts:42 * kind: function * core: platform * spec: (none) * summary: Filter expired drafts from a list * score: 4 ### function filterFieldsForLayoutType * file: src/platform/page-layouts/generators/fieldGroupingRules.ts:339 * kind: function * core: platform * spec: (none) * summary: Get layout-type-specific field filtering.- List layouts: Only show primary/identifying fields- Create layouts: Exclude readonly/system fields- Edit layouts: Include all editable fields- Detail layouts: Include all viewable fields * score: 4 ### function filterVisibleFields * file: src/platform/page-layouts/utils/visibilityUtils.ts:35 * kind: function * core: platform * spec: (none) * summary: Filter an array of fields by visibility for the current user role. * score: 4 ### function filterWidgetsByModuleAccess * file: src/platform/dashboard/utils/widget-access.ts:4 * kind: function * core: platform * spec: (none) * summary: The single module-access filter (was duplicated in useDashboardWidgets + Dashboard.tsx). * score: 4 ### function findActiveGroupItem * file: src/platform/navigation/utils/active-nav-item.ts:155 * kind: function * core: platform * spec: (none) * summary: Find the active item inside a single nav group.Resolution order: (if defined) → in declared order. * score: 4 ### function findActiveModuleItem * file: src/platform/navigation/utils/active-nav-item.ts:202 * kind: function * core: platform * spec: (none) * summary: Module-aware active resolution used by 's collapsed rail.Search order: 1. → Overview chip 2. → Settings chip 3. flat 4. group s 5. group items * score: 4 ### function findActiveNavItem * file: src/platform/navigation/utils/active-nav-item.ts:127 * kind: function * core: platform * spec: (none) * summary: Find the first item in a flat list whose route matches. * score: 4 ### function findDuplicates * file: src/platform/import/dedupe/matchCandidates.ts:125 * kind: function * core: platform * spec: (none) * summary: Run deduplication across import records (intra-batch). * params: * records — Import records with and JSON. * config — Deduplication configuration. * returns: Deduplication result with candidates. * score: 4 ### function findInvalidStepIcons * file: src/platform/wizards/utils/auditStepIcons.ts:75 * kind: function * core: platform * spec: (none) * summary: Find every step across the supplied templates whose key is invalid. * score: 4 ### function findItemById * file: src/platform/conditional-logic/builder/utils.ts:139 * kind: function * core: platform * spec: (none) * summary: Find an item by ID in the builder tree * score: 4 ### function findParentGroup * file: src/platform/conditional-logic/builder/utils.ts:159 * kind: function * core: platform * spec: (none) * summary: Find the parent group of an item by ID * score: 4 ### function findScopeDefinition * file: src/platform/api-access/utils/key-utils.ts:184 * kind: function * core: platform * spec: (none) * summary: Finds a scope definition by its scope string. * score: 4 ### function findSectionForField * file: src/platform/page-layouts/generators/fieldGroupingRules.ts:220 * kind: function * core: platform * spec: (none) * summary: Find the appropriate section for a field based on grouping rules. * score: 4 ### function findSubModuleByRoute * file: src/platform/navigation/utils/sub-module-utils.ts:14 * kind: function * core: platform * spec: (none) * summary: Find a sub-module by route within any module.Returns the first matching sub-module encountered (searching modules and theirnavGroups in registration order). When multiple sub-modules could match a pathname,the earliest match is returned. * params: * modules — Array of module definitions to search * pathname — Current URL pathname to match * returns: SubModuleMatch or null if no match found * score: 4 ### function findUnsupportedVariables * file: src/platform/notifications/utils/templateValidation.ts:23 * kind: function * core: platform * spec: (none) * summary: Validate template variables against list of supported variable keys * score: 4 ### function forgetAgentMemory * file: src/platform/ai/agentic/agent-memory-adapters.ts:116 * kind: function * core: platform * spec: (none) * summary: Hard-delete memory rows (TTL/purge/consent). Returns the count deleted. * score: 4 ### variable formatBadgeCount * file: src/platform/navigation/utils/badges.ts:12 * kind: variable * core: platform * spec: (none) * summary: Format badge count with truncation for large numbers * params: * count — The badge count to format * returns: Formatted badge string (e.g., "99+" for counts 99) * score: 2 ### function formatBenefitsDeadline * file: src/platform/onboarding/integrations/benefitsIntegration.ts:179 * kind: function * core: platform * spec: (none) * summary: Format benefits deadline for display * score: 4 ### function formatBoolean * file: src/platform/table-v2/utils/formatters.ts:79 * kind: function * core: platform * spec: (none) * summary: Formats boolean values for display. * score: 4 ### function formatBytes * file: src/platform/formatting/utils.ts:223 * kind: function * core: platform * spec: (none) * summary: Format bytes into human-readable file size * score: 4 ### variable formatCacheAge * file: src/platform/dashboard/utils/widgetCache.ts:158 * kind: variable * core: platform * spec: (none) * summary: Format cache age for display * score: 1 ### function formatCellValue * file: src/platform/reports/utils/exportUtils.ts:32 * kind: function * core: platform * spec: (none) * summary: Format a cell value based on its type * score: 4 ### function formatCellValue * file: src/platform/table-v2/utils/formatters.ts:14 * kind: function * core: platform * spec: (none) * summary: Formats cell values for display. * score: 4 ### function formatColumnLabel * file: src/platform/reports/utils/exportUtils.ts:18 * kind: function * core: platform * spec: (none) * summary: Format a column label for display (capitalize, remove underscores) * score: 4 ### function formatCompactNumber * file: src/platform/formatting/utils.ts:197 * kind: function * core: platform * spec: (none) * summary: Format a number with compact notation (K, M, B)Useful for dashboards and summary displays * score: 4 ### function formatConversationName * file: src/platform/messaging/utils/messageFormatter.ts:58 * kind: function * core: platform * spec: (none) * summary: Format conversation display name.Public API for messaging integration — consumed by ConversationList and downstream cores. * params: * otherParticipantName — For DMs, the name of the other participant (not the current user) * score: 4 ### function formatCsvValue * file: src/platform/csv/parse.ts:76 * kind: function * core: platform * spec: (none) * summary: Escape a string for use as a CSV field (e.g. for template generation).Wraps in quotes and doubles internal quotes when value contains comma, quote, or newline. * score: 4 ### function formatCurrency * file: src/platform/formatting/utils.ts:25 * kind: function * core: platform * spec: (none) * summary: Format a number as currency * score: 1 ### function formatCurrency * file: src/platform/table-v2/utils/formatters.ts:64 * kind: function * core: platform * spec: (none) * summary: Formats currency values for display. * score: 4 ### function formatCustomFieldValue * file: src/platform/custom-fields/utils.ts:176 * kind: function * core: platform * spec: (none) * summary: Format a custom field value for display * score: 4 ### function formatDate * file: src/platform/formatting/utils.ts:46 * kind: function * core: platform * spec: (none) * summary: Format a date according to the specified format * score: 4 ### function formatDate * file: src/platform/table-v2/utils/formatters.ts:46 * kind: function * core: platform * spec: (none) * summary: Formats date values for display. * score: 4 ### function formatDateRange * file: src/platform/formatting/timezone.ts:219 * kind: function * core: platform * spec: (none) * summary: Format date range with timezone * params: * startDate — Start date * endDate — End date * timeZone — IANA timezone identifier * returns: Formatted date range string * score: 4 ### function formatDateSemantic * file: src/platform/formatting/utils.ts:102 * kind: function * core: platform * spec: (none) * summary: Format a date using semantic presets (short, medium, long) * example: | formatDateSemantic(new Date(), 'short') // "2/4/26"formatDateSemantic(new Date(), 'medium') // "Feb 4, 2026"formatDateSemantic(new Date(), 'long') // "Tuesday, February 4, 2026" * score: 4 ### function formatDateSeparator * file: src/platform/messaging/utils/messageFormatter.ts:27 * kind: function * core: platform * spec: (none) * summary: Format a date for the date separator in message threads.Returns "Today", "Yesterday", or "Mon, Apr 7" for older dates. * score: 4 ### function formatDateTime * file: src/platform/formatting/utils.ts:66 * kind: function * core: platform * spec: (none) * summary: Format a date with time * score: 1 ### function formatDualLabel * file: src/platform/timezone/cross-timezone-conflict.ts:125 * kind: function * core: platform * spec: (none) * summary: Render an instant in both the source and destination site timezones so ascheduler sees, e.g., "Mar 3, 2:00 PM EST" and "Mar 3, 11:00 AM PST" for thesame moment (AC-5/AC-6 dual labels). * score: 4 ### function formatDuration * file: src/platform/formatting/utils.ts:241 * kind: function * core: platform * spec: (none) * summary: Format a duration in milliseconds to human-readable string * score: 4 ### function formatDuration * file: src/platform/wizards/utils/formatDuration.ts:10 * kind: function * core: platform * spec: (none) * summary: Formats seconds into a human-readable duration string * params: * seconds — Total seconds * returns: Formatted string like "4m 32s" or "1h 23m" * score: 4 ### function formatDurationCompact * file: src/platform/wizards/utils/formatDuration.ts:33 * kind: function * core: platform * spec: (none) * summary: Formats seconds into a compact string for charts * params: * seconds — Total seconds * returns: Formatted string like "4:32" or "1:23:45" * score: 4 ### function formatFieldValue * file: src/platform/wizards/utils/value-formatters.ts:30 * kind: function * core: platform * spec: (none) * summary: Format a field value based on field type * score: 4 ### function formatFileSize * file: src/platform/documents/utils/fileValidation.ts:113 * kind: function * core: platform * spec: (none) * summary: Format file size in human-readable format * score: 4 ### function formatFullTimestamp * file: src/platform/messaging/utils/messageFormatter.ts:37 * kind: function * core: platform * spec: (none) * summary: Format a full timestamp for tooltip display. * score: 4 ### function formatInTimeZone * file: src/platform/formatting/timezone.ts:89 * kind: function * core: platform * spec: (none) * summary: Format a date in a specific timezone * params: * date — Date to format (Date object, ISO string, or timestamp) * timeZone — IANA timezone identifier * formatStr — date-fns format string * returns: Formatted date string * score: 4 ### function formatInUserTimeZone * file: src/platform/formatting/timezone.ts:163 * kind: function * core: platform * spec: (none) * summary: Format a date in the user's local timezone * params: * date — Date to format * formatStr — date-fns format string * returns: Formatted date string in user's timezone * score: 4 ### function formatKpiValue * file: src/platform/formatting/utils.ts:344 * kind: function * core: platform * spec: (none) * summary: Format a KPI value for display when the value may be missing or not applicable.Use "—" (em dash) instead of "0" or blank when there is no data yet or the metric does not apply.See UI\_UX\_STANDARDS.md § N/A and Zero States. * score: 4 ### function formatLastUpdated * file: src/platform/realtime/utils/formatLastUpdated.ts:9 * kind: function * core: platform * spec: (none) * summary: PF-66: Shared time-ago formatter for realtime connection badges. * example: | formatLastUpdated(new Date()) // → 'Just now'formatLastUpdated(null) // → 'Never'formatLastUpdated(new Date(Date.now() - 45\_000)) // → '45s ago' * score: 4 ### function formatMessageRelativeTime * file: src/platform/messaging/utils/messageFormatter.ts:18 * kind: function * core: platform * spec: (none) * summary: Format timestamp as relative time. * score: 4 ### function formatMessageTime * file: src/platform/messaging/utils/messageFormatter.ts:11 * kind: function * core: platform * spec: (none) * summary: Format timestamp for message display (time only). * score: 4 ### function formatMultiSelectValue * file: src/platform/wizards/utils/value-formatters.ts:92 * kind: function * core: platform * spec: (none) * summary: Format multiselect values by looking up labels from options * score: 4 ### function formatNumber * file: src/platform/formatting/utils.ts:132 * kind: function * core: platform * spec: (none) * summary: Format a number with locale-aware formatting * score: 4 ### function formatNumber * file: src/platform/table-v2/utils/formatters.ts:36 * kind: function * core: platform * spec: (none) * summary: Formats number values for display. * score: 4 ### function formatPercent * file: src/platform/formatting/utils.ts:150 * kind: function * core: platform * spec: (none) * summary: Format a number as percentage * score: 1 ### function formatPhone * file: src/platform/formatting/utils.ts:168 * kind: function * core: platform * spec: (none) * summary: Format a phone number * score: 1 ### function formatPhoneAsUserTypes * file: src/platform/telephony/lib/phoneUtils.ts:133 * kind: function * core: platform * spec: (none) * summary: Format phone number as user types: (XXX) XXX-XXXX (US 10-digit). * score: 4 ### function formatPhoneDisplay * file: src/platform/telephony/lib/phoneUtils.ts:72 * kind: function * core: platform * spec: (none) * summary: Format phone number for display.Supports US format: (XXX) XXX-XXXX * score: 4 ### function formatRawDataValue * file: src/platform/data-manager/utils/rawDataCsvUtils.ts:11 * kind: function * core: platform * spec: (none) * summary: Format a field value for CSV export * score: 4 ### function formatSelectValue * file: src/platform/wizards/utils/value-formatters.ts:81 * kind: function * core: platform * spec: (none) * summary: Format a select value by looking up the label from options * score: 4 ### function formatSignatureRequestsForCSV * file: src/platform/signatures/utils/csvExport.ts:37 * kind: function * core: platform * spec: (none) * summary: Convert signature requests to CSV string format. * score: 4 ### function formatTableName * file: src/platform/formatting/formatTableName.ts:13 * kind: function * core: platform * spec: (none) * summary: Formats a table name by removing the core module prefix. * params: * tableName — The raw table name (e.g., 'hr\_employees') * returns: The formatted name (e.g., 'employees') or the original if null * score: 4 ### function formatTime * file: src/platform/formatting/utils.ts:112 * kind: function * core: platform * spec: (none) * summary: Format time only * score: 1 ### function formatUTCString * file: src/platform/formatting/timezone.ts:183 * kind: function * core: platform * spec: (none) * summary: Format a UTC date string for display in user's timezoneConvenience function for displaying database timestamps. * params: * isoString — ISO 8601 date string from database * formatStr — date-fns format string (default: 'PPp') * returns: Formatted date string in user's timezone * score: 4 ### function fromZonedTime * file: src/platform/formatting/timezone.ts:134 * kind: function * core: platform * spec: (none) * summary: Convert a zoned date back to UTCTakes a date that represents local time in a timezoneand converts it to the equivalent UTC time. * params: * date — Date in local timezone * timeZone — Source timezone * returns: UTC Date object * score: 4 ### function generateAllDefaultLayouts * file: src/platform/page-layouts/generators/defaultLayoutGenerator.ts:235 * kind: function * core: platform * spec: (none) * summary: Generate all four layout types for an object at once. * score: 4 ### function generateApiSecret * file: src/platform/api-access/utils/key-utils.ts:29 * kind: function * core: platform * spec: (none) * summary: Generates a cryptographically random API secret.Format: pf\_prefix\_random40chars * score: 4 ### function generateConditionId * file: src/platform/conditional-logic/builder/utils.ts:24 * kind: function * core: platform * spec: (none) * summary: Generate a unique ID for conditions * score: 4 ### function generateCsv * file: src/platform/export/utils/csvExport.ts:26 * kind: function * core: platform * spec: (none) * summary: Generate CSV string from rows and column definitions. * params: * rows — Array of data objects * columns — Column keys to include (order preserved). If omitted, uses keys from first row. * returns: UTF-8 CSV string with headers * score: 4 ### function generateCSV * file: src/platform/data-manager/utils/csvUtils.ts:37 * kind: function * core: platform * spec: (none) * summary: Generate CSV content from records * score: 4 ### function generateDefaultLayout * file: src/platform/page-layouts/generators/defaultLayoutGenerator.ts:130 * kind: function * core: platform * spec: (none) * summary: Generate a complete default layout for an object/type combination. * score: 4 ### function generateExcel * file: src/platform/export/utils/excelExport.ts:20 * kind: function * core: platform * spec: (none) * summary: Generate an Excel workbook buffer from one or more sheets. * params: * sheets — Array of sheet definitions * returns: ArrayBuffer containing the .xlsx file * score: 4 ### function generateFieldSchema * file: src/platform/forms/validation.ts:83 * kind: function * core: platform * spec: (none) * summary: Generate Zod schema from form field definition * score: 4 ### function generateFormSchema * file: src/platform/forms/validation.ts:246 * kind: function * core: platform * spec: (none) * summary: Generate complete Zod schema from form definitionUses memoization to avoid regenerating schemas for unchanged field configurations * score: 4 ### function generateGroupId * file: src/platform/conditional-logic/builder/utils.ts:31 * kind: function * core: platform * spec: (none) * summary: Generate a unique ID for groups * score: 4 ### function generateInstanceId * file: src/platform/wizards/utils/trackWizardEvent.ts:45 * kind: function * core: platform * spec: (none) * summary: Generate a new instance ID for a wizard session * score: 4 ### function generateJson * file: src/platform/export/utils/jsonExport.ts:17 * kind: function * core: platform * spec: (none) * summary: Generate JSON string from rows. * params: * rows — Array of data objects * returns: Pretty-printed JSON string (2-space indent) * score: 4 ### function generateKeyPrefix * file: src/platform/api-access/utils/key-utils.ts:17 * kind: function * core: platform * spec: (none) * summary: Generates a random 8-character key prefix (alphanumeric, lowercase).Used to identify keys without exposing the secret. * score: 4 ### function generatePdf * file: src/platform/documents/pdfGenerator.ts:155 * kind: function * core: platform * spec: (none) * summary: Generate PDF from HTML element * params: * element — HTML element to convert * options — Generation options * returns: jsPDF instance * score: 4 ### function generateRawDataCSV * file: src/platform/data-manager/utils/rawDataCsvUtils.ts:73 * kind: function * core: platform * spec: (none) * summary: Generate CSV content from raw data records * score: 4 ### function generateRecommendations * file: src/platform/query-performance/recommendation-engine.ts:73 * kind: function * core: platform * spec: (none) * summary: Analyze slow query logs and produce index recommendations.Groups logs by , computes frequency and averageexecution time, and generates recommendations for the most impactfulpatterns. * params: * logs — Array of slow query performance log rows * returns: Array of index recommendations sorted by impact (descending) * score: 4 ### function generateRouteBreadcrumbSegments * file: src/platform/navigation/utils/generate-route-breadcrumb-segments.ts:103 * kind: function * core: platform * spec: (none) * summary: Build breadcrumb segments from a stripped pathname (no org prefix), module id, dynamic labels, and optional sub-module. * score: 4 ### function generateSalt * file: src/platform/auth/app-lock/pin-utils.ts:34 * kind: function * core: platform * spec: (none) * summary: Generate a cryptographically random salt and return it as hex. * score: 4 ### function generateSectionKey * file: src/platform/page-layouts/utils.ts:209 * kind: function * core: platform * spec: (none) * summary: Generate a unique section key from section\_name * score: 4 ### function generateSkillCode * file: src/platform/ai/constants/skill-form.ts:145 * kind: function * core: platform * spec: (none) * summary: Generate a normalized skill code from a human-readable name.Converts the name to lowercase, strips non-alphanumeric characters,replaces whitespace with underscores, and prefixes with if theresult starts with a digit. * params: * name — The human-readable skill name to convert. * returns: A valid skill code string (max 50 characters). * score: 4 ### function generateStoragePath * file: src/platform/upload/service.ts:37 * kind: function * core: platform * spec: (none) * summary: Generate storage path with tenant isolation.Pattern: orgId/entityType/entityId/timestamp\_filename * score: 4 ### function generateThumbnail * file: src/platform/upload/image-utils.ts:348 * kind: function * core: platform * spec: (none) * summary: Generate a thumbnail from an image.Uses cover mode by default (crop to fill). * score: 4 ### function generateValidationId * file: src/platform/conditional-logic/validation/utils.ts:8 * kind: function * core: platform * spec: (none) * summary: Generate a unique validation ID * score: 4 ### variable getActiveIconClasses * file: src/platform/navigation/utils/active-state.ts:45 * kind: variable * core: platform * spec: (none) * summary: Get active icon classes for navigation items * params: * isActive — Whether the navigation item is currently active * returns: CSS classes for icon styling based on active state * score: 2 ### variable getActiveIconSvgProps * file: src/platform/navigation/utils/active-state.ts:54 * kind: variable * core: platform * spec: (none) * summary: Keep icon geometry neutral for active state.Row background and rail provide active affordance, so icons should notvisually jump via stroke-width changes. * score: 2 ### variable getActiveStateClasses * file: src/platform/navigation/utils/active-state.ts:30 * kind: variable * core: platform * spec: (none) * summary: Compatibility alias used throughout existing nav code. * score: 2 ### function getAllFieldTypes * file: src/platform/field-config/fieldTypes.ts:235 * kind: function * core: platform * spec: (none) * summary: Get all field types for PF-17 DynamicFormRenderer * score: 4 ### function getAllModuleSetupConfigs * file: src/platform/setup/module-setup-registry.ts:90 * kind: function * core: platform * spec: (none) * summary: All module setup configs (for Getting Started card). * score: 4 ### function getAllowedExtensionsList * file: src/platform/documents/utils/fileValidation.ts:102 * kind: function * core: platform * spec: (none) * summary: Get a human-readable list of allowed extensions * score: 4 ### function getAllowedMetadataKeys * file: src/platform/wizards/utils/sanitizeAnalyticsEvent.ts:328 * kind: function * core: platform * spec: (none) * summary: Gets a list of all allowed metadata keys (for documentation/testing) * score: 4 ### function getAllowedTables * file: src/platform/wizards/utils/crossModuleSubmit.ts:250 * kind: function * core: platform * spec: (none) * summary: Get list of allowed tables for cross-module submission * score: 4 ### function getAllowlistedMcpServers * file: src/platform/ai/mcp-config.ts:14 * kind: function * core: platform * spec: (none) * summary: Parse and return the list of allowlisted MCP server identifiers.Reads from the Deno edge-function environment and caches theparsed comma-separated server IDs. * score: 4 ### function getAllRegisteredSteps * file: src/platform/wizards/registry/utils.ts:33 * kind: function * core: platform * spec: (none) * summary: Get all available step components (for builder UI) * score: 4 ### function getAllScopes * file: src/platform/api-access/utils/key-utils.ts:168 * kind: function * core: platform * spec: (none) * summary: Returns all available scope strings from the registry. * score: 4 ### function getAvailableFields * file: src/platform/field-config/utils.ts:217 * kind: function * core: platform * spec: (none) * summary: Get available field keys for entity type (standard + custom) * score: 4 ### function getAvailableFunctions * file: src/platform/wizards/utils/validationExpressionEvaluator.ts:582 * kind: function * core: platform * spec: (none) * summary: Get available functions for autocomplete * score: 4 ### function getAvailableLookupTables * file: src/platform/data-lookup/lookupTables.ts:120 * kind: function * core: platform * spec: (none) * summary: Get all available lookup tables * score: 4 ### variable getBadgeClasses * file: src/platform/navigation/utils/badges.ts:21 * kind: variable * core: platform * spec: (none) * summary: Get badge CSS classes based on variant * params: * variant — Badge display variant ("dot" for collapsed sidebar, "badge" for expanded) * returns: CSS classes for the badge * score: 2 ### function getBenefitsUrgency * file: src/platform/onboarding/integrations/benefitsIntegration.ts:52 * kind: function * core: platform * spec: (none) * summary: Determine urgency level based on days until deadline * score: 4 ### function getBindingStrictness * file: src/platform/ai/mapping-targets/resolveTargets.ts:19 * kind: function * core: platform * spec: (none) * summary: Read a binding's enforcement policy, applying the default when itis unset. Use this instead of so the fail-open defaultlives in exactly one place (PF-15 PR9). * score: 4 ### function getBlockAdapter * file: src/platform/clinical/blocks/adapter-registry.ts:74 * kind: function * core: platform * spec: (none) * summary: Resolve a typed-block adapter from the app singleton by any declared key. * score: 4 ### function getBrowserCompatibility * file: src/platform/telephony/lib/embeddable-utils.ts:264 * kind: function * core: platform * spec: (none) * summary: Get comprehensive browser compatibility information * score: 4 ### variable getCacheAge * file: src/platform/dashboard/utils/widgetCache.ts:151 * kind: variable * core: platform * spec: (none) * summary: Get age of cached data in milliseconds * score: 2 ### variable getCachedWidgetData * file: src/platform/dashboard/utils/widgetCache.ts:36 * kind: variable * core: platform * spec: (none) * summary: Get cached widget data from IndexedDBValidates that cached data belongs to the requesting organization * score: 2 ### variable getCacheKey * file: src/platform/dashboard/utils/widgetCache.ts:21 * kind: variable * core: platform * spec: (none) * summary: Generate a cache key scoped to organizationorganizationId is required for multi-tenant security * score: 2 ### function getCacheStats * file: src/platform/cache/monitoring.ts:15 * kind: function * core: platform * spec: (none) * summary: Returns cache hit/miss counts and hit rate. Stats are global (all tenants) in Phase 1. * score: 4 ### function getCanonicalRedirectUrl * file: src/platform/theming/utils/canonical-redirect.ts:33 * kind: function * core: platform * spec: (none) * summary: Determine if a canonical redirect is needed per the PF-95 redirect matrix. * params: * org — Organization record with subdomain fields * currentHost — Current (e.g. ) * platformApex — Platform apex domain (e.g. ) * currentPathname — Current pathname (e.g. ) * currentSearch — Current search string (e.g. ) * returns: Redirect URL or if no redirect neededMatrix rules:- R1: Primary host + + eligible → 308 to - R2: Already on tenant subdomain host → no redirect- R3: Primary host, no path → no redirect (not applicable in OrgSlugRoute)- R4: Unknown subdomain host → no redirect- R5: Wrong subdomain for resolved org → deferred for MVP * score: 4 ### function getCategoriesSorted * file: src/platform/dashboard/widget-categories.ts:109 * kind: function * core: platform * spec: (none) * summary: Get all categories sorted by order * score: 4 ### function getCategoryConfig * file: src/platform/dashboard/widget-categories.ts:102 * kind: function * core: platform * spec: (none) * summary: Get category configuration by ID * score: 4 ### function getCcbhcMeasureAggregates * file: src/platform/clinical/measures/useClinicalMeasureAggregates.ts:67 * kind: function * core: platform * spec: (none) * summary: Fetch de-identified CCBHC measure aggregates for an org/period.Delegates to the CL-owned SECURITY DEFINER RPC soPF-96 small-cell suppression runs server-side. Fail-closed: returns on anyerror, absent org, or empty measureCodes list. is injectable for tests. * score: 4 ### function getChangeImpact * file: src/platform/org-data-sync/api/change-impact.ts:26 * kind: function * core: platform * spec: (none) * summary: Provides get change impact functionality. * score: 4 ### function getClGroupBreadcrumbForPath * file: src/platform/navigation/utils/cl-group-breadcrumbs.ts:55 * kind: function * core: platform * spec: (none) * summary: Like , but also matches deeper CL routes by theirtop-level CL segment (e.g. resolves to the samegroup as ). Used to surface the parent nav group on detailand nested pages so users have a back-link to the correct section. * score: 4 ### function getCoCMRegistryMembership * file: src/platform/clinical/cocm-registry.ts:54 * kind: function * core: platform * spec: (none) * summary: Look up the CoCM registry membership for a given enrollment.**Stub:** CL-54-EN-01 is not yet built. Returns so the gate engine gracefully degrades — CoCM billing periods land on theworklist rather than auto-posting (PM-75 AC-7.3). * params: * \_enrollmentId — The UUID (unused in stub). * returns: A with . * score: 4 ### function getCompletedTours * file: src/platform/help/useTour.ts:195 * kind: function * core: platform * spec: (none) * summary: Get IDs of all completed tours. * score: 4 ### function getConditionSummary * file: src/platform/page-layouts/utils/evaluateVisibility.ts:60 * kind: function * core: platform * spec: (none) * summary: Get a human-readable summary of a visibility condition. * score: 4 ### function getCorePrimaryActionMap * file: src/platform/modules/module-registry.ts:58 * kind: function * core: platform * spec: (none) * summary: Returns the primary quick action for each module (first entry in ). * score: 4 ### function getCrossModuleCompatibleSteps * file: src/platform/wizards/registry/utils.ts:40 * kind: function * core: platform * spec: (none) * summary: Get steps that are compatible with cross-module use * score: 4 ### function getCurrentEmployeeId * file: src/platform/workforce/getCurrentEmployeeId.ts:14 * kind: function * core: platform * spec: (none) * summary: Get the current user's employee ID for a given organizationUses an RPC call that bypasses RLS via SECURITY DEFINER * score: 4 ### function getCurrentInstanceId * file: src/platform/wizards/utils/trackWizardEvent.ts:53 * kind: function * core: platform * spec: (none) * summary: Get the current wizard session instance ID * score: 4 ### function getCurrentOrganizationIdSync * file: src/platform/cache/org-resolver.ts:15 * kind: function * core: platform * spec: (none) * summary: Sync getter for use outside React (e.g. in queryFn). Requires org to be passed or set elsewhere. * score: 4 ### function getCustomFieldValue * file: src/platform/custom-fields/utils.ts:12 * kind: function * core: platform * spec: (none) * summary: Get a custom field value from an entity's custom\_fields JSONB * score: 4 ### function getDefaultCustomFieldValues * file: src/platform/custom-fields/utils.ts:159 * kind: function * core: platform * spec: (none) * summary: Get default values for all custom fields * score: 4 ### function getDefaultFieldConfigs * file: src/platform/field-config/utils.ts:162 * kind: function * core: platform * spec: (none) * summary: Get default configs for entity type (all standard + custom fields) * score: 4 ### function getDefaultHeight * file: src/platform/dashboard/utils/widget-heights.ts:63 * kind: function * core: platform * spec: (none) * summary: Get default height in pixels for a widget size * score: 4 ### function getDefaultPayrollTasks * file: src/platform/onboarding/integrations/payrollIntegration.ts:217 * kind: function * core: platform * spec: (none) * summary: Get all default payroll tasks for onboarding templates * score: 4 ### function getDefaultWizardFeatureFlags * file: src/platform/wizards/hooks/useWizardFeatureFlags.ts:102 * kind: function * core: platform * spec: (none) * summary: Get default feature flags (for use in tests or when org context not available) * score: 4 ### function getDisplayNameFromData * file: src/platform/data-manager/utils/csvUtils.ts:241 * kind: function * core: platform * spec: (none) * summary: Get display name from record data * score: 4 ### function getDropzoneErrorMessage * file: src/platform/documents/utils/fileValidation.ts:193 * kind: function * core: platform * spec: (none) * summary: Get a user-friendly error message from dropzone rejection * score: 4 ### function getEffectiveMobileSize * file: src/platform/dashboard/utils/sizing.ts:148 * kind: function * core: platform * spec: (none) * summary: Get effective mobile size for a widget * score: 4 ### function getEffectiveSize * file: src/platform/dashboard/utils/sizing.ts:78 * kind: function * core: platform * spec: (none) * summary: Get the effective size for a widget, ensuring it's valid * score: 4 ### function getEmbeddableErrorMessage * file: src/platform/telephony/lib/embeddable-utils.ts:396 * kind: function * core: platform * spec: (none) * summary: Get user-friendly error message for embeddable errors * score: 4 ### function getEventDefinition * file: src/platform/events/eventDefinitionCache.ts:57 * kind: function * core: platform * spec: (none) * summary: Fetch an event definition by name, using the shared query cache.Returns if the event is not registered. * score: 4 ### function getEventGovernanceSettings * file: src/platform/events/eventDefinitionCache.ts:89 * kind: function * core: platform * spec: (none) * summary: Fetch event governance settings for an organization.Returns the validation mode and deprecation grace days. * score: 4 ### function getExamOverlayContext * file: src/platform/clinical/blocks/ros-exam/full-hp-gate.ts:96 * kind: function * core: platform * spec: (none) * summary: Resolve the exam-gate overlay context for an org + encounter.Fail-safe on the *advisory* side is wrong for an accreditation requirement, soeach lookup errs toward the raised requirement only when the data actuallysays so: a missing/unreadable election or chart flag reads (the orgsimply has no TJC gate), matching the additive-overlay semantics — this gatecan only ever add a requirement that is provably elected + indicated. * params: * ctx — tenant + encounter identifying the documentation instance. * client — injectable Supabase-shaped client (defaults to the app client). * returns: the overlay context driving . * score: 4 ### function getFairnessMonitoredSurface * file: src/platform/ai/constants/ai-fairness-surfaces.ts:91 * kind: function * core: platform * spec: (none) * summary: Look up a monitored surface by its DSI feature key. * score: 4 ### function getFieldDependents * file: src/platform/conditional-logic/utils/evaluator.ts:197 * kind: function * core: platform * spec: (none) * summary: Get list of fields that depend on a specific fieldUseful for determining which fields to re-evaluate when a field changes * params: * rules — Map of field keys to their conditional rules * fieldKey — The field key that changed * returns: Array of field keys that depend on the changed field * score: 4 ### function getFieldValidationState * file: src/platform/forms/validationV2.ts:155 * kind: function * core: platform * spec: (none) * summary: Get validation state for a specific field * params: * field — Field definition * formData — Current form data * fieldValue — Current field value * returns: Field validation state * score: 4 ### variable getFlyoutOpenStateClasses * file: src/platform/navigation/utils/active-state.ts:36 * kind: variable * core: platform * spec: (none) * summary: Subtle open-state treatment for flyout triggers.Keep this lower-emphasis than true route-active rows. * score: 2 ### function getFormPages * file: src/platform/forms/utils/pdfExportSettingsAccessor.ts:90 * kind: function * core: platform * spec: (none) * summary: Retrieves the pages array from a form's settings if present and valid. Safely extracts the array from when conform to . * params: * form — The form definition to read settings from * returns: The array from the form's settings, or if settings are missing or invalid * score: 4 ### function getFWFieldTypes * file: src/platform/field-config/fieldTypes.ts:228 * kind: function * core: platform * spec: (none) * summary: Get field types available for FW Form BuilderExcludes PF-17 only types * score: 4 ### function getGlobalRecorderState * file: src/platform/analytics/sessionRecorder.ts:431 * kind: function * core: platform * spec: (none) * summary: Get global recorder state * score: 1 ### function getGroupDepth * file: src/platform/conditional-logic/builder/utils.ts:173 * kind: function * core: platform * spec: (none) * summary: Get the depth of a group in the tree * score: 4 ### function getHandler * file: src/platform/bulk-operations/processor.ts:26 * kind: function * core: platform * spec: (none) * summary: Get a registered handler for an entity type. * score: 4 ### function getHiddenFields * file: src/platform/page-layouts/utils/evaluateVisibility.ts:86 * kind: function * core: platform * spec: (none) * summary: Get all fields that are hidden by visibility rules for the given form values.Useful for excluding hidden fields from form submission. * score: 4 ### function getHighestUnreadPriority * file: src/platform/notifications/utils/groupNotifications.ts:78 * kind: function * core: platform * spec: (none) * summary: Returns the highest priority level from all unread notifications. * score: 4 ### function getHubTabLabel * file: src/platform/navigation/hub-tab-labels.ts:154 * kind: function * core: platform * spec: (none) * summary: Returns the display label for the active tab when on a hub route with ?tab=, or null.Supports both literal hub paths (e.g. ) and parameterized hub paths(e.g. ) via single-segment wildcard matching. * score: 4 ### function getIdentifierOptions * file: src/platform/data-manager/utils/rawDataImportUtils.ts:187 * kind: function * core: platform * spec: (none) * summary: Get identifier column options from existing records * score: 4 ### function getImageDimensions * file: src/platform/upload/image-utils.ts:160 * kind: function * core: platform * spec: (none) * summary: Get dimensions of an image file. * score: 4 ### function getIndustryFromTemplate * file: src/platform/templates/utils/templateIndustry.ts:34 * kind: function * core: platform * spec: (none) * summary: Classifies a template into an industry category based on its name and description.Checks the combined lowercase name and description against prioritized keyword sets:healthcare → hr → compliance → general (fallback). The first matching category is returned. * params: * template — name: string; description?: string | null Object with the template and optional to inspect for keywords. * returns: 'healthcare' | 'hr' | 'compliance' | 'general' — The detected industry category. * example: | // returns 'hr'getIndustryFromTemplate( name: 'Employee Onboarding Checklist', description: '' ); * score: 4 ### function getInstallHelpUrl * file: src/platform/pwa/utils/platformDetection.ts:71 * kind: function * core: platform * spec: (none) * summary: Returns the appropriate "Learn more about installing" URLbased on the current platform. * score: 4 ### function getLayoutedDiagram * file: src/platform/workflow/utils/dagreLayout.ts:33 * kind: function * core: platform * spec: (none) * summary: Applies Dagre-based automatic layout to diagram content nodes.Structural nodes (groups, lane headers) are passed through unchanged.Content nodes receive updated values from the Dagre algorithm.The Dagre graph uses center-based positioning, which is converted toReact Flow's top-left origin. * params: * nodes — All diagram nodes * edges — All diagram edges * direction — Layout direction: 'TB' (top-to-bottom) or 'LR' (left-to-right) * returns: Object with repositioned nodes and unchanged edges * score: 4 ### function getLineageByDestination * file: src/platform/org-data-sync/api/lineage.ts:72 * kind: function * core: platform * spec: (none) * summary: Provides get lineage by destination functionality. * score: 4 ### function getLineageBySource * file: src/platform/org-data-sync/api/lineage.ts:51 * kind: function * core: platform * spec: (none) * summary: Provides get lineage by source functionality. * score: 4 ### function getLoginSsoState * file: src/platform/auth/sso/useSsoSetup.ts:139 * kind: function * core: platform * spec: (none) * summary: Read the org's Login SSO state for the settings surface. * score: 4 ### function getLookupFilterableColumns * file: src/platform/data-lookup/lookupTables.ts:135 * kind: function * core: platform * spec: (none) * summary: Get filterable column metadata for a lookup table.Returns an empty array if the table has no filterable columns. * score: 4 ### function getLookupFilterPresets * file: src/platform/data-lookup/lookupTables.ts:142 * kind: function * core: platform * spec: (none) * summary: Get quick-apply filter presets for a lookup table. * score: 4 ### function getLookupTableConfig * file: src/platform/data-lookup/lookupTables.ts:113 * kind: function * core: platform * spec: (none) * summary: Get lookup table configuration * score: 4 ### function getMaxDepth * file: src/platform/conditional-logic/builder/utils.ts:211 * kind: function * core: platform * spec: (none) * summary: Get the maximum depth in a group tree * score: 4 ### function getMaxHeight * file: src/platform/dashboard/utils/widget-heights.ts:70 * kind: function * core: platform * spec: (none) * summary: Get maximum height in pixels for a widget size * score: 4 ### function getMinHeight * file: src/platform/dashboard/utils/widget-heights.ts:56 * kind: function * core: platform * spec: (none) * summary: Get minimum height in pixels for a widget size * score: 4 ### function getMobileSizeFromDesktop * file: src/platform/dashboard/utils/sizing.ts:141 * kind: function * core: platform * spec: (none) * summary: Get mobile size from desktop size (for auto-mapping) * score: 4 ### function getMobileWidgetClasses * file: src/platform/dashboard/utils/sizing.ts:183 * kind: function * core: platform * spec: (none) * summary: Get Tailwind classes for mobile widget size * score: 4 ### function getModuleDisplayName * file: src/platform/wizards/hooks/useCrossModuleWizard.ts:174 * kind: function * core: platform * spec: (none) * summary: Get display name for a module * score: 1 ### function getModuleDocsUrl * file: src/platform/docs/module-docs-map.ts:97 * kind: function * core: platform * spec: (none) * summary: Provides get module docs url functionality. * score: 4 ### function getModuleFromPathname * file: src/platform/navigation/utils/navigation-utils.ts:31 * kind: function * core: platform * spec: (none) * summary: Get module definition from pathname.Strips org prefix before matching so /o/:slug/ce/... resolves correctly. * score: 4 ### function getModuleIcon * file: src/platform/wizards/utils/moduleIcons.ts:47 * kind: function * core: platform * spec: (none) * summary: Get the icon for a module, with fallback * score: 4 ### function getModulePrefix * file: src/platform/navigation/utils/navigation-utils.ts:53 * kind: function * core: platform * spec: (none) * summary: Get the module prefix from a route (e.g., "/fw/dashboard" - "/fw") * score: 4 ### function getModuleRegistry * file: src/platform/modules/module-registry.ts:32 * kind: function * core: platform * spec: (none) * summary: Full module definitions populated asynchronously by .Before preload completes this array may be empty — prefer or in React / after preload. * score: 4 ### function getModuleSetupConfig * file: src/platform/setup/module-setup-registry.ts:85 * kind: function * core: platform * spec: (none) * summary: Get setup config for a module by id. Returns undefined if not in registry. * score: 4 ### function getModuleSubRoute * file: src/platform/navigation/utils/navigation-utils.ts:73 * kind: function * core: platform * spec: (none) * summary: Get the sub-route within a module (e.g., "/hr/employees/123" - "employees/123") * score: 4 ### function getModuleTooltipKeys * file: src/platform/help/tooltip-content.ts:638 * kind: function * core: platform * spec: (none) * summary: Get all tooltip keys for a module. * score: 4 ### variable getNavRowStateClasses * file: src/platform/navigation/utils/active-state.ts:23 * kind: variable * core: platform * spec: (none) * summary: Unified row-state classes for navigation surfaces.This keeps hover/active parity across sidebar, module, sub-module, and flyout rows. * score: 2 ### function getNextDisplayOrder * file: src/platform/page-layouts/utils.ts:179 * kind: function * core: platform * spec: (none) * summary: Get the next display\_order value for a new item * score: 4 ### function getNextPayrollAction * file: src/platform/onboarding/integrations/payrollIntegration.ts:92 * kind: function * core: platform * spec: (none) * summary: Get the next action for payroll setup * score: 4 ### variable getNotificationCategory * file: src/platform/notifications/utils/notificationTypes.ts:262 * kind: variable * core: platform * spec: (none) * summary: Provides get notification category functionality. * score: 2 ### variable getNotificationConfig * file: src/platform/notifications/utils/notificationTypes.ts:241 * kind: variable * core: platform * spec: (none) * summary: Provides get notification config functionality. * score: 2 ### variable getNotificationIcon * file: src/platform/notifications/utils/notificationTypes.ts:255 * kind: variable * core: platform * spec: (none) * summary: Provides get notification icon functionality. * score: 2 ### function getOperatorLabel * file: src/platform/wizards/utils/evaluateBranchCondition.ts:126 * kind: function * core: platform * spec: (none) * summary: Get operator label for display * score: 4 ### function getOperatorsForFieldType * file: src/platform/wizards/utils/evaluateBranchCondition.ts:150 * kind: function * core: platform * spec: (none) * summary: Get operators available for a field type * score: 4 ### function getOptionFieldTypes * file: src/platform/field-config/fieldTypes.ts:242 * kind: function * core: platform * spec: (none) * summary: Get field types that support options/choices * score: 4 ### function getOrganizationUploadSettings * file: src/platform/upload/validation.ts:65 * kind: function * core: platform * spec: (none) * summary: Fetch organization upload settings from pf\_module\_settings.Falls back to defaults if settings not found. * score: 4 ### function getPageNumbers * file: src/platform/table-v2/utils/pagination/utils.ts:137 * kind: function * core: platform * spec: (none) * summary: Get an array of page numbers for pagination UIReturns a smart range of page numbers with ellipsis indicators (-1) * params: * currentPage — Current page number * totalPages — Total number of pages * maxVisible — Maximum visible page numbers (default 7) * returns: Array of page numbers (-1 indicates ellipsis) * score: 4 ### function getPayrollCompletionMessage * file: src/platform/onboarding/integrations/payrollIntegration.ts:105 * kind: function * core: platform * spec: (none) * summary: Get completion message for payroll section * score: 4 ### function getPayrollSetupState * file: src/platform/onboarding/integrations/payrollIntegration.ts:43 * kind: function * core: platform * spec: (none) * summary: Get the overall payroll setup state * score: 4 ### function getPdfExportSettings * file: src/platform/forms/utils/pdfExportSettingsAccessor.ts:75 * kind: function * core: platform * spec: (none) * summary: Extracts the PDF export settings from a form's settings. Validates the form's settings and returns the configuration when present and well-formed; returns if the settings or are missing or invalid. * params: * form — The form definition to read settings from * returns: The object when present and valid, otherwise * score: 4 ### function getPicklistCategoryLabel * file: src/platform/picklists/constants.ts:35 * kind: function * core: platform * spec: (none) * summary: Display label for a category value (falls back to the raw value). * score: 4 ### function getPicklistItemStyle * file: src/platform/picklists/utils/referencePicklistUtils.ts:61 * kind: function * core: platform * spec: (none) * summary: Extracts style information (color, icon) from a picklist item's metadata. * params: * item — The picklist item to extract style from. * returns: A with color and icon strings. Falls back to gray/circle defaults. * score: 4 ### function getPinnableIcon * file: src/platform/navigation/pinnable-icons.ts:62 * kind: function * core: platform * spec: (none) * summary: Resolve stored icon name to LucideIcon; returns fallback if invalid. * score: 4 ### function getPinnedActionKeysFromPreferences * file: src/platform/dashboard/utils/normalize-quick-action-preferences.ts:79 * kind: function * core: platform * spec: (none) * summary: Returns ordered pinned action keys from preferences (stable order field). * score: 4 ### function getPlanAmendments * file: src/platform/clinical/plan/record-amendment.ts:107 * kind: function * core: platform * spec: (none) * summary: Read a plan's amendment trail (newest first), org-scoped.Throws on failure instead of collapsing to — an empty array isindistinguishable from "no amendments exist" and would let a read failureon the regulatory amendment trail masquerade as a clean history. * score: 4 ### function getPortalRunStatus * file: src/platform/automation/portal/seam.ts:82 * kind: function * core: platform * spec: (none) * summary: Fetch a run's terminal status + per-step audit trail (RLS-scoped to the org). * score: 4 ### function getPresetById * file: src/platform/onboarding/integrations/milestonePresets.ts:196 * kind: function * core: platform * spec: (none) * summary: Get preset by ID * score: 1 ### function getPresetDisplayInfo * file: src/platform/onboarding/integrations/milestonePresets.ts:269 * kind: function * core: platform * spec: (none) * summary: Get display info for a preset * score: 1 ### function getProhibitedKeys * file: src/platform/wizards/utils/sanitizeAnalyticsEvent.ts:321 * kind: function * core: platform * spec: (none) * summary: Gets a list of all prohibited keys (for documentation/testing) * score: 4 ### function getPushPlatformName * file: src/platform/pwa/utils/platformDetection.ts:48 * kind: function * core: platform * spec: (none) * summary: Returns a user-friendly platform name string.Useful for diagnostics and platform-aware UI. * score: 4 ### function getQueryCacheStats * file: src/platform/offline/queryPersistence.ts:330 * kind: function * core: platform * spec: (none) * summary: Get storage statistics * score: 1 ### function getQuickActionKey * file: src/platform/navigation/quick-action-catalog.ts:59 * kind: function * core: platform * spec: (none) * summary: Returns the explicit action key from a registry action, or a computed default. * params: * moduleId — Owning module id * navGroupId — Optional nav subgroup id * route — Navigation route * action — Registry quick action (optional override) * score: 4 ### function getRawDataCSVFilename * file: src/platform/data-manager/utils/rawDataCsvUtils.ts:112 * kind: function * core: platform * spec: (none) * summary: Generate a filename for the CSV export * score: 4 ### function getRecommendedAction * file: src/platform/onboarding/integrations/benefitsIntegration.ts:84 * kind: function * core: platform * spec: (none) * summary: Get recommended action based on benefits status * score: 4 ### function getRegisteredPluginDataScopes * file: src/platform/dashboard/plugins/index.ts:18 * kind: function * core: platform * spec: (none) * summary: All data scopes declared by registered plugins — the client-side mirror of what the broker must server-side allowlist. Surfaced for governance/audit (drift between the two is a finding). * score: 4 ### function getReproducibleMeasureAggregates * file: src/platform/clinical/measures/useClinicalMeasureAggregates.ts:105 * kind: function * core: platform * spec: (none) * summary: Engine-backed, REPRODUCIBLE counterpart of .Reads de-identified, PF-96-suppressed numerator/denominator counts from the CL-51engine's immutable result snapshots () rather than alive re-compute, so a published rate re-derives deterministically (CL-51NFR-reliability-1 / CL-51-EN-01). Same de-identified, fail-closed contract. * score: 4 ### function getResolvedSurfaceBlocks * file: src/platform/clinical/blocks/getResolvedSurfaceBlocks.ts:41 * kind: function * core: platform * spec: (none) * summary: Resolve the ordered, source-tagged block set for a documentation surface. * params: * params — the surface + tenant/site/encounter to resolve for. * client — injectable Supabase-shaped client (defaults to the app client; overridden in tests). * returns: the resolved surface; an empty array on any error (fail-closed). * score: 4 ### function getRetryStatus * file: src/platform/notifications/utils/retry.ts:68 * kind: function * core: platform * spec: (none) * summary: Gets human-readable retry status message. * params: * retryCount — Current retry count * lastAttempt — Date of last attempt (optional) * returns: Status message * score: 4 ### function getRoleLabel * file: src/platform/data-manager/hooks/useAvailableRoles.ts:164 * kind: function * core: platform * spec: (none) * summary: Provides the user-facing label for a role identifier.Maps a system role to its configured display label; for non-system roles the input string is returned as a fallback. * params: * role — The role identifier, either an AppRole (system role) or a custom role string * returns: The display label for the given role; if the role is not a known system role, returns the role string itself * score: 4 ### function getRoleOrder * file: src/platform/data-manager/hooks/useAvailableRoles.ts:178 * kind: function * core: platform * spec: (none) * summary: Determine the display sort order for a role. Returns the configured order for known system roles; custom or unknown roles receive a high default order so they appear after system roles. * params: * role — (AppRole | string) Role identifier: a system AppRole or a custom role ID * returns: number - The numeric order for sorting: the system role's configured order, or 999 for custom/unknown roles * score: 4 ### function getRuleVersion * file: src/platform/conditional-logic/utils/migration.ts:16 * kind: function * core: platform * spec: (none) * summary: Detect the version of a conditional rule * params: * rule — The rule to check * returns: 1 for V1 rules, 2 for V2 rules * score: 4 ### function getSampleContentForSection * file: src/platform/templates/lib/template-sample-data.ts:59 * kind: function * core: platform * spec: (none) * summary: Return realistic sample content for a document template section.Matches the section name (case-insensitive, partial match) against a libraryof healthcare-relevant sample paragraphs. Falls back to a generic paragraphwhen no match is found. * params: * sectionName — The name of the template section (e.g., "Purpose", "Scope"). * \_templateType — Reserved for future per-type customization. * returns: A multi-line sample string suitable for PDF preview rendering. * score: 4 ### function getSampleMetadata * file: src/platform/templates/lib/template-sample-data.ts:86 * kind: function * core: platform * spec: (none) * summary: Generate sample metadata for document template preview\.Returns realistic placeholder values for author, version, document number,and effective date fields typically shown in templated PDF output. * returns: An object with sample metadata fields. * score: 4 ### function getSentry * file: src/platform/monitoring/sentry.ts:31 * kind: function * core: platform * spec: (none) * summary: Returns the cached Sentry module after initialization, or null if init has not run. * score: 4 ### function getSessionRecorder * file: src/platform/analytics/sessionRecorder.ts:386 * kind: function * core: platform * spec: (none) * summary: Get or create global session recorder * params: * config — Configuration (only used on first call) * returns: Global session recorder instance * score: 4 ### function getSiblingSubModules * file: src/platform/navigation/utils/sub-module-utils.ts:88 * kind: function * core: platform * spec: (none) * summary: Get sibling sub-modules (all sub-modules in the same parent module).Returns all sub-modules including the current one for display purposes. * params: * module — Parent module definition * returns: Array of sub-modules in the parent module * score: 4 ### function getStepComponent * file: src/platform/wizards/registry/utils.ts:12 * kind: function * core: platform * spec: (none) * summary: Get a step component by its ID * score: 4 ### function getStepsByModulesForCrossModule * file: src/platform/wizards/registry/utils.ts:47 * kind: function * core: platform * spec: (none) * summary: Get steps available for a set of modules (for cross-module wizards) * score: 4 ### function getStepsForModule * file: src/platform/wizards/registry/utils.ts:19 * kind: function * core: platform * spec: (none) * summary: Get all registered steps for a specific module * score: 4 ### function getStorageValue * file: src/platform/navigation/utils/navigation-utils.ts:94 * kind: function * core: platform * spec: (none) * summary: Safe localStorage getter with JSON parsing * score: 4 ### function getStoredBiometricCredential * file: src/platform/auth/app-lock/biometric-utils.ts:157 * kind: function * core: platform * spec: (none) * summary: Get the stored biometric credential reference, or null. * score: 4 ### function getStoredPinDerived * file: src/platform/auth/app-lock/pin-utils.ts:102 * kind: function * core: platform * spec: (none) * summary: Retrieve the stored derived PIN + salt, or if not set. * score: 4 ### function getStoredSessions * file: src/platform/analytics/sessionRecorder.ts:469 * kind: function * core: platform * spec: (none) * summary: Get stored sessions * score: 1 ### function getSubModuleDefaultRoute * file: src/platform/navigation/utils/route-utils.ts:17 * kind: function * core: platform * spec: (none) * summary: Get the default navigable route for a sub-module.Falls back through: overviewRoute - first item route - fallback module route - "/" * params: * subModule — The sub-module to get the route for * fallbackModule — Optional parent module for fallback route * returns: The best available route for navigation * score: 4 ### function getSubModuleForPath * file: src/platform/navigation/utils/generate-route-breadcrumb-segments.ts:75 * kind: function * core: platform * spec: (none) * summary: Detect if current path is within a known sub-module.Returns the sub-module if found, null otherwise. * score: 4 ### function getSubModulePrefix * file: src/platform/navigation/utils/sub-module-utils.ts:60 * kind: function * core: platform * spec: (none) * summary: Get the route prefix for a sub-module (e.g., "/hr/ats") * score: 4 ### function getSubModules * file: src/platform/navigation/utils/sub-module-utils.ts:43 * kind: function * core: platform * spec: (none) * summary: Get all sub-modules for a specific module * score: 4 ### function getSurfaceDocumentationCompleteness * file: src/platform/clinical/completeness/getSurfaceDocumentationCompleteness.ts:105 * kind: function * core: platform * spec: (none) * summary: Compute an encounter/surface's documentation completeness from the CL-75resolved required set. * params: * params — the surface + tenant/encounter to score. * deps — injectable client/registry/clock (defaults to the app singletons). * returns: the completeness result; fail-closed (incomplete) on resolution failure. * score: 4 ### function getSystemRolesByCategory * file: src/platform/permissions/components/RoleSelector.tsx:277 * kind: function * core: platform * spec: (none) * summary: Get system role options grouped by category * score: 4 ### function getTableContract * file: src/platform/wizards/audit/sources/types-source.ts:37 * kind: function * core: platform * spec: (none) * summary: Parse a table's Insert block from the generated types.ts.A column without a trailing on its Insert line is NOT NULL with no default(required on insert); a column with is nullable or defaulted (optional). * score: 4 ### function getTableContractLive * file: src/platform/wizards/audit/sources/live-source.ts:58 * kind: function * core: platform * spec: (none) * summary: Live table contract from information\_schema (NOT NULL with no default = required).GENERATED ALWAYS / identity columns also present as + no, but they are NOT insertable, so they are excluded from (via /) while still appearing in thefull list. The static types.ts lane gets this for free: Supabase marksthose columns optional () in the generated Insert type. * score: 4 ### function getTableEnums * file: src/platform/wizards/audit/sources/types-source.ts:98 * kind: function * core: platform * spec: (none) * summary: Map each enum-typed Insert column of to its DB enum's member values,read entirely from the generated types.ts (the annotation + the top-level map). Non-enum columns are omitted. Returns for a table with noInsert block or no enum columns.Fully static — no live stack required (issue #1183: the linkage IS in types.ts). * score: 4 ### function getTableEnumsLive * file: src/platform/wizards/audit/sources/live-source.ts:87 * kind: function * core: platform * spec: (none) * summary: Live column to enum-members map (USER-DEFINED columns joined to pg\_enum). * score: 4 ### function getTagLabel * file: src/platform/wizards/config/marketplaceTags.ts:65 * kind: function * core: platform * spec: (none) * summary: Get tag label by value.Function is case-insensitive. If the tag value is not found,a warning is logged in non-production environments and theraw value is returned as a fallback. * params: * value — The tag value to look up * returns: The label for the tag, or the raw value if not found * score: 4 ### function getTagsByCategory * file: src/platform/wizards/config/marketplaceTags.ts:51 * kind: function * core: platform * spec: (none) * summary: Get tags filtered by category. * score: 4 ### function getTargetSchema * file: src/platform/import/mapping/targetSchemas.ts:112 * kind: function * core: platform * spec: (none) * summary: Get target field definitions for an entity type.Returns an empty array for unknown/custom types. * score: 4 ### function getTaskPrefillFromTemplate * file: src/platform/tasks/hooks/useTaskTemplateMutation.ts:93 * kind: function * core: platform * spec: (none) * summary: Generate a task prefill payload from a template * score: 4 ### function getTbScreeningIndicator * file: src/platform/clinical/blocks/ros-exam/tb-screening.ts:83 * kind: function * core: platform * spec: (none) * summary: Resolve the TB-screening-due indicator for a residential admission from theorg's PF-96 jurisdiction profile. * params: * params — the org/site + admission date. * client — injectable Supabase-shaped client (defaults to the app client). * returns: the indicator, or when the resolved profile carries no TB-screening window (never a hardcoded default). * score: 4 ### function getTemplateById * file: src/platform/reports/templates/reportTemplates.ts:33 * kind: function * core: platform * spec: (none) * summary: Provides get template by id functionality. * score: 4 ### function getTemplateById * file: src/platform/roles/components/starter-role-templates.ts:619 * kind: function * core: platform * spec: (none) * summary: Provides get template by id functionality. * score: 4 ### function getTemplateContractLive * file: src/platform/wizards/audit/sources/live-source.ts:34 * kind: function * core: platform * spec: (none) * summary: The live seeded template for a wizard\_type (prefers the global/system row). * score: 4 ### function getTemplatesByCategory * file: src/platform/picklists/data/picklistTemplates.ts:138 * kind: function * core: platform * spec: (none) * summary: Group templates by category * score: 1 ### function getTemplatesByCategory * file: src/platform/reports/templates/reportTemplates.ts:25 * kind: function * core: platform * spec: (none) * summary: Provides get templates by category functionality. * score: 4 ### function getThrottleStatus * file: src/platform/workflow/execution.ts:152 * kind: function * core: platform * spec: (none) * summary: Read FW-53 rate-limit configs + the latest execution counters for an org(optionally scoped to a workflow definition) and compute an advisory throttlesnapshot. Does NOT mutate or block — pairs with the accept-and-hold model.Reads are org-scoped (RLS-enforced for authenticated callers). * score: 4 ### function getTimeZoneAbbreviation * file: src/platform/formatting/timezone.ts:195 * kind: function * core: platform * spec: (none) * summary: Get timezone abbreviation for a date * params: * date — Date to check * timeZone — IANA timezone identifier * returns: Timezone abbreviation (e.g., 'EST', 'PDT') * score: 4 ### function getTimeZoneOffset * file: src/platform/formatting/timezone.ts:152 * kind: function * core: platform * spec: (none) * summary: Get the UTC offset in minutes for a timezone at a specific date * params: * timeZone — IANA timezone identifier * date — Date to check (defaults to now) * returns: Offset in minutes (positive = ahead of UTC) * score: 4 ### function getTimezoneOptions * file: src/platform/formatting/timezone.ts:243 * kind: function * core: platform * spec: (none) * summary: Get list of common timezones with labels * returns: Array of timezone options for select inputs * score: 4 ### function getTooltipContent * file: src/platform/help/tooltip-content.ts:613 * kind: function * core: platform * spec: (none) * summary: Get tooltip content for a specific field in a module.Returns undefined if not found. * score: 4 ### variable getTypesByCategory * file: src/platform/notifications/utils/notificationTypes.ts:269 * kind: variable * core: platform * spec: (none) * summary: Provides get types by category functionality. * score: 2 ### function getUniqueSections * file: src/platform/forms/utils/sectionPageMapping.ts:48 * kind: function * core: platform * spec: (none) * summary: Get unique sections from field configurations * score: 4 ### function getUserMediaPermission * file: src/platform/telephony/lib/embeddable-utils.ts:232 * kind: function * core: platform * spec: (none) * summary: Get microphone access status (cached check) * score: 4 ### function getUserTimeZone * file: src/platform/formatting/timezone.ts:66 * kind: function * core: platform * spec: (none) * summary: Get the user's current timezone * returns: IANA timezone identifier (e.g., 'America/New\_York') * score: 4 ### function getValidationDependencies * file: src/platform/conditional-logic/validation/utils.ts:84 * kind: function * core: platform * spec: (none) * summary: Get all fields involved in validations (for dependency tracking) * score: 4 ### function getValidationFunction * file: src/platform/wizards/utils/validationFunctions.ts:437 * kind: function * core: platform * spec: (none) * summary: Get a validation function by name.Function lookup is case-insensitive - the name is normalized to lowercase. * params: * name — Function name (any case accepted) * returns: The validation function or undefined if not found * score: 4 ### function getValidationFunctionNames * file: src/platform/wizards/utils/validationFunctions.ts:427 * kind: function * core: platform * spec: (none) * summary: Get all available validation function names.Returns canonical lowercase names as defined in the validationFunctions object. * score: 4 ### function getValidOperators * file: src/platform/table-v2/utils/filter/utils.ts:61 * kind: function * core: platform * spec: (none) * summary: Get list of valid operators for error messages.Returns a shallow copy to prevent mutation of the internal list. * score: 4 ### function getWidgetContentClasses * file: src/platform/dashboard/utils/sizing.ts:55 * kind: function * core: platform * spec: (none) * summary: Get size-specific Tailwind classes for widget content * params: * size — The widget size * isMobile — Whether to use mobile-optimized sizing * score: 4 ### function getWidgetGridSpan * file: src/platform/dashboard/utils/sizing.ts:42 * kind: function * core: platform * spec: (none) * summary: Get CSS Grid span styles for a widget size * score: 4 ### function getWidgetHeights * file: src/platform/dashboard/utils/widget-heights.ts:49 * kind: function * core: platform * spec: (none) * summary: Get height configuration for a widget size * score: 4 ### function getWidgetRegistrySnapshot * file: src/platform/dashboard/widget-registry-cache.ts:18 * kind: function * core: platform * spec: (none) * summary: Stable reference for useSyncExternalStore — mergeWidgetDefinitions assigns a fresh array on mutation. * score: 4 ### function groupCustomFields * file: src/platform/page-layouts/generators/fieldGroupingRules.ts:294 * kind: function * core: platform * spec: (none) * summary: Group custom fields into sections.Custom fields go into a dedicated "Custom Fields" section. * score: 4 ### function groupDefaultsIntoTemplates * file: src/platform/picklists/hooks/useDefaultPicklistTemplates.ts:46 * kind: function * core: platform * spec: (none) * summary: Group default definitions by category into PicklistTemplate objects.One template per category containing all picklists under that category.Exported for unit testing. * score: 4 ### function groupFieldsBySection * file: src/platform/field-config/utils.ts:145 * kind: function * core: platform * spec: (none) * summary: Group fields by section * score: 1 ### function groupFieldsBySectionId * file: src/platform/page-layouts/utils.ts:43 * kind: function * core: platform * spec: (none) * summary: Group fields by their section\_id * score: 4 ### function groupNotifications * file: src/platform/notifications/utils/groupNotifications.ts:26 * kind: function * core: platform * spec: (none) * summary: Groups notifications by type + action\_url.Notifications with the same type and action\_url are collapsedinto a single group with a count badge.The field always points to the most recent notification by . * score: 4 ### function groupStandardFields * file: src/platform/page-layouts/generators/fieldGroupingRules.ts:240 * kind: function * core: platform * spec: (none) * summary: Group standard fields into sections based on grouping rules. * score: 4 ### function GuidedTour * file: src/platform/help/GuidedTour.tsx:47 * kind: function * core: platform * spec: (none) * summary: Utility for guided tour. * score: 1 ### function handleAIError * file: src/platform/ai/widgets/utils/handleAIError.ts:110 * kind: function * core: platform * spec: (none) * summary: Handle AI error with toast and optional callback * score: 4 ### function hapticError * file: src/platform/gestures/utils/haptics.ts:109 * kind: function * core: platform * spec: (none) * summary: Trigger an error haptic * score: 1 ### function hapticLongPress * file: src/platform/gestures/utils/haptics.ts:123 * kind: function * core: platform * spec: (none) * summary: Trigger a long press haptic * score: 1 ### function hapticNavigate * file: src/platform/gestures/utils/haptics.ts:130 * kind: function * core: platform * spec: (none) * summary: Trigger a navigation haptic (lighter than tap, used for section/module switching) * score: 4 ### function hapticSelection * file: src/platform/gestures/utils/haptics.ts:116 * kind: function * core: platform * spec: (none) * summary: Trigger a selection haptic * score: 1 ### function hapticSuccess * file: src/platform/gestures/utils/haptics.ts:95 * kind: function * core: platform * spec: (none) * summary: Trigger a success haptic * score: 1 ### function hapticTap * file: src/platform/gestures/utils/haptics.ts:88 * kind: function * core: platform * spec: (none) * summary: Trigger a simple tap haptic * score: 1 ### function hapticWarning * file: src/platform/gestures/utils/haptics.ts:102 * kind: function * core: platform * spec: (none) * summary: Trigger a warning haptic * score: 1 ### function hasBlockAdapter * file: src/platform/clinical/blocks/adapter-registry.ts:79 * kind: function * core: platform * spec: (none) * summary: Whether a typed-block adapter is registered under in the app singleton. * score: 4 ### function hasDaylightSavingTime * file: src/platform/formatting/timezone.ts:205 * kind: function * core: platform * spec: (none) * summary: Check if a timezone observes daylight saving time * params: * timeZone — IANA timezone identifier * returns: True if timezone has DST * score: 4 ### function hasDefaultLayouts * file: src/platform/page-layouts/generators/defaultLayoutGenerator.ts:267 * kind: function * core: platform * spec: (none) * summary: Check if default layouts exist for an object. * score: 4 ### function hashSecret * file: src/platform/api-access/utils/key-utils.ts:41 * kind: function * core: platform * spec: (none) * summary: Hashes an API secret using SHA-256 for storage.The raw secret is never persisted. * score: 4 ### function hashSessionToken * file: src/platform/sessions/utils/deviceFingerprint.ts:77 * kind: function * core: platform * spec: (none) * summary: Hash a session token (refresh token) using SHA-256.Never stores plaintext tokens. * score: 4 ### function hasMentions * file: src/platform/messaging/utils/mentionParser.ts:75 * kind: function * core: platform * spec: (none) * summary: Check if content contains mentions * score: 4 ### function hasRecentSuccessfulTest * file: src/platform/ai/wizards/ai-skill-creation/test-freshness.ts:21 * kind: function * core: platform * spec: (none) * summary: Returns true when there is a successful test run within the freshness window (AC-4). * params: * lastTestAt — ISO timestamp of the most recent test attempt, or null. * lastTestOk — Whether that most recent attempt succeeded. * now — Current time in ms (injected for deterministic tests; defaults to Date.now()). * returns: True only when a successful test ran no more than ago. * score: 4 ### function hasTooltipContent * file: src/platform/help/tooltip-content.ts:631 * kind: function * core: platform * spec: (none) * summary: Check if tooltip content exists for a field. * score: 4 ### function hasUnreadMessages * file: src/platform/messaging/utils/unreadCalculator.ts:21 * kind: function * core: platform * spec: (none) * summary: Check if user has any unread messages (short-circuits on first positive) * score: 4 ### function hasV1Conditions * file: src/platform/conditional-logic/utils/migration.ts:117 * kind: function * core: platform * spec: (none) * summary: Check if a V1 rule has any actual conditions * score: 4 ### function hasValidationFunction * file: src/platform/wizards/utils/validationFunctions.ts:446 * kind: function * core: platform * spec: (none) * summary: Check if a validation function exists.Lookup is case-insensitive. * params: * name — Function name (any case accepted) * score: 4 ### function heuristicNameMrnScan * file: src/platform/ai/prompt-safety.ts:224 * kind: function * core: platform * spec: (none) * summary: Author-time name / MRN heuristic (AC-2 author-time gap).The regex cannot catch free-text patient names or short MRN tokenswithout a (a real patient), which does not exist at author time.This heuristic WARNS on capitalized bigrams (likely raw names) and MRN-shaped tokensso the wizard can require substitution plus a no-raw-PHI attestation.It deliberately errs toward warning; the author resolves it with placeholders. * params: * prompt — The prompt text to scan. * returns: A listing likely names and MRN tokens (deduped). * score: 4 ### function hexToRgb * file: src/platform/theming/utils/contrast.ts:65 * kind: function * core: platform * spec: (none) * summary: Parse a hex color string to \[r, g, b] in 0–255.Accepts or (alpha is discarded). * score: 4 ### function highlightVariables * file: src/platform/templates/utils/variableResolver.ts:258 * kind: function * core: platform * spec: (none) * summary: Highlight variables in a string for preview display * score: 4 ### function htmlToPlainText * file: src/platform/email-signatures/utils/render.ts:42 * kind: function * core: platform * spec: (none) * summary: Convert HTML to plain text by stripping tags and converting common elements. * score: 4 ### function ImageViewer * file: src/platform/documents/ImageViewer.tsx:14 * kind: function * core: platform * spec: (none) * summary: Utility for image viewer. * score: 1 ### function inferColumnType * file: src/platform/analytics/byod/sanitize.ts:37 * kind: function * core: platform * spec: (none) * summary: Infer a column type from non-empty samples (all must match for a non-text verdict). * score: 4 ### function initSentry * file: src/platform/monitoring/sentry.ts:40 * kind: function * core: platform * spec: (none) * summary: Initialize Sentry SDK. Call once before React renders (via ).Requires VITE\_SENTRY\_DSN in env; if unset, Sentry is disabled (no events sent).Guarded against double-init to prevent "Multiple Sentry Session Replay instances". * score: 4 ### function instantsOverlap * file: src/platform/timezone/cross-timezone-conflict.ts:84 * kind: function * core: platform * spec: (none) * summary: Absolute-instant overlap test: .Operates on UTC instants, so it is timezone-agnostic and correct across zones. * score: 4 ### function introspectSchema * file: src/platform/wizards/audit/sources/schema-introspect.ts:5 * kind: function * core: platform * spec: (none) * summary: Extract known + required keys from a zod object schema (unwraps optional/default/nullable). * score: 4 ### function invalidateInbox * file: src/platform/inbox/invalidateInbox.ts:12 * kind: function * core: platform * spec: (none) * summary: Utility for invalidate inbox. * score: 1 ### function invertOperator * file: src/platform/conditional-logic/utils/migration.ts:44 * kind: function * core: platform * spec: (none) * summary: Invert an operator for hideIf → visibility conversion * params: * operator — The original operator * returns: The inverted operator * score: 4 ### function invokeMcpTool * file: src/platform/ai/mcp-client.ts:56 * kind: function * core: platform * spec: (none) * summary: Invokes an MCP tool using JSON-RPC over HTTP with bounded retries. * params: * connection — Active MCP connection descriptor. * toolName — Name of the MCP tool to invoke. * args — Tool arguments serialized into the JSON-RPC payload. * returns: Normalized invocation result. * score: 4 ### function isAllowedEntityTable * file: src/platform/forms/prefill/allowlist.ts:41 * kind: function * core: platform * spec: (none) * summary: Checks whether a table name is allowed for entity\_record prefill. * score: 4 ### function isAndroidDevice * file: src/platform/telephony/lib/embeddable-utils.ts:134 * kind: function * core: platform * spec: (none) * summary: Check if device is Android * score: 4 ### function isAnimatedImage * file: src/platform/upload/image-utils.ts:153 * kind: function * core: platform * spec: (none) * summary: Check if file is an animated image (GIF).Animated GIFs should not be processed to preserve animation. * score: 4 ### function isAsamContinuumRequired * file: src/platform/clinical/loc/asam-continuum.ts:49 * kind: function * core: platform * spec: (none) * summary: Whether the mandate applies to a given delivery system under the resolved policy. * score: 4 ### function isAttachmentStoragePath * file: src/platform/messaging/utils/attachmentUrl.ts:8 * kind: function * core: platform * spec: (none) * summary: Returns true when the value should be resolved via Storage (path in bucket). * score: 4 ### function isBiometricSupported * file: src/platform/auth/app-lock/biometric-utils.ts:52 * kind: function * core: platform * spec: (none) * summary: Check whether the current environment supports platform biometricauthentication via WebAuthn. * returns: Promise resolving to when a platform authenticator (Face ID, Touch ID, Windows Hello) is available. * score: 4 ### function isBusinessDay * file: src/platform/calendar/lib/business-day-utils.ts:44 * kind: function * core: platform * spec: (none) * summary: Checks if a date is a business day (working day and not a full-day holiday). * params: * date — The date to check. * businessHours — Business hours configuration map. * holidays — List of calendar holidays. * returns: if the date is a business day. * score: 4 ### function isCosignOverdue * file: src/platform/clinical/plan/plan-cadence.ts:57 * kind: function * core: platform * spec: (none) * summary: Whether a BHT-authored plan is cosign-overdue: only a BHT-authored plan with nocosignature whose window has elapsed is overdue. * score: 4 ### function isDischargeSummaryOverdue * file: src/platform/clinical/blocks/discharge/timeliness.ts:84 * kind: function * core: platform * spec: (none) * summary: Whether the summary is overdue as of : not yet entered and is pastthe END of the due date. An entered summary is never "overdue" (the action isno longer outstanding — late entry is 'sconcern). No due date → not overdue (no window resolved). A present-but-unparseable due date is corrupt compliance data → fail-safe overdue. * score: 4 ### function isEligibleForRetry * file: src/platform/notifications/utils/retry.ts:50 * kind: function * core: platform * spec: (none) * summary: Checks if a notification is eligible for retry. * params: * retryCount — Current retry count * lastAttempt — Date of last attempt * returns: true if eligible for retry * score: 4 ### function isEmpty * file: src/platform/conditional-logic/utils/operators.ts:116 * kind: function * core: platform * spec: (none) * summary: Check if a value is considered empty * score: 4 ### function isFairnessMonitored * file: src/platform/ai/constants/ai-fairness-surfaces.ts:96 * kind: function * core: platform * spec: (none) * summary: True when the surface is registered AND has a LIVE monitor. * score: 4 ### function isFairnessRegistered * file: src/platform/ai/constants/ai-fairness-surfaces.ts:101 * kind: function * core: platform * spec: (none) * summary: True when the surface is registered under fairness governance (any status). * score: 4 ### function isFieldNameInLayout * file: src/platform/page-layouts/utils.ts:191 * kind: function * core: platform * spec: (none) * summary: Check if a field\_name already exists in a layout's sections * score: 4 ### function isFieldNameSafe * file: src/platform/wizards/utils/sanitizeAnalyticsEvent.ts:314 * kind: function * core: platform * spec: (none) * summary: Validates that a field name is safe for analytics tracking.Use this before including field names in analytics events. * score: 4 ### function isFileUploadValue * file: src/platform/forms/components/fields/fileUploadValue.ts:11 * kind: function * core: platform * spec: (none) * summary: Checks whether a value is a FileUploadFieldValue JSON object. * score: 4 ### function isFilterGroup * file: src/platform/table-v2/utils/filter/builder.ts:38 * kind: function * core: platform * spec: (none) * summary: Type guard to check if a filter is a FilterGroup. * score: 4 ### function isFormPagesConfig * file: src/platform/forms/utils/pdfExportSettingsAccessor.ts:17 * kind: function * core: platform * spec: (none) * summary: Determine whether a value is a FormPagesConfig by checking for a array. Runtime type guard that returns when is an object containing a property that is an array. * params: * obj — unknown - The value to test * returns: boolean - if is a FormPagesConfig (has a array), otherwise * score: 4 ### function isFormPdfExportSettings * file: src/platform/forms/utils/pdfExportSettingsAccessor.ts:30 * kind: function * core: platform * spec: (none) * summary: Validate whether a value conforms to the optional fields of FormPdfExportSettings. Checks that when present, and are strings and is either or . * params: * obj — The value to validate as * returns: if is an object whose present fields match the expected types, otherwise * score: 4 ### function isHapticAvailable * file: src/platform/gestures/utils/haptics.ts:41 * kind: function * core: platform * spec: (none) * summary: Check if haptic feedback is availableReturns false on iOS Safari (no Vibration API support) * score: 4 ### function isHighRisk * file: src/platform/clinical/blocks/suicide/requiredness.ts:18 * kind: function * core: platform * spec: (none) * summary: Whether a risk level is high or imminent (the informed-refusal / caring-contacts trigger). * score: 4 ### function isHoliday * file: src/platform/calendar/lib/business-day-utils.ts:31 * kind: function * core: platform * spec: (none) * summary: Checks if a date falls on a holiday. * params: * date — The date to check. * holidays — List of calendar holidays. * returns: if the date is a full-day holiday. * score: 4 ### function isImageFile * file: src/platform/upload/image-utils.ts:144 * kind: function * core: platform * spec: (none) * summary: Check if file is a supported image type. * score: 4 ### function isInSubModule * file: src/platform/navigation/utils/sub-module-utils.ts:53 * kind: function * core: platform * spec: (none) * summary: Check if we're currently in a sub-module context * score: 4 ### function isInvalidIconKey * file: src/platform/wizards/utils/auditStepIcons.ts:62 * kind: function * core: platform * spec: (none) * summary: Detect whether a step icon key would route through the fallbackinside . * returns: when the key is a non-empty string that doesn't match AND doesn't resolve to a known module icon. * score: 4 ### function isIOS * file: src/platform/pwa/utils/platformDetection.ts:10 * kind: function * core: platform * spec: (none) * summary: Check if the device is running iOS (iPhone, iPad, iPod). * score: 4 ### function isIOSDevice * file: src/platform/telephony/lib/embeddable-utils.ts:112 * kind: function * core: platform * spec: (none) * summary: Check if device is iOSUses modern userAgentData API with fallback to navigator.platform * score: 4 ### function isIOSSafariInBrowser * file: src/platform/pwa/utils/platformDetection.ts:27 * kind: function * core: platform * spec: (none) * summary: iOS Safari in-browser (not installed to Home Screen). * score: 4 ### function isMcpEnabled * file: src/platform/ai/mcp-config.ts:29 * kind: function * core: platform * spec: (none) * summary: Return whether MCP edge-function integrations are enabled. * score: 4 ### function isMobileBackVisible * file: src/platform/navigation/hooks/useMobileBack.ts:39 * kind: function * core: platform * spec: (none) * summary: Decide whether the mobile Back button should be visible for a path.Exported separately so tests and other navigation surfaces (including thedesktop header back button) can reuse the exact same allow-list logic. * score: 4 ### function isMobileDevice * file: src/platform/telephony/lib/embeddable-utils.ts:102 * kind: function * core: platform * spec: (none) * summary: Check if device is mobile * score: 4 ### function isModuleDashboardRoute * file: src/platform/navigation/utils/navigation-utils.ts:61 * kind: function * core: platform * spec: (none) * summary: Check if the current route is a module dashboard * score: 4 ### function isMultiSortConfig * file: src/platform/table-v2/utils/sort/config.ts:41 * kind: function * core: platform * spec: (none) * summary: Check if sort input is a MultiSortConfig * score: 4 ### function isObjectiveMeasurable * file: src/platform/clinical/plan/measurable.ts:30 * kind: function * core: platform * spec: (none) * summary: Whether an objective is measurable: criteria + target date + frequency + duration all present. * score: 4 ### function isOrganizationSetupComplete * file: src/platform/setup/hooks/organizationSetupUtils.ts:33 * kind: function * core: platform * spec: (none) * summary: Check if organization setup has been marked complete (for Getting Started card). * score: 4 ### function isPasskeySupported * file: src/platform/auth/passkey/passkey-utils.ts:97 * kind: function * core: platform * spec: (none) * summary: Whether the current environment exposes the WebAuthn API. Gates the"Sign in with a passkey" / "Add a passkey" affordances so they never renderon unsupported browsers. * score: 4 ### function isPhiKey * file: src/platform/ai/phi-redaction-core.ts:201 * kind: function * core: platform * spec: (none) * summary: True when a key name is PHI-bearing (its normalized form contains a stem). * score: 4 ### function isPinnableIconName * file: src/platform/navigation/pinnable-icons.ts:57 * kind: function * core: platform * spec: (none) * summary: Returns true if the given name is a valid pinnable icon name (for validation on pin). * score: 4 ### function isPositiveScreen * file: src/platform/clinical/blocks/suicide/screening-routing.ts:59 * kind: function * core: platform * spec: (none) * summary: Whether a completed screen routes the required assessment (FR-3). True when thecoded result is above-threshold or a decline/incompletion that warrants follow-up(), or — as a safety net against amis-coded result — when the screen carries any risk level other than . * score: 4 ### function isRCEmbeddableEvent * file: src/platform/telephony/lib/embeddable-events.ts:195 * kind: function * core: platform * spec: (none) * summary: Type guard for RingCentral Embeddable events * score: 4 ### function isReassessmentOverdue * file: src/platform/clinical/blocks/suicide/reassessment.ts:42 * kind: function * core: platform * spec: (none) * summary: Whether a reassessment is overdue as of . No due date → not overdue (nonescheduled). A present-but-unparseable due date is a corrupt safety-criticalvalue and is treated as overdue (fail-safe surface) rather than silently readingas "not overdue".NOTE (FR-13 / EP6): auto-computing from the PF-96 cadence onan open elevated risk level, and the overdue alert itself, are part of thebespoke crisis-surface workflow (deferred follow-up). + expose the cadence-bound helper for that surface. * score: 4 ### function isRegexSafe * file: src/platform/validation/validators.ts:19 * kind: function * core: platform * spec: (none) * summary: Checks whether a regex pattern is safe from catastrophic backtracking (ReDoS). * score: 4 ### function isRegisteredStep * file: src/platform/wizards/registry/utils.ts:26 * kind: function * core: platform * spec: (none) * summary: Check if a step is registered * score: 4 ### function isReservedSlug * file: src/platform/organizations/slug.ts:25 * kind: function * core: platform * spec: (none) * summary: Check if a slug is in the reserved words blocklist. * score: 4 ### function isRouteActive * file: src/platform/navigation/utils/navigation-utils.ts:118 * kind: function * core: platform * spec: (none) * summary: Check if a route is active (exact or prefix match) * score: 4 ### function isSafeForAI * file: src/platform/ai/widgets/utils/sanitizeForAI.ts:132 * kind: function * core: platform * spec: (none) * summary: Check if text is safe to send to AIReturns true only if no PHI/PII is detected * score: 4 ### function isSensitiveField * file: src/platform/wizards/utils/format-sensitive.ts:37 * kind: function * core: platform * spec: (none) * summary: Checks if a field should be masked in UI * score: 4 ### variable isStale * file: src/platform/dashboard/utils/widgetCache.ts:28 * kind: variable * core: platform * spec: (none) * summary: Check if cached data is stale * score: 1 ### function isStandalonePWA * file: src/platform/pwa/utils/platformDetection.ts:18 * kind: function * core: platform * spec: (none) * summary: Check if the app is running as an installed standalone PWA. * score: 4 ### function isSystemRole * file: src/platform/permissions/components/RoleSelector.tsx:270 * kind: function * core: platform * spec: (none) * summary: Check if a role value is a system role (enum) vs custom role (UUID) * score: 4 ### function isTableAllowed * file: src/platform/data-lookup/lookupTables.ts:127 * kind: function * core: platform * spec: (none) * summary: Check if a table is allowed for lookups * score: 4 ### function isTableSupported * file: src/platform/data-manager/hooks/useRawData.ts:131 * kind: function * core: platform * spec: (none) * summary: Checks whether is table supported. * score: 4 ### function isThemeAlreadyDefault * file: src/platform/theming/devChecks/verifyDefaultsRestored.ts:203 * kind: function * core: platform * spec: (none) * summary: Returns when the active theme has no overrides relative to platformdefaults: every core color matches , every nullableextended/login/typography override is , and the heading font is unset. * score: 4 ### function isValidE164 * file: src/platform/telephony/lib/phoneUtils.ts:105 * kind: function * core: platform * spec: (none) * summary: Determines whether a phone string represents a valid E.164 number. Validates that the input, when normalized to E.164, matches followed by 10–15 digits. * params: * phone — The phone number to validate; may be provided in any common format. * returns: boolean if normalizes to a valid E.164 string ( followed by 10–15 digits), otherwise. * score: 4 ### function isValidOperatorForField * file: src/platform/conditional-logic/builder/utils.ts:368 * kind: function * core: platform * spec: (none) * summary: Check if an operator is valid for a field type * score: 4 ### function isValidPage * file: src/platform/table-v2/utils/pagination/utils.ts:112 * kind: function * core: platform * spec: (none) * summary: Check if a page number is valid for given total and page size * params: * page — Page number to check * total — Total number of items * pageSize — Items per page * returns: Whether the page number is valid * score: 4 ### function isValidPhoneNumber * file: src/platform/telephony/lib/phoneUtils.ts:93 * kind: function * core: platform * spec: (none) * summary: Determine whether a phone string contains a valid number of digits for storage or E.164 use. Normalizes the input to digits and checks that the resulting digit count is between 10 and 15 inclusive. * params: * phone — The phone string to validate (may include formatting characters) * returns: if the normalized phone contains between 10 and 15 digits, otherwise * score: 4 ### function isValidPinFormat * file: src/platform/auth/app-lock/pin-utils.ts:79 * kind: function * core: platform * spec: (none) * summary: Validate that matches the expected format (digits-only, correct length). * score: 4 ### function isValidSizeForWidget * file: src/platform/dashboard/utils/sizing.ts:68 * kind: function * core: platform * spec: (none) * summary: Check if a size is valid for a widget based on its available sizes * score: 4 ### function isValidSlugFormat * file: src/platform/organizations/slug.ts:18 * kind: function * core: platform * spec: (none) * summary: Check if a slug matches the required format:- 3–50 characters- lowercase alphanumeric and hyphens only- no leading/trailing hyphens * score: 4 ### function isWebAuthnSupported * file: src/platform/auth/components/webauthn-mfa.ts:25 * kind: function * core: platform * spec: (none) * summary: Whether the current environment exposes the WebAuthn API. Used to gate the"Add a passkey" / "Use a passkey" affordances so they never render onunsupported browsers (e.g. iOS Safari PWA standalone — see spec FR-3.1). * score: 4 ### function isWebRTCSupported * file: src/platform/telephony/lib/embeddable-utils.ts:147 * kind: function * core: platform * spec: (none) * summary: Check if WebRTC is supported in this browser * score: 4 ### function isWithinLocalWindow * file: src/platform/timezone/cross-timezone-conflict.ts:70 * kind: function * core: platform * spec: (none) * summary: True when an instant's site-local time falls within an \[open, close] window\.Times are compared in the site timezone, so cross-timezone bookings evaluateagainst the destination site's real operating window (FR-4). * score: 4 ### function isWizardComplete * file: src/platform/setup/hooks/organizationSetupUtils.ts:114 * kind: function * core: platform * spec: (none) * summary: Check if a module's setup wizard has been marked complete (scoped by organization). * score: 4 ### function jsonbArrayToText * file: src/platform/clinical/blocks/suicide/mapping.ts:37 * kind: function * core: platform * spec: (none) * summary: Join a jsonb string array back to a multiline textarea value; non-arrays → ''. * score: 4 ### function jsonbToNarrative * file: src/platform/clinical/blocks/suicide/mapping.ts:64 * kind: function * core: platform * spec: (none) * summary: Read a jsonb object back to its narrative string, else ''. * score: 4 ### function levenshtein * file: src/platform/import/mapping/suggestMappings.ts:43 * kind: function * core: platform * spec: (none) * summary: Simple Levenshtein distance. Exported for reuse in value matching. * score: 4 ### function levenshteinDistance * file: src/platform/import/dedupe/levenshtein.ts:14 * kind: function * core: platform * spec: (none) * summary: Compute the Levenshtein edit distance between two strings. * params: * a — First string * b — Second string * returns: Number of single-character edits (insert, delete, replace) * score: 4 ### function levenshteinSimilarity * file: src/platform/import/dedupe/levenshtein.ts:48 * kind: function * core: platform * spec: (none) * summary: Compute a normalised similarity score between two strings. * params: * a — First string * b — Second string * returns: Value between 0 (completely different) and 1 (identical) * score: 4 ### function listAgentRunEvents * file: src/platform/agents/runsService.ts:46 * kind: function * core: platform * spec: (none) * summary: Lifecycle audit trail for a single run, oldest first (the timeline). * score: 4 ### function listAgentRuns * file: src/platform/agents/runsService.ts:33 * kind: function * core: platform * spec: (none) * summary: List the org's runs, newest first. Caller passes the resolved org id (never client-supplied). * score: 4 ### function listAgents * file: src/platform/cowork/agentsService.ts:47 * kind: function * core: platform * spec: (none) * summary: List the org's agents, oldest first. Caller passes the resolved org id (never client-supplied). * score: 4 ### function listAllRegistryQuickActions * file: src/platform/navigation/quick-action-catalog.ts:74 * kind: function * core: platform * spec: (none) * summary: Iterates all quick actions from MODULE\_REGISTRY (module + nav group) with deduplicationmatching the command palette (same module + route only listed once; first registration wins). * returns: Flat list with stable keys for org defaults UI and audits * score: 4 ### function listEntraSkus * file: src/platform/integrations/hooks/useEntraSetup.ts:131 * kind: function * core: platform * spec: (none) * summary: PF-63-EN-01 FR-3: fetch the tenant's subscribed license SKUs (Graph/subscribedSkus via the list-skus action). Returns an empty list — never anerror the caller must branch on — when the fetch is unavailable (missingcredentials/consent), so SKU pickers degrade to free-form entry. * score: 4 ### function listIntakeProviderAvailability * file: src/platform/scheduling/listIntakeProviderAvailability.ts:54 * kind: function * core: platform * spec: (none) * summary: Read caseloads + appointment schedule blocks, rank lowest-utilization-first. * score: 4 ### function listPasskeys * file: src/platform/auth/passkey/passkey-utils.ts:161 * kind: function * core: platform * spec: (none) * summary: List the signed-in user's registered passkeys. * score: 4 ### function listPendingApprovals * file: src/platform/ai/governance/approvalsService.ts:78 * kind: function * core: platform * spec: (none) * summary: List the pending agent-action approvals for an org (the approval queue). RLS requires; the filter is defense-in-depth on top of RLS. * score: 4 ### function listRiskRules * file: src/platform/ai/governance/approvalsService.ts:93 * kind: function * core: platform * spec: (none) * summary: List the risk rules visible to an org — the platform defaults ()plus the org's own additive overrides (RLS hybrid scope). Read-only; CRUD is Phase 3. * score: 4 ### function liveDbUrl * file: src/platform/wizards/audit/sources/live-source.ts:10 * kind: function * core: platform * spec: (none) * summary: Local-stack Postgres connection string (override via env; defaults to the standard Supabase local DB port). * score: 4 ### function loadAllModuleDefinitions * file: src/platform/modules/module-registry-loaders.ts:32 * kind: function * core: platform * spec: (none) * summary: Load every registered module definition (dev prewarm / admin tooling). * score: 4 ### function loadModuleDefinitions * file: src/platform/modules/module-registry-loaders.ts:23 * kind: function * core: platform * spec: (none) * summary: Load one or more full module definitions (nav trees + Lucide icons). * score: 4 ### function loadOrganizationSetupDraft * file: src/platform/setup/hooks/organizationSetupUtils.ts:60 * kind: function * core: platform * spec: (none) * summary: Load draft for the organization. Returns null if none or expired. * score: 4 ### function loadPrefillRules * file: src/platform/forms/prefill/engine.ts:28 * kind: function * core: platform * spec: (none) * summary: Fetches active prefill rules for a form, ordered by priority ascending. * score: 4 ### function localDateInZone * file: src/platform/timezone/cross-timezone-conflict.ts:51 * kind: function * core: platform * spec: (none) * summary: Calendar date ('yyyy-MM-dd') of an absolute instant in a given timezone. * score: 4 ### function localDayOfWeekInZone * file: src/platform/timezone/cross-timezone-conflict.ts:61 * kind: function * core: platform * spec: (none) * summary: Day-of-week (0 = Sunday … 6 = Saturday) of an absolute instant in a giventimezone. Computed from the zone-local calendar date so it never drifts to thebrowser/UTC day near midnight — the bug class that made provider-availabilitylookups pick the wrong weekday for non-UTC sites. * score: 4 ### function localTimeOfDayInZone * file: src/platform/timezone/cross-timezone-conflict.ts:46 * kind: function * core: platform * spec: (none) * summary: Wall-clock time-of-day ('HH:mm:ss') of an absolute instant in a given timezone.This is the value that must be compared against site-local availability /business-hour windows — comparing a raw UTC slice (as the pre-PF-94 bookingcheck did) is wrong whenever the site timezone is not UTC. * score: 4 ### function logAuditEvent * file: src/platform/audit/index.ts:54 * kind: function * core: platform * spec: (none) * summary: Log an audit event to . Fire-and-forget; errors aresilently caught and reported to Sentry.If no or is provided, the function attemptsto read them from the current Supabase session. If no session exists,the call is silently skipped. * score: 4 ### function logExportEvent * file: src/platform/table-v2/utils/exportAudit.ts:26 * kind: function * core: platform * spec: (none) * summary: Logs a table export event for audit purposes.Records only non-PHI metadata: table ID, format, row count, timestamp.Fire-and-forget — never throws. * score: 4 ### function logPermissionViolation * file: src/platform/security/utils/logPermissionViolation.ts:42 * kind: function * core: platform * spec: (none) * summary: Log a permission violation asynchronously.Does not throw; logs errors and returns silently on failure.This is intentional to avoid disrupting user experience with logging errors. * params: * params — Violation details (userId, resource, action, optional ipAddress/organizationId) * score: 4 ### function logSlowQuery * file: src/platform/query-performance/log-slow-query.ts:32 * kind: function * core: platform * spec: (none) * summary: Log a slow query. Fire-and-forget — errors are silently ignored.Only call when executionTimeMs = threshold (caller responsibility). * score: 4 ### variable logSWActivation * file: src/platform/pwa/utils/swLifecycleLogger.ts:80 * kind: variable * core: platform * spec: (none) * summary: Logs swactivation lifecycle details for diagnostics. * score: 2 ### variable logSWError * file: src/platform/pwa/utils/swLifecycleLogger.ts:85 * kind: variable * core: platform * spec: (none) * summary: Logs swerror lifecycle details for diagnostics. * score: 2 ### variable logSWRegistration * file: src/platform/pwa/utils/swLifecycleLogger.ts:70 * kind: variable * core: platform * spec: (none) * summary: Logs swregistration lifecycle details for diagnostics. * score: 2 ### variable logSWUpdate * file: src/platform/pwa/utils/swLifecycleLogger.ts:75 * kind: variable * core: platform * spec: (none) * summary: Logs swupdate lifecycle details for diagnostics. * score: 2 ### variable logSWUpdateApplied * file: src/platform/pwa/utils/swLifecycleLogger.ts:90 * kind: variable * core: platform * spec: (none) * summary: Logs swupdate applied lifecycle details for diagnostics. * score: 2 ### function lookupPeerServiceHcpcsCodes * file: src/platform/codes/searchCodes.ts:92 * kind: function * core: platform * spec: (none) * summary: Loads peer-related HCPCS rows from (PF-70) for a fixed allow-list used by CL-19.Falls back to when the code set or rows are missing. * score: 4 ### function manifestEntryToStub * file: src/platform/modules/manifest-module-stub.ts:6 * kind: function * core: platform * spec: (none) * summary: Lightweight module shell used until the full registry chunk loads. * score: 4 ### function mapKeyToDisposition * file: src/platform/telephony/hooks/useQuickDisposition.ts:32 * kind: function * core: platform * spec: (none) * summary: Maps a keyboard key (1-9) to a CallDisposition code.Returns null if key is not in the 1-9 range. * score: 4 ### function mapPagesToSections * file: src/platform/forms/utils/sectionPageMapping.ts:41 * kind: function * core: platform * spec: (none) * summary: Extract section names from form pages * score: 4 ### function mapScreeningToPatient * file: src/platform/ce/screeningToPatientMapping.ts:36 * kind: function * core: platform * spec: (none) * summary: Maps screening result fields to the patient pre-population shape. * score: 4 ### function mapSectionsToPages * file: src/platform/forms/utils/sectionPageMapping.ts:14 * kind: function * core: platform * spec: (none) * summary: Convert PF-17 field configurations grouped by section into FW-05 form pages * score: 4 ### function maskPhoneNumber * file: src/platform/telephony/lib/phoneUtils.ts:123 * kind: function * core: platform * spec: (none) * summary: Produce a privacy-masked phone number that shows only the last four digits. Normalize the input to digits and return a masked representation for display. If the normalized number has fewer than four digits, a fixed mask of is returned; otherwise the format is returned where are the last four digits. * params: * phone — The phone number string to mask (may contain non-digit characters) * returns: The masked phone string; when fewer than four digits are present, or with the last four digits revealed. * example: | // returns '***-***-1234'maskPhoneNumber('(555) 867-1234') * score: 4 ### function maskSensitiveValue * file: src/platform/wizards/utils/format-sensitive.ts:14 * kind: function * core: platform * spec: (none) * summary: Masks sensitive values based on their sensitivity level * params: * value — The value to potentially mask * sensitivity — The sensitivity level of the field * returns: The masked or original value as a string * score: 4 ### function matchRecordsToCSVRows * file: src/platform/data-manager/utils/rawDataImportUtils.ts:60 * kind: function * core: platform * spec: (none) * summary: Match CSV rows to existing records * score: 4 ### function medicationDedupKey * file: src/platform/clinical/blocks/meds/med-list-adapter.ts:68 * kind: function * core: platform * spec: (none) * summary: Normalized duplicate-identity key for a medication entry (FR-4 / specAssumption 2): case-folded drug name + (strength, or dose amount+unit whenstrength is absent) + route. Same drug at a different strength or route is alegitimate distinct row. * score: 4 ### function meetsContrastAA * file: src/platform/theming/utils/contrast.ts:114 * kind: function * core: platform * spec: (none) * summary: Check if two hex colors meet WCAG AA contrast for normal text. * score: 4 ### function meetsContrastAALarge * file: src/platform/theming/utils/contrast.ts:121 * kind: function * core: platform * spec: (none) * summary: Check if two hex colors meet WCAG AA contrast for large text / UI. * score: 4 ### function mergeFieldDefinitions * file: src/platform/field-config/utils.ts:103 * kind: function * core: platform * spec: (none) * summary: Merge standard fields with custom field definitions * score: 4 ### function mergeOrgDefaultsWithConfig * file: src/platform/wizards/hooks/useWizardOrgDefaults.ts:62 * kind: function * core: platform * spec: (none) * summary: Merges org defaults with template config. Template values take precedence when present.Preserves any future keys on templateConfig. * score: 4 ### function mergeQuickActionPin * file: src/platform/dashboard/utils/normalize-quick-action-preferences.ts:48 * kind: function * core: platform * spec: (none) * summary: Merges pin state for a single action into existing preferences (upsert by action\_key). * score: 4 ### function mergeSkillWithOverride * file: src/platform/ai/utils/merge-skill-override.ts:36 * kind: function * core: platform * spec: (none) * summary: Create an EffectiveAISkill by applying an optional organization override to a base AISkill. Combines a base skill with an optional override to produce the effectiveskill configuration used by the application. The result contains:- Overridden RAG settings and temperature when provided- An effective prompt that appends organization-specific custom instructions- The chosen effective model- Enablement status- Metadata indicating whether an override was applied * params: * skill — AISkill base record from the pf\_ai\_skills table * override — AISkillOverride from pf\_ai\_skill\_overrides for an organization, or / if none * returns: EffectiveAISkill - the merged skill object including , , , , and the applied (or ) * example: | import mergeSkillWithOverride from '/platform/ai/utils/merge-skill-override';const effective = mergeSkillWithOverride(skillRecord, orgOverride);console.log(effective.effective\_prompt);console.log(effective.is\_overridden); // true if override was applied * score: 4 ### function mergeWidgetDefinitions * file: src/platform/dashboard/widget-registry-cache.ts:23 * kind: function * core: platform * spec: (none) * summary: Id-keyed upsert preserving insertion order; assigns a fresh array and notifies. * score: 4 ### function migrateLegacyPaletteIdToActionKey * file: src/platform/navigation/quick-action-catalog.ts:121 * kind: function * core: platform * spec: (none) * summary: Maps legacy palette / pinned ids () to stable action keys. * score: 4 ### function migrateLegacyPinnedIdsToActionKeys * file: src/platform/dashboard/utils/normalize-quick-action-preferences.ts:90 * kind: function * core: platform * spec: (none) * summary: Migrates legacy localStorage pinned ids to action\_key values (deduped, preserves order). * score: 4 ### function migrateRulesToV2 * file: src/platform/conditional-logic/utils/migration.ts:172 * kind: function * core: platform * spec: (none) * summary: Migrate multiple V1 rules to V2 format * params: * rules — Record of field keys to V1 rules * returns: Record of field keys to V2 rules * score: 4 ### function migrateV1ToV2 * file: src/platform/conditional-logic/utils/migration.ts:82 * kind: function * core: platform * spec: (none) * summary: Migrate a V1 ConditionalRule to V2 formatV1 Rules:- showIf: field, operator, value → Show field when condition is true- hideIf: field, operator, value → Hide field when condition is trueV2 Conversion:- showIf directly maps to visibility group- hideIf is inverted and combined with showIf if present * params: * v1Rule — The V1 rule to migrate * returns: ConditionalRuleV2 - The migrated V2 rule * score: 4 ### function mintAdminConsentUrl * file: src/platform/integrations/hooks/useEntraSetup.ts:61 * kind: function * core: platform * spec: (none) * summary: Mint a fresh v2 admin-consent URL (organizations tenant when tenant unknown). * score: 4 ### function missingRequiredScopes * file: src/platform/integrations/entra-health.ts:46 * kind: function * core: platform * spec: (none) * summary: Scopes catalogued as required that are absent from the app token. * score: 4 ### function modelDirection * file: src/platform/analytics/hooks/useSemanticModels.ts:70 * kind: function * core: platform * spec: (none) * summary: PF-123: read the governed per-metric KPI direction from the model definition (default neutral). * score: 4 ### function ModuleFlyout * file: src/platform/navigation/components/ModuleFlyout.tsx:54 * kind: function * core: platform * spec: (none) * summary: Flyout panel that appears when hovering/clicking a module in the sidebar.Shows module overview, grouped nav items, and settings.Uses React Portal for proper positioning outside sidebar overflow. * score: 4 ### function ModuleRegistryProvider * file: src/platform/modules/ModuleRegistryProvider.tsx:16 * kind: function * core: platform * spec: (none) * summary: Loads full MODULE\_REGISTRY entries on demand for accessible modules and thecurrent route's module so the initial shell does not import every nav tree. * score: 4 ### function narrativeToJsonb * file: src/platform/clinical/blocks/suicide/mapping.ts:58 * kind: function * core: platform * spec: (none) * summary: Wrap a non-empty narrative as a jsonb object , else null. * score: 4 ### function NavAnalyticsListener * file: src/platform/navigation/analytics/NavAnalyticsListener.tsx:19 * kind: function * core: platform * spec: (none) * summary: Emits a PHI-safe nav event on every distinct location change,and records the route into the per-user recently-visited store.Mount exactly once inside the router AND inside (so, , and resolve).Renders nothing. Identical consecutive urls are deduped so React StrictModedouble-invokes and no-op re-renders don't double-log.Recently-visited recording lives here (not in the display component) so thatnavigations into any core — e.g. , — arecaptured even when the home panel is not mounted. * score: 4 ### function navigateToTab * file: src/platform/telephony/lib/embeddable-tabs.ts:226 * kind: function * core: platform * spec: (none) * summary: Navigate widget to a specific custom tab * score: 4 ### function navigateWidget * file: src/platform/telephony/lib/embeddable-events.ts:234 * kind: function * core: platform * spec: (none) * summary: Navigate the widget to a specific path * score: 4 ### function neutralizeCell * file: src/platform/analytics/byod/sanitize.ts:27 * kind: function * core: platform * spec: (none) * summary: Neutralize a single cell: prefix a single quote so spreadsheets treat it as literal text.Well-formed numbers are exempt FIRST: a legitimate negative number's leading (e.g. ) isnot a formula-injection vector, but neutralizing it to would make the typed VIEW's cast throw and abort the whole dataset's serve. Genuineformula injection (, , , , a leading ) never matchesNUMERIC\_RE, so it is still neutralized below. * score: 4 ### function nextBusinessDay * file: src/platform/calendar/lib/business-day-utils.ts:58 * kind: function * core: platform * spec: (none) * summary: Returns the next business day on or after the given date. * params: * date — Starting date. * businessHours — Business hours configuration map. * holidays — List of calendar holidays. * returns: The next business day. * score: 4 ### function nonEmptyOrNull * file: src/platform/clinical/blocks/suicide/mapping.ts:53 * kind: function * core: platform * spec: (none) * summary: Return a non-empty string, else null (never emits to a typed column). * score: 4 ### function normalizeAccountType * file: src/platform/banking/components/accountType.ts:8 * kind: function * core: platform * spec: (none) * summary: Safely normalizes provider account type values to supported platform account types. * score: 4 ### function normalizePhone * file: src/platform/telephony/lib/phoneUtils.ts:15 * kind: function * core: platform * spec: (none) * summary: Normalize a phone string by removing all non-digit characters for storage and comparison. Returns an empty string when is , , or contains only whitespace. Otherwise returns the input with every non-digit character removed. * params: * phone — — The phone value to normalize. * returns: — Digits-only phone string, or an empty string for missing/blank input. * score: 4 ### function normalizeQuickActionPreferences * file: src/platform/dashboard/utils/normalize-quick-action-preferences.ts:18 * kind: function * core: platform * spec: (none) * summary: Normalizes quick action preferences loaded from JSONB: migrates legacy (label)to stable , preserves pins and ordering. * score: 4 ### function normalizeQuickActionPreferencesForSave * file: src/platform/dashboard/lib/quickActionsPool.ts:199 * kind: function * core: platform * spec: (none) * summary: Normalizes preferences on save for global dashboard context. * score: 4 ### function normalizeRouteForActionKey * file: src/platform/navigation/quick-action-catalog.ts:32 * kind: function * core: platform * spec: (none) * summary: Normalizes a route segment for use inside an action key (ASCII, URL-safe-ish). * params: * route — Absolute app route (e.g. ) * returns: Slug safe for embedding in * score: 4 ### function normalizeSubdomain * file: src/platform/theming/utils/subdomain.ts:85 * kind: function * core: platform * spec: (none) * summary: Normalize a subdomain input for submission. * score: 4 ### function normalizeSubscribedSkus * file: src/platform/integrations/entra-skus.ts:33 * kind: function * core: platform * spec: (none) * summary: Normalize the raw list-skus payload: keep only assignable entries (an id ispresent and the subscription is enabled), sorted by part number for stabledropdown ordering. * score: 4 ### function normalizeToE164 * file: src/platform/telephony/lib/phoneUtils.ts:39 * kind: function * core: platform * spec: (none) * summary: Convert a phone string into E.164 format for API use. Normalizes the input by removing non-digit characters and returns an E.164-style string. If is falsy, an empty string is returned. Ten-digit inputs are treated as national numbers and prefixed with (US by default); inputs whose length matches + 10 digits and that start with are prefixed with ; all other digit sequences are returned with a leading . * params: * phone — string | null | undefined — Phone number in any format * defaultCountryCode — string — Country calling code (digits only, no ) applied to bare national-length numbers. Defaults to (US/NANP). Configure for international deployments. * returns: string — Normalized E.164 phone number (for example ), or an empty string if is falsy or fails E.164 length validation * score: 4 ### function normalizeToHex * file: src/platform/theming/utils/contrast.ts:16 * kind: function * core: platform * spec: (none) * summary: Normalize a color string (hex, rgb(), hsl()) to .Falls back to if parsing fails. * score: 4 ### function NotificationDeliveryStatus * file: src/platform/notifications/components/NotificationDeliveryStatus.tsx:12 * kind: function * core: platform * spec: (none) * summary: Utility for notification delivery status. * score: 1 ### function NotificationToastProvider * file: src/platform/notifications/NotificationToastProvider.tsx:7 * kind: function * core: platform * spec: (none) * summary: Provider component that sets up realtime toast notifications.Must be rendered inside QueryClientProvider. * score: 4 ### function openAiSseBodyToUiMessageChunkStream * file: src/platform/ai/utils/encoreOpenAiSseChatTransport.ts:28 * kind: function * core: platform * spec: (none) * summary: Parse an OpenAI-style SSE body into AI SDK UI chunks for the assistant text block. * score: 4 ### function openPdf * file: src/platform/documents/pdfGenerator.ts:282 * kind: function * core: platform * spec: (none) * summary: Generate and open PDF in new windowFalls back to download if popup is blocked * score: 4 ### function openPdfInNewTab * file: src/platform/templates/hooks/useGenerateTemplatedPdf.ts:151 * kind: function * core: platform * spec: (none) * summary: Opens a PDF URL in a new browser tab with security restrictions. Opens the provided PDF in a new tab and applies and to prevent the opened page from accessing the opener. * params: * url — The URL of the PDF to open. * returns: void No return value. * example: | openPdfInNewTab('[https://cdn.example.com/docs/sample.pdf](https://cdn.example.com/docs/sample.pdf)'); * score: 4 ### function operatorNeedsValue * file: src/platform/wizards/utils/evaluateBranchCondition.ts:203 * kind: function * core: platform * spec: (none) * summary: Check if an operator requires a value input * score: 4 ### function operatorRequiresValue * file: src/platform/conditional-logic/builder/utils.ts:361 * kind: function * core: platform * spec: (none) * summary: Check if an operator requires a value * score: 4 ### function orderGroupsBySection * file: src/platform/navigation/persona/computePersonaSectionOrder.ts:26 * kind: function * core: platform * spec: (none) * summary: Stable-sort nav groups by the given section order.A group with no is treated as (preserves thehistorical HR sidebar default). If a group's section is not present in, it sorts after all ordered sections, keeping its originalrelative position (stable). * score: 4 ### function orgPath * file: src/platform/organizations/slug.ts:77 * kind: function * core: platform * spec: (none) * summary: PF-74: Build an org-scoped URL path.Validates slug format, rejects path traversal and null bytes in path, normalizes path. * example: | orgPath('acme-health', '/hr') → '/o/acme-health/hr' orgPath('acme-health', '') → '/o/acme-health/' * score: 4 ### function pagesToSectionAssignments * file: src/platform/forms/utils/sectionPageMapping.ts:68 * kind: function * core: platform * spec: (none) * summary: Convert form pages back to section assignments for field configs * score: 4 ### function parseAIError * file: src/platform/ai/widgets/utils/handleAIError.ts:13 * kind: function * core: platform * spec: (none) * summary: Parse an error response and convert to AIError type * score: 4 ### function parseAliases * file: src/platform/picklists/components/PicklistItemForm.tsx:55 * kind: function * core: platform * spec: (none) * summary: Parse comma-separated alias string into a deduped, trimmed, non-empty array.Exported for unit testing. * score: 4 ### function parseAsamRating * file: src/platform/clinical/blocks/asam-loc-adapter.ts:87 * kind: function * core: platform * spec: (none) * summary: Parse a coded severity rating into an integer 0–4; null when absent/invalid. * score: 4 ### function parseBpmnToSwimLane * file: src/platform/workflow/utils/parseBpmnToSwimLane.ts:24 * kind: function * core: platform * spec: (none) * summary: Parses BPMN 2.0 XML string into a SwimLaneDiagramState. * params: * xml — Valid BPMN 2.0 XML string * returns: Parsed swim lane diagram state * score: 4 ### function parseCsv * file: src/platform/csv/parse.ts:50 * kind: function * core: platform * spec: (none) * summary: Parse CSV text into headers and data rows. Normalizes line endings to .Row length mismatches are reported in errors but rows are still included. * score: 4 ### function parseCSV * file: src/platform/data-manager/utils/csvUtils.ts:30 * kind: function * core: platform * spec: (none) * summary: Parse CSV string into headers and rows (uses /platform/csv). * score: 4 ### function parseCSVContent * file: src/platform/data-manager/utils/rawDataImportUtils.ts:13 * kind: function * core: platform * spec: (none) * summary: Parse CSV string into headers and rows (uses /platform/csv). * score: 4 ### function parseCsvLine * file: src/platform/csv/parse.ts:17 * kind: function * core: platform * spec: (none) * summary: Parse a single CSV line, handling quoted fields and escaped quotes (RFC 4180-style).Commas inside double-quoted fields are preserved; "" inside quotes becomes ". * score: 4 ### function parseDashboardLayout * file: src/platform/analytics/dashboard/layout-types.ts:80 * kind: function * core: platform * spec: (none) * summary: Safe-parse the jsonb column into a typed layout; any malformed value → EMPTY\_LAYOUT. * score: 4 ### function parseDeviceInfo * file: src/platform/sessions/utils/deviceFingerprint.ts:16 * kind: function * core: platform * spec: (none) * summary: Parse basic device info from the user agent string. * score: 4 ### function parseDuration * file: src/platform/formatting/utils.ts:308 * kind: function * core: platform * spec: (none) * summary: Parse a human-readable duration string into milliseconds.The inverse of : accepts a numeric value followed by asingle unit suffix and returns the equivalent number of milliseconds.Supported units (case-insensitive):- — seconds- — minutes- — hours- — daysDecimal values are supported (e.g. → ). * params: * input — A duration string such as , , , or . * returns: The duration expressed in milliseconds. * example: | parseDuration('30s') // 30000parseDuration('15m') // 900000parseDuration('1.5h') // 5400000 * score: 4 ### function parseExpectedTenantVarsFromCss * file: src/platform/theming/devChecks/auditTenantVars.ts:38 * kind: function * core: platform * spec: (none) * summary: Extract every variable referenced via inthe supplied CSS text. * score: 4 ### function parseExpressionFields * file: src/platform/wizards/utils/validationExpressionEvaluator.ts:508 * kind: function * core: platform * spec: (none) * summary: Parse an expression and return field references without evaluating * score: 4 ### function parseFieldConfiguration * file: src/platform/page-layouts/utils.ts:115 * kind: function * core: platform * spec: (none) * summary: Parse and merge field configuration with defaults * score: 4 ### function parseFilter * file: src/platform/realtime/utils/filterBuilder.ts:69 * kind: function * core: platform * spec: (none) * summary: Parse a legacy filter string () back into a record.Useful for migrating existing hooks that stored filters as strings. * example: | parseFilter('organization\_id=eq.abc')// → organization\_id: 'abc' * score: 4 ### function parseHolidayCsv * file: src/platform/calendar/lib/csv-import.ts:65 * kind: function * core: platform * spec: (none) * summary: Parses a CSV string into validated holiday rows. * params: * csvText — Raw CSV content (with or without BOM). * returns: Parsed result with valid and invalid rows. * score: 4 ### function parseHslTripletToRgb * file: src/platform/dev/pages/brandingContrast.ts:12 * kind: function * core: platform * spec: (none) * summary: Parse an HSL triplet (the format CSS variables resolve to inthis project) into an 0-255 array. Returns if parsingfails (e.g. token not defined / empty string). * score: 4 ### function parseImportFile * file: src/platform/picklists/utils/importValidation.ts:12 * kind: function * core: platform * spec: (none) * summary: Parse an uploaded file (JSON or CSV) into PicklistExportRecord\[] * score: 4 ### function parseLayoutConfiguration * file: src/platform/page-layouts/utils.ts:95 * kind: function * core: platform * spec: (none) * summary: Parse and merge layout configuration with defaults * score: 4 ### function parseMentions * file: src/platform/messaging/utils/mentionParser.ts:28 * kind: function * core: platform * spec: (none) * summary: Extract mentions from message content.Rich mentions (`\[Name\](userId)`) are preferred; simple mentions (word) are also returned. * score: 4 ### function parseNumericOrNull * file: src/platform/clinical/blocks/suicide/mapping.ts:43 * kind: function * core: platform * spec: (none) * summary: Parse a form string to a finite number, else null (never emits to a numeric column). * score: 4 ### function parseSectionConfiguration * file: src/platform/page-layouts/utils.ts:105 * kind: function * core: platform * spec: (none) * summary: Parse and merge section configuration with defaults * score: 4 ### function parseSkillMd * file: src/platform/ai/utils/skill-md-parser.ts:123 * kind: function * core: platform * spec: (none) * summary: Parse a SKILL.md file content into a partial CreateAISkillInput.The file must have YAML frontmatter delimited by lines at the top,followed by Markdown body containing at minimum a section. * params: * content — Raw SKILL.md file content. * returns: An object with parsed and any encountered. * score: 4 ### function partitionSemanticModels * file: src/platform/analytics/hooks/useSemanticModels.ts:60 * kind: function * core: platform * spec: (none) * summary: Split the registry into the picker buckets the builder needs. * score: 4 ### function pickAccessibleForegroundTriplet * file: src/platform/theming/utils/contrast.ts:175 * kind: function * core: platform * spec: (none) * summary: Pick the WCAG-safe foreground ( or ) for a givenbackground color. Defaults to the higher-contrast option, with a smalltie-break preference for white when both meet AA.Returns the foreground as an triplet so it can be writtendirectly to a CSS variable consumed via . * score: 4 ### function picklistsToExportRecords * file: src/platform/picklists/utils/exportSerialization.ts:11 * kind: function * core: platform * spec: (none) * summary: Map DB picklists (with items) to portable export records (no internal IDs) * score: 4 ### function PlatformTelehealthConsentBadge * file: src/platform/clinical/telehealth/TelehealthConsentBadge.tsx:35 * kind: function * core: platform * spec: CL-24 * summary: Renders a telehealth-consent status pill for a chart, gated on the CL-24org flag. Safe to mount unconditionally. * params: * props — is the to inspect; selects the consent kind and defaults to . * score: 5 ### function prefersReducedMotion * file: src/platform/gestures/utils/haptics.ts:49 * kind: function * core: platform * spec: (none) * summary: Check if reduced motion is preferred * score: 4 ### variable prefixRouteMatcher * file: src/platform/navigation/utils/active-nav-item.ts:121 * kind: variable * core: platform * spec: (none) * summary: Path equals route OR is a child segment — used by mobile ( and ). * score: 2 ### function preloadQueryCache * file: src/platform/offline/queryPersistence.ts:305 * kind: function * core: platform * spec: (none) * summary: Pre-load the storage cache (call during app initialization)This ensures cached data is available immediately * score: 4 ### function printElement * file: src/platform/documents/pdfGenerator.ts:306 * kind: function * core: platform * spec: (none) * summary: Print element (opens print dialog)Uses DOMPurify to sanitize HTML content for XSS prevention * score: 4 ### function processBulkOperation * file: src/platform/bulk-operations/processor.ts:34 * kind: function * core: platform * spec: (none) * summary: Process a single bulk operation.Called by the UI or a background job. * score: 4 ### function processImage * file: src/platform/upload/image-utils.ts:415 * kind: function * core: platform * spec: (none) * summary: Process an image: resize and/or compress in one step.Convenience function that combines resize + compress. * score: 4 ### function produceIntakeArtifact * file: src/platform/ai/agentic/intake-artifact.ts:66 * kind: function * core: platform * spec: (none) * summary: Create a draft intake-recommendation artifact + its first immutable version. Returns the new ids.SINGLE-USER GOVERNANCE: the artifact is -tier so one staffer can verify it viapf\_verify\_artifact with no PF-126 governance approval (the appointment write is still governed atapproval\_required inside execute\_writes). True clinical dual-signoff (clinical\_gated, distinctapprover) is a future enhancement. Mirrors the Deno runtime (run-intake.ts) for parity. * score: 4 ### function publicResultEnvelope * file: src/platform/analytics/serving/mart-suppression.ts:214 * kind: function * core: platform * spec: (none) * summary: PF-123 #1791 (data minimization): allowlist the per-widget result returned to the ANONYMOUSembed surface. A suppressed verdict still carries internal metadata the public renderer neverreads and an unauthenticated client should not see — (the org's internal martrelation name → schema disclosure), (the serving plan: numerator/denominator/current/prior/ names → internal semantic structure), (a 42 CFR Part 2data-category signal), and any other RPC passthrough. This returns ONLY the fields consumes — , , , — plus the twogeneric gate sentinels it keys on ( and the no-data marker with the real relation name collapsed away).Used only by (anonymous). The authenticated surface returns the full verdict, since an org user is authorized to see the mart/plan metadata. * score: 4 ### function publishEvent * file: src/platform/events/publishEvent.ts:75 * kind: function * core: platform * spec: (none) * summary: Publish a domain event to trigger workflows.This function inserts an event into the fw\_domain\_events table,which triggers the fw\_process\_domain\_event() database functionto find and execute matching automation rules.FW-16-P2 enhancements:- Generates and returns a for process tracing- Checks deprecation status and logs Sentry breadcrumbs- Validates payload against registered JSON Schema (warn/strict/off) * example: | // HR Core: Publishing employee hired eventawait publishEvent( event\_name: 'hr\_employee\_hired', organization\_id: employee.organization\_id, payload: employee\_id: employee.id, department\_id: employee.department\_id, organization\_id: employee.organization\_id, hire\_date: employee.start\_date, ,); // With correlation\_id for process tracingconst result = await publishEvent( event\_name: 'rh\_resident\_admitted', organization\_id: episode.organization\_id, correlation\_id: existingCorrelationId, // optional, auto-generated if omitted payload: episode\_id: episode.id, ... ,);// result.correlation\_id is available for downstream events * score: 4 ### function queryGoogleFreeBusy * file: src/platform/integrations/google-workspace.ts:107 * kind: function * core: platform * spec: (none) * summary: Query free/busy for calendars. Reserved for CE-21 scheduling assistant.Backed by the edge function, whichenforces org access, the PF-101 calendar capability flag, and the subjectdomain allowlist. Returns the per-calendar busy windows keyed by calendar id. * score: 4 ### function RawDataCell * file: src/platform/data-manager/components/RawDataCell.tsx:19 * kind: function * core: platform * spec: (none) * summary: Utility for raw data cell. * score: 1 ### function readResolvedTenantVars * file: src/platform/theming/devChecks/auditTenantVars.ts:93 * kind: function * core: platform * spec: (none) * summary: Read every variable currently present (inline) on thesupplied root element. Empty values are filtered out. * score: 4 ### function readTypesText * file: src/platform/wizards/audit/sources/types-source.ts:13 * kind: function * core: platform * spec: (none) * summary: Read the generated types.ts once. Callers that resolve many tables/enums in aloop (e.g. the orchestrator) should read once and pass the text into / rather than letting each call re-read the(multi-MB) file via its default. * score: 4 ### function recallAgentMemory * file: src/platform/ai/agentic/agent-memory-adapters.ts:75 * kind: function * core: platform * spec: (none) * summary: Scoped semantic recall. The RPC returns only ; each candidate is re-screenedhere before it could re-enter a model prompt, and any row that fails the screen is EXCLUDED(fail-closed, FR-5). Returns the prompt-safe rows; never exposes raw . * score: 4 ### function recommendPreset * file: src/platform/onboarding/integrations/milestonePresets.ts:203 * kind: function * core: platform * spec: (none) * summary: Recommend preset based on job title * score: 4 ### function reconciliationRowToFormValues * file: src/platform/clinical/blocks/meds/med-reconciliation-adapter.ts:88 * kind: function * core: platform * spec: (none) * summary: Map a persisted cl\_medication\_reconciliations row back to the block's form values. * score: 4 ### function recordImportBatch * file: src/platform/import-batches/recordBatch.ts:24 * kind: function * core: platform * spec: (none) * summary: Inserts one row into pf\_import\_batches.Throws on error — callers should catch and handle (e.g., log without blocking the import flow). * score: 4 ### function recordOutcomeReassessmentGap * file: src/platform/clinical/outcomes/reassessment-cohort.ts:74 * kind: function * core: platform * spec: (none) * summary: Record an outcome reassessment care gap in cl\_care\_gaps.Idempotent: if an open gap already exists for the (org, chart, gap\_type)combination, it is escalated to urgent if needed, or skipped. A new gapis inserted only when none is open. * params: * db — Supabase client (service-role for cron; caller's RLS in tests). * input — Typed gap input conforming to the platform/clinical contract. * score: 4 ### function recordPlanAmendment * file: src/platform/clinical/plan/record-amendment.ts:86 * kind: function * core: platform * spec: (none) * summary: Append an immutable amendment record; returns the persisted row\.Throws on failure instead of collapsing to — this is a regulatoryamendment trail (FR-9/FR-10; HIPAA 45 CFR 164.312(b)), so a write failuremust surface to the caller (and its error boundary/toast), never besilently swallowed as if the amendment had been recorded. * score: 4 ### function recordRunUsage * file: src/platform/ai/agentic/intake-rpc-adapters.ts:103 * kind: function * core: platform * spec: (none) * summary: PF-125/PF-111: persist run token/step usage (Task 1 RPC). * score: 4 ### function RecordValueDisplay * file: src/platform/data-manager/components/RecordValueDisplay.tsx:19 * kind: function * core: platform * spec: (none) * summary: Utility for record value display. * score: 1 ### function redactObject * file: src/platform/ai/phi-redaction-core.ts:212 * kind: function * core: platform * spec: (none) * summary: Key-based object scrub (folds + widens CE-69's ): recursively replaces thevalue of any key that matches (by stem, so variants like / / are caught) with . Non-PHI keys are traversed butunchanged. Used for structured snapshots (audit logs) where regex scrubbing of free text does not apply. * score: 4 ### function redactPhi * file: src/platform/ai/phi-redaction-core.ts:143 * kind: function * core: platform * spec: (none) * summary: Redact PHI from free text using the canonical Safe-Harbor catalog + caller literals.**Fail-closed**: throws on non-string / empty input. Returns PHI-safetext and per-category match counts (never the matched values). * params: * input — The free text to scrub. * ctx — Caller-known literal identifiers to remove in addition to the patterns. * score: 4 ### function refreshEntraConsentUrl * file: src/platform/integrations/hooks/useEntraSetup.ts:81 * kind: function * core: platform * spec: (none) * summary: Mint a fresh admin-consent URL (new OAuth state TTL) for an already-registered org. * score: 4 ### function registerAiOnboardingSteps * file: src/platform/ai/components/onboarding/registerSteps.ts:29 * kind: function * core: platform * spec: (none) * summary: Register the four PF-UX-22 custom step components. Idempotent. * score: 4 ### function registerBlockAdapter * file: src/platform/clinical/blocks/adapter-registry.ts:69 * kind: function * core: platform * spec: (none) * summary: Register a typed-block adapter into the app singleton. * score: 4 ### function registerBulkOperationHandler * file: src/platform/bulk-operations/processor.ts:19 * kind: function * core: platform * spec: (none) * summary: Register a handler for a specific entity type.Cores call this to provide delete/update/assign implementations. * score: 4 ### function registerCacheClearHandler * file: src/platform/cache/registry.ts:16 * kind: function * core: platform * spec: (none) * summary: Register a cache-clear handler to be invoked on sign-out.Cores call this during initialization to register their cleanup logic. * score: 4 ### function registerEntraApp * file: src/platform/integrations/hooks/useEntraSetup.ts:40 * kind: function * core: platform * spec: (none) * summary: Step 1: persist domain (and BYO app id when applicable), mint an admin-consentURL. For shared mode without a known tenant, uses tenant=organizations so aMicrosoft admin can sign in and consent for the whole directory. * score: 4 ### function registerModuleSetupConfig * file: src/platform/setup/module-setup-registry.ts:103 * kind: function * core: platform * spec: (none) * summary: Registers or updates a module's setup config.Mutates global state (the module registry). Must only be called at moduleinitialization (top-level side-effect) and never from component render bodiesor hooks without useEffect. Callers should perform registration in modulescope or inside useEffect/initializer to preserve thread-safety with Reactconcurrent re-renders. * score: 4 ### function registerPasskey * file: src/platform/auth/passkey/passkey-utils.ts:125 * kind: function * core: platform * spec: (none) * summary: Register a passkey for the signed-in user. Runs the full WebAuthnregistration ceremony (challenge → navigator.credentials.create → verify). * score: 4 ### function registerPrefetch * file: src/platform/routing/prefetch/registry.ts:73 * kind: function * core: platform * spec: (none) * summary: Register a prefetcher for a route pattern. Call at module load time(the per-core files import for side effects). * score: 4 ### function registerTabService * file: src/platform/telephony/lib/embeddable-tabs.ts:101 * kind: function * core: platform * spec: (none) * summary: Register the third-party service with all tabs.Must be called before adding tabs. * score: 4 ### function registerWidgetPlugins * file: src/platform/dashboard/plugins/index.ts:12 * kind: function * core: platform * spec: (none) * summary: Merge every registered plugin's widget into the runtime registry (idempotent, id-keyed). * score: 4 ### function registerWizardStep * file: src/platform/wizards/registry/WizardStepRegistry.ts:50 * kind: function * core: platform * spec: (none) * summary: Register a custom wizard step component at runtime.Modules should call this during their initialization to registercustom step components without creating direct import dependencies. * params: * entry — The step registry entry to register * example: | // In /cores/hr/init.ts or module entry point:import registerWizardStep from '/platform/wizards';import lazy from 'react';registerWizardStep( id: 'hr-personal-info', module: 'hr', name: 'Personal Information', description: 'Employee personal information entry', component: HRPersonalInfoStep,); * score: 4 ### function relativeLuminance * file: src/platform/theming/utils/contrast.ts:77 * kind: function * core: platform * spec: (none) * summary: Compute relative luminance per WCAG 2.1 §1.4.3. * see: * [https://www.w3.org/TR/WCAG21/#dfn-relative-luminance](https://www.w3.org/TR/WCAG21/#dfn-relative-luminance) * score: 4 ### function removeCustomFieldValue * file: src/platform/custom-fields/utils.ts:32 * kind: function * core: platform * spec: (none) * summary: Remove a custom field from an entity's custom\_fields JSONB * score: 4 ### function removeCustomTab * file: src/platform/telephony/lib/embeddable-tabs.ts:203 * kind: function * core: platform * spec: (none) * summary: Remove a custom tab from the widget * score: 4 ### function removeItemFromGroup * file: src/platform/conditional-logic/builder/utils.ts:245 * kind: function * core: platform * spec: (none) * summary: Remove an item from a group (mutates the group) * score: 4 ### function removeThreadAgent * file: src/platform/cowork/threadsService.ts:55 * kind: function * core: platform * spec: (none) * summary: Mark an agent's active participation in a thread as left (left\_at). * score: 4 ### function renamePasskey * file: src/platform/auth/passkey/passkey-utils.ts:169 * kind: function * core: platform * spec: (none) * summary: Rename a passkey. * score: 1 ### function renderEmailSignature * file: src/platform/email-signatures/utils/render.ts:66 * kind: function * core: platform * spec: (none) * summary: Render an email signature with variable substitution and sanitization. * returns: Rendered and sanitized signature with HTML and plain text versions. * score: 4 ### function renderMentionText * file: src/platform/messaging/utils/mentionParser.ts:82 * kind: function * core: platform * spec: (none) * summary: Render mention text for display — converts `\[Name\](userId)` to Name * score: 4 ### function renderTemplatePreview * file: src/platform/notifications/utils/templateValidation.ts:31 * kind: function * core: platform * spec: (none) * summary: Render a template by substituting variables, then strip remaining placeholders.Client-side preview only — server uses pf\_render\_notification\_template. * score: 4 ### function reorderTiles * file: src/platform/analytics/dashboard/layout-types.ts:101 * kind: function * core: platform * spec: (none) * summary: Move to the slot currently held by (dnd-kit reorder semantics). * score: 4 ### function requestMicrophonePermission * file: src/platform/telephony/lib/embeddable-utils.ts:210 * kind: function * core: platform * spec: (none) * summary: Request microphone permissionReturns true if granted, false if denied * score: 4 ### function resetAllQuickTips * file: src/platform/help/QuickTip.tsx:145 * kind: function * core: platform * spec: (none) * summary: Reset all dismissed QuickTips. * score: 4 ### function resetAllTours * file: src/platform/help/useTour.ts:184 * kind: function * core: platform * spec: (none) * summary: Reset all tour states (useful for testing or user preference reset). * score: 4 ### function resetQuickTip * file: src/platform/help/QuickTip.tsx:134 * kind: function * core: platform * spec: (none) * summary: Reset a dismissed QuickTip by its key. * score: 4 ### function resetStats * file: src/platform/cache/store.ts:67 * kind: function * core: platform * spec: (none) * summary: Reset stats — useful for tests * score: 4 ### function resetWidgetRegistryForTests * file: src/platform/dashboard/widget-registry-cache.ts:32 * kind: function * core: platform * spec: (none) * summary: Test-only: clear the store between specs (module state otherwise leaks across tests). * score: 4 ### function resizeImage * file: src/platform/upload/image-utils.ts:191 * kind: function * core: platform * spec: (none) * summary: Resize an image to fit within max dimensions.Returns original file if no resize needed or if animated GIF. * score: 4 ### function resolveAdapterForBinding * file: src/platform/clinical/blocks/adapter-registry.ts:84 * kind: function * core: platform * spec: (none) * summary: Resolve the typed adapter a points at (app singleton); undefined for generic. * score: 4 ### function resolveAsamContinuumPolicy * file: src/platform/clinical/loc/asam-continuum.ts:32 * kind: function * core: platform * spec: (none) * summary: Resolve the ASAM-CONTINUUM policy from PF-96 clinical rules (fail-closed: not mandated). * score: 4 ### function resolveBhtCosignWindowHours * file: src/platform/clinical/plan/plan-cadence.ts:29 * kind: function * core: platform * spec: (none) * summary: Resolve the BHT cosign window (hours) from PF-96, else the supplied fallback. * score: 4 ### function resolveChartIdForEncounter * file: src/platform/clinical/blocks/suicide/chart-resolver.ts:25 * kind: function * core: platform * spec: (none) * summary: Resolve the patient chart id for an encounter; null when none resolves. * score: 4 ### function resolveContext * file: src/platform/forms/prefill/resolvers.ts:137 * kind: function * core: platform * spec: (none) * summary: Resolves a value from the user session / platform context. * score: 4 ### function resolveCrisisLines * file: src/platform/clinical/blocks/suicide/crisis-lines.ts:34 * kind: function * core: platform * spec: (none) * summary: Resolve the national + regional crisis lines from PF-96 clinical rules (988 floor). * score: 4 ### function resolveDischargeFieldRequiredness * file: src/platform/clinical/blocks/discharge/requiredness.ts:33 * kind: function * core: platform * spec: (none) * summary: Resolve the discharge summary's conditional field requiredness for one context. * score: 4 ### function resolveDischargeSummaryWorkingDays * file: src/platform/clinical/blocks/discharge/timeliness.ts:46 * kind: function * core: platform * spec: (none) * summary: Resolve the discharge-summary working-day window from PF-96 clinical rules.Reads the flattened top-level key first (the 3-arg flattens over the merged clinical block), then falls back to the raw path when a subclass is supplied and the rules were notpre-flattened. Unresolved → (never a hardcoded default). * params: * clinicalRules — the resolved profile's JSONB. * licenseSubclass — optional subclass for unflattened rules. * returns: the window in working days, or null when the profile carries none. * score: 4 ### function resolveDynamicApprover * file: src/platform/templates/utils/resolvers.ts:26 * kind: function * core: platform * spec: (none) * summary: Resolve a dynamic approver for a submitter within an organization. Resolves an approver ID based on the provided resolver type. Supported resolver types:- : returns the submitter's manager ID from .- : attempts to resolve by department, falling back to the submitter's manager when department-based resolution is not available. * params: * resolverType — ('manager' | 'department\_head'): the resolution strategy to use * userId — : the submitter's profile ID to resolve an approver for * organizationId — : the organization ID used to scope HR lookups * returns: — the resolved approver's profile ID, or if resolution is not possible * example: | const approver = await resolveDynamicApprover('manager', 'user\_123', 'org\_abc'); * score: 4 ### function resolveEntityRecord * file: src/platform/forms/prefill/resolvers.ts:40 * kind: function * core: platform * spec: (none) * summary: Resolves a value from an allowlisted database table.Looks up the entity ID from URL params or entityContext using . * score: 4 ### function resolveEntraHealthStatus * file: src/platform/integrations/entra-health.ts:55 * kind: function * core: platform * spec: (none) * summary: Derive headline status from stored org config and an optional live Graph probe.When is null (not yet fetched), falls back to config-only inference. * score: 4 ### function resolvePlanReviewCadenceDays * file: src/platform/clinical/plan/plan-cadence.ts:23 * kind: function * core: platform * spec: (none) * summary: Resolve the plan-review cadence (days) from PF-96, else the supplied fallback. * score: 4 ### function resolvePlatformCodeSetId * file: src/platform/codes/searchCodes.ts:16 * kind: function * core: platform * spec: (none) * summary: Resolve the platform-managed code\_set\_id for a given code set label. * score: 4 ### function resolvePrefetch * file: src/platform/routing/prefetch/registry.ts:78 * kind: function * core: platform * spec: (none) * summary: Look up the prefetcher for a concrete pathname; returns on miss. * score: 4 ### function resolvePreviousSubmission * file: src/platform/forms/prefill/resolvers.ts:75 * kind: function * core: platform * spec: (none) * summary: Resolves a field value from the most recent prior submission for the same entity. * score: 4 ### function resolveQuickActionScope * file: src/platform/dashboard/lib/quickActionsPool.ts:68 * kind: function * core: platform * spec: (none) * summary: Resolves effective scope for display. On the main (global) dashboard, a visibleaction must use global scope or it will not render. * score: 4 ### function resolveReassessmentCadenceDays * file: src/platform/clinical/blocks/suicide/crisis-lines.ts:42 * kind: function * core: platform * spec: (none) * summary: Resolve the reassessment cadence (days) from PF-96, else the supplied fallback. * score: 4 ### function resolveRegistryToolDefs * file: src/platform/ai/registry-tool-resolution.ts:94 * kind: function * core: platform * spec: PF-127 * summary: Resolve the registry-driven tool set for an org. Throws (does not silently return ) on anRPC error so the caller can fall back to the legacy static resolution. * score: 5 ### function resolveRequiredSuiteBlocks * file: src/platform/clinical/blocks/suicide/fail-closed.ts:55 * kind: function * core: platform * spec: (none) * summary: Resolve the required suite-block set. A null/malformed resolution — including a array containing an entry with a non-string or anon-boolean — fails closed to with anerror; only a fully well-formed resolution returns its own required set. Asingle malformed entry must not silently out under truthiness and produce an under-required set (NFR-safety-1 / AC-10). * score: 4 ### function resolveRouteLabel * file: src/platform/navigation/hooks/useRecentlyVisited.ts:74 * kind: function * core: platform * spec: (none) * summary: Resolve a human-readable label for the given (org-prefix-stripped) route path.Priority:1. Exact match in ROUTE\_LABELS2. Route-template match (UUIDs/ids/slugs replaced with ":id") in ROUTE\_LABELS3. Kebab-case last path segment → Title Case fallback * score: 4 ### function resolveSsoLoginMode * file: src/platform/auth/sso/useSsoLogin.ts:66 * kind: function * core: platform * spec: (none) * summary: Resolve the sign-in mode for the email's domain via the anon RPC. The server enforces that 'oidc' is returned only fororgs with the Login SSO capability enabled AND the domain Graph-verified(anti-hijack without DNS TXT). Fails CLOSED: any error, invalid email, orunexpected value resolves to 'none' so the caller falls back to the existingSAML/password path. * score: 4 ### function resolveStepApprover * file: src/platform/templates/utils/resolvers.ts:82 * kind: function * core: platform * spec: (none) * summary: Determine the approver ID for a single approval step. Resolves the approver for the provided step configuration. For steps returns the configured user ID; for steps uses the step's configured resolver and the submitter/organization context to compute an approver; for and steps logs a warning and returns ; for any other type returns . * params: * step — The approval step containing and * submitterId — The ID of the submitter used when resolving dynamic approvers * organizationId — The organization ID used to scope dynamic resolution * returns: The resolved approver user ID, or if no approver could be determined * score: 4 ### function resolveStepIcon * file: src/platform/wizards/utils/stepIcons.ts:199 * kind: function * core: platform * spec: (none) * summary: Resolve an icon name string to a Lucide icon component.Resolution order: 1. Direct match in WIZARD\_STEP\_ICONS catalog 2. Module code match via getModuleIcon (e.g. 'hr' → Users) 3. Empty / undefined input → undefined (caller intentionally renders the step number) 4. Unknown explicit key → FALLBACK\_STEP\_ICON (CircleHelp) + one-time dev console warningThe dev warning fires once per unique unknown key (per page load) so authorsnotice typos without flooding the console on every React re-render. Productionbuilds skip the warning entirely (). * params: * iconName — The icon key from WizardStep.icon (e.g. 'user', 'calendar', 'review') * returns: A Lucide icon component. Returns only when is empty/undefined (intentional "show step number" mode); unknown explicit keys resolve to so the UI never breaks. * score: 4 ### function resolveSuiteFieldRequiredness * file: src/platform/clinical/blocks/suicide/requiredness.ts:42 * kind: function * core: platform * spec: (none) * summary: Resolve the suite's conditional field requiredness for one assessment context. * score: 4 ### function resolveTargets * file: src/platform/ai/mapping-targets/resolveTargets.ts:45 * kind: function * core: platform * spec: (none) * summary: Resolve a to the concrete, org-scoped Encore values itallows. Always resolves to an array — returns on any error so thecaller's manual/empty path keeps working (AI is strictly additive). For thebinding's enforcement policy too, see . * score: 4 ### function resolveTargetsWithPolicy * file: src/platform/ai/mapping-targets/resolveTargets.ts:110 * kind: function * core: platform * spec: (none) * summary: Resolve a binding to its targets *and* its enforcement policy in one call,so callers that need to gate on coverage (e.g. the import value-mapping stepvia ) don't have to read separately.Additive over : same org-scoped resolution, samefail-open -on-error behaviour, plus the (defaultedto when the binding leaves it unset). * score: 4 ### function resolveTbScreeningWindowDays * file: src/platform/clinical/blocks/ros-exam/tb-screening.ts:42 * kind: function * core: platform * spec: (none) * summary: Read the TB-screening window from PF-96 clinical rules; when theprofile does not configure one (no hardcoded fallback — AC-12). * score: 4 ### function resolveTemplateVariables * file: src/platform/templates/utils/variableResolver.ts:209 * kind: function * core: platform * spec: (none) * summary: Resolve all template variables in a string * score: 4 ### function resolveThread * file: src/platform/cowork/threadsService.ts:68 * kind: function * core: platform * spec: (none) * summary: Resolve a thread to its SoT view: backing conversation, org (server-read), primary agent,and the ids of currently-active participating agents. Returns null if the resolver yieldsno row (caller lacks access / thread absent — the RPC raises, surfaced as a thrown error). * score: 4 ### function resolveTimezone * file: src/platform/timezone/cross-timezone-conflict.ts:25 * kind: function * core: platform * spec: (none) * summary: Resolve the effective IANA timezone from the site → org → platform-default chain.Mirrors the server-side resolver so client and server agree. * score: 4 ### function resolveUrlParameter * file: src/platform/forms/prefill/resolvers.ts:116 * kind: function * core: platform * spec: (none) * summary: Resolves a value from the current URL query string. * score: 4 ### function resolveWorkspaceNav * file: src/platform/navigation/workspaces/resolveWorkspaceNav.ts:10 * kind: function * core: platform * spec: (none) * summary: Compose a workspace's section refs into an ordered NavSubGroup\[]. Pure. * params: * defsByCore — loaded ModuleDefinitions keyed by core id. * hasGroupAccess — permission predicate; return false to omit a group.Missing groups (not in the core's navGroups) and absent cores are skipped (resilient). * score: 4 ### function resumeAgentRun * file: src/platform/agents/runsService.ts:78 * kind: function * core: platform * spec: (none) * summary: Operator resume: rehydrate a paused run via the governed RPC (paused → resuming).Returns the resume envelope (lifecycle\_state, from\_seq, snapshot, cursor). The actualloop continuation is the durable wrapper's job (edge runtime); the UI only triggersthe transition. * score: 4 ### function revokeGoogleLicense * file: src/platform/integrations/google-workspace.ts:267 * kind: function * core: platform * spec: (none) * summary: Revokes a Google Workspace product/SKU license through the PF-101 license edge function. * score: 4 ### function rollbackBulkOperation * file: src/platform/bulk-operations/rollback.ts:14 * kind: function * core: platform * spec: (none) * summary: Rollback a bulk operation within the rollback window\.Restores items from their snapshots. * score: 4 ### function RouteLoadingSkeleton * file: src/platform/navigation/components/RouteLoadingSkeleton.tsx:9 * kind: function * core: platform * spec: (none) * summary: Suspense fallback for route-level code-split boundaries.Intentionally renders nothing — the GlobalQueryProgress bar at the top ofthe viewport is the sole loading affordance during navigation. Returningnull avoids the hex-spinner + skeleton bars that previously appeared in themain content area and could be confused with the product logo. * score: 4 ### function rowToRecordData * file: src/platform/data-manager/utils/csvUtils.ts:197 * kind: function * core: platform * spec: (none) * summary: Convert a CSV row to a record data object * score: 4 ### function ruleToBuilderState * file: src/platform/conditional-logic/builder/utils.ts:91 * kind: function * core: platform * spec: (none) * summary: Convert ConditionalRuleV2 to ConditionBuilderState * score: 4 ### function runIntakeAgent * file: src/platform/ai/agentic/agentic-loop.ts:34 * kind: function * core: platform * spec: (none) * summary: Run the read-only intake screening agent for one PF-125 run. * params: * input — run id, referral id, scoped principal. * deps — injected model gateway, tool resolver, PF-125 RPCs, flag check, budget, prompts. * returns: the terminal (PHI-free control-plane labels + the screening text). * score: 4 ### function runIntakeGovernedWrites * file: src/platform/ai/agentic/intake-governed-writes.ts:23 * kind: function * core: platform * spec: (none) * summary: Run the governed writes for one approved intake. * score: 4 ### function runIntakeReadVertical * file: src/platform/ai/agentic/intake-vertical.ts:56 * kind: function * core: platform * spec: (none) * summary: Run the read-only intake vertical: screen → triage → provider-match → draft artifact. * score: 4 ### function runTenantVarsAuditAndReport * file: src/platform/theming/devChecks/auditTenantVars.ts:186 * kind: function * core: platform * spec: (none) * summary: Run the audit against (and a detached probeto catch dark-mode-only drift), and emit a single groupper unique drift signature per page session. * score: 4 ### function runWizardChecks * file: src/platform/wizards/audit/orchestrator.ts:19 * kind: function * core: platform * spec: (none) * summary: Run every applicable check for one wizard against already-fetched contracts.Pure (no I/O) so the static and live lanes share identical check logic.Each check runs only when its source is present:- field-coverage requires ,- enum-options runs whenever the target table has enum columns (),- notnull-coverage and mapper-sink require . * score: 4 ### function safeRegexTest * file: src/platform/conditional-logic/utils/operators.ts:97 * kind: function * core: platform * spec: (none) * summary: Safely test a regex pattern with timeout protection * score: 4 ### function safetyPlanRowToFormValues * file: src/platform/clinical/blocks/suicide/safety-plan-adapter.ts:69 * kind: function * core: platform * spec: (none) * summary: Map a persisted cl\_safety\_plans row back to the safety\_plan block's form values. * score: 4 ### function sanitizeAnalyticsEvent * file: src/platform/wizards/utils/sanitizeAnalyticsEvent.ts:297 * kind: function * core: platform * spec: (none) * summary: Complete analytics event sanitization.Combines validation error and metadata sanitization. * params: * event — Raw analytics event data * returns: Sanitized event safe for storage * score: 4 ### function sanitizeCellValue * file: src/platform/table-v2/utils/sanitize.ts:13 * kind: function * core: platform * spec: (none) * summary: Utility for sanitize cell value. * score: 1 ### function sanitizeContent * file: src/platform/messaging/utils/mentionParser.ts:89 * kind: function * core: platform * spec: (none) * summary: Sanitize content for storage (remove extra whitespace, trim) * score: 4 ### function sanitizeContentForAI * file: src/platform/ai/widgets/utils/sanitizeForAI.ts:140 * kind: function * core: platform * spec: (none) * summary: Sanitize content and return only the clean textUse this for simple sanitization without detection details * score: 4 ### function sanitizeDischargeMedications * file: src/platform/clinical/blocks/discharge/discharge-summary-adapter.ts:93 * kind: function * core: platform * spec: (none) * summary: Sanitize a medications snapshot: keep entries with at least one non-empty part. * score: 4 ### function sanitizeFilename * file: src/platform/upload/service.ts:17 * kind: function * core: platform * spec: (none) * summary: Sanitize filename to prevent path traversal and special characters. * score: 4 ### function sanitizeHeader * file: src/platform/table-v2/utils/sanitize.ts:21 * kind: function * core: platform * spec: (none) * summary: Utility for sanitize header. * score: 1 ### function sanitizeLookupFilters * file: src/platform/data-lookup/lookupTables.ts:150 * kind: function * core: platform * spec: (none) * summary: Strip any filter keys that are not in the table's allowlist.Returns a sanitized copy. * score: 4 ### function sanitizeMetadata * file: src/platform/wizards/utils/sanitizeAnalyticsEvent.ts:263 * kind: function * core: platform * spec: (none) * summary: Sanitizes metadata for analytics storage using an allowlist approach.Only explicitly allowed keys are preserved. * params: * metadata — Raw metadata object * returns: Sanitized metadata with only allowed keys * score: 4 ### function sanitizeModuleError * file: src/platform/modules/utils/errorSanitizer.ts:69 * kind: function * core: platform * spec: (none) * summary: Sanitizes general module errors.Harmonized with sanitizePresetError to cover all common error patterns. * score: 4 ### function sanitizePresetError * file: src/platform/modules/utils/errorSanitizer.ts:53 * kind: function * core: platform * spec: (none) * summary: Sanitizes module preset errors into user-friendly messages.Never exposes raw error messages to users.IMPORTANT: Callers should log the original error via the project loggerbefore calling this function to preserve debugging information. * score: 4 ### function sanitizePrompt * file: src/platform/ai/widgets/utils/sanitizeForAI.ts:85 * kind: function * core: platform * spec: (none) * summary: Detect and sanitize PHI/PII from text * score: 4 ### function sanitizeQueryText * file: src/platform/query-performance/sanitize-query-text.ts:31 * kind: function * core: platform * spec: (none) * summary: Sanitize raw SQL text by redacting PII/PHI patterns.Returns the redacted text and a fingerprint hash. * score: 4 ### function sanitizeQueryTextSync * file: src/platform/query-performance/sanitize-query-text.ts:58 * kind: function * core: platform * spec: (none) * summary: Synchronous version for non-critical paths (uses simple hash). * score: 4 ### function sanitizeSearchError * file: src/platform/search/utils.ts:50 * kind: function * core: platform * spec: (none) * summary: Sanitize error messages for user display.Removes technical details that could expose internal implementationor database structure. * params: * error — The error to sanitize * messages — Optional custom error messages * returns: A user-friendly error message * example: | sanitizeSearchError(new Error('relation "users" does not exist'))// Returns 'Search configuration error. Please contact support.' * score: 4 ### function sanitizeTriggerEvent * file: src/platform/clinical/blocks/meds/med-reconciliation-adapter.ts:51 * kind: function * core: platform * spec: (none) * summary: Coerce a form trigger to a CHECK-safe value; unknown/blank → 'manual' (spec Assumption 5). * score: 4 ### function sanitizeValidationErrors * file: src/platform/wizards/utils/sanitizeAnalyticsEvent.ts:194 * kind: function * core: platform * spec: (none) * summary: Sanitizes validation errors for analytics storage.CRITICAL: Only stores the field name and error type/message, NEVER the actual value.If a prohibited key is detected, throws PHIDetectedError. * params: * errors — Validation errors object (field - error message) * throwOnPHI — If true, throws error when PHI detected. If false, filters it out. * returns: Sanitized validation errors or null if empty * score: 4 ### function saveIdpMetadata * file: src/platform/auth/sso/useSsoSetup.ts:98 * kind: function * core: platform * spec: (none) * summary: Step 3: persist the IdP SAML metadata URL + entity id on the provider. * score: 4 ### function saveOrganizationSetupDraft * file: src/platform/setup/hooks/organizationSetupUtils.ts:84 * kind: function * core: platform * spec: (none) * summary: Save draft for the organization. * score: 4 ### function saveSessionLocally * file: src/platform/analytics/sessionRecorder.ts:446 * kind: function * core: platform * spec: (none) * summary: Save session to local storage * returns: Result object indicating success/failure with optional error message * score: 1 ### function scanPromptForPhi * file: src/platform/ai/wizards/ai-skill-creation/phi-scan.ts:46 * kind: function * core: platform * spec: (none) * summary: Scan the Step-2 prompt fields for pattern-detectable PHI (AC-2). * params: * input — The and to scan. * returns: A ; means the step MUST block advance. * score: 4 ### function screenArtifactForPrompt * file: src/platform/ai/agentic/artifact-prompt-context.ts:79 * kind: function * core: platform * spec: (none) * summary: Screen ONE artifact version for prompt reuse. Returns its prompt-safe text, or throws when the version is not safe to include: - — the persisted PF-27-EN-01 screen did not pass (fail-closed); - is null/empty — there is no prompt-safe projection to include; - the fresh re-screen throws — defense-in-depth against a poisoned/unscreened projection. * score: 4 ### function screenForInjection * file: src/platform/ai/prompt-safety.ts:176 * kind: function * core: platform * spec: (none) * summary: Author-time prompt-injection / jailbreak screen for a skill (AC-3).Heuristic and pattern-based only — flags guardrail-override directive classes suchas instruction override, role reassignment, safety-policy override, privilegeescalation, embedded system prompt, and prompt exfiltration. Returns the firstmatched class so the wizard can name the detected directive class inline. This isNOT a full LLM-judge evaluation. * params: * prompt — The prompt text the author is about to save / activate. * returns: An ; means the step MUST block. * score: 4 ### function screenOrgNarrative * file: src/platform/ai/prompt-safety.ts:62 * kind: function * core: platform * spec: (none) * summary: Screen org-authored narrative text before it is published / injected. * params: * text — The narrative markdown the admin wants to publish. * returns: A . (i.e. ) means publish MUST be blocked; surface each inline. * score: 4 ### function screenRowToFormValues * file: src/platform/clinical/blocks/suicide/suicide-screen-adapter.ts:70 * kind: function * core: platform * spec: (none) * summary: Map a persisted cl\_risk\_screenings screen row back to the block's form values. * score: 4 ### function sdohRowToFormValues * file: src/platform/clinical/blocks/sdoh-adapter.ts:96 * kind: function * core: platform * spec: (none) * summary: Map a persisted cl\_sdoh\_screenings row back to the block's form values. * score: 4 ### function searchCodes * file: src/platform/codes/searchCodes.ts:32 * kind: function * core: platform * spec: (none) * summary: Utility for search codes. * score: 1 ### function sectionHasVisibleFields * file: src/platform/page-layouts/utils/visibilityUtils.ts:43 * kind: function * core: platform * spec: (none) * summary: Check if a section has any visible fields for the current user role.Useful for hiding entire sections when all their fields are hidden. * score: 4 ### function seedBuiltInWidgets * file: src/platform/dashboard/widget-registry.ts:549 * kind: function * core: platform * spec: (none) * summary: Seed the runtime registry with the built-in widgets (idempotent, array-order preserving). * score: 4 ### function selectChainFromRules * file: src/platform/approvals/evaluateRoutingRules.ts:132 * kind: function * core: platform * spec: (none) * summary: Select the approval chain for a submission based on routing rules. * score: 4 ### function selectScreeningInstrument * file: src/platform/clinical/blocks/suicide/screening-routing.ts:31 * kind: function * core: platform * spec: (none) * summary: Select the age-appropriate suicide-screen instrument. Below the threshold →the ASQ (validated for pediatrics); at/above → the C-SSRS. When age is unknownthe routing fails safe to the C-SSRS, which is validated across ages, ratherthan defaulting a pediatric instrument onto a possibly-adult patient. * score: 4 ### function sendBroadcast * file: src/platform/realtime/utils/sendBroadcast.ts:33 * kind: function * core: platform * spec: (none) * summary: Send a one-shot broadcast event on a Supabase Realtime channel.Creates a temporary channel, subscribes, sends the payload, then cleans up.Suitable for fire-and-forget event publishing from non-hook code.**Tenant scoping (security):** is required so the channelname is prefixed with and matches what subscribes to on the client. This is the compensating control for theinability to add RLS policies to (Supabase's reservedschema is off-limits per project policy). See. * params: * organizationId — Active organization id (required for tenant isolation) * channel — Channel name (e.g., 'hr\_events', 'fa\_events') * event — Event name (e.g., 'hr.employer\_tax\_liability.calculated') * payload — Event payload (must NOT contain PHI/PII) * score: 4 ### function sendGoogleChatNotification * file: src/platform/integrations/google-workspace.ts:239 * kind: function * core: platform * spec: (none) * summary: Send a Google Chat notification by rendering an APPROVED PF-10 notificationtemplate into a mapped Chat space, via the edge function. PHI is always blocked in Chat: there is intentionally nofree-text message parameter — only an approved plus short(≤256 char) string variable substitutions, enforced fail-closed server-side. * score: 4 ### function sendRCCommand * file: src/platform/telephony/lib/embeddable-events.ts:213 * kind: function * core: platform * spec: (none) * summary: Send a command to the Embeddable widget * score: 4 ### function serializeAliases * file: src/platform/picklists/components/PicklistItemForm.tsx:71 * kind: function * core: platform * spec: (none) * summary: Serialize an aliases array back to a display string.Exported for unit testing. * score: 4 ### function serializeParams * file: src/platform/validation/hooks/useValidationRuleMutation.ts:118 * kind: function * core: platform * spec: (none) * summary: Helper to serialize RuleParams to Json for Supabase. * score: 4 ### function serializeSwimLaneToBpmn * file: src/platform/workflow/utils/serializeSwimLaneToBpmn.ts:49 * kind: function * core: platform * spec: (none) * summary: Serializes a swim lane diagram state into a BPMN 2.0 XML string. * params: * input — Diagram state containing lanes, nodes, and edges * returns: Valid BPMN 2.0 XML string * score: 4 ### variable setCachedWidgetData * file: src/platform/dashboard/utils/widgetCache.ts:105 * kind: variable * core: platform * spec: (none) * summary: Store widget data in IndexedDB cacheorganizationId is required for multi-tenant security * score: 2 ### function setConnectorCredential * file: src/platform/analytics/hooks/useAnalyticsConnectors.ts:53 * kind: function * core: platform * spec: (none) * summary: Calls the perm-gated SECURITY DEFINER RPC.The is stored in Vault — the return value is only the Vault secret id (uuid);the caller never sees the secret again. * score: 4 ### function setCustomFieldValue * file: src/platform/custom-fields/utils.ts:20 * kind: function * core: platform * spec: (none) * summary: Set a custom field value in an entity's custom\_fields JSONB * score: 4 ### function setEventQueryClient * file: src/platform/events/eventDefinitionCache.ts:29 * kind: function * core: platform * spec: (none) * summary: Register the app's QueryClient so non-hook functions can share the same cache.Call this once during app initialization (e.g., in main.tsx or a provider). * score: 4 ### function setLoginSsoEnabled * file: src/platform/auth/sso/useSsoSetup.ts:172 * kind: function * core: platform * spec: (none) * summary: PF-112-EN-01: flip the Login SSO capability (staff sign in with Microsoft viathe shared Entra app). Audited server-side by the pf.sso.oidc\_enabled/disabledtrigger; routing only takes effect for Graph-verified domains. * score: 4 ### function setOrganizationSetupComplete * file: src/platform/setup/hooks/organizationSetupUtils.ts:51 * kind: function * core: platform * spec: (none) * summary: Mark organization setup as complete. Call after wizard completion. * score: 4 ### function setSentryUser * file: src/platform/monitoring/sentry-context.ts:24 * kind: function * core: platform * spec: (none) * summary: Set Sentry user context on login. Only UUIDs — never PHI.Clears stale tags from a previous session before setting new ones. * score: 4 ### function setStorageValue * file: src/platform/navigation/utils/navigation-utils.ts:107 * kind: function * core: platform * spec: (none) * summary: Safe localStorage setter with JSON stringify * score: 4 ### function setStoredPinDerived * file: src/platform/auth/app-lock/pin-utils.ts:96 * kind: function * core: platform * spec: (none) * summary: Persist the derived PIN + salt to sessionStorage.Data is lost when the tab closes — this is intentional (Phase 1). * score: 4 ### function setTabVisibility * file: src/platform/telephony/lib/embeddable-tabs.ts:177 * kind: function * core: platform * spec: (none) * summary: Show or hide a custom tab * score: 1 ### function setWizardComplete * file: src/platform/setup/hooks/organizationSetupUtils.ts:123 * kind: function * core: platform * spec: (none) * summary: Mark a module's setup wizard as complete (scoped by organization). * score: 4 ### function shouldApplyRule * file: src/platform/wizards/utils/validation-executor.ts:332 * kind: function * core: platform * spec: (none) * summary: Check if a conditional rule should be applied based on its conditions * score: 4 ### function shouldEnableEmbeddable * file: src/platform/telephony/lib/embeddable-utils.ts:310 * kind: function * core: platform * spec: (none) * summary: Determine if Embeddable should be enabled based on all factors * score: 4 ### function shouldSendReminder * file: src/platform/onboarding/integrations/benefitsIntegration.ts:65 * kind: function * core: platform * spec: (none) * summary: Check if a reminder notification should be sent * score: 4 ### function shouldShowBreadcrumbs * file: src/platform/navigation/utils/breadcrumb-visibility.ts:40 * kind: function * core: platform * spec: (none) * summary: Returns true if breadcrumbs should be shown for the given pathname. * score: 4 ### function shouldShowMobileHeaderContextRow * file: src/platform/navigation/utils/breadcrumb-visibility.ts:95 * kind: function * core: platform * spec: (none) * summary: Whether the mobile shell should render the secondary header row (org switcher + breadcrumbs row).Must stay aligned with — use this in for main content top padding. * score: 4 ### function showAIErrorToast * file: src/platform/ai/widgets/utils/handleAIError.ts:70 * kind: function * core: platform * spec: (none) * summary: Show toast notification for AI error * score: 4 ### function signInWithPasskey * file: src/platform/auth/passkey/passkey-utils.ts:141 * kind: function * core: platform * spec: (none) * summary: Sign in with a passkey (passwordless, discoverable credential). On success,the new session is handed to the canonical client so the rest of the appsees the user as authenticated. * score: 4 ### function skillToSkillMd * file: src/platform/ai/utils/skill-md-serializer.ts:67 * kind: function * core: platform * spec: (none) * summary: Serialize an AISkill to SKILL.md format.The output consists of YAML frontmatter (delimited by ) containingskill metadata, followed by the system prompt as the Markdown body undera heading. * params: * skill — The AI skill to serialize. * returns: A string in SKILL.md format. * score: 4 ### function skuOptionLabel * file: src/platform/integrations/entra-skus.ts:64 * kind: function * core: platform * spec: (none) * summary: Display label for a catalog SKU: part number plus seat usage when known. * score: 4 ### function slugFromOrganizationName * file: src/platform/organizations/slug.ts:59 * kind: function * core: platform * spec: (none) * summary: Generate a URL-safe slug from an organization name.- Lowercases- Replaces non-alphanumeric with hyphens- Collapses consecutive hyphens- Trims leading/trailing hyphens- Truncates to 50 characters * score: 4 ### function sortByJurisdictionPriority * file: src/platform/picklists/utils/referencePicklistUtils.ts:40 * kind: function * core: platform * spec: (none) * summary: Sorts picklist items with state-specific matches first, then by display\_order. * params: * items — Array of picklist items to sort. * stateCode — Two-letter state code for priority sorting, or null/undefined to sort by display\_order only. * returns: A new sorted array (does not mutate the input). * score: 4 ### function sortByUnreadStatus * file: src/platform/messaging/utils/unreadCalculator.ts:31 * kind: function * core: platform * spec: (none) * summary: Get conversations sorted by unread status * score: 4 ### function sortFieldsByOrder * file: src/platform/field-config/utils.ts:210 * kind: function * core: platform * spec: (none) * summary: Sort fields by display\_order * score: 1 ### function sortFieldsByOrder * file: src/platform/page-layouts/utils.ts:32 * kind: function * core: platform * spec: (none) * summary: Sort fields by display\_order ascending * score: 4 ### function sortSectionsByOrder * file: src/platform/page-layouts/utils.ts:25 * kind: function * core: platform * spec: (none) * summary: Sort sections by display\_order ascending * score: 4 ### function startApiCall * file: src/platform/monitoring/api-metrics.ts:103 * kind: function * core: platform * spec: (none) * summary: Start tracking an API call * score: 1 ### function startGlobalRecording * file: src/platform/analytics/sessionRecorder.ts:416 * kind: function * core: platform * spec: (none) * summary: Start global recording * score: 1 ### function startOidcSignIn * file: src/platform/auth/sso/useSsoLogin.ts:85 * kind: function * core: platform * spec: (none) * summary: Begin the shared-app Entra OIDC sign-in for the given work email(PF-112-EN-01). Resolves to an error message on failure, or redirects thebrowser to Microsoft on success. The post-return gate (enforceSsoGate) ownstenant binding and the known-employees check. * score: 4 ### function startRecorderCapture * file: src/platform/automation/portal/recorder/seam.ts:46 * kind: function * core: platform * spec: (none) * summary: Begin a guided capture session for a portal; returns its (possibly inline) trace. * score: 4 ### function startSsoSignIn * file: src/platform/auth/sso/useSsoLogin.ts:114 * kind: function * core: platform * spec: (none) * summary: Begin SP-initiated SSO for the given work email. Resolves to an error messageon failure, or redirects the browser to the IdP on success. * score: 4 ### function stepsToFields * file: src/platform/wizards/audit/sources/migration-source.ts:85 * kind: function * core: platform * spec: (none) * summary: Flatten JSONB into a normalized field list. Sharedby the static (migration) and live (DB) sources so both produce the same shape. A field is required when it carries OR a step entry of . * score: 4 ### function stopGlobalRecording * file: src/platform/analytics/sessionRecorder.ts:424 * kind: function * core: platform * spec: (none) * summary: Stop global recording * score: 1 ### function stripOrgPrefix * file: src/platform/navigation/utils/navigation-utils.ts:17 * kind: function * core: platform * spec: (none) * summary: Strip the /o/slug/ prefix from a pathname, returning a flat path.If no org prefix is present, returns the pathname unchanged. * example: | stripOrgPrefix('/o/acme/ce/contacts') → '/ce/contacts' stripOrgPrefix('/ce/contacts') → '/ce/contacts' * score: 4 ### function stripToRouteTemplate * file: src/platform/navigation/analytics/stripToRouteTemplate.ts:44 * kind: function * core: platform * spec: (none) * summary: Convert a concrete URL to a PHI-safe route template.- Replaces UUID/numeric/opaque id segments with ":id".- Drops the query string entirely EXCEPT a single key (UI state, never PHI).This is the logging boundary — nothing else from the URL is persisted. * score: 4 ### function substituteVariables * file: src/platform/email-signatures/utils/render.ts:31 * kind: function * core: platform * spec: (none) * summary: Replace all tokens in a string using the provided map. * score: 4 ### function subtractBusinessDays * file: src/platform/calendar/lib/business-day-utils.ts:107 * kind: function * core: platform * spec: (none) * summary: Subtracts N business days from a date. * params: * date — Starting date. * days — Number of business days to subtract (must be = 0). * businessHours — Business hours configuration map. * holidays — List of calendar holidays. * returns: The resulting date after subtracting business days. * score: 4 ### function suggestCptCode * file: src/platform/clinical/billing/billing-rules.ts:40 * kind: function * core: platform * spec: (none) * summary: Maps a billing input (note type + duration) to a suggested CPT code. * params: * input — The billing input with noteType and durationMinutes * returns: A billing suggestion with CPT code, modifiers, and confidence * score: 4 ### function suggestIconKey * file: src/platform/wizards/utils/auditStepIcons.ts:38 * kind: function * core: platform * spec: (none) * summary: Suggest the closest valid icon key for a bad input via simple substring matchagainst keys (lowercased, normalized). * score: 4 ### function suggestionsToMappings * file: src/platform/import/mapping/suggestMappings.ts:129 * kind: function * core: platform * spec: (none) * summary: Convert suggested mappings to FieldMapping array. * score: 4 ### function suggestMappings * file: src/platform/import/mapping/suggestMappings.ts:89 * kind: function * core: platform * spec: (none) * summary: Suggest mappings from source headers to target fields.Returns only suggestions with confidence threshold. * score: 4 ### function summarizeAudit * file: src/platform/wizards/utils/auditStepIcons.ts:106 * kind: function * core: platform * spec: (none) * summary: Aggregate summary counts for the audit page header strip. * score: 4 ### function summarizeWizardForPrompt * file: src/platform/wizards/ai/prompts.ts:95 * kind: function * core: platform * spec: (none) * summary: Generate a summary of wizard structure for modification prompts * score: 4 ### function supportsDataSource * file: src/platform/field-config/fieldTypes.ts:251 * kind: function * core: platform * spec: (none) * summary: Check if a field type supports a specific data source * score: 4 ### function supportsWebP * file: src/platform/upload/image-utils.ts:126 * kind: function * core: platform * spec: (none) * summary: Detect if browser supports WebP image encoding. * score: 4 ### function suppressServingPayload * file: src/platform/analytics/serving/mart-suppression.ts:156 * kind: function * core: platform * spec: (none) * summary: Apply min-cell + complementary suppression to a pf\_analytics\_run verdict's RAW rows,returning a verdict whose are flat, suppressed display rows. FAIL-CLOSED: anyok+served verdict whose rows cannot be suppressed (no measure) returns empty rows, neverraw rows. Non-ok / pending\_mart verdicts pass through unchanged (they carry no real rows).This is the single guardrail both Tier-2 HTTP surfaces ( authenticated, anonymous) call before returning, so neither can leak anunsuppressed small-cell count. * score: 4 ### function syncGoogleDriveMappings * file: src/platform/integrations/google-workspace.ts:185 * kind: function * core: platform * spec: (none) * summary: Sync Google shared-drive and folder METADATA (ids + names only) into (mapping\_type 'drive\_folder') via the edge function. File contents are never read —PF-11 document export/import remains an explicit per-document action. * score: 4 ### function testEntraConnection * file: src/platform/integrations/hooks/useEntraSetup.ts:108 * kind: function * core: platform * spec: (none) * summary: Step 3: verify the shared app can acquire a token and reach Graph for this tenant. * score: 4 ### function textToJsonbArray * file: src/platform/clinical/blocks/suicide/mapping.ts:28 * kind: function * core: platform * spec: (none) * summary: Split a multiline textarea value into a trimmed, non-empty string array (jsonb). * score: 4 ### function tilesToWidgetRows * file: src/platform/analytics/dashboard/useDashboardLayout.ts:44 * kind: function * core: platform * spec: (none) * summary: Pure: project layout tiles to org-scoped pf\_analytics\_widgets rows (exported for tests + reuse). * score: 4 ### function timezoneDifferenceHours * file: src/platform/timezone/cross-timezone-conflict.ts:103 * kind: function * core: platform * spec: (none) * summary: Signed offset difference between two timezones at a given instant, in hours(positive = is ahead of ). DST-correct because theoffset is sampled at . Use the magnitude for "highlights the N-hourdifference" warnings (AC-5). * score: 4 ### function toEmployeeContext * file: src/platform/hr/\_internal/mappers.ts:28 * kind: function * core: platform * spec: (none) * summary: Utility for to employee context. * score: 1 ### function tokenFor * file: src/platform/analytics/components/AnalyticsChart.tsx:40 * kind: function * core: platform * spec: (none) * summary: Resolve the Nth series to a semantic palette token (wraps after 8). Exported for theAC-012 test that proves series colours come from , never hex. * score: 4 ### function toolRegistryEnabled * file: src/platform/ai/registry-tool-resolution.ts:55 * kind: function * core: platform * spec: PF-127 * summary: Fail-safe read of the PF-127 registry flag via . Any error → (registry path stays off → legacy static resolution). The sentinel is neverpassed as a uuid (edge-function caller pitfall). * score: 5 ### function toRelativeTime * file: src/platform/inbox/useUnifiedInbox.ts:76 * kind: function * core: platform * spec: (none) * summary: Utility for to relative time. * score: 1 ### function toSafeColumnKey * file: src/platform/analytics/byod/sanitize.ts:56 * kind: function * core: platform * spec: (none) * summary: Snake-case a header to a safe, bare snake\_case identifier; positional fallback otherwise.Security (NFR-sec-4): the derived key MUST begin with a letter. Trailing separators arestripped, but a leading non-letter — every OWASP formula trigger (), a digit,or a leading underscore — yields no derived key and falls back to a positional .This guarantees no attacker-controlled, formula-trigger header is ever turned into anidentifier (e.g. → , never ), while staying a strict subset of theregister bridge's downstream re-validation. * score: 4 ### function toZonedTime * file: src/platform/formatting/timezone.ts:111 * kind: function * core: platform * spec: (none) * summary: Convert a UTC date to a specific timezoneReturns a Date object that, when formatted with date-fns,will show the correct time for the specified timezone. * params: * date — UTC date * timeZone — Target timezone * returns: Date object representing the time in the target timezone * score: 4 ### function trackDatabaseQuery * file: src/platform/monitoring/api-metrics.ts:167 * kind: function * core: platform * spec: (none) * summary: Track a database query * score: 1 ### function trackGestureEvent * file: src/platform/gestures/utils/trackGestureEvent.ts:92 * kind: function * core: platform * spec: (none) * summary: Queue a gesture analytics event for batched insertion.Callers pass userId and orgId from useCurrentUser() — this is NOT a hook. * score: 4 ### function transformSettingsForDb * file: src/platform/settings/utils/settings-transform.ts:54 * kind: function * core: platform * spec: (none) * summary: Transforms form values back to database format.Converts undefined values to null for database storage. * params: * formValues — Form values (may contain undefined) * returns: Values ready for database upsert (undefined → null) * example: | const handleSubmit = (values: FormValues) = const dbValues = transformSettingsForDb(values); upsert(dbValues);; * score: 4 ### function transformSettingsForForm * file: src/platform/settings/utils/settings-transform.ts:31 * kind: function * core: platform * spec: (none) * summary: Generic settings transform that converts null values to undefinedfor form compatibility with React Hook Form and Zod.Use this instead of creating per-module transformSettings functions. * params: * settings — Settings object from database (may contain null values) * returns: Settings object with null values converted to undefined * example: | // In a settings pageconst formValues = transformSettingsForForm(settings);// In a settings formSettingsForm initialValues=transformSettingsForForm(settings ?? null) onSubmit=handleSubmit/ * score: 4 ### function triggerHaptic * file: src/platform/gestures/utils/haptics.ts:60 * kind: function * core: platform * spec: (none) * summary: Trigger haptic feedback with a specific type * params: * type — The type of haptic feedback * returns: true if haptic was triggered, false otherwise (including iOS Safari) * score: 4 ### function uiToAIMessage * file: src/platform/ai/utils/messageConversion.ts:50 * kind: function * core: platform * spec: (none) * summary: Maps a back to , concatenating text parts and preserving timestamp when available. * score: 4 ### function updateAgent * file: src/platform/cowork/agentsService.ts:79 * kind: function * core: platform * spec: (none) * summary: Patch an agent by id. RLS scopes the row to the caller's org; we never widen organization\_id. * score: 4 ### function updateConditionInGroup * file: src/platform/conditional-logic/builder/utils.ts:314 * kind: function * core: platform * spec: (none) * summary: Update a condition by ID * score: 1 ### function updateCustomTabContent * file: src/platform/telephony/lib/embeddable-tabs.ts:156 * kind: function * core: platform * spec: (none) * summary: Update the content of an existing custom tab * score: 4 ### function updateGroupLogic * file: src/platform/conditional-logic/builder/utils.ts:337 * kind: function * core: platform * spec: (none) * summary: Update a group's logic * score: 1 ### function uploadFile * file: src/platform/upload/service.ts:216 * kind: function * core: platform * spec: (none) * summary: Upload a file to storage with full validation, progress tracking,error handling, tenant isolation, and optional image processing. * score: 4 ### function userHasPermission * file: src/platform/navigation/search-catalog.ts:50 * kind: function * core: platform * spec: (none) * summary: Returns true when the user holds , or always true when is absent (open access within the module). * score: 4 ### function userScopePrefix * file: src/platform/cache/key-builder.ts:27 * kind: function * core: platform * spec: (none) * summary: Prefix for user-scoped invalidation: org-orgId:user-userId: * score: 4 ### function validateAllCustomFields * file: src/platform/custom-fields/utils.ts:133 * kind: function * core: platform * spec: (none) * summary: Validate all custom fields for an entity * score: 4 ### function validateApprovalChain * file: src/platform/templates/utils/resolvers.ts:123 * kind: function * core: platform * spec: (none) * summary: Validates that each approval step can be resolved and collects resolved approvers. Iterates the provided approval steps, attempts to resolve an approver for each step, stores resolved approvers keyed by , and records values for dynamic steps that could not be resolved. * params: * steps — The array of approval step configurations to validate. * submitterId — The ID of the user submitting the approval request; used by dynamic resolver logic. * organizationId — The organization ID used when resolving dynamic approvers. * returns: An object with: - : if all dynamic steps were resolved, otherwise. - : an array of numbers for dynamic steps that could not be resolved. - : a Map from to the resolved approver ID. * example: | const isValid, unresolvedSteps, resolvedApprovers = await validateApprovalChain(steps, 'user\_123', 'org\_abc'); * score: 4 ### function validateAsamOverride * file: src/platform/clinical/blocks/asam-loc-adapter.ts:117 * kind: function * core: platform * spec: (none) * summary: Validate the CL-49 override invariant before hitting the DB CHECK: when bothLOC codes are present and differ, an override reason code plus a rationale ofat least chars are required.Returns an error message, or null when valid. * score: 4 ### function validateBody * file: src/platform/notifications/utils/templateValidation.ts:57 * kind: function * core: platform * spec: (none) * summary: Validate body template constraints * score: 4 ### function validateBranchConfig * file: src/platform/wizards/utils/validateBranchPaths.ts:120 * kind: function * core: platform * spec: (none) * summary: Validate a single branch configuration * score: 4 ### function validateBuilderState * file: src/platform/conditional-logic/builder/utils.ts:436 * kind: function * core: platform * spec: (none) * summary: Validate the entire builder state * score: 4 ### function validateCode * file: src/platform/codes/validateCode.ts:17 * kind: function * core: platform * spec: (none) * summary: Utility for validate code. * score: 1 ### function validateCrossFieldRule * file: src/platform/conditional-logic/validation/utils.ts:111 * kind: function * core: platform * spec: (none) * summary: Validate a cross-field validation rule structure * score: 4 ### function validateCrossFieldRules * file: src/platform/wizards/utils/validation-executor.ts:276 * kind: function * core: platform * spec: (none) * summary: Validate cross-field rules * score: 1 ### function validateCrossModuleAccess * file: src/platform/wizards/hooks/useCrossModuleWizard.ts:152 * kind: function * core: platform * spec: (none) * summary: Check if a user has access to all modules in a cross-module wizard * score: 4 ### function validateCrossModuleTargets * file: src/platform/wizards/utils/crossModuleSubmit.ts:215 * kind: function * core: platform * spec: (none) * summary: Validate that all target tables exist and user has insert permissions * score: 4 ### function validateCustomField * file: src/platform/custom-fields/utils.ts:44 * kind: function * core: platform * spec: (none) * summary: Validate a single custom field value against its definition * score: 4 ### function validateDateRange * file: src/platform/conditional-logic/validation/crossFieldEvaluator.ts:187 * kind: function * core: platform * spec: (none) * summary: Validate a date range (start must be before end) * score: 4 ### function validateDiagram * file: src/platform/workflow/utils/diagramValidation.ts:55 * kind: function * core: platform * spec: (none) * summary: Validates a swim lane diagram for structural issues.Errors (blocking):- No start event- No end eventWarnings (advisory):- Orphan content nodes (no incoming AND no outgoing edges)- Decision nodes with fewer than 2 outgoing edges * params: * nodes — All diagram nodes (including structural) * edges — All diagram edges * returns: Validation result with errors and warnings * score: 4 ### function validateDirection * file: src/platform/table-v2/utils/sort/config.ts:34 * kind: function * core: platform * spec: (none) * summary: Validate sort direction * score: 1 ### function validateEventPayload * file: src/platform/events/eventPayloadValidation.ts:145 * kind: function * core: platform * spec: (none) * summary: Validate an event payload against its registered JSON Schema.This is a **pure function** — it has no side-effects, does not read fromthe database, and is safe to call from any context. * params: * payload — The event payload object to validate. * schema — The JSON Schema to validate against (from ). * returns: Validation result with flag and any error messages. * score: 4 ### function validateExpressionSyntax * file: src/platform/wizards/utils/validationExpressionEvaluator.ts:543 * kind: function * core: platform * spec: (none) * summary: Validate expression syntax without evaluating * score: 4 ### function validateField * file: src/platform/wizards/utils/validation-executor.ts:69 * kind: function * core: platform * spec: (none) * summary: Validate a single field against all its rules * score: 4 ### function validateFieldName * file: src/platform/table-v2/utils/filter/utils.ts:42 * kind: function * core: platform * spec: (none) * summary: Validate field name to prevent SQL injection.Only allows alphanumeric characters and underscores, must start with letter or underscore. * params: * field — Field name to validate * returns: True if valid, false otherwise * example: | validateFieldName('user\_id') // truevalidateFieldName('firstName') // truevalidateFieldName('123field') // falsevalidateFieldName('field-name') // false * score: 4 ### function validateFieldName * file: src/platform/table-v2/utils/sort/config.ts:27 * kind: function * core: platform * spec: (none) * summary: Validate field name to prevent injectionOnly allows alphanumeric characters and underscores, starting with letter or underscore * score: 4 ### function validateFieldValue * file: src/platform/data-manager/utils/rawDataValidation.ts:15 * kind: function * core: platform * spec: (none) * summary: Validate a field value against its definition * score: 4 ### function validateFile * file: src/platform/documents/utils/fileValidation.ts:124 * kind: function * core: platform * spec: (none) * summary: Validate a single file * score: 1 ### function validateFile * file: src/platform/upload/validation.ts:93 * kind: function * core: platform * spec: (none) * summary: Validate a file against organization settings or provided overrides. * score: 4 ### function validateFiles * file: src/platform/documents/utils/fileValidation.ts:167 * kind: function * core: platform * spec: (none) * summary: Validate multiple files and separate valid from invalid * score: 4 ### function validateFileSize * file: src/platform/upload/validation.ts:48 * kind: function * core: platform * spec: (none) * summary: Validate file size against maximum allowed. * score: 4 ### function validateFileType * file: src/platform/upload/validation.ts:22 * kind: function * core: platform * spec: (none) * summary: Validate file type against allowed MIME types.Also validates that extension matches MIME type for defense in depth. * score: 4 ### function validateFormData * file: src/platform/forms/validation.ts:376 * kind: function * core: platform * spec: (none) * summary: Validate form data against form schema * score: 4 ### function validateFormDataV2 * file: src/platform/forms/validationV2.ts:104 * kind: function * core: platform * spec: (none) * summary: Validate form data with V2 conditional logic support * params: * fields — Form field definitions * data — Form data to validate * returns: Validation result with detailed error information * score: 4 ### function validateImportRecords * file: src/platform/picklists/utils/importValidation.ts:85 * kind: function * core: platform * spec: (none) * summary: Validate parsed records for required fields, duplicates, and limits * score: 4 ### function validateImportRow * file: src/platform/data-manager/utils/rawDataImportUtils.ts:117 * kind: function * core: platform * spec: (none) * summary: Validate a row against field definitions * score: 4 ### function validateLayoutConfiguration * file: src/platform/page-layouts/utils.ts:125 * kind: function * core: platform * spec: (none) * summary: Validate layout configuration structure * score: 4 ### function validateLookupValuesAgainstOptions * file: src/platform/data-lookup/validateLookupSelection.ts:22 * kind: function * core: platform * spec: (none) * summary: Validate one or more lookup values against the loaded options.Returns an error message string if any value is invalid, or if all are valid. * params: * fieldLabel — Human-readable field name for the error message. * score: 4 ### function validateNestingDepth * file: src/platform/conditional-logic/builder/utils.ts:190 * kind: function * core: platform * spec: (none) * summary: Validate nesting depth doesn't exceed maximum * score: 4 ### function validateOperator * file: src/platform/table-v2/utils/filter/utils.ts:53 * kind: function * core: platform * spec: (none) * summary: Validate filter operator. * params: * operator — Operator to validate * returns: True if valid, false otherwise * score: 1 ### function validatePattern * file: src/platform/conditional-logic/utils/operators.ts:73 * kind: function * core: platform * spec: (none) * summary: Validate regex pattern for safetyReturns null if safe, error message if dangerous * score: 4 ### function validatePhoto * file: src/platform/headshot/utils/photo-validation.ts:17 * kind: function * core: platform * spec: (none) * summary: Validates a photo file for headshot upload. * score: 4 ### function validateRow * file: src/platform/data-manager/utils/csvUtils.ts:122 * kind: function * core: platform * spec: (none) * summary: Validate a single row against field definitions * score: 4 ### function validateScopes * file: src/platform/api-access/utils/key-utils.ts:175 * kind: function * core: platform * spec: (none) * summary: Validates that all provided scopes exist in the registry. * score: 4 ### function validateSingleRule * file: src/platform/wizards/utils/validation-executor.ts:96 * kind: function * core: platform * spec: (none) * summary: Validate a value against a single rule * score: 4 ### function validateSkuAgainstCatalog * file: src/platform/integrations/entra-skus.ts:55 * kind: function * core: platform * spec: (none) * summary: Validate a SKU id the admin entered/selected. With a live catalog the id mustbelong to the tenant; without one (fetch failed — credentials or consentmissing) only the GUID format is enforced so setup can proceed. * score: 4 ### function validateSlug * file: src/platform/organizations/slug.ts:32 * kind: function * core: platform * spec: (none) * summary: Validate a slug and return an error message if invalid. * score: 4 ### function validateSubdomain * file: src/platform/theming/utils/subdomain.ts:54 * kind: function * core: platform * spec: (none) * summary: Validate a subdomain label client-side.Rules:1. Must match (lowercase, starts/ends alphanumeric)2. Must be ≥ 3 characters and ≤ 63 characters (DNS label limit)3. Must not be in the reserved list * score: 4 ### function validateSubject * file: src/platform/notifications/utils/templateValidation.ts:50 * kind: function * core: platform * spec: (none) * summary: Validate subject line constraints * score: 4 ### function validateThemeContrast * file: src/platform/theming/utils/contrast.ts:209 * kind: function * core: platform * spec: (none) * summary: Validate critical contrast pairs for a theme's colors.Returns an array of issues; empty means all checks pass.Pairs checked (per spec §NFR-3):- text on background- text on surface- textMuted on background- textMuted on surface- primary on background (large text threshold)- destructive on background (large text threshold) * score: 4 ### function validateVariables * file: src/platform/templates/utils/variableResolver.ts:237 * kind: function * core: platform * spec: (none) * summary: Validate that all variables in a template have corresponding context values * score: 4 ### function validateWeightsSum * file: src/platform/settings/validators/processHealthSettings.ts:56 * kind: function * core: platform * spec: (none) * summary: Validates that health weights sum to 100. * params: * weights — Object with the four weight values. * returns: if the sum equals 100. * score: 4 ### function validateWizardPaths * file: src/platform/wizards/utils/validateBranchPaths.ts:21 * kind: function * core: platform * spec: (none) * summary: Validate all paths through a wizard to detect:- Unreachable steps (orphans)- Infinite loops (cycles)- Invalid branch targets * score: 4 ### function validationsFromBuilderFormat * file: src/platform/conditional-logic/validation/utils.ts:171 * kind: function * core: platform * spec: (none) * summary: Strip builder-only fields from validations for export(currently just ensures clean structure) * score: 4 ### function validationsToBuilderFormat * file: src/platform/conditional-logic/validation/utils.ts:160 * kind: function * core: platform * spec: (none) * summary: Convert validations to builder format (ensure IDs) * score: 4 ### function valueExistsInLookupOptions * file: src/platform/data-lookup/validateLookupSelection.ts:12 * kind: function * core: platform * spec: (none) * summary: Check whether a single value exists in the loaded lookup options. * score: 4 ### function verifyBiometric * file: src/platform/auth/app-lock/biometric-utils.ts:123 * kind: function * core: platform * spec: (none) * summary: Verify biometric identity using a previously enrolled credential. * returns: if verification succeeded, otherwise. * score: 4 ### function verifyDefaultsRestored * file: src/platform/theming/devChecks/verifyDefaultsRestored.ts:164 * kind: function * core: platform * spec: (none) * summary: Verify that the DOM has fully returned to platform defaults after a reset: - No inline overrides remain on . - Every semantic var resolves to its captured baseline value. * score: 4 ### function verifyDomainNow * file: src/platform/auth/sso/useSsoSetup.ts:90 * kind: function * core: platform * spec: (none) * summary: Step 2: ask the backend to check DNS TXT now; returns the resulting status. * score: 4 ### function verifyPin * file: src/platform/auth/app-lock/pin-utils.ts:67 * kind: function * core: platform * spec: (none) * summary: Verify a candidate PIN against a previously derived value.Returns when the candidate, combined with the same salt, producesthe same derived hex. * score: 4 ### function wasDischargeSummaryTimely * file: src/platform/clinical/blocks/discharge/timeliness.ts:101 * kind: function * core: platform * spec: (none) * summary: Whether an entered summary met the window: entered on or before the end ofthe due date. when it cannot be judged (no due date or no entry yet,or corrupt timestamps) — reporting must not count unknowns as either bucket. * score: 4 ### function withDbMetrics * file: src/platform/monitoring/api-metrics.ts:220 * kind: function * core: platform * spec: (none) * summary: Wrapper for Supabase client calls to track metrics * score: 4 ### function withErrorBoundary * file: src/platform/monitoring/withErrorBoundary.tsx:15 * kind: function * core: platform * spec: (none) * summary: Higher-order component to wrap any component with error boundary.Usage: const SafeComponent = withErrorBoundary(MyComponent, level: 'feature' ); * score: 4 ### function withErrorCapture * file: src/platform/monitoring/useErrorTracking.ts:139 * kind: function * core: platform * spec: (none) * summary: Helper to wrap async functions with automatic error logging and Sentry capture.Usage: const handleSubmit = withErrorCapture(async () = await saveForm(data); , module: 'fw', action: 'save\_form' ); * score: 4 ### function WizardPreviewStepContent * file: src/platform/wizards/components/WizardPreviewStepContent.tsx:21 * kind: function * core: platform * spec: (none) * summary: Utility for wizard preview step content. * score: 1 ### function WizardProgress * file: src/platform/wizards/components/WizardShell/progress/WizardProgress.tsx:32 * kind: function * core: platform * spec: (none) * summary: Utility for wizard progress. * score: 1 ### function writeAgentMemory * file: src/platform/ai/agentic/agent-memory-adapters.ts:45 * kind: function * core: platform * spec: (none) * summary: Persist a learned-context fact. Runs the two-path screen FIRST (fail-closed: if it throws, the RPCis never called and nothing is stored), then calls the screened-write RPC with raw +its redacted twin + . * score: 4 ### function zodToToolSchema * file: src/platform/ai/widgets/utils/zodToToolSchema.ts:24 * kind: function * core: platform * spec: (none) * summary: Convert a Zod schema to an AI tool function schema. * score: 4 ## Classes ### class AnalyticsCompileError * file: src/platform/analytics/semantic-compiler.ts:70 * kind: class * core: platform * spec: (none) * summary: Structured compile failure. maps to the FR/AC the request violated. * score: 4 ### class ArtifactScreenBlockedError * file: src/platform/ai/agentic/artifact-prompt-context.ts:48 * kind: class * core: platform * spec: (none) * summary: Thrown when an artifact version cannot be safely included in a prompt. Surfacing this (ratherthan degrading to raw/empty content) is the fail-closed contract: the caller assembling theprompt is expected to let it propagate so the model call never proceeds on unscreened content. * score: 4 ### class ChannelManager * file: src/platform/realtime/utils/ChannelManager.ts:23 * kind: class * core: platform * spec: (none) * summary: Represents channel manager. * score: 1 ### class CustomGestureRegistry * file: src/platform/gestures/registry/CustomGestureRegistry.ts:38 * kind: class * core: platform * spec: (none) * summary: Simple $1-style gesture recognizer.Compares drawn point paths against registered patterns by shape name.In the full implementation, this would use actual $1 unistroke recognition. * score: 4 ### class ErrorBoundary * file: src/platform/monitoring/ErrorBoundary.tsx:39 * kind: class * core: platform * spec: (none) * summary: Represents error boundary. * score: 1 ### class FilterError * file: src/platform/table-v2/utils/filter/errors.ts:21 * kind: class * core: platform * spec: (none) * summary: Custom error class for filter operations.Provides specific error codes and field path information. * score: 4 ### class NoActiveVendorBaaError * file: src/platform/transcription/hooks/useTranscriptionMutations.ts:52 * kind: class * core: platform * spec: (none) * summary: Error thrown when returns 422. Calling pages should surface this via an linking to . * score: 4 ### class OrgProfilePhiBlockedError * file: src/platform/ai/hooks/usePublishOrgProfileArticle.ts:37 * kind: class * core: platform * spec: (none) * summary: Thrown when the author-time scan detects PHI / injection — publish is blocked. * score: 4 ### class PdfBuilder * file: src/platform/documents/pdfGenerator.ts:416 * kind: class * core: platform * spec: (none) * summary: Fluent PDF builder for complex documents.Uses an async factory () so that jsPDF is loadeddynamically only when a PDF is actually being built. * score: 4 ### class PHIDetectedError * file: src/platform/wizards/utils/sanitizeAnalyticsEvent.ts:152 * kind: class * core: platform * spec: (none) * summary: Error thrown when PHI/PII is detected in data that should not contain it * score: 4 ### class PhiRedactionError * file: src/platform/ai/phi-redaction-core.ts:26 * kind: class * core: platform * spec: (none) * summary: Thrown by on invalid input. Fail-closed: callers MUST skip the LLM call. * score: 4 ### class ServiceWorkerLogger * file: src/platform/pwa/utils/swLifecycleLogger.ts:19 * kind: class * core: platform * spec: (none) * summary: Represents service worker logger. * score: 4 ### class SortError * file: src/platform/table-v2/utils/sort/errors.ts:12 * kind: class * core: platform * spec: (none) * summary: Error thrown when sort configuration is invalid * score: 4 ### class StepErrorBoundary * file: src/platform/wizards/components/steps/StepErrorBoundary.tsx:26 * kind: class * core: platform * spec: (none) * summary: Represents step error boundary. * score: 4 ### class TwoPathViolationError * file: src/platform/ai/phi-two-path-enforcer.ts:29 * kind: class * core: platform * spec: (none) * summary: Raised when a step needs unredacted PHI on a non-PHI-lane model — rejected, never sent degraded. * score: 4 # pm — Public API surface Source: https://docs.encoreos.io/api/pm Per-symbol API documentation for the pm area, generated from TSDoc blocks. Refresh with `npm run docs:api:generate`. # pm — Public API surface ## Types & interfaces ### type AiCodingDecision * file: src/cores/pm/hooks/useAiCodingDecisionMutation.ts:25 * kind: type * core: pm * spec: PM-64 * summary: The coder's decision on an AI coding suggestion: accepted as-is, rejected,accepted with edits, or partially accepted (a subset of suggested codes accepted).'partial' is included per spec v1.3 — the DB CHECK constraint already allows it.Use 'partial' when a coder accepts a subset of the suggested codes and recordswhich codes were applied in edit\_diff\_jsonb. * score: 5 ### interface AppConsentSheetProps * file: src/cores/pm/components/AppConsentSheet.tsx:34 * kind: interface * core: pm * spec: PM-55 * summary: Props for : the consent record to display (or when closed) plus the controlled open state and its change handler. * score: 5 ### interface AppointmentTelehealthSource * file: src/cores/pm/utils/telehealth-url.ts:27 * kind: interface * core: pm * spec: (none) * summary: Minimal shape of an appointment exposing the deprecated join-URL column.Accepts the full row or any object carrying these fields. * score: 2 ### type AuditResponseStep * file: src/cores/pm/hooks/useAuditResponseWizard.ts:43 * kind: type * core: pm * spec: PM-63 * summary: Ordered union of the six audit-response wizard steps — intake, timeline,evidence, QA, submission, and review. * score: 5 ### interface AuthorizationDetailAuth * file: src/cores/pm/hooks/useAuthorizationDetail47.ts:20 * kind: interface * core: pm * spec: PM-47 * summary: A single managed-care authorization record as returned by the detail query:identity, payer/patient, status, service type, effective/expiration dates, andauthorized vs. used units. * score: 5 ### interface AuthorizationDetailData * file: src/cores/pm/hooks/useAuthorizationDetail47.ts:57 * kind: interface * core: pm * spec: PM-47 * summary: Aggregate payload for the authorization detail view: the authorization plus itsassociated concurrent reviews and denial appeals. * score: 5 ### interface AuthUtilizationEntry * file: src/cores/pm/hooks/useAuthUtilization47.ts:19 * kind: interface * core: pm * spec: PM-47 * summary: A row in the authorization-utilization report: the authorization plus joinedpatient and payer names and the authorized/used unit counts used to computeremaining utilization. * score: 5 ### interface BatchChargeApprovalParams * file: src/cores/pm/hooks/useBatchChargeApproval.ts:30 * kind: interface * core: pm * spec: PM-24 * summary: Parameters for the batch charge-approval mutation: the charges to approve andan optional progress callback invoked as each charge is processed. * score: 5 ### interface BatchClaimGenerationParams * file: src/cores/pm/hooks/useBatchClaimGeneration.ts:28 * kind: interface * core: pm * spec: PM-24 * summary: Parameters for the batch claim-generation mutation: the approved charges, thepayer and billing-provider NPI to bill under, and an optional progresscallback. * score: 5 ### interface BatchClaimSubmissionParams * file: src/cores/pm/hooks/useBatchClaimSubmission.ts:30 * kind: interface * core: pm * spec: PM-24 * summary: Parameters for the batch claim-submission mutation: the claims to submit and anoptional progress callback invoked per claim. * score: 5 ### interface BatchEligibilityParams * file: src/cores/pm/hooks/useBatchEligibility.ts:25 * kind: interface * core: pm * spec: PM-24 * summary: Parameters for the batch eligibility-check mutation: the appointment ids tocheck and an optional progress callback invoked per appointment. * score: 5 ### interface BatchExecutionPayload * file: src/cores/pm/components/batch/wizard/batchOperationPayloadMapper.ts:21 * kind: interface * core: pm * spec: PM-24 * summary: Structured payload produced by the batch-operation wizard mapper: the resolved, the partial insert fields, and a human-readabledescription stored as job metadata. * score: 5 ### interface BatchJobDetailSheetProps * file: src/cores/pm/components/batch/BatchJobDetailSheet.tsx:32 * kind: interface * core: pm * spec: PM-24 * summary: Props for : controlled open state plus the whose batch-job record is loaded and rendered read-only. * score: 5 ### interface BatchJobListFilters * file: src/cores/pm/hooks/useBatchJobList.ts:20 * kind: interface * core: pm * spec: PM-24 * summary: Filter options for : optionally restrict the listedbatch jobs to a single job type. * score: 5 ### interface BatchOperationWizardProps * file: src/cores/pm/components/batch/wizard/BatchOperationWizard.tsx:81 * kind: interface * core: pm * spec: PM-24 * summary: Props for : controlled open state plus anoptional completion callback fired after the batch job finishes. * score: 5 ### interface BatchProgressDialogProps * file: src/cores/pm/components/batch/BatchProgressDialog.tsx:27 * kind: interface * core: pm * spec: PM-24 * summary: Props for : controlled open state, the batch, the live snapshot (or before start), a resultnoun for the completion message, and an optional view-history callback. * score: 5 ### interface BatchSelectionToolbarProps * file: src/cores/pm/components/batch/BatchSelectionToolbar.tsx:22 * kind: interface * core: pm * spec: PM-24 * summary: Props for : the selected-row count, the batchsize cap, the action label/permission, action and clear callbacks, and aprocessing flag that disables the action while a batch runs. * score: 5 ### interface BenefitData * file: src/cores/pm/utils/cost-estimation-engine.ts:10 * kind: interface * core: pm * spec: (none) * summary: Patient benefit data from insurance verification * score: 2 ### interface BillableCodeResult * file: src/cores/pm/services/careMgmtGateEngine.ts:133 * kind: interface * core: pm * spec: (none) * summary: Result of . * score: 1 ### interface CalculateEncounterCostParams * file: src/cores/pm/utils/costCalculation.ts:56 * kind: interface * core: pm * spec: (none) * summary: Parameters for calculating encounter cost. * score: 2 ### interface CalculationResult * file: src/cores/pm/utils/costCalculation.ts:47 * kind: interface * core: pm * spec: (none) * summary: Result of a full encounter cost calculation. * score: 2 ### interface CareMgmtTimeLogInput * file: src/cores/pm/hooks/useCareMgmtTimeLogMutation.ts:38 * kind: interface * core: pm * spec: (none) * summary: Input union for time-log creation.Both capture paths produce the same shapedistinguished only by . (FR-2 / AC-1.1) * score: 2 ### type ConnectionQuality * file: src/cores/pm/hooks/useTelehealthQualityMetrics.ts:20 * kind: type * core: pm * spec: (none) * summary: Connection-quality value domain (PM-13 spec CHECK on connection\_quality). * score: 2 ### interface CoordinatorOverrideInput * file: src/cores/pm/hooks/useMatchLogMutation.ts:57 * kind: interface * core: pm * spec: (none) * summary: Input for coordinator override * score: 2 ### interface CostBreakdownItem * file: src/cores/pm/utils/costCalculation.ts:33 * kind: interface * core: pm * spec: (none) * summary: Cost breakdown item representing one cost category's contribution. * score: 2 ### interface CredentialStatusForPayerNpi * file: src/cores/pm/hooks/credentialing/useCredentialStatusForPayerNpi.ts:11 * kind: interface * core: pm * spec: (none) * summary: PM-UX-07 T0.1 — Credential status shim for the Payer Enrollment Wizard.PM-17 (provider credentialing read API) is currently scaffolded. This shimreturns a deterministic placeholder so Step 3 can render and the wizard canproceed end-to-end. Replace once PM-17 ships a real read hook.TODO(PM-17): replace shim with real credential read. * score: 2 ### interface DemographicsData * file: src/cores/pm/components/kiosk/KioskDemographicsForm.tsx:45 * kind: interface * core: pm * spec: PM-34-EN-01 * summary: Snapshot of a patient's current demographics used to pre-populate the kioskverification step — name, preferred name/language, contact details, address,and emergency contact. * score: 5 ### interface DemographicsUpdateValues * file: src/cores/pm/components/kiosk/KioskDemographicsForm.tsx:79 * kind: interface * core: pm * spec: PM-34-EN-01 * summary: The subset of demographic fields a patient may edit at the kiosk and submitback — preferred name/language, phone, email, address, and emergency contact.All fields are optional so only changed values are sent. * score: 5 ### type DenialAppealStep * file: src/cores/pm/components/wizards/denial-appeal/useDenialAppealWizard.ts:30 * kind: type * core: pm * spec: PM-29 * summary: Union of the denial-appeal wizard step ids, derived from the ordered tuple so the step set and this type never drift apart. * score: 5 ### type EditDemographicsValues * file: src/cores/pm/components/EditPatientDemographicsDialog.tsx:50 * kind: type * core: pm * spec: PM-01 * summary: Form values for the edit-demographics dialog, inferred from the zod schema.Covers only the mutable demographic fields — MRN, DOB, legal name, and sex atbirth are excluded because they are read-only. * score: 5 ### interface EditPatientDemographicsDialogProps * file: src/cores/pm/components/EditPatientDemographicsDialog.tsx:62 * kind: interface * core: pm * spec: PM-01 * summary: Props for : controlled open state plusthe row used to pre-populate the editable demographic fields. * score: 5 ### interface EstimateCalculationInput * file: src/cores/pm/utils/cost-estimation-engine.ts:27 * kind: interface * core: pm * spec: (none) * summary: Input parameters for the cost estimation calculation * score: 2 ### interface EstimateCalculationResult * file: src/cores/pm/utils/cost-estimation-engine.ts:34 * kind: interface * core: pm * spec: (none) * summary: Calculated cost estimate result with itemized breakdown * score: 2 ### interface FailedClaimLine * file: src/cores/pm/components/auth-tracking/ValidationOverrideDialog.tsx:33 * kind: interface * core: pm * spec: PM-47 * summary: A single claim line that failed auth-to-claim validation, identified by itsline number and the human-readable failure reason shown to the reviewer. * score: 5 ### interface FairnessAttestationPayload * file: src/cores/pm/lib/fairnessAttestation.ts:54 * kind: interface * core: pm * spec: (none) * summary: The de-identified payload persisted as JSONB and rendered to PDF. * score: 2 ### interface GenerateClaimInput * file: src/cores/pm/hooks/useOtpClaimGeneration.ts:14 * kind: interface * core: pm * spec: (none) * summary: Input for claim generation * score: 1 ### interface GenerateEstimateFullParams * file: src/cores/pm/hooks/useCostEstimateMutations.ts:26 * kind: interface * core: pm * spec: (none) * summary: Extended params for estimate generation including benefit and rate data * score: 2 ### interface HealthSnapshot * file: src/cores/pm/services/clearinghouse/router.ts:23 * kind: interface * core: pm * spec: (none) * summary: Health snapshot for a vendor as observed by clearinghouse-health-check. * score: 2 ### interface InformationBlockingDispositionDialogProps * file: src/cores/pm/components/InformationBlockingDispositionDialog.tsx:30 * kind: interface * core: pm * spec: PM-55 * summary: Props for : the information-blockinglog being dispositioned (or when closed) plus controlled openstate. * score: 5 ### interface InstitutionalClaimContext * file: src/cores/pm/utils/claim-scrubbing.ts:39 * kind: interface * core: pm * spec: (none) * summary: PM-08-EN-14: Institutional (UB-04 / 837I) claim context.Mirrors columns relevant to scrubbing. * score: 2 ### interface IopPhpThresholds * file: src/cores/pm/utils/iop-php-compliance.ts:15 * kind: interface * core: pm * spec: (none) * summary: Optional jurisdiction-specific IOP/PHP thresholds. * score: 2 ### interface LinkedTelehealthSession * file: src/cores/pm/utils/telehealth-url.ts:39 * kind: interface * core: pm * spec: (none) * summary: Minimal shape of a linked PM-13 telehealth session row. * score: 2 ### interface ManagedCareAuthWithNames * file: src/cores/pm/hooks/useManagedCareAuthorizations.ts:19 * kind: interface * core: pm * spec: (none) * summary: Authorization row enriched with joined patient/payer names. * score: 2 ### interface ModelCardSource * file: src/cores/pm/lib/modelCardDisclosureMapping.ts:25 * kind: interface * core: pm * spec: (none) * summary: Minimal shape of a pm\_ai\_model\_cards row consumed by the mapping. * score: 2 ### interface OverrideInput * file: src/cores/pm/hooks/rcm-automation/useRcmOverride.ts:25 * kind: interface * core: pm * spec: PM-49 * summary: Input for an RCM execution override: the original execution id beingoverridden plus the reason code and free-text explanation recorded on the newaudit row. * score: 5 ### type PayerEnrollmentStep * file: src/cores/pm/components/wizards/payer-enrollment/usePayerEnrollmentWizard.ts:27 * kind: type * core: pm * spec: PM-46 * summary: Union of the payer-enrollment wizard step ids, derived from the ordered tuple so step navigation stays type-safe. * score: 5 ### type PayerSpecificConfigInput * file: src/cores/pm/utils/otp-payer-config-validation.ts:53 * kind: type * core: pm * spec: (none) * summary: Inferred type from the Zod schema * score: 2 ### interface PmModifierContext * file: src/cores/pm/utils/modifier-logic.ts:13 * kind: interface * core: pm * spec: (none) * summary: PM-07 modifier context — not the same as EncounterContext (clinical billing). * score: 2 ### type PMModuleSettingsFormValues * file: src/cores/pm/components/PMSettingsForm.tsx:69 * kind: type * core: pm * spec: PM-28 * summary: Form values for the PM module settings form, inferred from the zod settingsschema (eligibility cadence, place-of-service defaults, and related options). * score: 5 ### interface PredictiveDisclosureSourceAttributes * file: src/cores/pm/lib/modelCardDisclosureMapping.ts:54 * kind: interface * core: pm * spec: (none) * summary: The predictive-disclosure source attributes a model card supplies. Field namesmatch the cl\_dsi\_disclosures columns 1:1; this is the payload shape you can handto a predictive disclosure update. * score: 2 ### interface QuarterPeriod * file: src/cores/pm/lib/fairnessAttestation.ts:28 * kind: interface * core: pm * spec: (none) * summary: A reporting quarter window. * score: 1 ### type QueueBand * file: src/cores/pm/components/workbench/QueueSummaryPanel.tsx:34 * kind: type * core: pm * spec: PM-42 * summary: The four coordinator task-queue priority bands — overdue, today, this week,and deferred — used to bucket and filter the workbench task list. * score: 5 ### interface RateLookupResult * file: src/cores/pm/utils/cost-estimation-engine.ts:19 * kind: interface * core: pm * spec: (none) * summary: Result of a rate lookup for a specific CPT code * score: 2 ### interface RcmRuleTemplate * file: src/cores/pm/data/rcm-rule-templates.ts:18 * kind: interface * core: pm * spec: PM-49 * summary: Shape of a pre-built RCM automation rule template: identity and descriptionplus the rule/trigger type, priority, and the conditions and actions that arecloned when an operator instantiates the template. * score: 5 ### interface RecordAiCodingDecisionInput * file: src/cores/pm/hooks/useAiCodingDecisionMutation.ts:38 * kind: interface * core: pm * spec: PM-64 * summary: Input for recording a coder decision on an AI coding suggestion: thesuggestion and encounter ids, the decision, an optional rejection reason oredit diff, and any charge ids the decision applies to. * score: 5 ### type RevenueCodeMap * file: src/cores/pm/utils/claim-scrubbing.ts:50 * kind: type * core: pm * spec: (none) * summary: PM-08-EN-14: Per-line revenue code (paired by ).Used by institutional scrubbing — every line MUST have a revenue code. * score: 2 ### interface RpaDashboardMetrics * file: src/cores/pm/hooks/rpa/useRpaDashboard.ts:22 * kind: interface * core: pm * spec: PM-51 * summary: Aggregated metrics for the RPA monitoring dashboard: active bot count, today'sexecution count and success rate, pending staged documents, and recent failurecount. * score: 5 ### interface RuleSnapshotInput * file: src/cores/pm/services/careMgmtGateEngine.ts:287 * kind: interface * core: pm * spec: (none) * summary: Input type for . * score: 1 ### type ScrubRuleOverrideMap * file: src/cores/pm/utils/claim-scrubbing.ts:30 * kind: type * core: pm * spec: (none) * summary: PM-18: Override map keyed by rule\_key. * score: 2 ### interface SlaEvaluationInput * file: src/cores/pm/lib/referralSla.ts:7 * kind: interface * core: pm * spec: (none) * summary: PM-06-EN-01: SLA evaluation helpers for referrals.Pure functions used by hooks and the SLA scanner. No side effects. * score: 2 ### interface StatementPreviewDialogProps * file: src/cores/pm/components/statements/StatementPreviewDialog.tsx:18 * kind: interface * core: pm * spec: PM-16 * summary: Props for : controlled open state plus the whose PDF preview is shown. * score: 5 ### type TelehealthModality * file: src/cores/pm/utils/modifier-logic.ts:10 * kind: type * core: pm * spec: (none) * summary: Telehealth modality enum — matches DB telehealth\_modality type * score: 2 ### interface TelehealthQualitySession * file: src/cores/pm/hooks/useTelehealthQualityMetrics.ts:26 * kind: interface * core: pm * spec: (none) * summary: Minimal session shape the metrics read. Only the columns selected by thequery are present; patient/provider are UUIDs (no PHI name resolution). * score: 2 ### interface TelehealthUrlAccessContext * file: src/cores/pm/utils/telehealth-url.ts:44 * kind: interface * core: pm * spec: (none) * summary: UUID-only telemetry context for the structured deprecation warning (never PHI). * score: 2 ### interface TimedCodeBillingRules * file: src/cores/pm/utils/timed-codes.ts:9 * kind: interface * core: pm * spec: (none) * summary: Optional billing rules for jurisdiction-specific thresholds. * score: 2 ### interface UseAuthorizedAppsOptions * file: src/cores/pm/hooks/useAuthorizedApps.ts:21 * kind: interface * core: pm * spec: PM-55 * summary: Options for : the patient whose authorized FHIR appsto list, and whether to include revoked consents (default false). * score: 5 ### interface UseBatchOperationExecutionResult * file: src/cores/pm/hooks/useBatchOperationWizard.ts:176 * kind: interface * core: pm * spec: PM-24 * summary: Return shape of the batch-operation execution hook: an action thatruns the confirmed batch job for a scope while reporting progress, plus theassociated execution state. * score: 5 ### interface UseBatchPreviewResult * file: src/cores/pm/hooks/useBatchOperationWizard.ts:42 * kind: interface * core: pm * spec: PM-24 * summary: Return shape of the batch-operation preview hook: the cached preview estimate,in-progress and error state, a action that estimates affectedrecord counts for a scope, and a reset. * score: 5 ### interface UseCredentialStatusForPayerNpiArgs * file: src/cores/pm/hooks/credentialing/useCredentialStatusForPayerNpi.ts:28 * kind: interface * core: pm * spec: PM-17 * summary: Arguments for : the optional payer idand provider NPI whose credential status is requested. * score: 5 ### interface UseDenialAppealWizardOptions * file: src/cores/pm/components/wizards/denial-appeal/useDenialAppealWizard.ts:43 * kind: interface * core: pm * spec: PM-29 * summary: Options for : optional seed data, the payer'sappeal-deadline window in days (drives urgency), and a success callbackreceiving the created appeal id. * score: 5 ### interface UsePmOtpBillingPeriodsFilters * file: src/cores/pm/hooks/usePmOtpBillingPeriods.ts:16 * kind: interface * core: pm * spec: (none) * summary: Filter options for billing periods * score: 2 ### interface UsePmOtpProgramsFilters * file: src/cores/pm/hooks/usePmOtpPrograms.ts:16 * kind: interface * core: pm * spec: (none) * summary: Filter options for OTP programs * score: 2 ### interface UseRcmExecutionLogOptions * file: src/cores/pm/hooks/rcm-automation/useRcmExecutionLog.ts:21 * kind: interface * core: pm * spec: PM-49 * summary: Filter and pagination options for — by rule,result, and execution type, with page size and page index. * score: 5 ### interface UseRcmRulesListOptions * file: src/cores/pm/hooks/rcm-automation/useRcmRulesList.ts:21 * kind: interface * core: pm * spec: PM-49 * summary: Filter options for : restrict to templates, to activerules, and/or to a specific rule type. * score: 5 ### interface UseRcmWorkQueueOptions * file: src/cores/pm/hooks/rcm-automation/useRcmWorkQueue.ts:21 * kind: interface * core: pm * spec: PM-49 * summary: Filter and pagination options for — by status andassignee, with page size and page index. * score: 5 ### interface WaitlistAnalyticsData * file: src/cores/pm/hooks/useWaitlistAnalytics39.ts:10 * kind: interface * core: pm * spec: (none) * summary: Summary KPIs for the waitlist analytics dashboard. * score: 2 ### interface WizardData * file: src/cores/pm/components/payment-plans/PaymentPlanWizard.tsx:44 * kind: interface * core: pm * spec: PM-45 * summary: Accumulated form state for the patient payment-plan wizard: the patient andbalance, the installment schedule (frequency, amount, count, start date), thepayment method, and the captured consent. * score: 5 ## Hooks ### hook useActiveEnrollmentCount * file: src/cores/pm/hooks/useCapitationRosterEvents.ts:46 * kind: hook * core: pm * spec: (none) * summary: Returns the count of currently enrolled members for a contract(enrollment events minus disenrollment events). * score: 4 ### hook useActiveSlidingFeeSchedule * file: src/cores/pm/hooks/useActiveSlidingFeeSchedule.ts:13 * kind: hook * core: pm * spec: (none) * summary: Hook for managing active sliding fee schedule. * score: 1 ### hook useAgingSummary * file: src/cores/pm/hooks/useCollections45.ts:88 * kind: hook * core: pm * spec: (none) * summary: Aggregates aging summary (count + total by tier). * score: 4 ### hook useAiCodingDecisionMutation * file: src/cores/pm/hooks/useAiCodingDecisionMutation.ts:55 * kind: hook * core: pm * spec: PM-64 * summary: Mutation hook that records a coder's accept/edit/reject decision on an AIcoding suggestion, writing an immutable audit row and invalidating thesuggestion list cache on success. * returns: A TanStack mutation accepting a . * score: 5 ### hook useAiCodingSuggestionList * file: src/cores/pm/hooks/useAiCodingSuggestionList.ts:19 * kind: hook * core: pm * spec: PM-64 * summary: Loads the AI-generated coding suggestions for a single encounter, tenant-scopedto the current organization. Returns an empty list when no encounter isselected. * params: * encounterId — The encounter whose suggestions to load; short-circuits to an empty result. * returns: A TanStack query of the encounter's AI coding suggestions. * score: 5 ### hook useAiFairnessMetrics * file: src/cores/pm/hooks/useAiFairnessMetrics.ts:28 * kind: hook * core: pm * spec: (none) * summary: Fetch de-identified per-protected-class fairness metrics for the date range. * score: 4 ### hook useAnalyticsFunnel * file: src/cores/pm/hooks/useAnalyticsFunnel.ts:25 * kind: hook * core: pm * spec: PM-41 * summary: Loads aggregated intake-funnel analytics for the current organization from, scoped to the requested date range and optionalsite. * params: * params — Date range (/) and optional filter. * returns: A TanStack query resolving the aggregated funnel data. * score: 5 ### hook useAnalyticsFunnelSubscription * file: src/cores/pm/hooks/useAnalyticsFunnelSubscription.ts:16 * kind: hook * core: pm * spec: PM-41 * summary: Subscribes to realtime changes on for the givenorganization and invalidates the funnel query so the dashboard updates live. * params: * orgId — Organization to scope the realtime subscription to; disables it. * returns: Nothing; the hook manages the subscription lifecycle as a side effect. * score: 5 ### hook useAppealSubmissionList * file: src/cores/pm/hooks/useAppealSubmissionList.ts:13 * kind: hook * core: pm * spec: (none) * summary: Hook for managing appeal submission list. * score: 1 ### hook useAppealTemplateList * file: src/cores/pm/hooks/useAppealTemplateList.ts:13 * kind: hook * core: pm * spec: (none) * summary: Hook for managing appeal template list. * score: 1 ### hook useAppointmentDetail * file: src/cores/pm/hooks/useAppointmentDetail.ts:13 * kind: hook * core: pm * spec: (none) * summary: Hook for managing appointment detail. * score: 1 ### hook useAppointmentList * file: src/cores/pm/hooks/useAppointmentList.ts:14 * kind: hook * core: pm * spec: (none) * summary: Hook for managing appointment list. * score: 1 ### hook useAppointmentMutation * file: src/cores/pm/hooks/useAppointmentMutation.ts:50 * kind: hook * core: pm * spec: (none) * summary: Hook for managing appointment mutation. * score: 1 ### hook useAppointmentReminders * file: src/cores/pm/hooks/useAppointmentReminders.ts:18 * kind: hook * core: pm * spec: (none) * summary: Hook for managing appointment reminders. * score: 1 ### hook useApprovedChargesForClaim * file: src/cores/pm/hooks/useApprovedChargesForClaim.ts:14 * kind: hook * core: pm * spec: (none) * summary: Hook for managing approved charges for claim. * score: 1 ### hook useApproveWriteoff * file: src/cores/pm/hooks/useWriteoffs45.ts:84 * kind: hook * core: pm * spec: (none) * summary: Approves a write-off request. * score: 1 ### hook useArAging * file: src/cores/pm/hooks/useArAging.ts:13 * kind: hook * core: pm * spec: (none) * summary: Hook for managing ar aging. * score: 1 ### hook useAssessmentsDueForReverification * file: src/cores/pm/hooks/useAssessmentsDueForReverification.ts:20 * kind: hook * core: pm * spec: (none) * summary: Hook for managing assessments due for reverification. * score: 1 ### hook useAssistanceReferralMutation * file: src/cores/pm/hooks/useAssistanceReferrals.ts:61 * kind: hook * core: pm * spec: (none) * summary: Mutations for creating, updating, and managing referrals. * score: 4 ### hook useAssistanceReferrals * file: src/cores/pm/hooks/useAssistanceReferrals.ts:22 * kind: hook * core: pm * spec: (none) * summary: Fetch all assistance program referrals for a patient. * score: 4 ### hook useAuditResponseWizard * file: src/cores/pm/hooks/useAuditResponseWizard.ts:57 * kind: hook * core: pm * spec: PM-63 * summary: Central hook for the six-step audit-response wizard. Manages step navigation,per-step validation, and submission, using react-hook-form per step becausethis regulatory flow is tightly coupled rather than template-driven. * params: * onSuccess — Optional callback invoked with the created case id after asuccessful submission. * returns: The wizard state plus navigation, validation, and submission handlers. * score: 5 ### hook useAuditTrailList * file: src/cores/pm/hooks/useAuditTrailList.ts:14 * kind: hook * core: pm * spec: (none) * summary: Hook for managing audit trail list. * score: 1 ### hook useAuthAppeals * file: src/cores/pm/hooks/useAuthAppeals47.ts:12 * kind: hook * core: pm * spec: (none) * summary: Fetches denial appeals for a specific authorization. * score: 4 ### hook useAuthClaimValidation * file: src/cores/pm/hooks/useAuthClaimValidation47.ts:16 * kind: hook * core: pm * spec: (none) * summary: Validates claim lines against active authorizations.Called before claim submission as a validation gate. * score: 4 ### hook useAuthorizationDetail47 * file: src/cores/pm/hooks/useAuthorizationDetail47.ts:66 * kind: hook * core: pm * spec: (none) * summary: Fetches a single managed care authorization along with its reviews and appeals. * score: 4 ### hook useAuthorizedApps * file: src/cores/pm/hooks/useAuthorizedApps.ts:36 * kind: hook * core: pm * spec: PM-55 * summary: Lists the FHIR applications a patient has authorized, joining each accessconsent with its app registration metadata. Tenant-scoped via organization idand excludes revoked consents unless is set. * params: * options — The patient id and revoked-inclusion flag. * returns: A TanStack query of the patient's authorized app consents. * score: 5 ### hook useAuthReviewList * file: src/cores/pm/hooks/useAuthReviewList.ts:8 * kind: hook * core: pm * spec: (none) * summary: Hook for managing auth review list. * score: 1 ### hook useAuthUtilization * file: src/cores/pm/hooks/useAuthUtilization47.ts:39 * kind: hook * core: pm * spec: (none) * summary: Fetches authorization data enriched with utilization percentages for the report. * score: 4 ### hook useBatchChargeApproval * file: src/cores/pm/hooks/useBatchChargeApproval.ts:38 * kind: hook * core: pm * spec: (none) * summary: Hook for managing batch charge approval. * score: 1 ### hook useBatchClaimGeneration * file: src/cores/pm/hooks/useBatchClaimGeneration.ts:38 * kind: hook * core: pm * spec: (none) * summary: Hook for managing batch claim generation. * score: 1 ### hook useBatchClaimSubmission * file: src/cores/pm/hooks/useBatchClaimSubmission.ts:38 * kind: hook * core: pm * spec: (none) * summary: Hook for managing batch claim submission. * score: 1 ### hook useBatchEligibility * file: src/cores/pm/hooks/useBatchEligibility.ts:34 * kind: hook * core: pm * spec: (none) * summary: Hook for managing batch eligibility. * score: 1 ### hook useBatchJobDetail * file: src/cores/pm/hooks/useBatchJobDetail.ts:13 * kind: hook * core: pm * spec: (none) * summary: Hook for managing batch job detail. * score: 1 ### hook useBatchJobList * file: src/cores/pm/hooks/useBatchJobList.ts:27 * kind: hook * core: pm * spec: (none) * summary: Hook for managing batch job list. * score: 1 ### hook useBatchOperationExecution * file: src/cores/pm/hooks/useBatchOperationWizard.ts:191 * kind: hook * core: pm * spec: (none) * summary: Executes a batch operation job via PM-24, recording the operator rationaleand progress on the pm\_batch\_jobs row. * score: 4 ### hook useBatchOperationPreview * file: src/cores/pm/hooks/useBatchOperationWizard.ts:54 * kind: hook * core: pm * spec: (none) * summary: Runs a scope-based record count estimate without executing the batch job.Returns a cached preview; callers can use to force re-estimation. * score: 4 ### hook useBatchSettings * file: src/cores/pm/hooks/useBatchSettings.ts:12 * kind: hook * core: pm * spec: (none) * summary: Hook for managing batch settings. * score: 1 ### hook useBenefitDetails * file: src/cores/pm/hooks/useBenefitDetails.ts:14 * kind: hook * core: pm * spec: (none) * summary: Hook to load parsed benefit details for an eligibility check. * score: 4 ### hook useBenefitEstimate * file: src/cores/pm/hooks/useBenefitEstimate.ts:12 * kind: hook * core: pm * spec: (none) * summary: Hook to load saved benefit estimates for an eligibility check. * score: 4 ### hook useBulkAssignDenials * file: src/cores/pm/hooks/useClaimDenialMutation.ts:93 * kind: hook * core: pm * spec: (none) * summary: Hook for managing bulk assign denials. * score: 1 ### hook useBulkCreateContractedRates * file: src/cores/pm/hooks/useContractedRateMutation.ts:99 * kind: hook * core: pm * spec: (none) * summary: Provides bulk create contracted rates queries and mutation actions scoped to the current organization. * score: 4 ### hook useBulkCreateEdiEnrollments * file: src/cores/pm/hooks/useEdiEnrollmentMutation.ts:93 * kind: hook * core: pm * spec: (none) * summary: Bulk-creates enrollment stubs for all 4 transaction types for a given payer+NPI. * score: 4 ### hook useBulkCreateRosterEventsMutation * file: src/cores/pm/hooks/useCapitationRosterEvents.ts:97 * kind: hook * core: pm * spec: (none) * summary: Bulk inserts roster events (for CSV import). * score: 4 ### hook useCalculateBenefitEstimate * file: src/cores/pm/hooks/useCalculateBenefitEstimate.ts:21 * kind: hook * core: pm * spec: (none) * summary: Hook to request a fresh patient-responsibility estimate. * score: 4 ### hook useCancelPatientPaymentPlan * file: src/cores/pm/hooks/usePatientPaymentPlans45.ts:143 * kind: hook * core: pm * spec: (none) * summary: Soft-cancels a payment plan (sets deleted\_at + status cancelled). * score: 4 ### hook useCapitationContract * file: src/cores/pm/hooks/useCapitationContracts.ts:44 * kind: hook * core: pm * spec: (none) * summary: Fetches a single capitation contract by ID. * score: 4 ### hook useCapitationContractList * file: src/cores/pm/hooks/useCapitationContracts.ts:17 * kind: hook * core: pm * spec: (none) * summary: Fetches capitation contracts for an organization.Default sort: effective\_from DESC (most recent first) per CONTEXT.md. * score: 4 ### hook useCapitationContractMutation * file: src/cores/pm/hooks/useCapitationContracts.ts:66 * kind: hook * core: pm * spec: (none) * summary: Creates or updates a capitation contract. * score: 4 ### hook useCapitationPeriod * file: src/cores/pm/hooks/useCapitationPeriods.ts:34 * kind: hook * core: pm * spec: (none) * summary: Fetches a single period by ID. * score: 4 ### hook useCapitationPeriodList * file: src/cores/pm/hooks/useCapitationPeriods.ts:12 * kind: hook * core: pm * spec: (none) * summary: Fetches capitation periods for a contract.Default sort: period\_start\_date DESC per CONTEXT.md. * score: 4 ### hook useCapitationReconciliationList * file: src/cores/pm/hooks/useCapitationReconciliations.ts:15 * kind: hook * core: pm * spec: (none) * summary: Fetches reconciliations for a contract.Default sort: reconciled\_at DESC per CONTEXT.md. * score: 4 ### hook useCapitationRosterEventList * file: src/cores/pm/hooks/useCapitationRosterEvents.ts:23 * kind: hook * core: pm * spec: (none) * summary: Fetches roster events for a contract.Default sort: effective\_date DESC per CONTEXT.md. * score: 4 ### hook useCarcCodes * file: src/cores/pm/hooks/useReasonCodes.ts:12 * kind: hook * core: pm * spec: (none) * summary: Hook for managing carc codes. * score: 1 ### hook useCareMgmtKillSwitch * file: src/cores/pm/hooks/useCareMgmtKillSwitch.ts:30 * kind: hook * core: pm * spec: (none) * summary: Read the kill-switch state for the organisation. * score: 4 ### hook useCareMgmtKillSwitchMutation * file: src/cores/pm/hooks/useCareMgmtKillSwitch.ts:75 * kind: hook * core: pm * spec: (none) * summary: Toggle the master and per-payer kill switches.Writes are scoped to the caller's org row; RLS enforces tenant isolation. Therow is updated in place (PM-28 owns creation), so thesemutations assume the org settings row already exists. * score: 4 ### hook useCareMgmtLiveTimer * file: src/cores/pm/hooks/useCareMgmtLiveTimer.ts:82 * kind: hook * core: pm * spec: (none) * summary: Live-timer state hook for care-management sessions.Usage: * score: 4 ### hook useCareMgmtPayerPolicyList * file: src/cores/pm/hooks/useCareMgmtPayerPolicy.ts:34 * kind: hook * core: pm * spec: (none) * summary: List payer-policy rows for an organization. * score: 4 ### hook useCareMgmtPayerPolicyMutation * file: src/cores/pm/hooks/useCareMgmtPayerPolicy.ts:77 * kind: hook * core: pm * spec: (none) * summary: Create / update / delete payer-policy rows. * score: 4 ### hook useCareMgmtPostCharge * file: src/cores/pm/hooks/useCareMgmtWorklistActions.ts:68 * kind: hook * core: pm * spec: (none) * summary: Post the charge for a passing-but-withheld worklist period (Task 4.1 / AC-2.2). * score: 4 ### hook useCareMgmtReEvaluate * file: src/cores/pm/hooks/useCareMgmtWorklistActions.ts:43 * kind: hook * core: pm * spec: (none) * summary: Re-run the gate evaluation for a worklist period (no force-post). * score: 4 ### hook useCareMgmtTimeLogMutation * file: src/cores/pm/hooks/useCareMgmtTimeLogMutation.ts:120 * kind: hook * core: pm * spec: (none) * summary: Mutation hook for creating a care-management time-log entry.Flow:1. Call RPC (server-side credential gate).2. If gate fails → throw ; no row inserted.3. If gate passes → INSERT into .Both live\_timer and retrospective paths use this same hook and produce thesame row shape. (FR-2 / AC-1.1) * score: 4 ### hook useCareMgmtVoidCharge * file: src/cores/pm/hooks/useCareMgmtWorklistActions.ts:104 * kind: hook * core: pm * spec: (none) * summary: Void an auto-posted charge back to the worklist (AC-2.3 / FR-7). * score: 4 ### hook useCareMgmtWorklist * file: src/cores/pm/hooks/useCareMgmtWorklist.ts:84 * kind: hook * core: pm * spec: (none) * summary: Fetch the billing-coordinator worklist for the current organisation. * score: 4 ### hook useChargeDetail * file: src/cores/pm/hooks/useChargeDetail.ts:19 * kind: hook * core: pm * spec: (none) * summary: Hook for managing charge detail. * score: 1 ### hook useChargeList * file: src/cores/pm/hooks/useChargeList.ts:22 * kind: hook * core: pm * spec: (none) * summary: Hook for managing charge list. * score: 1 ### hook useChargeMutation * file: src/cores/pm/hooks/useChargeMutation.ts:94 * kind: hook * core: pm * spec: (none) * summary: Hook for managing charge mutation. * score: 1 ### hook useChargeReconciliationResults * file: src/cores/pm/hooks/useChargeReconciliationResults.ts:13 * kind: hook * core: pm * spec: (none) * summary: Hook for fetching charge reconciliation results. * score: 1 ### hook useChargeReconciliationSummary * file: src/cores/pm/hooks/useChargeReconciliationSummary.ts:16 * kind: hook * core: pm * spec: (none) * summary: Hook for fetching latest charge reconciliation summary. * score: 1 ### hook useChargeReconTrends * file: src/cores/pm/hooks/useChargeReconciliationSummary.ts:45 * kind: hook * core: pm * spec: (none) * summary: Hook for fetching charge reconciliation trends (last N days). * score: 1 ### hook useCharityCareApplicationMutation * file: src/cores/pm/hooks/useCharityCareApplications.ts:63 * kind: hook * core: pm * spec: (none) * summary: Mutations for creating, updating, and approving charity care applications. * score: 4 ### hook useCharityCareApplications * file: src/cores/pm/hooks/useCharityCareApplications.ts:17 * kind: hook * core: pm * spec: (none) * summary: Fetch all charity care applications for a patient. * score: 4 ### hook useChartByPatientIdentity * file: src/cores/pm/hooks/useChartByPatientIdentity.ts:14 * kind: hook * core: pm * spec: (none) * summary: Given a pf\_patient\_identities.id, find the associated cl\_patient\_charts.id.Returns the chart ID string if found, null otherwise. * score: 4 ### hook useCheckinDiscrepancies * file: src/cores/pm/hooks/useCheckinDiscrepancies.ts:19 * kind: hook * core: pm * spec: (none) * summary: Fetches check-in discrepancies for a given appointment. * params: * appointmentId — The appointment to fetch discrepancies for * options — Optional filters * returns: Query result with discrepancy rows * score: 4 ### hook useCheckinEligibilityResult * file: src/cores/pm/hooks/useCheckinEligibilityResult.ts:20 * kind: hook * core: pm * spec: (none) * summary: Fetches the latest eligibility check result for a given appointment. * params: * appointmentId — The appointment to fetch eligibility for * returns: Query result with the latest eligibility check row * score: 4 ### hook useClaimDenialDetail * file: src/cores/pm/hooks/useClaimDenialDetail.ts:13 * kind: hook * core: pm * spec: (none) * summary: Hook for managing claim denial detail. * score: 1 ### hook useClaimDenialList * file: src/cores/pm/hooks/useClaimDenialList.ts:21 * kind: hook * core: pm * spec: (none) * summary: Hook for managing claim denial list. * score: 1 ### hook useClaimDetail * file: src/cores/pm/hooks/useClaimDetail.ts:13 * kind: hook * core: pm * spec: (none) * summary: Hook for managing claim detail. * score: 1 ### hook useClaimLineage * file: src/cores/pm/hooks/useClaimLineage.ts:29 * kind: hook * core: pm * spec: (none) * summary: Hook that returns the lineage chain for a given claim, ordered by created\_at ascending. * score: 4 ### hook useClaimList * file: src/cores/pm/hooks/useClaimList.ts:22 * kind: hook * core: pm * spec: (none) * summary: Hook for managing claim list. * score: 1 ### hook useClaimMutation * file: src/cores/pm/hooks/useClaimMutation.ts:19 * kind: hook * core: pm * spec: (none) * summary: Hook for managing claim mutation. * score: 1 ### hook useClaimSubmissionWizard * file: src/cores/pm/wizards/claim-submission/hooks/useClaimSubmissionWizard.ts:91 * kind: hook * core: pm * spec: (none) * summary: Hook factory: cross-step wizard state for PM-UX-05. * score: 4 ### hook useClaimWorkQueueItem * file: src/cores/pm/hooks/rcm-automation/useRcmWorkQueueClaim.ts:15 * kind: hook * core: pm * spec: (none) * summary: Claims a work queue item for the current user. * score: 4 ### hook useCleanClaimRateReport * file: src/cores/pm/hooks/useComplianceReports.ts:55 * kind: hook * core: pm * spec: (none) * summary: Hook for managing clean claim rate report. * score: 1 ### hook useClearanceMetrics * file: src/cores/pm/hooks/useClearanceMetrics.ts:16 * kind: hook * core: pm * spec: (none) * summary: Fetch aggregated financial clearance metrics for the dashboard. * params: * filters — Optional filters (date range, payer, service type) * score: 4 ### hook useClearinghouseConfigDetail * file: src/cores/pm/hooks/useClearinghouseConfig.ts:73 * kind: hook * core: pm * spec: (none) * summary: Hook for managing clearinghouse config detail. * score: 1 ### hook useClearinghouseConfigList * file: src/cores/pm/hooks/useClearinghouseConfig.ts:27 * kind: hook * core: pm * spec: (none) * summary: Hook for managing clearinghouse config list. * score: 1 ### hook useClearinghouseConfigMutation * file: src/cores/pm/hooks/useClearinghouseConfig.ts:106 * kind: hook * core: pm * spec: (none) * summary: Hook for managing clearinghouse config mutation. * score: 1 ### hook useCodingPatternsReport * file: src/cores/pm/hooks/useCodingPatternsReport.ts:20 * kind: hook * core: pm * spec: (none) * summary: Hook for managing coding patterns report. * score: 1 ### hook useCollectionActionsForPatient * file: src/cores/pm/hooks/useCollections45.ts:62 * kind: hook * core: pm * spec: (none) * summary: Fetches the action log for a specific patient (for supervisor review sheet). * score: 4 ### hook useCollectionsQueue * file: src/cores/pm/hooks/useCollections45.ts:20 * kind: hook * core: pm * spec: (none) * summary: Fetches the collections queue — distinct patients with aging data from collection\_actions. * score: 4 ### hook useCompleteWorkQueueItem * file: src/cores/pm/hooks/rcm-automation/useRcmWorkQueueClaim.ts:86 * kind: hook * core: pm * spec: (none) * summary: Completes a work queue item. * score: 1 ### hook useConcurrentReviews * file: src/cores/pm/hooks/useConcurrentReviews47.ts:16 * kind: hook * core: pm * spec: (none) * summary: Fetches concurrent reviews for a specific authorization. * score: 4 ### hook useContractedRateLookup * file: src/cores/pm/hooks/useContractedRateLookup.ts:20 * kind: hook * core: pm * spec: (none) * summary: Hook for managing contracted rate lookup. * score: 1 ### hook useContractModelingWizard * file: src/cores/pm/hooks/useContractModelingWizard.ts:96 * kind: hook * core: pm * spec: (none) * summary: Hook for the PM-UX-19 contract modeling simulation wizard. * score: 1 ### hook useCoordinatorOverride * file: src/cores/pm/hooks/useMatchLogMutation.ts:78 * kind: hook * core: pm * spec: (none) * summary: Creates a coordinator override match log entry.Inserts a new log entry with coordinator\_override=true. * score: 4 ### hook useCoordinatorTaskList * file: src/cores/pm/hooks/useCoordinatorTaskList.ts:35 * kind: hook * core: pm * spec: (none) * summary: Fetches the coordinator task list with filters and sorting.Automatically scopes to the current organization. Returns empty arraywhen organization is not yet loaded. * score: 4 ### hook useCoordinatorTasksRealtime * file: src/cores/pm/hooks/useCoordinatorTasksRealtime.ts:29 * kind: hook * core: pm * spec: (none) * summary: Subscribes to realtime changes on coordinator tasks.On any INSERT, UPDATE, or DELETE, invalidates the task list queryso the workbench stays in sync without manual polling. * returns: Realtime connection state (isConnected, lastUpdated, error). * score: 4 ### hook useCostCategories * file: src/cores/pm/hooks/useCostCategories.ts:20 * kind: hook * core: pm * spec: (none) * summary: Fetches all cost categories for the current organization. * score: 4 ### hook useCostEstimateDetail * file: src/cores/pm/hooks/useCostEstimateDetail.ts:16 * kind: hook * core: pm * spec: (none) * summary: Fetch a single cost estimate with line items. * params: * estimateId — UUID of the cost estimate to fetch * score: 4 ### hook useCostEstimateList * file: src/cores/pm/hooks/useCostEstimateList.ts:17 * kind: hook * core: pm * spec: (none) * summary: Fetch a list of cost estimates for a given patient. * params: * patientId — Patient UUID to fetch estimates for * filters — Optional filters (status, clearance, service type, date range) * score: 4 ### hook useCostRates * file: src/cores/pm/hooks/useCostRates.ts:27 * kind: hook * core: pm * spec: (none) * summary: Fetches cost rates for the current organization with optional filters. * score: 4 ### hook useCptBreakdown * file: src/cores/pm/hooks/useCptBreakdown.ts:23 * kind: hook * core: pm * spec: (none) * summary: Fetches CPT-level breakdown for a payer's underpaid reconciliation results. * score: 4 ### hook useCreateAppealSubmission * file: src/cores/pm/hooks/useAppealSubmissionMutation.ts:18 * kind: hook * core: pm * spec: (none) * summary: Hook for managing create appeal submission. * score: 1 ### hook useCreateAppealTemplate * file: src/cores/pm/hooks/useAppealTemplateMutation.ts:17 * kind: hook * core: pm * spec: (none) * summary: Hook for managing create appeal template. * score: 1 ### hook useCreateAuthAppeal * file: src/cores/pm/hooks/useAuthAppeals47.ts:37 * kind: hook * core: pm * spec: (none) * summary: Creates a denial appeal. * score: 1 ### hook useCreateAuthReview * file: src/cores/pm/hooks/useAuthReviewMutation.ts:14 * kind: hook * core: pm * spec: (none) * summary: Hook for managing create auth review. * score: 1 ### hook useCreateClaimDenial * file: src/cores/pm/hooks/useClaimDenialMutation.ts:17 * kind: hook * core: pm * spec: (none) * summary: Hook for managing create claim denial. * score: 1 ### hook useCreateConcurrentReview * file: src/cores/pm/hooks/useConcurrentReviews47.ts:66 * kind: hook * core: pm * spec: (none) * summary: Creates a concurrent review. * score: 1 ### hook useCreateContractedRate * file: src/cores/pm/hooks/useContractedRateMutation.ts:14 * kind: hook * core: pm * spec: (none) * summary: Provides create contracted rate queries and mutation actions scoped to the current organization. * score: 4 ### hook useCreateCostCategory * file: src/cores/pm/hooks/useCostCategories.ts:47 * kind: hook * core: pm * spec: (none) * summary: Mutation to create a cost category. * score: 4 ### hook useCreateCostRate * file: src/cores/pm/hooks/useCostRates.ts:69 * kind: hook * core: pm * spec: (none) * summary: Mutation to create a cost rate. * score: 4 ### hook useCreateCustomEdit * file: src/cores/pm/hooks/useCustomEditMutation.ts:51 * kind: hook * core: pm * spec: (none) * summary: Mutation hook to create a custom scrub edit. * score: 4 ### hook useCreateEdiEnrollment * file: src/cores/pm/hooks/useEdiEnrollmentMutation.ts:26 * kind: hook * core: pm * spec: (none) * summary: Creates a single EDI enrollment record. * score: 4 ### hook useCreateExternalReferral * file: src/cores/pm/hooks/useExternalReferrals45.ts:53 * kind: hook * core: pm * spec: (none) * summary: Creates a new external referral. * score: 4 ### hook useCreateInstallments * file: src/cores/pm/hooks/usePaymentPlanInstallments.ts:47 * kind: hook * core: pm * spec: (none) * summary: Batch-inserts installments for a newly created payment plan. * score: 4 ### hook useCreateManagedCareAuth * file: src/cores/pm/hooks/useAuthorizationMutation47.ts:12 * kind: hook * core: pm * spec: (none) * summary: Creates a new managed care authorization. * score: 4 ### hook useCreateMatchLog * file: src/cores/pm/hooks/useMatchLogMutation.ts:19 * kind: hook * core: pm * spec: (none) * summary: Creates a new match log entry (immutable audit record). * score: 4 ### hook useCreatePatientPaymentPlan * file: src/cores/pm/hooks/usePatientPaymentPlans45.ts:84 * kind: hook * core: pm * spec: (none) * summary: Creates a new patient payment plan. * score: 4 ### hook useCreatePayerContract * file: src/cores/pm/hooks/usePayerContractMutation.ts:14 * kind: hook * core: pm * spec: (none) * summary: Hook for managing create payer contract. * score: 1 ### hook useCreatePriorAuthorization * file: src/cores/pm/hooks/usePriorAuthorizationMutation.ts:15 * kind: hook * core: pm * spec: (none) * summary: Hook for managing create prior authorization. * score: 1 ### hook useCreateRcmRule * file: src/cores/pm/hooks/rcm-automation/useRcmRuleMutation.ts:16 * kind: hook * core: pm * spec: (none) * summary: Creates a new RCM automation rule. * score: 4 ### hook useCreateReconciliationMutation * file: src/cores/pm/hooks/useCapitationReconciliations.ts:70 * kind: hook * core: pm * spec: (none) * summary: Creates a new reconciliation record. * score: 4 ### hook useCreateReplacementClaim * file: src/cores/pm/hooks/useCreateReplacementClaim.ts:24 * kind: hook * core: pm * spec: (none) * summary: Hook for creating a replacement claim from a voided/adjusted source claim.Returns the new claim ID for navigation. * score: 1 ### hook useCreateRosterEventMutation * file: src/cores/pm/hooks/useCapitationRosterEvents.ts:69 * kind: hook * core: pm * spec: (none) * summary: Creates a single roster event. * score: 4 ### hook useCreateWriteoffRequest * file: src/cores/pm/hooks/useWriteoffs45.ts:50 * kind: hook * core: pm * spec: (none) * summary: Creates a write-off request (status = pending). * score: 4 ### hook useCredentialStatusForPayerNpi * file: src/cores/pm/hooks/credentialing/useCredentialStatusForPayerNpi.ts:37 * kind: hook * core: pm * spec: (none) * summary: Returns a typed placeholder credential status for a payer-NPI pair.Performs no network calls. * score: 4 ### hook useCustomEdits * file: src/cores/pm/hooks/useCustomEdits.ts:11 * kind: hook * core: pm * spec: (none) * summary: Fetches custom scrub edits for the given organization. * score: 4 ### hook useDeleteContractedRate * file: src/cores/pm/hooks/useContractedRateMutation.ts:77 * kind: hook * core: pm * spec: (none) * summary: Provides delete contracted rate queries and mutation actions scoped to the current organization. * score: 4 ### hook useDeleteCustomEdit * file: src/cores/pm/hooks/useCustomEditMutation.ts:167 * kind: hook * core: pm * spec: (none) * summary: Mutation hook to delete a custom scrub edit (hard delete). * score: 4 ### hook useDeleteRevenueCodeMapping * file: src/cores/pm/hooks/useRevenueCodeMappings.ts:96 * kind: hook * core: pm * spec: (none) * summary: Delete a revenue code mapping (admin only via RLS). * score: 4 ### hook useDenialAnalysis * file: src/cores/pm/hooks/useDenialAnalysis.ts:13 * kind: hook * core: pm * spec: (none) * summary: Hook for managing denial analysis. * score: 1 ### hook useDenialAnalytics * file: src/cores/pm/hooks/useDenialAnalytics.ts:36 * kind: hook * core: pm * spec: (none) * summary: Hook for computing denial analytics KPIs from pm\_claim\_denials. * score: 1 ### hook useDenialAppealWizard * file: src/cores/pm/components/wizards/denial-appeal/useDenialAppealWizard.ts:75 * kind: hook * core: pm * spec: PM-29 * summary: Central hook for the denial-appeal wizard. Manages step navigation andcompletion, holds the accumulating wizard data, computes the appeal deadlineand urgency from jurisdiction/payer rules, and handles appeal creation andsubmission. * params: * opts — Optional seed data, payer deadline window, and success callback. * returns: The wizard state plus navigation, mutation, and submission handlers. * score: 5 ### hook useDenialPrediction * file: src/cores/pm/hooks/useDenialPrediction.ts:11 * kind: hook * core: pm * spec: (none) * summary: Fetches the latest denial prediction for a given claim within an organization. * score: 4 ### hook useDenialPredictionDashboard * file: src/cores/pm/hooks/useDenialPredictionDashboard.ts:18 * kind: hook * core: pm * spec: (none) * summary: Fetches aggregated model performance metrics from the denial-prediction-metrics edge function. * score: 4 ### hook useDenialPredictions * file: src/cores/pm/hooks/useDenialPredictions.ts:23 * kind: hook * core: pm * spec: (none) * summary: Fetches a paginated, filterable list of denial predictions for an organization. * score: 4 ### hook useDenialsList * file: src/cores/pm/hooks/useDenialsList.ts:13 * kind: hook * core: pm * spec: (none) * summary: Hook for managing denials list. * score: 1 ### hook useDenyWriteoff * file: src/cores/pm/hooks/useWriteoffs45.ts:136 * kind: hook * core: pm * spec: (none) * summary: Denies a write-off request. * score: 1 ### hook useDispositionTransitionMutation * file: src/cores/pm/hooks/useCapitationReconciliations.ts:145 * kind: hook * core: pm * spec: (none) * summary: Updates the disposition of a reconciliation with state machine validation.Notes are required for every transition per CONTEXT.md. * score: 4 ### hook useDoubleBookingCheck * file: src/cores/pm/hooks/useDoubleBookingCheck.ts:34 * kind: hook * core: pm * spec: (none) * summary: Hook for managing double booking check. * score: 1 ### hook useDuplicateCandidates * file: src/cores/pm/hooks/useDuplicateCandidates.ts:22 * kind: hook * core: pm * spec: (none) * summary: Hook returning duplicate candidate groups for the active organization. * score: 4 ### hook useEdiAgingData * file: src/cores/pm/hooks/useEdiDashboard.ts:101 * kind: hook * core: pm * spec: (none) * summary: Computes aging buckets for non-active enrollments. * score: 4 ### hook useEdiDashboardStats * file: src/cores/pm/hooks/useEdiDashboard.ts:45 * kind: hook * core: pm * spec: (none) * summary: Computes summary stats from all active enrollments. * score: 4 ### hook useEdiEnrollmentDetail * file: src/cores/pm/hooks/useEdiEnrollmentDetail.ts:15 * kind: hook * core: pm * spec: (none) * summary: Fetches a single EDI enrollment with status history timeline. * score: 4 ### hook useEdiEnrollmentMatrix * file: src/cores/pm/hooks/useEdiEnrollmentMatrix.ts:18 * kind: hook * core: pm * spec: (none) * summary: Fetches all EDI enrollments for the current org and pivots them into a matrixkeyed by payer+NPI with columns for each transaction type. * score: 4 ### hook useEdiStatusTransition * file: src/cores/pm/hooks/useEdiStatusTransition.ts:26 * kind: hook * core: pm * spec: (none) * summary: Transitions an EDI enrollment to a new status via the server-side RPC,which validates the transition and writes history atomically. * score: 4 ### hook useEdiTimeToEnrollment * file: src/cores/pm/hooks/useEdiDashboard.ts:144 * kind: hook * core: pm * spec: (none) * summary: Computes average time-to-enrollment (application → active) by month, last 6 months. * score: 4 ### hook useEligibilityCheckList * file: src/cores/pm/hooks/useEligibilityCheckList.ts:14 * kind: hook * core: pm * spec: (none) * summary: Hook for managing eligibility check list. * score: 1 ### hook useEligibilityCheckMutation * file: src/cores/pm/hooks/useEligibilityCheckMutation.ts:29 * kind: hook * core: pm * spec: (none) * summary: Hook for managing eligibility check mutation. * score: 1 ### hook useEncounterCosts * file: src/cores/pm/hooks/useEncounterCosts.ts:27 * kind: hook * core: pm * spec: (none) * summary: Fetches encounter cost records for the current organization with optional filters. * score: 4 ### hook useEraFileList * file: src/cores/pm/hooks/useEraFileList.ts:17 * kind: hook * core: pm * spec: (none) * summary: Hook for managing era file list. * score: 1 ### hook useEraGapReport * file: src/cores/pm/hooks/useEraGapReport.ts:27 * kind: hook * core: pm * spec: (none) * summary: Queries payers that have at least one enrollment but lack active 835 or EFT enrollment.Sorted by payer name. Per CONTEXT.md: "Start Enrollment" action for not\_started. * score: 4 ### hook useEraOrphanPendingCount * file: src/cores/pm/hooks/useEraOrphans.ts:46 * kind: hook * core: pm * spec: (none) * summary: PM-09-EN-16: Count of pending orphan lines for the current org (for tab badge). * score: 4 ### hook useEraOrphans * file: src/cores/pm/hooks/useEraOrphans.ts:13 * kind: hook * core: pm * spec: (none) * summary: PM-09-EN-16: Loads ERA orphan queue lines for the current organization. * score: 4 ### hook useExternalReferralList * file: src/cores/pm/hooks/useExternalReferrals45.ts:24 * kind: hook * core: pm * spec: (none) * summary: Lists external referrals with optional status filter. * score: 4 ### hook useFairnessAttestationExport * file: src/cores/pm/hooks/useFairnessAttestationExport.ts:100 * kind: hook * core: pm * spec: (none) * summary: Returns and . The whole flow is gatedupstream by the permission (UI + RLS). * score: 4 ### hook useFeeScheduleEntries * file: src/cores/pm/hooks/useFeeScheduleEntries.ts:13 * kind: hook * core: pm * spec: (none) * summary: Hook for managing fee schedule entries. * score: 1 ### hook useFeeScheduleList * file: src/cores/pm/hooks/useFeeScheduleList.ts:13 * kind: hook * core: pm * spec: (none) * summary: Hook for managing fee schedule list. * score: 1 ### hook useFeeScheduleMutation * file: src/cores/pm/hooks/useFeeScheduleMutation.ts:16 * kind: hook * core: pm * spec: (none) * summary: Hook for managing fee schedule mutation. * score: 1 ### hook useFeeScheduleRateLookup * file: src/cores/pm/hooks/useFeeScheduleRateLookup.ts:19 * kind: hook * core: pm * spec: (none) * summary: Hook for managing fee schedule rate lookup. * score: 1 ### hook useFinancialAssistanceDetail * file: src/cores/pm/hooks/useFinancialAssistance.ts:53 * kind: hook * core: pm * spec: (none) * summary: Hook for managing financial assistance detail. * score: 1 ### hook useFinancialAssistanceList * file: src/cores/pm/hooks/useFinancialAssistance.ts:22 * kind: hook * core: pm * spec: (none) * summary: Hook for managing financial assistance list. * score: 1 ### hook useFinancialAssistanceMutation * file: src/cores/pm/hooks/useFinancialAssistance.ts:81 * kind: hook * core: pm * spec: (none) * summary: Hook for managing financial assistance mutation. * score: 1 ### hook useFinancialCounselingSessionMutation * file: src/cores/pm/hooks/useFinancialCounselingSessions.ts:45 * kind: hook * core: pm * spec: (none) * summary: Mutations for creating and updating financial counseling sessions. * score: 4 ### hook useFinancialCounselingSessions * file: src/cores/pm/hooks/useFinancialCounselingSessions.ts:17 * kind: hook * core: pm * spec: (none) * summary: Fetch all financial counseling sessions for a patient. * score: 4 ### hook useFplThresholds * file: src/cores/pm/hooks/useFplThresholds.ts:13 * kind: hook * core: pm * spec: (none) * summary: Fetch all FPL thresholds for a given calendar year (admin view). * params: * year — Calendar year to filter by. If undefined, returns empty. * score: 4 ### hook useFraudAbuseFlags * file: src/cores/pm/hooks/useFraudAbuseFlags.ts:8 * kind: hook * core: pm * spec: (none) * summary: Hook for managing fraud abuse flags. * score: 1 ### hook useGenerateAppealLetterDraft * file: src/cores/pm/hooks/useGenerateAppealLetterDraft.ts:46 * kind: hook * core: pm * spec: PM-29-EN-01 * summary: Mutation hook to generate an AI appeal letter draft from the pm-ai-appeal-letter edge function.Returns from TanStack Query.The returned draft populates ; the biller edits it before proceeding. * score: 4 ### hook useGenerateCostEstimate * file: src/cores/pm/hooks/useCostEstimateMutations.ts:36 * kind: hook * core: pm * spec: (none) * summary: Generate a new cost estimate with line items.Automatically checks threshold for PM-32 financial counseling referral. * score: 4 ### hook useGeneratePeriodMutation * file: src/cores/pm/hooks/useCapitationPeriods.ts:64 * kind: hook * core: pm * spec: (none) * summary: Generates a new capitation period with duplicate guard. * score: 4 ### hook useGenerateSecondaryClaim * file: src/cores/pm/hooks/useGenerateSecondaryClaim.ts:22 * kind: hook * core: pm * spec: (none) * summary: Generates a secondary or tertiary claim from primary adjudication data. * returns: Mutation for generating secondary claims * score: 4 ### hook useGenerateSuperbill * file: src/cores/pm/hooks/useGenerateSuperbill.ts:95 * kind: hook * core: pm * spec: (none) * summary: Hook for managing generate superbill. * score: 1 ### hook useGfeAppointmentCptMapping * file: src/cores/pm/hooks/useGfeAppointmentCptMapping.ts:16 * kind: hook * core: pm * spec: (none) * summary: Hook for managing gfe appointment cpt mapping. * score: 1 ### hook useGfeAppointmentCptMappingMutation * file: src/cores/pm/hooks/useGfeAppointmentCptMapping.ts:49 * kind: hook * core: pm * spec: (none) * summary: Hook for managing gfe appointment cpt mapping mutation. * score: 1 ### hook useGfeDetail * file: src/cores/pm/hooks/useGfeDetail.ts:13 * kind: hook * core: pm * spec: (none) * summary: Hook for managing gfe detail. * score: 1 ### hook useGfeDisputeList * file: src/cores/pm/hooks/useGfeDisputeList.ts:18 * kind: hook * core: pm * spec: (none) * summary: Hook for managing gfe dispute list. * score: 1 ### hook useGfeDisputeMutation * file: src/cores/pm/hooks/useGfeDisputeMutation.ts:17 * kind: hook * core: pm * spec: (none) * summary: Hook for managing gfe dispute mutation. * score: 1 ### hook useGfeList * file: src/cores/pm/hooks/useGfeList.ts:20 * kind: hook * core: pm * spec: (none) * summary: Hook for managing gfe list. * score: 1 ### hook useGfeMutation * file: src/cores/pm/hooks/useGfeMutation.ts:17 * kind: hook * core: pm * spec: (none) * summary: Hook for managing gfe mutation. * score: 1 ### hook useGroupDefinitionDetail * file: src/cores/pm/hooks/useGroupDefinitionDetail.ts:12 * kind: hook * core: pm * spec: (none) * summary: Hook for managing group definition detail. * score: 1 ### hook useGroupDefinitionMutation * file: src/cores/pm/hooks/useGroupDefinitionMutation.ts:17 * kind: hook * core: pm * spec: (none) * summary: Hook for managing group definition mutation. * score: 1 ### hook useGroupDefinitionsList * file: src/cores/pm/hooks/useGroupDefinitionsList.ts:14 * kind: hook * core: pm * spec: (none) * summary: Hook for managing group definitions list. * score: 1 ### hook useGroupEnrollmentMutation * file: src/cores/pm/hooks/useGroupEnrollmentMutation.ts:18 * kind: hook * core: pm * spec: (none) * summary: Hook for managing group enrollment mutation. * score: 1 ### hook useGroupEnrollmentsList * file: src/cores/pm/hooks/useGroupEnrollmentsList.ts:14 * kind: hook * core: pm * spec: (none) * summary: Hook for managing group enrollments list. * score: 1 ### hook useGroupScheduleList * file: src/cores/pm/hooks/useGroupScheduleList.ts:14 * kind: hook * core: pm * spec: (none) * summary: Hook for managing group schedule list. * score: 1 ### hook useGroupScheduleMutation * file: src/cores/pm/hooks/useGroupScheduleMutation.ts:18 * kind: hook * core: pm * spec: (none) * summary: Hook for managing group schedule mutation. * score: 1 ### hook useInstallmentsByPlan * file: src/cores/pm/hooks/usePaymentPlanInstallments.ts:21 * kind: hook * core: pm * spec: (none) * summary: Lists installments for a specific payment plan. * score: 4 ### hook useInstitutionalClaim * file: src/cores/pm/hooks/useInstitutionalClaim.ts:34 * kind: hook * core: pm * spec: (none) * summary: Fetch the institutional details row for a claim. * score: 4 ### hook useInsurancePolicyList * file: src/cores/pm/hooks/useInsurancePolicyList.ts:14 * kind: hook * core: pm * spec: (none) * summary: Hook for managing insurance policy list. * score: 1 ### hook useInsurancePolicyMutation * file: src/cores/pm/hooks/useInsurancePolicyMutation.ts:17 * kind: hook * core: pm * spec: (none) * summary: Hook for managing insurance policy mutation. * score: 1 ### hook useIntakeMatchSettings * file: src/cores/pm/hooks/useIntakeMatchSettings.ts:20 * kind: hook * core: pm * spec: (none) * summary: Reads intake match settings from pm\_module\_settings for the current org. * returns: IntakeMatchSettings with defaults applied for null values * score: 4 ### hook useKioskArrivalNotification * file: src/cores/pm/hooks/useKioskArrivalNotification.ts:25 * kind: hook * core: pm * spec: (none) * summary: Hook for sending arrival notification after kiosk check-in completion. * score: 1 ### hook useKioskConsentSigning * file: src/cores/pm/hooks/useKioskConsentSigning.ts:34 * kind: hook * core: pm * spec: (none) * summary: Hook for retrieving pending consents and submitting signatures at kiosk.Accesses CL-11 data via platform integration layer (read-only). * score: 1 ### hook useKioskDemographicsUpdate * file: src/cores/pm/hooks/useKioskDemographicsUpdate.ts:19 * kind: hook * core: pm * spec: (none) * summary: Hook for loading and updating patient demographics from kiosk. * score: 1 ### hook useKioskInsuranceCapture * file: src/cores/pm/hooks/useKioskInsuranceCapture.ts:25 * kind: hook * core: pm * spec: (none) * summary: Hook for capturing insurance card images and linking to kiosk session. * score: 1 ### hook useKioskPatientLookup * file: src/cores/pm/hooks/useKioskPatientLookup.ts:32 * kind: hook * core: pm * spec: (none) * summary: Performs patient lookup for kiosk check-in.Returns a lookup function that takes DOB + last name params. * score: 4 ### hook useKioskPayment * file: src/cores/pm/hooks/useKioskPayment.ts:28 * kind: hook * core: pm * spec: (none) * summary: Hook for kiosk copay payment flow\.Phase A: Payment terminal integration is stubbed. * score: 1 ### hook useKioskSession * file: src/cores/pm/hooks/useKioskSession.ts:25 * kind: hook * core: pm * spec: (none) * summary: Hook for managing kiosk check-in session lifecycle. * score: 1 ### hook useKioskSessions * file: src/cores/pm/hooks/useKioskSessions.ts:21 * kind: hook * core: pm * spec: (none) * summary: Hook for staff-facing kiosk session monitoring.Returns active and recently completed sessions for a site. * score: 1 ### hook useLogCollectionAction * file: src/cores/pm/hooks/useCollections45.ts:115 * kind: hook * core: pm * spec: (none) * summary: Logs a collection action (append-only). * score: 4 ### hook useManagedCareAuthorizations * file: src/cores/pm/hooks/useManagedCareAuthorizations.ts:54 * kind: hook * core: pm * spec: (none) * summary: Fetches a paginated, filtered list of managed care authorizations with patient/payer names. * score: 4 ### hook useMarkPreadmissionException * file: src/cores/pm/hooks/usePreadmissionMutations.ts:33 * kind: hook * core: pm * spec: (none) * summary: Marks a preadmission packet as an exception (bypasses completion requirement). * score: 4 ### hook useMarkReferralSlaBreached * file: src/cores/pm/hooks/useReferralSlaEvaluation.ts:38 * kind: hook * core: pm * spec: (none) * summary: Mark a referral as SLA-breached. Single-flight: only updates rows where to prevent duplicate notification triggers. * score: 4 ### hook useMatchLogList * file: src/cores/pm/hooks/useMatchLog.ts:20 * kind: hook * core: pm * spec: (none) * summary: Queries the pm\_appointment\_match\_log table with optional filters. * params: * filters — Optional filters for override status, date range, and pagination * returns: Paginated match log entries * score: 4 ### hook useMergeLog * file: src/cores/pm/hooks/useMergeLog.ts:22 * kind: hook * core: pm * spec: (none) * summary: Hook that returns merge log rows for the active organization. * score: 4 ### hook useMergePatients * file: src/cores/pm/hooks/useMergePatients.ts:25 * kind: hook * core: pm * spec: (none) * summary: Hook that merges two PM patient records via the RPC.Returns the new merge log id on success. * score: 4 ### hook useModifierRuleSimulation * file: src/cores/pm/hooks/useModifierRuleSimulation.ts:18 * kind: hook * core: pm * spec: (none) * summary: Simulates modifier rule evaluation for a given payer + modifiers + CPT.Only runs when is provided and has at least one modifier code. * score: 4 ### hook useModifierUsageReport * file: src/cores/pm/hooks/useModifierUsageReport.ts:20 * kind: hook * core: pm * spec: (none) * summary: Hook for managing modifier usage report. * score: 1 ### hook useOtpChargeGeneration * file: src/cores/pm/hooks/useOtpChargeGeneration.ts:20 * kind: hook * core: pm * spec: (none) * summary: Generates a charge from an approved OTP billing period.Requires pm.otp.manage permission and period status = 'approved'.Note: pm\_charges requires cpt\_code, provider\_id, patient\_id, service\_date.The caller must provide provider\_id and the primary bundled code. * score: 4 ### hook useOtpClaimGeneration * file: src/cores/pm/hooks/useOtpClaimGeneration.ts:30 * kind: hook * core: pm * spec: (none) * summary: Generates a claim from an OTP billing period that already has a charge.Checks PM-10 prior auth when payer config requires it (warning only for MVP). * score: 4 ### hook useOverrideClearance * file: src/cores/pm/hooks/useCostEstimateMutations.ts:198 * kind: hook * core: pm * spec: (none) * summary: Override financial clearance for clinical emergencies.Requires documented reason and supervisor approval. * score: 4 ### hook useOverrideEvents * file: src/cores/pm/hooks/useInternalControls.ts:8 * kind: hook * core: pm * spec: (none) * summary: Hook for managing override events. * score: 1 ### hook usePacketSchedulingReadiness * file: src/cores/pm/hooks/usePacketSchedulingReadiness.ts:21 * kind: hook * core: pm * spec: (none) * summary: Hook that returns scheduling-readiness state for a packet assignment. * score: 4 ### hook usePatientDetail * file: src/cores/pm/hooks/usePatientDetail.ts:13 * kind: hook * core: pm * spec: (none) * summary: Hook for managing patient detail. * score: 1 ### hook usePatientDuplicateCheck * file: src/cores/pm/hooks/usePatientDuplicateCheck.ts:14 * kind: hook * core: pm * spec: (none) * summary: Hook for managing patient duplicate check. * score: 1 ### hook usePatientFinancialAssessmentDetail * file: src/cores/pm/hooks/usePatientFinancialAssessmentDetail.ts:13 * kind: hook * core: pm * spec: (none) * summary: Hook for managing patient financial assessment detail. * score: 1 ### hook usePatientFinancialAssessmentList * file: src/cores/pm/hooks/usePatientFinancialAssessmentList.ts:13 * kind: hook * core: pm * spec: (none) * summary: Hook for managing patient financial assessment list. * score: 1 ### hook usePatientFinancialAssessmentMutation * file: src/cores/pm/hooks/usePatientFinancialAssessmentMutation.ts:44 * kind: hook * core: pm * spec: (none) * summary: Hook for managing patient financial assessment mutation. * score: 1 ### hook usePatientIdentifierConfig * file: src/cores/pm/hooks/usePatientIdentifierConfig.ts:40 * kind: hook * core: pm * spec: (none) * summary: Hook returning profile-driven identifier labels, format hints, and alias-first flag. * params: * siteId — Optional site UUID for site-level profile override. * score: 3 ### hook usePatientList * file: src/cores/pm/hooks/usePatientList.ts:64 * kind: hook * core: pm * spec: (none) * summary: Hook for managing patient list. * score: 1 ### hook usePatientMergeResolutionWizard * file: src/cores/pm/hooks/usePatientMergeResolutionWizard.ts:55 * kind: hook * core: pm * spec: (none) * summary: Drives the 5-step Patient Merge Resolution Wizard for PM-UX-16.Accepts the two patient candidates from the caller and returnsstep state + mutation handlers. * score: 4 ### hook usePatientMutation * file: src/cores/pm/hooks/usePatientMutation.ts:28 * kind: hook * core: pm * spec: (none) * summary: Hook for managing patient mutation. * score: 1 ### hook usePatientPaymentPlanDetail * file: src/cores/pm/hooks/usePatientPaymentPlans45.ts:57 * kind: hook * core: pm * spec: (none) * summary: Fetches a single payment plan by ID. * score: 4 ### hook usePatientPaymentPlanList * file: src/cores/pm/hooks/usePatientPaymentPlans45.ts:24 * kind: hook * core: pm * spec: (none) * summary: Fetches a paginated, filtered list of patient payment plans. * score: 4 ### hook usePatientPolicies * file: src/cores/pm/hooks/usePatientPolicies.ts:20 * kind: hook * core: pm * spec: (none) * summary: Fetches active insurance policies for a patient, ordered by priority\_order. * params: * patientId — The patient to fetch policies for * returns: Query result with insurance policy rows * score: 4 ### hook usePatientSiteTransferList * file: src/cores/pm/hooks/usePatientSiteTransferList.ts:12 * kind: hook * core: pm * spec: (none) * summary: Hook for managing patient site transfer list. * score: 1 ### hook usePatientSiteTransferMutation * file: src/cores/pm/hooks/usePatientSiteTransferMutation.ts:16 * kind: hook * core: pm * spec: (none) * summary: Hook for managing patient site transfer mutation. * score: 1 ### hook usePayerContractDetail * file: src/cores/pm/hooks/usePayerContractDetail.ts:17 * kind: hook * core: pm * spec: (none) * summary: Hook for managing payer contract detail. * score: 1 ### hook usePayerContractList * file: src/cores/pm/hooks/usePayerContractList.ts:14 * kind: hook * core: pm * spec: (none) * summary: Hook for managing payer contract list. * score: 1 ### hook usePayerEnrollmentList * file: src/cores/pm/hooks/usePayerEnrollment.ts:23 * kind: hook * core: pm * spec: (none) * summary: Hook for managing payer enrollment list. * score: 1 ### hook usePayerEnrollmentMutation * file: src/cores/pm/hooks/usePayerEnrollment.ts:70 * kind: hook * core: pm * spec: (none) * summary: Hook for managing payer enrollment mutation. * score: 1 ### hook usePayerEnrollmentWizard * file: src/cores/pm/components/wizards/payer-enrollment/usePayerEnrollmentWizard.ts:46 * kind: hook * core: pm * spec: PM-46 * summary: Central hook for the payer-enrollment wizard. Manages step navigation andcompletion, persists an in-progress draft to localStorage, and on submitdual-writes to and . * params: * opts — Optional success callback receiving the created enrollment id. * returns: The wizard state plus navigation, draft, and submission handlers. * score: 5 ### hook usePayerList * file: src/cores/pm/hooks/usePayerList.ts:14 * kind: hook * core: pm * spec: (none) * summary: Hook for managing payer list. * score: 1 ### hook usePayerMix * file: src/cores/pm/hooks/usePayerMix.ts:13 * kind: hook * core: pm * spec: (none) * summary: Hook for managing payer mix. * score: 1 ### hook usePayerModifierRuleDetail * file: src/cores/pm/hooks/usePayerModifierRuleDetail.ts:11 * kind: hook * core: pm * spec: (none) * summary: Fetches a single payer modifier rule. * score: 4 ### hook usePayerModifierRuleList * file: src/cores/pm/hooks/usePayerModifierRuleList.ts:12 * kind: hook * core: pm * spec: (none) * summary: Fetches payer modifier rules for an organization with optional filters. * score: 4 ### hook usePayerModifierRuleMutation * file: src/cores/pm/hooks/usePayerModifierRuleMutation.ts:47 * kind: hook * core: pm * spec: (none) * summary: Provides create, update, and soft-delete mutations for payer modifier rules. * score: 4 ### hook usePayerModifierRuleVersions * file: src/cores/pm/hooks/usePayerModifierRuleVersions.ts:11 * kind: hook * core: pm * spec: (none) * summary: Fetches version history for a specific rule, ordered newest-first. * score: 4 ### hook usePayerMutation * file: src/cores/pm/hooks/usePayerMutation.ts:17 * kind: hook * core: pm * spec: (none) * summary: Hook for managing payer mutation. * score: 1 ### hook usePayerScorecard * file: src/cores/pm/hooks/usePayerPerformance.ts:25 * kind: hook * core: pm * spec: (none) * summary: Scorecard data from latest snapshots per payer. * score: 4 ### hook usePaymentApplicationList * file: src/cores/pm/hooks/usePaymentApplicationList.ts:18 * kind: hook * core: pm * spec: (none) * summary: Hook for managing payment application list. * score: 1 ### hook usePaymentApplicationMutation * file: src/cores/pm/hooks/usePaymentApplicationMutation.ts:19 * kind: hook * core: pm * spec: (none) * summary: Hook for managing payment application mutation. * score: 1 ### hook usePaymentDetail * file: src/cores/pm/hooks/usePaymentDetail.ts:13 * kind: hook * core: pm * spec: (none) * summary: Hook for managing payment detail. * score: 1 ### hook usePaymentList * file: src/cores/pm/hooks/usePaymentList.ts:22 * kind: hook * core: pm * spec: (none) * summary: Hook for managing payment list. * score: 1 ### hook usePaymentMutation * file: src/cores/pm/hooks/usePaymentMutation.ts:19 * kind: hook * core: pm * spec: (none) * summary: Hook for managing payment mutation. * score: 1 ### hook usePaymentPlanDashboard * file: src/cores/pm/hooks/usePaymentPlanDashboard.ts:21 * kind: hook * core: pm * spec: (none) * summary: Fetches KPI data for the payment plan reporting dashboard. * score: 4 ### hook usePaymentPlanDetail * file: src/cores/pm/hooks/usePaymentPlans.ts:53 * kind: hook * core: pm * spec: (none) * summary: Hook for managing payment plan detail. * score: 1 ### hook usePaymentPlanList * file: src/cores/pm/hooks/usePaymentPlans.ts:22 * kind: hook * core: pm * spec: (none) * summary: Hook for managing payment plan list. * score: 1 ### hook usePaymentPlanMutation * file: src/cores/pm/hooks/usePaymentPlans.ts:81 * kind: hook * core: pm * spec: (none) * summary: Hook for managing payment plan mutation. * score: 1 ### hook usePendingConcurrentReviews * file: src/cores/pm/hooks/useConcurrentReviews47.ts:41 * kind: hook * core: pm * spec: (none) * summary: Fetches all pending concurrent reviews across authorizations (worklist). * score: 4 ### hook usePmConversations * file: src/cores/pm/hooks/messaging/usePmConversations.ts:14 * kind: hook * core: pm * spec: (none) * summary: Hook for managing pm conversations. * score: 1 ### hook usePmCreateConversation * file: src/cores/pm/hooks/messaging/usePmCreateConversation.ts:15 * kind: hook * core: pm * spec: (none) * summary: Hook for managing pm create conversation. * score: 1 ### hook usePmMessageNotifications * file: src/cores/pm/hooks/messaging/usePmMessageNotifications.ts:19 * kind: hook * core: pm * spec: (none) * summary: Hook for managing pm message notifications. * score: 1 ### hook usePmModuleSettings * file: src/cores/pm/hooks/usePmModuleSettings.ts:12 * kind: hook * core: pm * spec: (none) * summary: Hook for managing pm module settings. * score: 1 ### hook usePmModuleSettingsUpsert * file: src/cores/pm/hooks/usePmModuleSettingsUpsert.ts:26 * kind: hook * core: pm * spec: (none) * summary: Hook for managing pm module settings upsert. * score: 1 ### hook usePmOtpBillingPeriodMutation * file: src/cores/pm/hooks/usePmOtpBillingPeriodMutation.ts:17 * kind: hook * core: pm * spec: (none) * summary: Provides createPeriod and transitionStatus mutations for OTP billing periods. * score: 4 ### hook usePmOtpBillingPeriods * file: src/cores/pm/hooks/usePmOtpBillingPeriods.ts:25 * kind: hook * core: pm * spec: (none) * summary: Fetches OTP billing periods for a patient within an organization.Gated by pm.otp.view permission. Default sort: period\_start\_date DESC. * score: 4 ### hook usePmOtpProgramMutation * file: src/cores/pm/hooks/usePmOtpProgramMutation.ts:17 * kind: hook * core: pm * spec: (none) * summary: Provides createProgram and updateProgram mutations for OTP programs.Both enforce organization\_id defense-in-depth and invalidate query cache on success. * score: 4 ### hook usePmOtpPrograms * file: src/cores/pm/hooks/usePmOtpPrograms.ts:24 * kind: hook * core: pm * spec: (none) * summary: Fetches OTP programs for an organization.Gated by pm.otp.view permission. Default sort: name ASC. * score: 4 ### hook usePmOtpServiceComponentMutation * file: src/cores/pm/hooks/usePmOtpServiceComponentMutation.ts:18 * kind: hook * core: pm * spec: (none) * summary: Provides addComponent, updateComponent, and deleteComponent mutations.All enforce organization\_id defense-in-depth. * score: 4 ### hook usePmOtpServiceComponents * file: src/cores/pm/hooks/usePmOtpServiceComponents.ts:18 * kind: hook * core: pm * spec: (none) * summary: Fetches service components for a specific OTP billing period.Gated by pm.otp.view permission. Default sort: service\_date ASC. * score: 4 ### hook usePmSendMessage * file: src/cores/pm/hooks/messaging/usePmSendMessage.ts:14 * kind: hook * core: pm * spec: (none) * summary: Hook for managing pm send message. * score: 1 ### hook usePmSudCheck * file: src/cores/pm/hooks/messaging/usePmSudCheck.ts:31 * kind: hook * core: pm * spec: (none) * summary: Hook for managing pm sud check.PHI/42-CFR-Part-2 safety note: a genuine failure of the chart lookup is surfaced via/ and defaults to (fail-closed) so SUD data isnever disclosed on an indeterminate check. The CL-11 consent RPC not yet existing isNOT an error — it degrades to () by design. * score: 1 ### hook usePortalAppointments * file: src/cores/pm/hooks/usePortalAppointments.ts:17 * kind: hook * core: pm * spec: (none) * summary: Hook for managing portal appointments. * score: 1 ### hook usePortalBalance * file: src/cores/pm/hooks/usePortalBilling.ts:53 * kind: hook * core: pm * spec: (none) * summary: Fetch patient's outstanding balance summary * score: 4 ### hook usePortalCancelAppointment * file: src/cores/pm/hooks/usePortalAppointments.ts:80 * kind: hook * core: pm * spec: (none) * summary: Cancel an appointment from the portal * score: 4 ### hook usePortalClinicalSummary * file: src/cores/pm/hooks/usePortalClinicalSummary.ts:48 * kind: hook * core: pm * spec: (none) * summary: Hook for managing portal clinical summary. * score: 1 ### hook usePortalConversations * file: src/cores/pm/hooks/usePortalMessaging.ts:19 * kind: hook * core: pm * spec: (none) * summary: Portal-scoped conversation list.Automatically filters to the active portal patient's conversations. * score: 4 ### hook usePortalCreateConversation * file: src/cores/pm/hooks/usePortalMessaging.ts:49 * kind: hook * core: pm * spec: (none) * summary: Portal-scoped create conversation.Always attaches the portal patient context. * score: 4 ### hook usePortalDemographics * file: src/cores/pm/hooks/usePortalDemographicRequests.ts:26 * kind: hook * core: pm * spec: (none) * summary: Fetch the current patient demographics (read-only) * score: 4 ### hook usePortalInsuranceConfirm * file: src/cores/pm/hooks/usePortalInsuranceConfirm.ts:29 * kind: hook * core: pm * spec: (none) * summary: Mutation hook for patient portal insurance confirmation.Triggers eligibility re-check with 'portal' context after patient confirms insurance. * returns: Mutation to confirm insurance from portal * score: 4 ### hook usePortalMfaEnroll * file: src/cores/pm/hooks/usePortalMfa.ts:32 * kind: hook * core: pm * spec: (none) * summary: Enroll a new TOTP MFA factor.Returns the QR code URI and secret for display. * score: 4 ### hook usePortalMfaFactors * file: src/cores/pm/hooks/usePortalMfa.ts:15 * kind: hook * core: pm * spec: (none) * summary: Query current MFA factors for the authenticated user. * score: 4 ### hook usePortalMfaUnenroll * file: src/cores/pm/hooks/usePortalMfa.ts:79 * kind: hook * core: pm * spec: (none) * summary: Unenroll an MFA factor. * score: 1 ### hook usePortalMfaVerify * file: src/cores/pm/hooks/usePortalMfa.ts:53 * kind: hook * core: pm * spec: (none) * summary: Verify a TOTP code to complete MFA enrollment or challenge. * score: 4 ### hook usePortalPacketAssignment * file: src/cores/pm/hooks/usePortalPacketAssignment.ts:26 * kind: hook * core: pm * spec: (none) * summary: Hook that fetches a single packet assignment plus its items. * score: 4 ### hook usePortalPacketAssignmentList * file: src/cores/pm/hooks/usePortalPacketAssignment.ts:68 * kind: hook * core: pm * spec: (none) * summary: Hook that lists packet assignments for the active organization.Optionally scopes to a specific patient. * score: 4 ### hook usePortalPayments * file: src/cores/pm/hooks/usePortalBilling.ts:24 * kind: hook * core: pm * spec: (none) * summary: Fetch patient's payment history * score: 4 ### hook usePortalPreadmissionPackets * file: src/cores/pm/hooks/usePortalPreadmissionPackets.ts:21 * kind: hook * core: pm * spec: (none) * summary: Fetches active (non-cancelled, non-superseded) preadmission packetsfor the authenticated portal patient. * score: 4 ### hook usePortalSendMessage * file: src/cores/pm/hooks/usePortalMessaging.ts:32 * kind: hook * core: pm * spec: (none) * summary: Portal-scoped send message.Always sets senderType to 'patient'. * score: 4 ### hook usePortalSignIn * file: src/cores/pm/hooks/usePortalAuth.ts:68 * kind: hook * core: pm * spec: (none) * summary: Portal sign-in: validates credentials, checks lockout, creates session audit row. * score: 4 ### hook usePortalSignOut * file: src/cores/pm/hooks/usePortalAuth.ts:149 * kind: hook * core: pm * spec: (none) * summary: Portal sign-out: marks session as revoked, then signs out of Supabase Auth. * score: 4 ### hook usePortalSignUp * file: src/cores/pm/hooks/usePortalAuth.ts:32 * kind: hook * core: pm * spec: (none) * summary: Portal sign-up: creates Supabase Auth user, then links portal\_patient\_id.Requires that a pm\_patients record already exists with matching email. * score: 4 ### hook usePreadmissionFormTemplate * file: src/cores/pm/hooks/usePreadmissionFormTemplate.ts:32 * kind: hook * core: pm * spec: (none) * summary: Fetches the active preadmission form template for the given program type.Returns the highest-version active template matching the program type. * score: 4 ### hook usePreadmissionPacket * file: src/cores/pm/hooks/usePreadmissionPacket.ts:23 * kind: hook * core: pm * spec: (none) * summary: Fetches a single preadmission packet by ID, scoped to organization. * score: 4 ### hook usePreadmissionPacketList * file: src/cores/pm/hooks/usePreadmissionPacketList.ts:34 * kind: hook * core: pm * spec: (none) * summary: Fetches preadmission packets for the current organization.Supports filtering by appointment, patient, status, and search. * score: 4 ### hook usePreAdmissionPacketWizard * file: src/cores/pm/hooks/usePreAdmissionPacketWizard.ts:254 * kind: hook * core: pm * spec: (none) * summary: Primary wizard orchestration hook for the pre-admission packet flow. * score: 4 ### hook usePriorAuthorizationDetail * file: src/cores/pm/hooks/usePriorAuthorizationDetail.ts:8 * kind: hook * core: pm * spec: (none) * summary: Hook for managing prior authorization detail. * score: 1 ### hook usePriorAuthorizationList * file: src/cores/pm/hooks/usePriorAuthorizationList.ts:14 * kind: hook * core: pm * spec: (none) * summary: Hook for managing prior authorization list. * score: 1 ### hook useProviderCaseloadList * file: src/cores/pm/hooks/useProviderCaseloadList.ts:14 * kind: hook * core: pm * spec: (none) * summary: Hook for managing provider caseload list. * score: 1 ### hook useProviderCaseloadMutation * file: src/cores/pm/hooks/useProviderCaseloadMutation.ts:17 * kind: hook * core: pm * spec: (none) * summary: Hook for managing provider caseload mutation. * score: 1 ### hook useProviderEnrollmentDetail * file: src/cores/pm/hooks/useProviderEnrollmentDetail.ts:12 * kind: hook * core: pm * spec: (none) * summary: Hook for managing provider enrollment detail. * score: 1 ### hook useProviderEnrollmentEventsList * file: src/cores/pm/hooks/useProviderEnrollmentEventsList.ts:13 * kind: hook * core: pm * spec: (none) * summary: Hook for managing provider enrollment events list. * score: 1 ### hook useProviderEnrollmentList * file: src/cores/pm/hooks/useProviderEnrollmentList.ts:13 * kind: hook * core: pm * spec: (none) * summary: Hook for managing provider enrollment list. * score: 1 ### hook useProviderEnrollmentMutation * file: src/cores/pm/hooks/useProviderEnrollmentMutation.ts:16 * kind: hook * core: pm * spec: (none) * summary: Hook for managing provider enrollment mutation. * score: 1 ### hook useProviderIdentifierValidationMutation * file: src/cores/pm/hooks/useProviderIdentifierValidationMutation.ts:16 * kind: hook * core: pm * spec: (none) * summary: Hook for managing provider identifier validation mutation. * score: 1 ### hook useProviderIdentifierValidationsList * file: src/cores/pm/hooks/useProviderIdentifierValidationsList.ts:12 * kind: hook * core: pm * spec: (none) * summary: Hook for managing provider identifier validations list. * score: 1 ### hook useProviderProductivity * file: src/cores/pm/hooks/useProviderProductivity.ts:20 * kind: hook * core: pm * spec: (none) * summary: Hook for managing provider productivity. * score: 1 ### hook useProviderScheduleList * file: src/cores/pm/hooks/useProviderScheduleList.ts:14 * kind: hook * core: pm * spec: (none) * summary: Hook for managing provider schedule list. * score: 1 ### hook useProviderScheduleMutation * file: src/cores/pm/hooks/useProviderScheduleMutation.ts:16 * kind: hook * core: pm * spec: (none) * summary: Hook for managing provider schedule mutation. * score: 1 ### hook useProviderTimeOffList * file: src/cores/pm/hooks/useProviderTimeOffList.ts:13 * kind: hook * core: pm * spec: (none) * summary: Hook for managing provider time off list. * score: 1 ### hook useProviderTimeOffMutation * file: src/cores/pm/hooks/useProviderTimeOffMutation.ts:18 * kind: hook * core: pm * spec: (none) * summary: Hook for managing provider time off mutation. * score: 1 ### hook useRarcCodes * file: src/cores/pm/hooks/useReasonCodes.ts:29 * kind: hook * core: pm * spec: (none) * summary: Hook for managing rarc codes. * score: 1 ### hook useRcmBenchmarkMutation * file: src/cores/pm/hooks/useRcmBenchmarkMutation.ts:15 * kind: hook * core: pm * spec: (none) * summary: Hook for managing rcm benchmark mutation. * score: 1 ### hook useRcmBenchmarks * file: src/cores/pm/hooks/useRcmBenchmarks.ts:13 * kind: hook * core: pm * spec: (none) * summary: Hook for managing rcm benchmarks. * score: 1 ### hook useRcmExecutionLog * file: src/cores/pm/hooks/rcm-automation/useRcmExecutionLog.ts:32 * kind: hook * core: pm * spec: (none) * summary: Fetches the RCM rule execution audit log. * score: 4 ### hook useRcmKpis * file: src/cores/pm/hooks/useRcmKpis.ts:33 * kind: hook * core: pm * spec: (none) * summary: Hook for managing rcm kpis. * score: 1 ### hook useRcmOverride * file: src/cores/pm/hooks/rcm-automation/useRcmOverride.ts:37 * kind: hook * core: pm * spec: (none) * summary: Creates an override execution row referencing the original. * score: 4 ### hook useRcmRuleActivation * file: src/cores/pm/hooks/rcm-automation/useRcmRuleActivation.ts:18 * kind: hook * core: pm * spec: (none) * summary: Activates or deactivates an RCM automation rule.Enforces segregation of duties: activator ≠ creator. * score: 4 ### hook useRcmRuleDetail * file: src/cores/pm/hooks/rcm-automation/useRcmRuleDetail.ts:13 * kind: hook * core: pm * spec: (none) * summary: Fetches a single RCM automation rule. * score: 4 ### hook useRcmRulesList * file: src/cores/pm/hooks/rcm-automation/useRcmRulesList.ts:30 * kind: hook * core: pm * spec: (none) * summary: Fetches RCM automation rules for the current organization. * score: 4 ### hook useRcmSimulationResults * file: src/cores/pm/hooks/rcm-automation/useRcmSimulation.ts:46 * kind: hook * core: pm * spec: (none) * summary: Fetches simulation results (execution log filtered by execution\_type = 'simulation'). * score: 4 ### hook useRcmSnapshots * file: src/cores/pm/hooks/useRcmSnapshots.ts:20 * kind: hook * core: pm * spec: (none) * summary: Hook for managing rcm snapshots. * score: 1 ### hook useRcmWorkQueue * file: src/cores/pm/hooks/rcm-automation/useRcmWorkQueue.ts:31 * kind: hook * core: pm * spec: (none) * summary: Fetches work queue items with optional filtering. * score: 4 ### hook useReconciliationsForPeriod * file: src/cores/pm/hooks/useCapitationReconciliations.ts:48 * kind: hook * core: pm * spec: (none) * summary: Fetches reconciliations for a specific period. * score: 4 ### hook useRecordBillerAction * file: src/cores/pm/hooks/useRecordBillerAction.ts:22 * kind: hook * core: pm * spec: (none) * summary: Mutation hook to record a biller's action on a denial prediction.Invalidates prediction queries on success. * score: 4 ### hook useRecordDelivery * file: src/cores/pm/hooks/useStatementDeliveries.ts:44 * kind: hook * core: pm * spec: (none) * summary: Hook for managing record delivery. * score: 1 ### hook useRecordInstallmentPayment * file: src/cores/pm/hooks/usePaymentPlanInstallments.ts:75 * kind: hook * core: pm * spec: (none) * summary: Records a payment on an installment (marks paid, updates parent plan balance). * score: 4 ### hook useRecredentialingDeadlines * file: src/cores/pm/hooks/useRecredentialingDeadlines.ts:18 * kind: hook * core: pm * spec: (none) * summary: Hook for managing recredentialing deadlines. * score: 1 ### hook useReferralList * file: src/cores/pm/hooks/useReferralList.ts:14 * kind: hook * core: pm * spec: (none) * summary: Hook for managing referral list. * score: 1 ### hook useReferralMutation * file: src/cores/pm/hooks/useReferralMutation.ts:17 * kind: hook * core: pm * spec: (none) * summary: Hook for managing referral mutation. * score: 1 ### hook useReferralPacketItemMutation * file: src/cores/pm/hooks/useReferralPacketItems.ts:44 * kind: hook * core: pm * spec: (none) * summary: Mutations for packet items: add, toggle complete, remove. * score: 4 ### hook useReferralPacketItems * file: src/cores/pm/hooks/useReferralPacketItems.ts:16 * kind: hook * core: pm * spec: (none) * summary: List packet items for a referral, ordered by sort\_order. * score: 4 ### hook useReferralSlaState * file: src/cores/pm/hooks/useReferralSlaEvaluation.ts:23 * kind: hook * core: pm * spec: (none) * summary: Live SLA state derived every minute. * score: 4 ### hook useReleaseWorkQueueItem * file: src/cores/pm/hooks/rcm-automation/useRcmWorkQueueClaim.ts:51 * kind: hook * core: pm * spec: (none) * summary: Releases a claimed work queue item back to pending. * score: 4 ### hook useReprocessOrphan * file: src/cores/pm/hooks/useResolveOrphan.ts:120 * kind: hook * core: pm * spec: (none) * summary: Re-process an orphan line. Rate-limited to once per 24 hours per orphan.Resets status to and stamps so downstreammatching jobs (and the UI cooldown) can react. * score: 4 ### hook useRequestDocumentation * file: src/cores/pm/hooks/useRequestDocumentation.ts:21 * kind: hook * core: pm * spec: (none) * summary: Mutation hook to send a documentation request notification to the clinical team. * score: 4 ### hook useResendPreadmissionPacket * file: src/cores/pm/hooks/usePreadmissionMutations.ts:122 * kind: hook * core: pm * spec: (none) * summary: Resends a preadmission packet with a new secure link.Invokes the pm-40-generate-packet Edge Function with action=resend. * score: 4 ### hook useResolveDiscrepancy * file: src/cores/pm/hooks/useResolveDiscrepancy.ts:37 * kind: hook * core: pm * spec: (none) * summary: Mutation hook to resolve a check-in eligibility discrepancy. * params: * appointmentId — Used for query invalidation after resolution * returns: Mutation to resolve a discrepancy * score: 4 ### hook useResolveGap * file: src/cores/pm/hooks/useResolveGap.ts:22 * kind: hook * core: pm * spec: (none) * summary: Hook for resolving a charge reconciliation gap. * score: 1 ### hook useRetryEligibility * file: src/cores/pm/hooks/useRetryEligibility.ts:22 * kind: hook * core: pm * spec: (none) * summary: Mutation hook to trigger a real-time eligibility check. * returns: Mutation that invokes the pm-checkin-eligibility edge function * score: 4 ### hook useRevenueCodeMappings * file: src/cores/pm/hooks/useRevenueCodeMappings.ts:38 * kind: hook * core: pm * spec: (none) * summary: List all revenue code mappings for the active organization. * score: 4 ### hook useRoomAvailability * file: src/cores/pm/hooks/useRooms.ts:54 * kind: hook * core: pm * spec: (none) * summary: Returns busy time blocks for rooms at a given site within a date range.Aggregates (in-person only) and . * score: 4 ### hook useRoomMutation * file: src/cores/pm/hooks/useRooms.ts:118 * kind: hook * core: pm * spec: (none) * summary: Mutations for creating, updating, and deactivating rooms. * score: 4 ### hook useRooms * file: src/cores/pm/hooks/useRooms.ts:17 * kind: hook * core: pm * spec: (none) * summary: List active rooms for the current organization, optionally filtered by site,status, supported appointment type, or minimum capacity. * score: 4 ### hook useRpaBotConfigurationCreate * file: src/cores/pm/hooks/rpa/useRpaBotConfigurations.ts:101 * kind: hook * core: pm * spec: (none) * summary: Creates a new RPA bot configuration. * score: 4 ### hook useRpaBotConfigurationDelete * file: src/cores/pm/hooks/rpa/useRpaBotConfigurations.ts:174 * kind: hook * core: pm * spec: (none) * summary: Soft-deletes an RPA bot configuration. * score: 4 ### hook useRpaBotConfigurationDetail * file: src/cores/pm/hooks/rpa/useRpaBotConfigurations.ts:67 * kind: hook * core: pm * spec: (none) * summary: Fetches a single bot configuration by ID. * score: 4 ### hook useRpaBotConfigurationList * file: src/cores/pm/hooks/rpa/useRpaBotConfigurations.ts:17 * kind: hook * core: pm * spec: (none) * summary: Fetches all RPA bot configurations for the current organization. * score: 4 ### hook useRpaBotConfigurationUpdate * file: src/cores/pm/hooks/rpa/useRpaBotConfigurations.ts:137 * kind: hook * core: pm * spec: (none) * summary: Updates an existing RPA bot configuration. * score: 4 ### hook useRpaBotExecutionDetail * file: src/cores/pm/hooks/rpa/useRpaBotExecutions.ts:62 * kind: hook * core: pm * spec: (none) * summary: Fetches a single execution by ID. * score: 4 ### hook useRpaBotExecutionList * file: src/cores/pm/hooks/rpa/useRpaBotExecutions.ts:25 * kind: hook * core: pm * spec: (none) * summary: Fetches RPA bot executions for the current organization. * score: 4 ### hook useRpaDashboardMetrics * file: src/cores/pm/hooks/rpa/useRpaDashboard.ts:33 * kind: hook * core: pm * spec: (none) * summary: Aggregates dashboard metrics from bot configurations and executions. * score: 4 ### hook useRpaModuleSettings * file: src/cores/pm/hooks/rpa/useRpaModuleSettings.ts:15 * kind: hook * core: pm * spec: (none) * summary: Fetches RPA module settings for the current organization. * score: 4 ### hook useRpaModuleSettingsUpsert * file: src/cores/pm/hooks/rpa/useRpaModuleSettings.ts:47 * kind: hook * core: pm * spec: (none) * summary: Upserts RPA module settings for the current organization. * score: 4 ### hook useRpaStagedDocumentList * file: src/cores/pm/hooks/rpa/useRpaStagedDocuments.ts:24 * kind: hook * core: pm * spec: (none) * summary: Fetches staged documents for the current organization. * score: 4 ### hook useRpaStagedDocumentProcess * file: src/cores/pm/hooks/rpa/useRpaStagedDocuments.ts:63 * kind: hook * core: pm * spec: (none) * summary: Marks a staged document as processed or skipped. * score: 4 ### hook useRpaSystemTemplates * file: src/cores/pm/hooks/rpa/useRpaBotConfigurations.ts:45 * kind: hook * core: pm * spec: (none) * summary: Fetches system templates (bots with is\_system\_template = true). * score: 4 ### hook useRpaTriggerExecution * file: src/cores/pm/hooks/rpa/useRpaBotExecutions.ts:96 * kind: hook * core: pm * spec: (none) * summary: Triggers a manual bot execution by creating a queued execution row\.In production, this would enqueue to FW-46 durable worker. * score: 4 ### hook useRuleEffectiveness * file: src/cores/pm/hooks/useRuleEffectiveness.ts:36 * kind: hook * core: pm * spec: (none) * summary: Fetches scrub rule effectiveness data for the given org and date range. * score: 4 ### hook useScrubRuleDefinitions * file: src/cores/pm/hooks/useScrubRuleDefinitions.ts:11 * kind: hook * core: pm * spec: (none) * summary: Hook for managing scrub rule definitions. * score: 1 ### hook useScrubRuleOverrideMutation * file: src/cores/pm/hooks/useScrubRuleOverrideMutation.ts:26 * kind: hook * core: pm * spec: (none) * summary: Hook for managing scrub rule override mutation. * score: 1 ### hook useScrubRuleOverrides * file: src/cores/pm/hooks/useScrubRuleOverrides.ts:11 * kind: hook * core: pm * spec: (none) * summary: Hook for managing scrub rule overrides. * score: 1 ### hook useSecondaryClaims * file: src/cores/pm/hooks/useSecondaryClaims.ts:18 * kind: hook * core: pm * spec: (none) * summary: Fetches secondary/tertiary claims linked to a primary claim. * params: * primaryClaimId — The primary claim ID to fetch secondary claims for * returns: Query result with secondary claims and joined claim details * score: 4 ### hook useSendPreadmissionReminder * file: src/cores/pm/hooks/usePreadmissionMutations.ts:81 * kind: hook * core: pm * spec: (none) * summary: Triggers a reminder notification for a preadmission packet.Invokes the pm-40-generate-packet Edge Function with action=reminder. * score: 4 ### hook useServiceLineProfitability * file: src/cores/pm/hooks/useServiceLineProfitability.ts:32 * kind: hook * core: pm * spec: (none) * summary: Hook for managing service line profitability. * score: 1 ### hook useSiteBillingConfigDetail * file: src/cores/pm/hooks/useSiteBillingConfigDetail.ts:13 * kind: hook * core: pm * spec: (none) * summary: Hook for managing site billing config detail. * score: 1 ### hook useSiteBillingConfigList * file: src/cores/pm/hooks/useSiteBillingConfigList.ts:13 * kind: hook * core: pm * spec: (none) * summary: Hook for managing site billing config list. * score: 1 ### hook useSiteBillingConfigMutation * file: src/cores/pm/hooks/useSiteBillingConfigMutation.ts:16 * kind: hook * core: pm * spec: (none) * summary: Hook for managing site billing config mutation. * score: 1 ### hook useSiteBillingProfileWizard * file: src/cores/pm/hooks/useSiteBillingProfileWizard.ts:123 * kind: hook * core: pm * spec: (none) * summary: Core wizard state and logic for PM-UX-13 Site Billing Profile Wizard. * score: 4 ### hook useSlidingFeeScheduleDetail * file: src/cores/pm/hooks/useSlidingFeeScheduleDetail.ts:13 * kind: hook * core: pm * spec: (none) * summary: Hook for managing sliding fee schedule detail. * score: 1 ### hook useSlidingFeeScheduleList * file: src/cores/pm/hooks/useSlidingFeeScheduleList.ts:13 * kind: hook * core: pm * spec: (none) * summary: Hook for managing sliding fee schedule list. * score: 1 ### hook useSlidingFeeScheduleMutation * file: src/cores/pm/hooks/useSlidingFeeScheduleMutation.ts:17 * kind: hook * core: pm * spec: (none) * summary: Hook for managing sliding fee schedule mutation. * score: 1 ### hook useSoftDeleteEdiEnrollment * file: src/cores/pm/hooks/useEdiEnrollmentMutation.ts:130 * kind: hook * core: pm * spec: (none) * summary: Soft-deletes an EDI enrollment record. * score: 4 ### hook useSoftDeleteManagedCareAuth * file: src/cores/pm/hooks/useAuthorizationMutation47.ts:69 * kind: hook * core: pm * spec: (none) * summary: Soft-deletes a managed care authorization. * score: 4 ### hook useSoftDeletePayerContract * file: src/cores/pm/hooks/usePayerContractMutation.ts:82 * kind: hook * core: pm * spec: (none) * summary: Hook for managing soft delete payer contract. * score: 1 ### hook useSoftDeletePriorAuthorization * file: src/cores/pm/hooks/usePriorAuthorizationMutation.ts:81 * kind: hook * core: pm * spec: (none) * summary: Hook for managing soft delete prior authorization. * score: 1 ### hook useSoftDeleteRcmRule * file: src/cores/pm/hooks/rcm-automation/useRcmRuleMutation.ts:83 * kind: hook * core: pm * spec: (none) * summary: Soft-deletes an RCM automation rule. * score: 4 ### hook useStatementDeliveryList * file: src/cores/pm/hooks/useStatementDeliveries.ts:17 * kind: hook * core: pm * spec: (none) * summary: Hook for managing statement delivery list. * score: 1 ### hook useStatementRunDetail * file: src/cores/pm/hooks/useStatementRuns.ts:52 * kind: hook * core: pm * spec: (none) * summary: Hook for managing statement run detail. * score: 1 ### hook useStatementRunList * file: src/cores/pm/hooks/useStatementRuns.ts:21 * kind: hook * core: pm * spec: (none) * summary: Hook for managing statement run list. * score: 1 ### hook useStatementRunMutation * file: src/cores/pm/hooks/useStatementRuns.ts:79 * kind: hook * core: pm * spec: (none) * summary: Hook for managing statement run mutation. * score: 1 ### hook useSubmitAppeal * file: src/cores/pm/hooks/useAppealSubmissionMutation.ts:93 * kind: hook * core: pm * spec: (none) * summary: Hook for managing submit appeal. * score: 1 ### hook useSubmitDemographicUpdateRequest * file: src/cores/pm/hooks/usePortalDemographicRequests.ts:58 * kind: hook * core: pm * spec: (none) * summary: Submit a demographic update request * score: 4 ### hook useSuperbillList * file: src/cores/pm/hooks/useSuperbillList.ts:18 * kind: hook * core: pm * spec: (none) * summary: Hook for managing superbill list. * score: 1 ### hook useTaskAuditHistory * file: src/cores/pm/hooks/useTaskMutations.ts:203 * kind: hook * core: pm * spec: (none) * summary: Fetches audit-log entries for a specific coordinator task. * score: 4 ### hook useTaskMutations * file: src/cores/pm/hooks/useTaskMutations.ts:67 * kind: hook * core: pm * spec: (none) * summary: Returns mutation functions for coordinator task actions.Each mutation updates the task and inserts an audit-log entry.Automatically invalidates task list queries on success. * score: 4 ### hook useTelehealthConfigurationList * file: src/cores/pm/hooks/useTelehealthConfiguration.ts:21 * kind: hook * core: pm * spec: (none) * summary: Hook for managing telehealth configuration list. * score: 1 ### hook useTelehealthConfigurationMutation * file: src/cores/pm/hooks/useTelehealthConfiguration.ts:46 * kind: hook * core: pm * spec: (none) * summary: Hook for managing telehealth configuration mutation. * score: 1 ### hook useTelehealthQualityMetrics * file: src/cores/pm/hooks/useTelehealthQualityMetrics.ts:152 * kind: hook * core: pm * spec: (none) * summary: React Query hook: telehealth connection-quality metrics for the current orgover the last 30 days. * score: 4 ### hook useTelehealthSessionDetail * file: src/cores/pm/hooks/useTelehealthSessions.ts:44 * kind: hook * core: pm * spec: (none) * summary: Hook for managing telehealth session detail. * score: 1 ### hook useTelehealthSessionList * file: src/cores/pm/hooks/useTelehealthSessions.ts:18 * kind: hook * core: pm * spec: (none) * summary: Hook for managing telehealth session list. * score: 1 ### hook useTelehealthSessionMutation * file: src/cores/pm/hooks/useTelehealthSessions.ts:71 * kind: hook * core: pm * spec: (none) * summary: Hook for managing telehealth session mutation. * score: 1 ### hook useTimelyFilingReport * file: src/cores/pm/hooks/useComplianceReports.ts:12 * kind: hook * core: pm * spec: (none) * summary: Hook for managing timely filing report. * score: 1 ### hook useToggleCustomEdit * file: src/cores/pm/hooks/useCustomEditMutation.ts:135 * kind: hook * core: pm * spec: (none) * summary: Mutation hook to toggle a custom scrub edit active/inactive. * score: 4 ### hook useTransactionBatchDetail * file: src/cores/pm/hooks/useTransactionBatch.ts:79 * kind: hook * core: pm * spec: (none) * summary: Hook for managing transaction batch detail. * score: 1 ### hook useTransactionBatchList * file: src/cores/pm/hooks/useTransactionBatch.ts:27 * kind: hook * core: pm * spec: (none) * summary: Hook for managing transaction batch list. * score: 1 ### hook useTransactionBatchMutation * file: src/cores/pm/hooks/useTransactionBatch.ts:112 * kind: hook * core: pm * spec: (none) * summary: Hook for managing transaction batch mutation. * score: 1 ### hook useTransactionLogList * file: src/cores/pm/hooks/useTransactionLog.ts:17 * kind: hook * core: pm * spec: (none) * summary: Hook for managing transaction log list. * score: 1 ### hook useTriggerRcmSimulation * file: src/cores/pm/hooks/rcm-automation/useRcmSimulation.ts:16 * kind: hook * core: pm * spec: (none) * summary: Triggers a rule simulation via the rcm-simulate-rule edge function. * score: 4 ### hook useUnderpaymentTrend * file: src/cores/pm/hooks/usePayerPerformance.ts:70 * kind: hook * core: pm * spec: (none) * summary: Trend data for underpayment count over time (monthly buckets). * score: 4 ### hook useUndoPatientMerge * file: src/cores/pm/hooks/useUndoPatientMerge.ts:17 * kind: hook * core: pm * spec: (none) * summary: Hook that reverses a previously committed patient merge, if still withinthe configured undo window (). * score: 4 ### hook useUpdateAppealSubmission * file: src/cores/pm/hooks/useAppealSubmissionMutation.ts:53 * kind: hook * core: pm * spec: (none) * summary: Hook for managing update appeal submission. * score: 1 ### hook useUpdateAppealTemplate * file: src/cores/pm/hooks/useAppealTemplateMutation.ts:51 * kind: hook * core: pm * spec: (none) * summary: Hook for managing update appeal template. * score: 1 ### hook useUpdateAuthAppeal * file: src/cores/pm/hooks/useAuthAppeals47.ts:67 * kind: hook * core: pm * spec: (none) * summary: Updates a denial appeal. * score: 1 ### hook useUpdateClaimDenial * file: src/cores/pm/hooks/useClaimDenialMutation.ts:51 * kind: hook * core: pm * spec: (none) * summary: Hook for managing update claim denial. * score: 1 ### hook useUpdateClearanceStatus * file: src/cores/pm/hooks/useCostEstimateMutations.ts:127 * kind: hook * core: pm * spec: (none) * summary: Update a single financial clearance checklist field.Automatically checks if all items are complete to set clearance\_status to 'cleared'. * score: 4 ### hook useUpdateCOBOrder * file: src/cores/pm/hooks/useUpdateCOBOrder.ts:23 * kind: hook * core: pm * spec: (none) * summary: Updates the priority\_order for a batch of insurance policies. * returns: Mutation for updating COB order * score: 4 ### hook useUpdateConcurrentReview * file: src/cores/pm/hooks/useConcurrentReviews47.ts:97 * kind: hook * core: pm * spec: (none) * summary: Updates a concurrent review (e.g., recording outcome). * score: 4 ### hook useUpdateContractedRate * file: src/cores/pm/hooks/useContractedRateMutation.ts:47 * kind: hook * core: pm * spec: (none) * summary: Provides update contracted rate queries and mutation actions scoped to the current organization. * score: 4 ### hook useUpdateCostCategory * file: src/cores/pm/hooks/useCostCategories.ts:74 * kind: hook * core: pm * spec: (none) * summary: Mutation to update a cost category. * score: 4 ### hook useUpdateCostRate * file: src/cores/pm/hooks/useCostRates.ts:96 * kind: hook * core: pm * spec: (none) * summary: Mutation to update a cost rate. * score: 4 ### hook useUpdateCustomEdit * file: src/cores/pm/hooks/useCustomEditMutation.ts:92 * kind: hook * core: pm * spec: (none) * summary: Mutation hook to update a custom scrub edit. * score: 4 ### hook useUpdateEdiEnrollment * file: src/cores/pm/hooks/useEdiEnrollmentMutation.ts:60 * kind: hook * core: pm * spec: (none) * summary: Updates a single EDI enrollment record. * score: 4 ### hook useUpdateEncounterCostStatus * file: src/cores/pm/hooks/useEncounterCosts.ts:75 * kind: hook * core: pm * spec: (none) * summary: Mutation to update encounter cost status (draft → calculated → reviewed → finalized).Per C-4, no DELETE allowed on encounter costs. * score: 4 ### hook useUpdateExternalReferral * file: src/cores/pm/hooks/useExternalReferrals45.ts:85 * kind: hook * core: pm * spec: (none) * summary: Updates an external referral (status, settlement, etc.). * score: 4 ### hook useUpdateIntakeMatchSettings * file: src/cores/pm/hooks/useIntakeMatchSettings.ts:59 * kind: hook * core: pm * spec: (none) * summary: Mutation to update intake match settings on pm\_module\_settings. * score: 4 ### hook useUpdateManagedCareAuth * file: src/cores/pm/hooks/useAuthorizationMutation47.ts:37 * kind: hook * core: pm * spec: (none) * summary: Updates an existing managed care authorization. * score: 4 ### hook useUpdatePacketItemStatus * file: src/cores/pm/hooks/useUpdatePacketItemStatus.ts:28 * kind: hook * core: pm * spec: (none) * summary: Hook returning a mutation that updates a single packet item's status. * score: 4 ### hook useUpdatePatientPaymentPlan * file: src/cores/pm/hooks/usePatientPaymentPlans45.ts:112 * kind: hook * core: pm * spec: (none) * summary: Updates an existing payment plan. * score: 4 ### hook useUpdatePayerContract * file: src/cores/pm/hooks/usePayerContractMutation.ts:47 * kind: hook * core: pm * spec: (none) * summary: Hook for managing update payer contract. * score: 1 ### hook useUpdatePeriodMutation * file: src/cores/pm/hooks/useCapitationPeriods.ts:114 * kind: hook * core: pm * spec: (none) * summary: Updates a period (e.g. status change, received\_revenue update). * score: 4 ### hook useUpdatePriorAuthorization * file: src/cores/pm/hooks/usePriorAuthorizationMutation.ts:47 * kind: hook * core: pm * spec: (none) * summary: Hook for managing update prior authorization. * score: 1 ### hook useUpdateRcmRule * file: src/cores/pm/hooks/rcm-automation/useRcmRuleMutation.ts:48 * kind: hook * core: pm * spec: (none) * summary: Updates an existing RCM automation rule. * score: 4 ### hook useUpsertInstitutionalClaim * file: src/cores/pm/hooks/useInstitutionalClaim.ts:58 * kind: hook * core: pm * spec: (none) * summary: Create or update institutional details for a claim. * score: 4 ### hook useUpsertRevenueCodeMapping * file: src/cores/pm/hooks/useRevenueCodeMappings.ts:60 * kind: hook * core: pm * spec: (none) * summary: Upsert (create or update) a revenue code mapping. * score: 4 ### hook useVbpIncentivePaymentMutation * file: src/cores/pm/hooks/useVbpIncentivePaymentMutation.ts:24 * kind: hook * core: pm * spec: (none) * summary: Hook for managing vbp incentive payment mutation. * score: 1 ### hook useVbpIncentivePaymentsByProgram * file: src/cores/pm/hooks/useVbpIncentivePaymentsByProgram.ts:13 * kind: hook * core: pm * spec: (none) * summary: Hook for managing vbp incentive payments by program. * score: 1 ### hook useVbpMeasureMutation * file: src/cores/pm/hooks/useVbpMeasureMutation.ts:33 * kind: hook * core: pm * spec: (none) * summary: Hook for managing vbp measure mutation. * score: 1 ### hook useVbpMeasuresByProgram * file: src/cores/pm/hooks/useVbpMeasuresByProgram.ts:13 * kind: hook * core: pm * spec: (none) * summary: Hook for managing vbp measures by program. * score: 1 ### hook useVbpProgramDetail * file: src/cores/pm/hooks/useVbpProgramDetail.ts:13 * kind: hook * core: pm * spec: (none) * summary: Hook for managing vbp program detail. * score: 1 ### hook useVbpProgramList * file: src/cores/pm/hooks/useVbpProgramList.ts:14 * kind: hook * core: pm * spec: (none) * summary: Hook for managing vbp program list. * score: 1 ### hook useVbpProgramMutation * file: src/cores/pm/hooks/useVbpProgramMutation.ts:24 * kind: hook * core: pm * spec: (none) * summary: Hook for managing vbp program mutation. * score: 1 ### hook useVoidClaim * file: src/cores/pm/hooks/useVoidClaim.ts:26 * kind: hook * core: pm * spec: (none) * summary: Hook for voiding a claim. * score: 1 ### hook useWaitlistAnalytics39 * file: src/cores/pm/hooks/useWaitlistAnalytics39.ts:21 * kind: hook * core: pm * spec: (none) * summary: Fetch waitlist analytics for the current organization. * score: 4 ### hook useWaitlistEntries39 * file: src/cores/pm/hooks/useWaitlistEntries39.ts:13 * kind: hook * core: pm * spec: (none) * summary: Fetch PM-39 waitlist entries with optional filters. * score: 4 ### hook useWaitlistEntryMutation39 * file: src/cores/pm/hooks/useWaitlistEntryMutation39.ts:16 * kind: hook * core: pm * spec: (none) * summary: Mutations for PM-39 waitlist entries: add, update status, decline. * score: 4 ### hook useWaitlistList * file: src/cores/pm/hooks/useWaitlistList.ts:14 * kind: hook * core: pm * spec: (none) * summary: Hook for managing waitlist list. * score: 1 ### hook useWaitlistMutation * file: src/cores/pm/hooks/useWaitlistMutation.ts:17 * kind: hook * core: pm * spec: (none) * summary: Hook for managing waitlist mutation. * score: 1 ### hook useWaitlistOutreachLog39 * file: src/cores/pm/hooks/useWaitlistOutreachLog39.ts:13 * kind: hook * core: pm * spec: (none) * summary: Fetch outreach log entries for a specific waitlist entry. * score: 4 ### hook useWriteoffList * file: src/cores/pm/hooks/useWriteoffs45.ts:21 * kind: hook * core: pm * spec: (none) * summary: Lists write-off requests with optional status filter. * score: 4 ## Components ### component AgingTierBadge * file: src/cores/pm/components/collections/AgingTierBadge.tsx:25 * kind: component * core: pm * spec: (none) * summary: Renders a color-coded badge for a collections aging tier. * score: 2 ### component AiCodingSuggestionSidecar * file: src/cores/pm/components/ai-coding/AiCodingSuggestionSidecar.tsx:70 * kind: component * core: pm * spec: PM-64 * summary: Encounter-scoped review panel listing AI-generated coding suggestions forcoders to accept, edit, or reject. Each decision is written to the immutableAI-coding audit trail via . Rendering andthe action controls are permission-gated (suggest vs. review).The "Generate suggestions" button calls the edgefunction directly (debounced; loading state shown). The edge fn enforces allcompliance gates (PHI lane, DSI disclosure, SUD consent) server-side. * params: * props — Component props; selects the encounter whosesuggestions are loaded. * score: 5 ### component AnalyticsFunnelFilters * file: src/cores/pm/components/analytics/AnalyticsFunnelFilters.tsx:37 * kind: component * core: pm * spec: PM-41 * summary: Filter bar for the intake funnel dashboard. Exposes a date-range presetselector and a refresh control, lifting selection changes to the parent sofunnel queries can re-run against the new window. * params: * props — Controlled date-range value plus change/refresh callbacks anda refreshing flag that animates the refresh icon. * score: 5 ### component AppConsentSheet * file: src/cores/pm/components/AppConsentSheet.tsx:52 * kind: component * core: pm * spec: PM-55 * summary: Detail sheet for a single authorized FHIR application consent. Lets a patientreview the granted scopes, grant/expiry timestamps, and revoke access; revokeconfirmation is captured inline before the mutation fires. * params: * props — The consent row to display plus controlled open state. * score: 5 ### component AppealConfirmationDialog * file: src/cores/pm/components/era-reconciliation/AppealConfirmationDialog.tsx:29 * kind: component * core: pm * spec: (none) * summary: Confirmation dialog for appeal initiation (single/bulk). * score: 2 ### component AppointmentCard * file: src/cores/pm/components/AppointmentCard.tsx:58 * kind: component * core: pm * spec: (none) * summary: Utility for appointment card. * score: 1 ### component AppointmentFormDialog * file: src/cores/pm/components/AppointmentFormDialog.tsx:120 * kind: component * core: pm * spec: (none) * summary: Utility for appointment form dialog. * score: 1 ### component AppointmentRowDiscrepancyBadge * file: src/cores/pm/components/appointments/AppointmentRowDiscrepancyBadge.tsx:22 * kind: component * core: pm * spec: (none) * summary: Badge showing unresolved discrepancy count for an appointment row\.Returns null if no discrepancies exist (no visual noise). * score: 2 ### component AuditEvidenceStep * file: src/cores/pm/components/wizards/audit-response/steps/AuditEvidenceStep.tsx:25 * kind: component * core: pm * spec: (none) * summary: Evidence collection step for the audit response wizard. * score: 2 ### component AuditIntakeStep * file: src/cores/pm/components/wizards/audit-response/steps/AuditIntakeStep.tsx:37 * kind: component * core: pm * spec: (none) * summary: Audit intake step for the audit response wizard. * score: 2 ### component AuditQaStep * file: src/cores/pm/components/wizards/audit-response/steps/AuditQaStep.tsx:24 * kind: component * core: pm * spec: (none) * summary: QA review step for the audit response wizard. * score: 2 ### component AuditResponseWizard * file: src/cores/pm/components/wizards/audit-response/AuditResponseWizard.tsx:41 * kind: component * core: pm * spec: (none) * summary: Audit Response Wizard (PM-UX-11).Mounts as a full-page surface via the route. * score: 2 ### component AuditResponseWizardPage * file: src/cores/pm/pages/AuditResponseWizardPage.tsx:14 * kind: component * core: pm * spec: (none) * summary: Full-page audit response wizard. * score: 2 ### component AuditReviewStep * file: src/cores/pm/components/wizards/audit-response/steps/AuditReviewStep.tsx:43 * kind: component * core: pm * spec: (none) * summary: Review & submit step for the audit response wizard. * score: 2 ### component AuditSubmissionStep * file: src/cores/pm/components/wizards/audit-response/steps/AuditSubmissionStep.tsx:30 * kind: component * core: pm * spec: (none) * summary: Submission channel selection step for the audit response wizard. * score: 2 ### component AuditTimelineStep * file: src/cores/pm/components/wizards/audit-response/steps/AuditTimelineStep.tsx:38 * kind: component * core: pm * spec: (none) * summary: Timeline & ownership step for the audit response wizard. * score: 2 ### component AuditTrailPage * file: src/cores/pm/pages/AuditTrailPage.tsx:27 * kind: component * core: pm * spec: (none) * summary: Utility for audit trail page. * score: 1 ### component AuthActivityTab * file: src/cores/pm/components/auth-tracking/AuthActivityTab.tsx:33 * kind: component * core: pm * spec: (none) * summary: Renders a chronological timeline of authorization lifecycle events. * score: 2 ### component AuthAppealFormDialog * file: src/cores/pm/components/auth-tracking/AuthAppealFormDialog.tsx:42 * kind: component * core: pm * spec: (none) * summary: Dialog for appeal create/edit. * score: 2 ### component AuthAppealsTab * file: src/cores/pm/components/auth-tracking/AuthAppealsTab.tsx:38 * kind: component * core: pm * spec: (none) * summary: Displays denial appeals list with file action. * score: 2 ### component AuthDashboardFilters * file: src/cores/pm/components/auth-tracking/AuthDashboardFilters.tsx:29 * kind: component * core: pm * spec: (none) * summary: Filter bar with status select and search input for the auth dashboard. * score: 2 ### component AuthDashboardTable * file: src/cores/pm/components/auth-tracking/AuthDashboardTable.tsx:40 * kind: component * core: pm * spec: (none) * summary: Renders the authorization dashboard table with urgency badges and utilization bars. * score: 2 ### component AuthorizationFormDialog * file: src/cores/pm/components/auth-tracking/AuthorizationFormDialog.tsx:46 * kind: component * core: pm * spec: (none) * summary: Dialog for creating or editing a managed care authorization. * score: 2 ### component AuthReviewFormDialog * file: src/cores/pm/components/authorizations/AuthReviewFormDialog.tsx:37 * kind: component * core: pm * spec: (none) * summary: Utility for auth review form dialog. * score: 1 ### component AuthReviewSection * file: src/cores/pm/components/authorizations/AuthReviewSection.tsx:24 * kind: component * core: pm * spec: (none) * summary: Utility for auth review section. * score: 1 ### component AuthReviewsTab * file: src/cores/pm/components/auth-tracking/AuthReviewsTab.tsx:36 * kind: component * core: pm * spec: (none) * summary: Displays concurrent reviews list with schedule action. * score: 2 ### component AuthUnitUtilizationBar * file: src/cores/pm/components/auth-tracking/AuthUnitUtilizationBar.tsx:17 * kind: component * core: pm * spec: (none) * summary: Renders a progress bar with label showing used/authorized units. * score: 2 ### component AuthUrgencyBadge * file: src/cores/pm/components/auth-tracking/AuthUrgencyBadge.tsx:32 * kind: component * core: pm * spec: (none) * summary: Displays a color-coded badge based on days remaining until auth expiration. * score: 2 ### component BalanceSelectionStep * file: src/cores/pm/components/payment-plans/wizard/BalanceSelectionStep.tsx:17 * kind: component * core: pm * spec: (none) * summary: Wizard step for selecting the patient and entering the total balance. * score: 2 ### component BaselineSelectionStep * file: src/cores/pm/components/wizards/contract-modeling/BaselineSelectionStep.tsx:33 * kind: component * core: pm * spec: (none) * summary: Step 1: select the contract baseline and modeling horizon. * score: 2 ### component BatchHistoryPage * file: src/cores/pm/pages/BatchHistoryPage.tsx:24 * kind: component * core: pm * spec: (none) * summary: Utility for batch history page. * score: 1 ### component BatchJobDetailSheet * file: src/cores/pm/components/batch/BatchJobDetailSheet.tsx:49 * kind: component * core: pm * spec: (none) * summary: Utility for batch job detail sheet. * score: 1 ### component BatchOperationWizard * file: src/cores/pm/components/batch/wizard/BatchOperationWizard.tsx:90 * kind: component * core: pm * spec: (none) * summary: Guided 4-step dialog wizard for PM batch operations. * score: 2 ### component BatchProgressDialog * file: src/cores/pm/components/batch/BatchProgressDialog.tsx:92 * kind: component * core: pm * spec: (none) * summary: Utility for batch progress dialog. * score: 1 ### component BatchSelectionToolbar * file: src/cores/pm/components/batch/BatchSelectionToolbar.tsx:35 * kind: component * core: pm * spec: (none) * summary: Utility for batch selection toolbar. * score: 1 ### component BedBoardOverlayPanel * file: src/cores/pm/components/workbench/BedBoardOverlayPanel.tsx:31 * kind: component * core: pm * spec: PM-42 * summary: Read-only bed-board roll-up shown alongside the coordinator workbench sointake coordinators can see available beds and authorization risk withoutleaving the page. Backed by the PF-110 clinical bed-board read model. * params: * props — Optional scope props selecting which beds/programs are shown. * score: 5 ### component BenchmarkingFilters * file: src/cores/pm/components/analytics/BenchmarkingFilters.tsx:22 * kind: component * core: pm * spec: PM-41 * summary: Date-range preset selector for the multi-site benchmarking view. Drives thecomparison window applied to site- and provider-level funnel metrics. * params: * props — Controlled range value and its change handler. * score: 5 ### component BenchmarkingView * file: src/cores/pm/components/analytics/BenchmarkingView\.tsx:44 * kind: component * core: pm * spec: PM-41 * summary: Multi-site benchmarking dashboard comparing intake-funnel metrics acrosssites and providers for the selected window. Surfaces conversion, no-show,and revenue percentiles so operators can spot under-performing locations. * params: * props — Optional filter/site-scope props controlling which sites anddate range are compared. * score: 5 ### component BenefitDetailPanel * file: src/cores/pm/components/eligibility/BenefitDetailPanel.tsx:63 * kind: component * core: pm * spec: (none) * summary: Read-only panel listing parsed 271 benefit details for an eligibilitycheck. Returns a permission-gated empty state when the user lacks. * score: 2 ### component BulkActionsToolbar * file: src/cores/pm/components/workbench/BulkActionsToolbar.tsx:27 * kind: component * core: pm * spec: (none) * summary: Toolbar for bulk task actions. * score: 2 ### component BulkAssignDenialsDialog * file: src/cores/pm/components/denials/BulkAssignDenialsDialog.tsx:26 * kind: component * core: pm * spec: (none) * summary: Utility for bulk assign denials dialog. * score: 1 ### component BulkCreateDialog * file: src/cores/pm/components/edi-enrollment/BulkCreateDialog.tsx:31 * kind: component * core: pm * spec: (none) * summary: Dialog for bulk-creating EDI enrollment stubs. * score: 2 ### component CameraCapture * file: src/cores/pm/components/kiosk/CameraCapture.tsx:34 * kind: component * core: pm * spec: PM-34-EN-01 * summary: Reusable camera-capture control for kiosk and mobile flows. Uses acapture-enabled file input to take a photo (e.g. an insurance card or ID) andrenders a preview of the captured image for confirmation. * params: * props — Capture callback and labelling/preview options. * score: 4 ### component CandidateReviewStep * file: src/cores/pm/components/wizards/patient-merge-resolution/steps/CandidateReviewStep.tsx:65 * kind: component * core: pm * spec: (none) * summary: Step 1 of the Patient Merge Resolution Wizard: Candidate Review\.Shows source and target patient summaries for operator confirmation. * score: 2 ### component CapitationContractPage * file: src/cores/pm/pages/capitation/CapitationContractPage.tsx:29 * kind: component * core: pm * spec: (none) * summary: PM-33: Contract detail page with tabs for periods, roster, reconciliations per CONTEXT.md. * score: 2 ### component CapitationHubPage * file: src/cores/pm/pages/capitation/CapitationHubPage.tsx:24 * kind: component * core: pm * spec: (none) * summary: PM-33: Capitation contracts hub page. * score: 2 ### component CareMgmtPayerPolicyPage * file: src/cores/pm/pages/CareMgmtPayerPolicyPage.tsx:123 * kind: component * core: pm * spec: (none) * summary: Care-Management payer-policy admin page. * score: 2 ### component CareMgmtWorklistPage * file: src/cores/pm/pages/CareMgmtWorklistPage.tsx:60 * kind: component * core: pm * spec: (none) * summary: Care-Management billing-coordinator worklist page. * score: 2 ### component ChargeDetailPage * file: src/cores/pm/pages/ChargeDetailPage.tsx:42 * kind: component * core: pm * spec: (none) * summary: Utility for charge detail page. * score: 1 ### component ChargeFormDialog * file: src/cores/pm/components/charges/ChargeFormDialog.tsx:69 * kind: component * core: pm * spec: (none) * summary: Utility for charge form dialog. * score: 1 ### component ChargeListPage * file: src/cores/pm/pages/ChargeListPage.tsx:45 * kind: component * core: pm * spec: (none) * summary: Utility for charge list page. * score: 1 ### component ChargeReconciliationPage * file: src/cores/pm/pages/ChargeReconciliationPage.tsx:95 * kind: component * core: pm * spec: (none) * summary: Charge Reconciliation page with permission gate. * score: 2 ### component ChargeReconDashboardSection * file: src/cores/pm/components/ChargeReconDashboardSection.tsx:81 * kind: component * core: pm * spec: (none) * summary: Dashboard section displaying reconciliation summary and trend chart.Hidden if user lacks pm.charge\_recon.view permission. * score: 2 ### component ChargeReconFiltersBar * file: src/cores/pm/components/ChargeReconFiltersBar.tsx:25 * kind: component * core: pm * spec: (none) * summary: Secondary filter bar for date range and resolved toggle. * score: 2 ### component ChargeReconTable * file: src/cores/pm/components/ChargeReconTable.tsx:64 * kind: component * core: pm * spec: (none) * summary: Table displaying charge reconciliation gap results. * score: 2 ### component ChargeStatusBadge * file: src/cores/pm/components/charges/ChargeStatusBadge.tsx:27 * kind: component * core: pm * spec: (none) * summary: Utility for charge status badge. * score: 1 ### component ChargeStatusMenu * file: src/cores/pm/components/charges/ChargeStatusMenu.tsx:21 * kind: component * core: pm * spec: (none) * summary: Utility for charge status menu. * score: 1 ### component CharityApplicationDialog * file: src/cores/pm/components/financial-counseling/CharityApplicationDialog.tsx:32 * kind: component * core: pm * spec: (none) * summary: Charity care application form dialog. * score: 2 ### component CharityApprovalConfirmDialog * file: src/cores/pm/components/financial-counseling/CharityApprovalConfirmDialog.tsx:28 * kind: component * core: pm * spec: (none) * summary: Two-step charity care approval confirmation dialog. * score: 2 ### component CharityTab * file: src/cores/pm/components/financial-counseling/CharityTab.tsx:25 * kind: component * core: pm * spec: (none) * summary: Charity care applications list tab. * score: 2 ### component CheckinEligibilityPanel * file: src/cores/pm/components/checkin/CheckinEligibilityPanel.tsx:67 * kind: component * core: pm * spec: (none) * summary: Inline eligibility panel for the PM-03 check-in screen.Displays current coverage, COB order, and any detected discrepancies. * score: 2 ### component ClaimDenialSummaryPanel * file: src/cores/pm/components/denials/ClaimDenialSummaryPanel.tsx:29 * kind: component * core: pm * spec: (none) * summary: Utility for claim denial summary panel. * score: 1 ### component ClaimDetailPage * file: src/cores/pm/pages/ClaimDetailPage.tsx:49 * kind: component * core: pm * spec: (none) * summary: Utility for claim detail page. * score: 1 ### component ClaimGenerateDialog * file: src/cores/pm/components/claims/ClaimGenerateDialog.tsx:32 * kind: component * core: pm * spec: (none) * summary: Utility for claim generate dialog. * score: 1 ### component ClaimLineagePanel * file: src/cores/pm/components/claims/ClaimLineagePanel.tsx:23 * kind: component * core: pm * spec: (none) * summary: Renders the chain of related claims (original ↔ void ↔ replacement) for the given claim. * score: 2 ### component ClaimListPage * file: src/cores/pm/pages/ClaimListPage.tsx:45 * kind: component * core: pm * spec: (none) * summary: Utility for claim list page. * score: 1 ### component ClaimNoteForm * file: src/cores/pm/components/claims/ClaimNoteForm.tsx:22 * kind: component * core: pm * spec: (none) * summary: Utility for claim note form. * score: 1 ### component ClaimScrubResults * file: src/cores/pm/components/claims/ClaimScrubResults.tsx:16 * kind: component * core: pm * spec: (none) * summary: Utility for claim scrub results. * score: 1 ### component ClaimStatusBadge * file: src/cores/pm/components/claims/ClaimStatusBadge.tsx:35 * kind: component * core: pm * spec: (none) * summary: Utility for claim status badge. * score: 1 ### component ClaimStatusMenu * file: src/cores/pm/components/claims/ClaimStatusMenu.tsx:23 * kind: component * core: pm * spec: (none) * summary: Utility for claim status menu. * score: 1 ### component ClearanceMetricsCharts * file: src/cores/pm/components/cost-estimation/ClearanceMetricsCharts.tsx:47 * kind: component * core: pm * spec: (none) * summary: Renders a completion rate trend line chart and an estimate vs actual scatter plot. * score: 2 ### component ClearanceMetricsFilters * file: src/cores/pm/components/cost-estimation/ClearanceMetricsFilters.tsx:33 * kind: component * core: pm * spec: (none) * summary: Collapsible filter bar for the clearance metrics dashboard. * score: 2 ### component ClearanceMetricsPage * file: src/cores/pm/pages/ClearanceMetricsPage.tsx:50 * kind: component * core: pm * spec: (none) * summary: Clearance metrics dashboard showing KPIs, filters, and performance charts. * score: 2 ### component ClearinghouseConfigDetailPage * file: src/cores/pm/pages/ClearinghouseConfigDetailPage.tsx:53 * kind: component * core: pm * spec: (none) * summary: Utility for clearinghouse config detail page. * score: 1 ### component ClearinghouseConfigListPage * file: src/cores/pm/pages/ClearinghouseConfigListPage.tsx:27 * kind: component * core: pm * spec: (none) * summary: Utility for clearinghouse config list page. * score: 1 ### component ClearinghouseHealthBadge * file: src/cores/pm/components/clearinghouse/ClearinghouseHealthBadge.tsx:70 * kind: component * core: pm * spec: (none) * summary: Displays clearinghouse connection health status. * score: 2 ### component ClearinghouseRoutingStep * file: src/cores/pm/components/wizards/site-billing-profile/ClearinghouseRoutingStep.tsx:36 * kind: component * core: pm * spec: (none) * summary: Wizard step 4: clearinghouse route configuration. * score: 2 ### component COBOrderSection * file: src/cores/pm/components/checkin/COBOrderSection.tsx:121 * kind: component * core: pm * spec: (none) * summary: Displays the COB (Coordination of Benefits) order for patient insurance policies. * score: 2 ### component CollectionsBulkToolbar * file: src/cores/pm/components/collections/CollectionsBulkToolbar.tsx:20 * kind: component * core: pm * spec: (none) * summary: Toolbar shown when rows are selected in the collections queue. * score: 2 ### component CollectionsQueuePage * file: src/cores/pm/pages/CollectionsQueuePage.tsx:29 * kind: component * core: pm * spec: (none) * summary: Collections queue page showing patients with outstanding balances by aging tier. * score: 2 ### component ComplianceReportButton * file: src/cores/pm/components/analytics/ComplianceReportButton.tsx:33 * kind: component * core: pm * spec: PM-41 * summary: Action button that triggers generation of a funnel compliance report behinda confirmation dialog, showing a spinner while the export is in flight. * params: * props — Generation callback and pending/disabled state. * score: 5 ### component ComplianceReportsPage * file: src/cores/pm/pages/ComplianceReportsPage.tsx:25 * kind: component * core: pm * spec: (none) * summary: Utility for compliance reports page. * score: 1 ### component ConcurrentReviewFormDialog * file: src/cores/pm/components/auth-tracking/ConcurrentReviewFormDialog.tsx:41 * kind: component * core: pm * spec: (none) * summary: Dialog for concurrent review create/edit. * score: 2 ### component ConfirmationStep * file: src/cores/pm/components/payment-plans/wizard/ConfirmationStep.tsx:17 * kind: component * core: pm * spec: (none) * summary: Read-only summary step before creating the plan. * score: 2 ### component ConfirmExecutionStep * file: src/cores/pm/components/batch/wizard/ConfirmExecutionStep.tsx:16 * kind: component * core: pm * spec: (none) * summary: Step 3 of the Batch Operation Wizard — confirm execution. * score: 2 ### component ConfirmTaskDialog * file: src/cores/pm/components/workbench/dialogs/ConfirmTaskDialog.tsx:27 * kind: component * core: pm * spec: (none) * summary: Confirmation dialog for a coordinator task. * score: 2 ### component ConsentStep * file: src/cores/pm/components/payment-plans/wizard/ConsentStep.tsx:18 * kind: component * core: pm * spec: (none) * summary: Wizard step for obtaining patient consent. * score: 2 ### component ConsentStep * file: src/cores/pm/components/wizards/pre-admission-packet/steps/ConsentStep.tsx:50 * kind: component * core: pm * spec: (none) * summary: Step 2 of the pre-admission wizard — consent and privacy acknowledgments. * score: 2 ### component ContractedRateFormDialog * file: src/cores/pm/components/contracts/ContractedRateFormDialog.tsx:44 * kind: component * core: pm * spec: (none) * summary: Utility for contracted rate form dialog. * score: 1 ### component ContractFormDialog * file: src/cores/pm/components/capitation/ContractFormDialog.tsx:24 * kind: component * core: pm * spec: (none) * summary: PM-33: Create/Edit capitation contract dialog (sm:max-w-2xl per CONTEXT.md). * score: 2 ### component ContractModelingWizardPage * file: src/cores/pm/pages/ContractModelingWizardPage.tsx:34 * kind: component * core: pm * spec: (none) * summary: Full-page wizard for PM-UX-19 contract modeling simulation. * score: 2 ### component ContractRenewalDialog * file: src/cores/pm/components/contracts/ContractRenewalDialog.tsx:73 * kind: component * core: pm * spec: (none) * summary: Utility for contract renewal dialog. * score: 1 ### component ConversionFunnelCard * file: src/cores/pm/components/analytics/ConversionFunnelCard.tsx:29 * kind: component * core: pm * spec: PM-41 * summary: Summary card rendering lead-to-patient/resident conversion statistics sourcedfrom the CE integration layer, giving intake staff an at-a-glance conversionrate for the selected period. * params: * props — Conversion metrics and optional period/scope selectors. * score: 5 ### component CoordinatorOverrideDialog * file: src/cores/pm/components/intake-matching/CoordinatorOverrideDialog.tsx:26 * kind: component * core: pm * spec: (none) * summary: Dialog for recording a coordinator provider override. * score: 2 ### component CoordinatorWorkbenchPage * file: src/cores/pm/pages/CoordinatorWorkbenchPage.tsx:41 * kind: component * core: pm * spec: (none) * summary: Coordinator Workbench page — intake task management. * score: 2 ### component CostAccountingPage * file: src/cores/pm/pages/CostAccountingPage.tsx:27 * kind: component * core: pm * spec: (none) * summary: Cost accounting hub with categories and rates management. * score: 2 ### component CostCategoriesTab * file: src/cores/pm/components/cost-accounting/CostCategoriesTab.tsx:22 * kind: component * core: pm * spec: (none) * summary: Tab content for listing cost categories. * score: 2 ### component CostEstimateDetail * file: src/cores/pm/components/cost-estimation/CostEstimateDetail.tsx:41 * kind: component * core: pm * spec: (none) * summary: Detail view showing estimate summary, line items, and clearance panel. * score: 2 ### component CostEstimateGenerateDialog * file: src/cores/pm/components/cost-estimation/CostEstimateGenerateDialog.tsx:106 * kind: component * core: pm * spec: (none) * summary: Dialog for generating cost estimates with service type selection,LOS/visit count, and results display with line-item breakdown. * score: 2 ### component CostEstimateList * file: src/cores/pm/components/cost-estimation/CostEstimateList.tsx:51 * kind: component * core: pm * spec: (none) * summary: List view of cost estimates for a patient with status and clearance filters. * score: 2 ### component CostEstimateListPage * file: src/cores/pm/pages/CostEstimateListPage.tsx:25 * kind: component * core: pm * spec: (none) * summary: Page showing all cost estimates for the organization.Currently requires a patient context — uses a demo patient ID. * score: 2 ### component CostRatesTab * file: src/cores/pm/components/cost-accounting/CostRatesTab.tsx:32 * kind: component * core: pm * spec: (none) * summary: Tab content for listing cost rates. * score: 2 ### component CostReportChart * file: src/cores/pm/components/cost-accounting/CostReportChart.tsx:20 * kind: component * core: pm * spec: (none) * summary: Grouped bar chart for cost distribution. * score: 2 ### component CostReportsPage * file: src/cores/pm/pages/CostReportsPage.tsx:30 * kind: component * core: pm * spec: (none) * summary: Cost reports page with chart and summary table. * score: 2 ### component CostReportTable * file: src/cores/pm/components/cost-accounting/CostReportTable.tsx:19 * kind: component * core: pm * spec: (none) * summary: Summary table for cost data grouped by dimension. * score: 2 ### component CourtDeadlineIndicator * file: src/cores/pm/components/referrals/CourtDeadlineIndicator.tsx:23 * kind: component * core: pm * spec: (none) * summary: Compact badge surfacing court hearing/deadline information. * score: 2 ### component CreateAppealDialog * file: src/cores/pm/components/denials/CreateAppealDialog.tsx:38 * kind: component * core: pm * spec: (none) * summary: Utility for create appeal dialog. * score: 1 ### component CreateAppealSheet * file: src/cores/pm/components/denials/CreateAppealSheet.tsx:39 * kind: component * core: pm * spec: (none) * summary: Utility for create appeal sheet. * score: 1 ### component CreateCostCategoryDialog * file: src/cores/pm/components/cost-accounting/CreateCostCategoryDialog.tsx:42 * kind: component * core: pm * spec: (none) * summary: Dialog for creating a new cost category. * score: 2 ### component CreateCostRateDialog * file: src/cores/pm/components/cost-accounting/CreateCostRateDialog.tsx:43 * kind: component * core: pm * spec: (none) * summary: Dialog for creating a new cost rate. * score: 2 ### component CreateDenialDialog * file: src/cores/pm/components/denials/CreateDenialDialog.tsx:39 * kind: component * core: pm * spec: (none) * summary: Utility for create denial dialog. * score: 1 ### component CreateReferralDialog * file: src/cores/pm/components/referrals/CreateReferralDialog.tsx:24 * kind: component * core: pm * spec: (none) * summary: Dialog for creating an external collections referral. * score: 2 ### component CredentialVerificationStep * file: src/cores/pm/components/wizards/payer-enrollment/steps/CredentialVerificationStep.tsx:29 * kind: component * core: pm * spec: (none) * summary: Step 3 — Credential Verification step. * score: 2 ### component CustomEditDialog * file: src/cores/pm/components/scrub-rules/CustomEditDialog.tsx:29 * kind: component * core: pm * spec: (none) * summary: Dialog for creating or editing a custom scrub edit rule. * score: 2 ### component CustomEditsList * file: src/cores/pm/components/scrub-rules/CustomEditsList.tsx:27 * kind: component * core: pm * spec: (none) * summary: Custom scrub edits management list with CRUD actions. * score: 2 ### component DeadlineStep * file: src/cores/pm/components/wizards/denial-appeal/steps/DeadlineStep.tsx:69 * kind: component * core: pm * spec: PM-29 * summary: Step 2 of the denial-appeal wizard. Surfaces the computed appeal urgency,captures the appeal level and strategy, and gates escalation overrides behindconfirmation. * params: * props — Wizard state/handlers for the deadline-and-strategy step. * score: 5 ### component DeferTaskDialog * file: src/cores/pm/components/workbench/dialogs/DeferTaskDialog.tsx:28 * kind: component * core: pm * spec: (none) * summary: Defer dialog for a coordinator task. * score: 2 ### component DeliveryHistoryDialog * file: src/cores/pm/components/statements/DeliveryHistoryDialog.tsx:28 * kind: component * core: pm * spec: (none) * summary: Utility for delivery history dialog. * score: 1 ### component DenialAnalyticsTab * file: src/cores/pm/components/denials/DenialAnalyticsTab.tsx:31 * kind: component * core: pm * spec: (none) * summary: Utility for denial analytics tab. * score: 1 ### component DenialAppealWizard * file: src/cores/pm/components/wizards/denial-appeal/DenialAppealWizard.tsx:43 * kind: component * core: pm * spec: (none) * summary: Denial Appeal Wizard (PM-UX-06).Mounted full-page via the route. * score: 2 ### component DenialAppealWizardPage * file: src/cores/pm/pages/DenialAppealWizardPage.tsx:15 * kind: component * core: pm * spec: (none) * summary: Full-page denial appeal wizard.Accepts an optional query param to pre-fill from the denial queue. * score: 2 ### component DenialCodeDisplay * file: src/cores/pm/components/claims/DenialCodeDisplay.tsx:16 * kind: component * core: pm * spec: (none) * summary: Utility for denial code display. * score: 1 ### component DenialDetailPage * file: src/cores/pm/pages/DenialDetailPage.tsx:40 * kind: component * core: pm * spec: (none) * summary: Utility for denial detail page. * score: 1 ### component DenialPredictionDashboardPage * file: src/cores/pm/pages/DenialPredictionDashboardPage.tsx:31 * kind: component * core: pm * spec: (none) * summary: Dashboard page showing denial prediction model performance,payer accuracy breakdown, and revenue impact summary. * score: 2 ### component DenialsListPage * file: src/cores/pm/pages/DenialsListPage.tsx:55 * kind: component * core: pm * spec: (none) * summary: Utility for denials list page. * score: 1 ### component DiscrepancyAllSheet * file: src/cores/pm/components/checkin/DiscrepancyAllSheet.tsx:26 * kind: component * core: pm * spec: (none) * summary: Sheet showing all check-in discrepancies for an appointment. * score: 2 ### component DiscrepancyResolutionDialog * file: src/cores/pm/components/checkin/DiscrepancyResolutionDialog.tsx:30 * kind: component * core: pm * spec: (none) * summary: Dialog for resolving a single check-in discrepancy. * score: 2 ### component DisenrollConfirmDialog * file: src/cores/pm/components/DisenrollConfirmDialog.tsx:32 * kind: component * core: pm * spec: (none) * summary: Utility for disenroll confirm dialog. * score: 1 ### component DispositionDialog * file: src/cores/pm/components/capitation/DispositionDialog.tsx:26 * kind: component * core: pm * spec: (none) * summary: PM-33: Disposition transition dialog (sm:max-w-md per CONTEXT.md).Notes required for every transition. * score: 2 ### component DocumentationRequestDialog * file: src/cores/pm/components/denial-prediction/DocumentationRequestDialog.tsx:37 * kind: component * core: pm * spec: (none) * summary: Dialog for sending documentation requests to the clinical team via PF-10 notifications. * score: 2 ### component DocumentationStep * file: src/cores/pm/components/wizards/payer-enrollment/steps/DocumentationStep.tsx:27 * kind: component * core: pm * spec: (none) * summary: Step 4 — Documentation step. * score: 1 ### component EdiDashboardCards * file: src/cores/pm/components/edi-enrollment/EdiDashboardCards.tsx:46 * kind: component * core: pm * spec: (none) * summary: Renders five summary cards for the EDI dashboard. * score: 2 ### component EdiEnrollmentDetailSheet * file: src/cores/pm/components/edi-enrollment/EdiEnrollmentDetailSheet.tsx:39 * kind: component * core: pm * spec: (none) * summary: Detail sheet for viewing/editing a single EDI enrollment. * score: 2 ### component EdiEnrollmentHubPage * file: src/cores/pm/pages/EdiEnrollmentHubPage.tsx:36 * kind: component * core: pm * spec: (none) * summary: EDI Enrollment Hub page with three tabs. * score: 2 ### component EdiEnrollmentMatrix * file: src/cores/pm/components/edi-enrollment/EdiEnrollmentMatrix.tsx:156 * kind: component * core: pm * spec: (none) * summary: Renders the enrollment matrix (desktop grid or mobile card list). * score: 2 ### component EditCostCategoryDialog * file: src/cores/pm/components/cost-accounting/EditCostCategoryDialog.tsx:36 * kind: component * core: pm * spec: (none) * summary: Dialog for editing an existing cost category. * score: 2 ### component EditCostRateDialog * file: src/cores/pm/components/cost-accounting/EditCostRateDialog.tsx:45 * kind: component * core: pm * spec: (none) * summary: Dialog for editing an existing cost rate. * score: 2 ### component EditPatientDemographicsDialog * file: src/cores/pm/components/EditPatientDemographicsDialog.tsx:71 * kind: component * core: pm * spec: (none) * summary: Utility for edit patient demographics dialog. * score: 1 ### component EmergencyContactFormDialog * file: src/cores/pm/components/EmergencyContactFormDialog.tsx:38 * kind: component * core: pm * spec: (none) * summary: Utility for emergency contact form dialog. * score: 1 ### component EncounterCostDetailDialog * file: src/cores/pm/components/cost-accounting/EncounterCostDetailDialog.tsx:42 * kind: component * core: pm * spec: (none) * summary: Detail dialog for a single encounter cost record. * score: 2 ### component EncounterCostsPage * file: src/cores/pm/pages/EncounterCostsPage.tsx:59 * kind: component * core: pm * spec: (none) * summary: Encounter costs list page. * score: 1 ### component EnrollmentAgingChart * file: src/cores/pm/components/edi-enrollment/EnrollmentAgingChart.tsx:28 * kind: component * core: pm * spec: (none) * summary: Renders a horizontal bar chart of enrollment aging buckets. * score: 2 ### component EnrollmentScopeStep * file: src/cores/pm/components/wizards/payer-enrollment/steps/EnrollmentScopeStep.tsx:32 * kind: component * core: pm * spec: (none) * summary: Step 1 — Enrollment Scope form. * score: 2 ### component EnrollmentStatusBadge * file: src/cores/pm/components/edi-enrollment/EnrollmentStatusBadge.tsx:35 * kind: component * core: pm * spec: (none) * summary: Renders a status badge for EDI enrollment, with optional stall warning. * score: 2 ### component EnrollmentStatusTimeline * file: src/cores/pm/components/edi-enrollment/EnrollmentStatusTimeline.tsx:33 * kind: component * core: pm * spec: (none) * summary: Renders a collapsible timeline of enrollment status changes.Per CONTEXT.md: collapsible, default expanded, newest first, compact density. * score: 2 ### component EraEftGapTable * file: src/cores/pm/components/edi-enrollment/EraEftGapTable.tsx:25 * kind: component * core: pm * spec: (none) * summary: Renders the ERA/EFT gap report as a responsive table/card list. * score: 2 ### component EraOrphanQueueTable * file: src/cores/pm/components/payments/EraOrphanQueueTable.tsx:37 * kind: component * core: pm * spec: (none) * summary: ERA orphan queue table with status/payer filters. * score: 2 ### component EraReconciliationPage * file: src/cores/pm/pages/EraReconciliationPage.tsx:47 * kind: component * core: pm * spec: (none) * summary: ERA Reconciliation underpayment work queue page. * score: 2 ### component EraUploadDialog * file: src/cores/pm/components/payments/EraUploadDialog.tsx:33 * kind: component * core: pm * spec: (none) * summary: Utility for era upload dialog. * score: 1 ### component ESignatureStep * file: src/cores/pm/components/wizards/pre-admission-packet/steps/ESignatureStep.tsx:32 * kind: component * core: pm * spec: (none) * summary: Step 5 of the pre-admission wizard — e-signature and attestation. * score: 2 ### component EvidenceStep * file: src/cores/pm/components/wizards/denial-appeal/steps/EvidenceStep.tsx:29 * kind: component * core: pm * spec: PM-29 * summary: Step 3 of the denial-appeal wizard: an evidence checklist and attachmentuploader for assembling the supporting documentation for the appeal. * params: * props — Wizard state/handlers for the evidence step. * score: 5 ### component ExternalReferralsPage * file: src/cores/pm/pages/ExternalReferralsPage.tsx:41 * kind: component * core: pm * spec: (none) * summary: External referrals management page. * score: 2 ### component FailoverSettingsCard * file: src/cores/pm/components/clearinghouse/FailoverSettingsCard.tsx:41 * kind: component * core: pm * spec: PM-15-P2-EN-01 * summary: Admin card for configuring clearinghouse failover: selects the secondaryvendor and the failure threshold that triggers automatic failover for a givenclearinghouse config. Editing is gated behind . * params: * props — The clearinghouse config and its current failover settings. * score: 4 ### component FaxReferralUploadDialog * file: src/cores/pm/components/referrals/FaxReferralUploadDialog.tsx:34 * kind: component * core: pm * spec: (none) * summary: Dialog to capture an inbound fax referral with minimal required fields. * score: 2 ### component FeeScheduleDetailPage * file: src/cores/pm/pages/FeeScheduleDetailPage.tsx:23 * kind: component * core: pm * spec: (none) * summary: Utility for fee schedule detail page. * score: 1 ### component FeeScheduleEntryForm * file: src/cores/pm/components/fee-schedules/FeeScheduleEntryForm.tsx:31 * kind: component * core: pm * spec: (none) * summary: Utility for fee schedule entry form. * score: 1 ### component FeeScheduleFormDialog * file: src/cores/pm/components/fee-schedules/FeeScheduleFormDialog.tsx:37 * kind: component * core: pm * spec: (none) * summary: Utility for fee schedule form dialog. * score: 1 ### component FeeScheduleListPage * file: src/cores/pm/pages/FeeScheduleListPage.tsx:25 * kind: component * core: pm * spec: (none) * summary: Utility for fee schedule list page. * score: 1 ### component FeeScheduleStep * file: src/cores/pm/components/wizards/site-billing-profile/FeeScheduleStep.tsx:41 * kind: component * core: pm * spec: (none) * summary: Wizard step 2: fee schedule selection and default POS code. * score: 2 ### component FieldResolutionStep * file: src/cores/pm/components/wizards/patient-merge-resolution/steps/FieldResolutionStep.tsx:46 * kind: component * core: pm * spec: (none) * summary: Step 2 of the Patient Merge Resolution Wizard: Field Resolution.For each conflicting demographic field, the operator picks the winner. * score: 2 ### component FinancialAssistanceDetailPage * file: src/cores/pm/pages/FinancialAssistanceDetailPage.tsx:26 * kind: component * core: pm * spec: (none) * summary: Utility for financial assistance detail page. * score: 1 ### component FinancialAssistanceFormDialog * file: src/cores/pm/components/statements/FinancialAssistanceFormDialog.tsx:32 * kind: component * core: pm * spec: (none) * summary: Utility for financial assistance form dialog. * score: 1 ### component FinancialAssistanceListPage * file: src/cores/pm/pages/FinancialAssistanceListPage.tsx:27 * kind: component * core: pm * spec: (none) * summary: Utility for financial assistance list page. * score: 1 ### component FinancialAssistanceReviewDialog * file: src/cores/pm/components/statements/FinancialAssistanceReviewDialog.tsx:35 * kind: component * core: pm * spec: (none) * summary: Utility for financial assistance review dialog. * score: 1 ### component FinancialClearancePanel * file: src/cores/pm/components/cost-estimation/FinancialClearancePanel.tsx:43 * kind: component * core: pm * spec: (none) * summary: Financial clearance checklist panel embedded on patient/admission detail.Five-item checklist with click-to-complete for manual items. * score: 2 ### component FinancialCounselingPage * file: src/cores/pm/pages/FinancialCounselingPage.tsx:34 * kind: component * core: pm * spec: (none) * summary: Patient Financial Counseling hub page. * score: 2 ### component ForecastOutputStep * file: src/cores/pm/components/wizards/contract-modeling/ForecastOutputStep.tsx:35 * kind: component * core: pm * spec: (none) * summary: Step 4: review computed forecast output and optionally recompute. * score: 2 ### component FraudAbuseFlagsPage * file: src/cores/pm/pages/FraudAbuseFlagsPage.tsx:23 * kind: component * core: pm * spec: (none) * summary: Utility for fraud abuse flags page. * score: 1 ### component FunnelStageLeadsDialog * file: src/cores/pm/components/analytics/FunnelStageLeadsDialog.tsx:33 * kind: component * core: pm * spec: PM-41 * summary: Drill-down dialog listing the individual leads that occupy a single funnelstage, letting analysts inspect the records behind an aggregate stage count. * params: * props — Open state, the selected , and an open-changehandler. * score: 5 ### component GenerateSecondaryClaimDialog * file: src/cores/pm/components/claims/GenerateSecondaryClaimDialog.tsx:34 * kind: component * core: pm * spec: (none) * summary: Confirm dialog for generating a secondary/tertiary claim from primary adjudication. * score: 2 ### component GenerateSuperbillDialog * file: src/cores/pm/components/superbill/GenerateSuperbillDialog.tsx:36 * kind: component * core: pm * spec: (none) * summary: Utility for generate superbill dialog. * score: 1 ### component GfeCreateDialog * file: src/cores/pm/components/gfe/GfeCreateDialog.tsx:22 * kind: component * core: pm * spec: (none) * summary: Utility for gfe create dialog. * score: 1 ### component GfeDeliverDialog * file: src/cores/pm/components/gfe/GfeDeliverDialog.tsx:22 * kind: component * core: pm * spec: (none) * summary: Utility for gfe deliver dialog. * score: 1 ### component GfeDetailPage * file: src/cores/pm/pages/GfeDetailPage.tsx:34 * kind: component * core: pm * spec: (none) * summary: Utility for gfe detail page. * score: 1 ### component GfeDisputeDetailPage * file: src/cores/pm/pages/GfeDisputeDetailPage.tsx:36 * kind: component * core: pm * spec: (none) * summary: Utility for gfe dispute detail page. * score: 1 ### component GfeDisputeListPage * file: src/cores/pm/pages/GfeDisputeListPage.tsx:29 * kind: component * core: pm * spec: (none) * summary: Utility for gfe dispute list page. * score: 1 ### component GfeDisputeResolveDialog * file: src/cores/pm/components/gfe/GfeDisputeResolveDialog.tsx:23 * kind: component * core: pm * spec: (none) * summary: Utility for gfe dispute resolve dialog. * score: 1 ### component GfeFileDisputeDialog * file: src/cores/pm/components/gfe/GfeFileDisputeDialog.tsx:24 * kind: component * core: pm * spec: (none) * summary: Utility for gfe file dispute dialog. * score: 1 ### component GfeListPage * file: src/cores/pm/pages/GfeListPage.tsx:33 * kind: component * core: pm * spec: (none) * summary: Utility for gfe list page. * score: 1 ### component GfeMappingConfigPage * file: src/cores/pm/pages/GfeMappingConfigPage.tsx:22 * kind: component * core: pm * spec: (none) * summary: Utility for gfe mapping config page. * score: 1 ### component GroupDefinitionDetailPage * file: src/cores/pm/pages/GroupDefinitionDetailPage.tsx:65 * kind: component * core: pm * spec: (none) * summary: Utility for group definition detail page. * score: 1 ### component GroupDefinitionFormDialog * file: src/cores/pm/components/GroupDefinitionFormDialog.tsx:59 * kind: component * core: pm * spec: (none) * summary: Utility for group definition form dialog. * score: 1 ### component GroupDefinitionsListPage * file: src/cores/pm/pages/GroupDefinitionsListPage.tsx:35 * kind: component * core: pm * spec: (none) * summary: Utility for group definitions list page. * score: 1 ### component GroupEnrollmentFormDialog * file: src/cores/pm/components/GroupEnrollmentFormDialog.tsx:39 * kind: component * core: pm * spec: (none) * summary: Utility for group enrollment form dialog. * score: 1 ### component GroupScheduleOccurrenceFormDialog * file: src/cores/pm/components/GroupScheduleOccurrenceFormDialog.tsx:61 * kind: component * core: pm * spec: (none) * summary: Utility for group schedule occurrence form dialog. * score: 1 ### component GuarantorFormDialog * file: src/cores/pm/components/GuarantorFormDialog.tsx:43 * kind: component * core: pm * spec: (none) * summary: Utility for guarantor form dialog. * score: 1 ### component HighRiskAppointmentsWidget * file: src/cores/pm/components/analytics/HighRiskAppointmentsWidget.tsx:34 * kind: component * core: pm * spec: PM-41 * summary: Dashboard widget listing upcoming appointments flagged with high no-show riskalongside recommended interventions, so schedulers can act before the visit. * params: * props — Optional scope/limit props selecting which appointments load. * score: 5 ### component ImpactPreviewStep * file: src/cores/pm/components/batch/wizard/ImpactPreviewStep.tsx:23 * kind: component * core: pm * spec: (none) * summary: Step 2 of the Batch Operation Wizard — impact preview. * score: 2 ### component ImpactPreviewStep * file: src/cores/pm/components/wizards/patient-merge-resolution/steps/ImpactPreviewStep.tsx:45 * kind: component * core: pm * spec: (none) * summary: Step 4 of the Patient Merge Resolution Wizard: Impact Preview\.Queries downstream record counts for the source patient and surfaces them. * score: 2 ### component InformationBlockingDispositionDialog * file: src/cores/pm/components/InformationBlockingDispositionDialog.tsx:67 * kind: component * core: pm * spec: PM-55 * summary: Compliance-officer dialog for dispositioning an information-blocking log entryas either a permitted Cures Act exception or actual information blocking. Theserver-side trigger publishes when theentry is marked as info blocking. * params: * props — The log entry to disposition plus controlled open state. * score: 5 ### component InstallmentTimeline * file: src/cores/pm/components/payment-plans/InstallmentTimeline.tsx:40 * kind: component * core: pm * spec: (none) * summary: Renders a vertical timeline of installment payments with status icons. * score: 2 ### component InstitutionalClaimDialog * file: src/cores/pm/components/claims/InstitutionalClaimDialog.tsx:43 * kind: component * core: pm * spec: (none) * summary: Edit institutional (UB-04) claim detail fields. * score: 2 ### component InsuranceDocsStep * file: src/cores/pm/components/wizards/pre-admission-packet/steps/InsuranceDocsStep.tsx:71 * kind: component * core: pm * spec: (none) * summary: Step 4 of the pre-admission wizard — insurance and document uploads. * score: 2 ### component InsurancePolicyFormDialog * file: src/cores/pm/components/InsurancePolicyFormDialog.tsx:54 * kind: component * core: pm * spec: (none) * summary: Utility for insurance policy form dialog. * score: 1 ### component IntakeMatchingPage * file: src/cores/pm/pages/IntakeMatchingPage.tsx:22 * kind: component * core: pm * spec: (none) * summary: Intake matching dashboard showing match log history and settings. * score: 2 ### component IntakeMatchSettingsCard * file: src/cores/pm/components/intake-matching/IntakeMatchSettingsCard.tsx:22 * kind: component * core: pm * spec: (none) * summary: Card for configuring intake match settings (availability days, auto-schedule, latency, override alert). * score: 2 ### component IntakeStep * file: src/cores/pm/components/wizards/denial-appeal/steps/IntakeStep.tsx:32 * kind: component * core: pm * spec: PM-29 * summary: Step 1 of the denial-appeal wizard. Captures the denial reference, payer,CARC/RARC codes, and denial category that drive the rest of the appeal flow. * params: * props — Wizard state/handlers for the denial-intake step. * score: 5 ### component InternalControlsPage * file: src/cores/pm/pages/InternalControlsPage.tsx:20 * kind: component * core: pm * spec: (none) * summary: Utility for internal controls page. * score: 1 ### component KioskConfirmation * file: src/cores/pm/components/kiosk/KioskConfirmation.tsx:28 * kind: component * core: pm * spec: PM-34-EN-01 * summary: Full-screen kiosk check-in success screen that confirms completion andauto-redirects back to the welcome/idle screen after a short delay. * params: * props — Optional completion message and redirect callback. * score: 4 ### component KioskConsentSigning * file: src/cores/pm/components/kiosk/KioskConsentSigning.tsx:44 * kind: component * core: pm * spec: PM-34-EN-01 * summary: Kiosk check-in step presenting each pending consent document with a signaturepad, capturing the patient signature per document before allowing the flow toadvance. * params: * props — Pending consents and the per-consent sign callback. * score: 4 ### component KioskDemographicsForm * file: src/cores/pm/components/kiosk/KioskDemographicsForm.tsx:109 * kind: component * core: pm * spec: PM-34-EN-01 * summary: Kiosk demographics verification step. Renders the patient's currentdemographics in an editable, touch-friendly form (phone, email, emergencycontact per FR-2.1) and emits only the changed fields on submit. * params: * props — Current demographics, loading/submitting flags, and the submithandler receiving the edited values. * score: 4 ### component KioskInsuranceCapture * file: src/cores/pm/components/kiosk/KioskInsuranceCapture.tsx:39 * kind: component * core: pm * spec: PM-34-EN-01 * summary: Kiosk check-in step for capturing the front and back of an insurance card viathe control, so coverage can be verified during intake. * params: * props — Capture callbacks for the front/back card images. * score: 4 ### component KioskPatientDisambiguation * file: src/cores/pm/components/kiosk/KioskPatientDisambiguation.tsx:30 * kind: component * core: pm * spec: PM-34-EN-01 * summary: Kiosk step shown when a patient lookup matches multiple appointments, lettingthe patient select the correct one before proceeding with check-in. * params: * props — The candidate appointments and the selection callback. * score: 4 ### component KioskPatientIdentification * file: src/cores/pm/components/kiosk/KioskPatientIdentification.tsx:43 * kind: component * core: pm * spec: PM-34-EN-01 * summary: First kiosk check-in step: a large-touch-target form collecting date of birthand last name to look up the patient and their appointment. * params: * props — The lookup-submit callback and any error/loading state. * score: 4 ### component KioskPaymentScreen * file: src/cores/pm/components/kiosk/KioskPaymentScreen.tsx:33 * kind: component * core: pm * spec: PM-34-EN-01 * summary: Kiosk copay collection step displaying the amount due with pay-now or declineoptions. Phase A records intent only; no hardware payment terminal is wired in. * params: * props — The copay amount plus pay/decline callbacks. * score: 4 ### component KioskProgressStepper * file: src/cores/pm/components/kiosk/KioskProgressStepper.tsx:40 * kind: component * core: pm * spec: PM-34-EN-01 * summary: Progress-only header for the kiosk check-in flow, reusing the PF-41 WizardShellhorizontal layout to show the patient which step they are on. * params: * props — The step definitions and the active step index. * score: 4 ### component KioskSessionsPanel * file: src/cores/pm/components/kiosk/KioskSessionsPanel.tsx:53 * kind: component * core: pm * spec: PM-34-EN-01 * summary: Staff monitoring panel listing recent and active kiosk check-in sessions in asimple table. Gated behind the permission. * params: * props — Optional scope/limit props for the sessions query. * score: 4 ### component KioskSettingsSection * file: src/cores/pm/components/settings/KioskSettingsSection.tsx:32 * kind: component * core: pm * spec: PM-34-EN-01 * summary: Settings section for kiosk configuration embedded in the PM-28 settings page.Gated behind the permission. * params: * props — The current kiosk settings and the save handler. * score: 4 ### component KioskThirdFactorVerification * file: src/cores/pm/components/kiosk/KioskThirdFactorVerification.tsx:48 * kind: component * core: pm * spec: PM-34-EN-01 * summary: Third-factor identity check (FR-1.2) shown after a DOB + last-name match:requires the patient to enter their ZIP code before any PHI is displayed, witha 3-attempt lockout to deter guessing. * params: * props — The expected ZIP and the verify/lockout callbacks. * score: 4 ### component KioskTimeoutWarning * file: src/cores/pm/components/kiosk/KioskTimeoutWarning.tsx:38 * kind: component * core: pm * spec: PM-34-EN-01 * summary: Inactivity warning dialog for the kiosk that counts down 30 seconds beforeresetting the session, giving the patient a chance to continue. * params: * props — Open state plus continue/reset callbacks. * score: 4 ### component KioskWelcomeScreen * file: src/cores/pm/components/kiosk/KioskWelcomeScreen.tsx:26 * kind: component * core: pm * spec: PM-34-EN-01 * summary: Full-screen kiosk welcome/idle screen with a "Check In" call to action,displayed whenever no check-in session is active. * params: * props — The start-check-in callback. * score: 4 ### component LetterStep * file: src/cores/pm/components/wizards/denial-appeal/steps/LetterStep.tsx:54 * kind: component * core: pm * spec: PM-29, PM-29-EN-01 * summary: Step 4 of the denial-appeal wizard: composes the appeal letter from templatesfiltered by denial category and payer, with support for a custom addendum.When AI is enabled (PM-29-EN-01), shows a 'Generate AI Draft' button above theletter body textarea. The AI-generated content is a DRAFT — the billing specialistmust review and edit before submitting (human-in-the-loop per PM-29-EN-01 design).The deterministic merge engine (appeal-letter-merge.ts) remains the fallback whenAI is disabled or errors. * params: * props — Wizard state/handlers for the letter-composition step. * score: 4 ### component MatchLogFilters * file: src/cores/pm/components/intake-matching/MatchLogFilters.tsx:23 * kind: component * core: pm * spec: (none) * summary: Collapsible filter bar for match log queries. * score: 2 ### component MatchLogTable * file: src/cores/pm/components/intake-matching/MatchLogTable.tsx:24 * kind: component * core: pm * spec: (none) * summary: Table displaying match log audit entries. * score: 2 ### component MatchStatusBadge * file: src/cores/pm/components/intake-matching/MatchStatusBadge.tsx:29 * kind: component * core: pm * spec: (none) * summary: Renders a badge indicating the match log entry status. * score: 2 ### component MessagingInboxPage * file: src/cores/pm/pages/MessagingInboxPage.tsx:59 * kind: component * core: pm * spec: (none) * summary: Utility for messaging inbox page. * score: 1 ### component MessagingThreadPage * file: src/cores/pm/pages/MessagingThreadPage.tsx:19 * kind: component * core: pm * spec: (none) * summary: Utility for messaging thread page. * score: 1 ### component MetricsKPICards * file: src/cores/pm/components/denial-prediction/MetricsKPICards.tsx:63 * kind: component * core: pm * spec: (none) * summary: Grid of 4 KPI cards for model performance metrics. * score: 2 ### component MetricsTrendChart * file: src/cores/pm/components/denial-prediction/MetricsTrendChart.tsx:30 * kind: component * core: pm * spec: (none) * summary: Line chart displaying model performance metrics over time. * score: 2 ### component MilestonesStep * file: src/cores/pm/components/wizards/payer-enrollment/steps/MilestonesStep.tsx:28 * kind: component * core: pm * spec: (none) * summary: Step 5 — Milestones step. * score: 1 ### component OperationScopeStep * file: src/cores/pm/components/batch/wizard/OperationScopeStep.tsx:23 * kind: component * core: pm * spec: (none) * summary: Step 1 of the Batch Operation Wizard — scope selection. * score: 2 ### component OrphanMatchSheet * file: src/cores/pm/components/payments/OrphanMatchSheet.tsx:34 * kind: component * core: pm * spec: (none) * summary: Side panel for matching/rejecting an ERA orphan line. * score: 2 ### component OtpBillingPeriodSheet * file: src/cores/pm/components/otp/OtpBillingPeriodSheet.tsx:34 * kind: component * core: pm * spec: (none) * summary: OTP Billing period detail / create sheet. * score: 2 ### component OtpBillingPeriodsTab * file: src/cores/pm/components/otp/OtpBillingPeriodsTab.tsx:33 * kind: component * core: pm * spec: (none) * summary: OTP Billing periods list for a patient. * score: 2 ### component OtpProgramDialog * file: src/cores/pm/components/otp/OtpProgramDialog.tsx:49 * kind: component * core: pm * spec: (none) * summary: OTP Program create/edit dialog. * score: 2 ### component OtpProgramsListPage * file: src/cores/pm/pages/OtpProgramsListPage.tsx:29 * kind: component * core: pm * spec: (none) * summary: OTP Programs list page. * score: 1 ### component OtpServiceComponentsTable * file: src/cores/pm/components/otp/OtpServiceComponentsTable.tsx:37 * kind: component * core: pm * spec: (none) * summary: Inline service components table for a billing period. * score: 2 ### component OverrideClearanceDialog * file: src/cores/pm/components/cost-estimation/OverrideClearanceDialog.tsx:38 * kind: component * core: pm * spec: (none) * summary: Destructive confirmation dialog requiring reason and supervisorapproval to override financial clearance for clinical emergencies. * score: 2 ### component OverrideReasonDialog * file: src/cores/pm/components/denial-prediction/OverrideReasonDialog.tsx:29 * kind: component * core: pm * spec: (none) * summary: Dialog for collecting override reason text before submitting a claim override. * score: 2 ### component PacketFormsViewerDialog * file: src/cores/pm/components/PacketFormsViewerDialog.tsx:68 * kind: component * core: pm * spec: (none) * summary: Read-only dialog showing submitted preadmission form dataorganized by template sections. * score: 2 ### component PatientAddressFormDialog * file: src/cores/pm/components/PatientAddressFormDialog.tsx:44 * kind: component * core: pm * spec: (none) * summary: Utility for patient address form dialog. * score: 1 ### component PatientDetailPage * file: src/cores/pm/pages/PatientDetailPage.tsx:82 * kind: component * core: pm * spec: (none) * summary: Utility for patient detail page. * score: 1 ### component PatientEstimateCard * file: src/cores/pm/components/eligibility/PatientEstimateCard.tsx:60 * kind: component * core: pm * spec: (none) * summary: Card summarising the most recent patient-responsibility estimate.Renders a "Recalculate" button when the org has benefit parsingenabled and the user holds . * score: 2 ### component PatientFinancialAssessmentFormDialog * file: src/cores/pm/components/PatientFinancialAssessmentFormDialog.tsx:48 * kind: component * core: pm * spec: (none) * summary: Utility for patient financial assessment form dialog. * score: 1 ### component PatientFinancialAssessmentList * file: src/cores/pm/components/PatientFinancialAssessmentList.tsx:32 * kind: component * core: pm * spec: (none) * summary: Utility for patient financial assessment list. * score: 1 ### component PatientInsuranceList * file: src/cores/pm/components/PatientInsuranceList.tsx:63 * kind: component * core: pm * spec: (none) * summary: Utility for patient insurance list. * score: 1 ### component PatientLeadHistory * file: src/cores/pm/components/patients/PatientLeadHistory.tsx:30 * kind: component * core: pm * spec: (none) * summary: Shows lead conversion audit trail for a patient. * score: 2 ### component PatientListPage * file: src/cores/pm/pages/PatientListPage.tsx:41 * kind: component * core: pm * spec: (none) * summary: Utility for patient list page. * score: 1 ### component PatientMergeResolutionWizard * file: src/cores/pm/components/wizards/patient-merge-resolution/PatientMergeResolutionWizard.tsx:49 * kind: component * core: pm * spec: (none) * summary: Guided 5-step dialog wizard for safely merging duplicate patient records.Implements PM-UX-16 spec using DialogWizardShell (sm:max-w-2xl). * score: 2 ### component PatientOtpBillingPage * file: src/cores/pm/pages/PatientOtpBillingPage.tsx:15 * kind: component * core: pm * spec: (none) * summary: Patient OTP billing page. * score: 1 ### component PatientPaymentPlanDetailPage45 * file: src/cores/pm/pages/PatientPaymentPlanDetailPage45.tsx:46 * kind: component * core: pm * spec: (none) * summary: Detail view for a patient payment plan with installment timeline. * score: 2 ### component PatientPaymentPlanListPage * file: src/cores/pm/pages/PatientPaymentPlanListPage.tsx:37 * kind: component * core: pm * spec: (none) * summary: List page for patient payment plans (PM-45). * score: 2 ### component PatientRegistrationForm * file: src/cores/pm/components/PatientRegistrationForm.tsx:91 * kind: component * core: pm * spec: (none) * summary: Utility for patient registration form. * score: 1 ### component PatientSiteTransferSection * file: src/cores/pm/components/site-billing/PatientSiteTransferSection.tsx:26 * kind: component * core: pm * spec: (none) * summary: Utility for patient site transfer section. * score: 1 ### component PayerAccuracyChart * file: src/cores/pm/components/denial-prediction/PayerAccuracyChart.tsx:25 * kind: component * core: pm * spec: (none) * summary: Bar chart displaying per-payer prediction accuracy metrics. * score: 2 ### component PayerAuditExportPage * file: src/cores/pm/pages/PayerAuditExportPage.tsx:22 * kind: component * core: pm * spec: (none) * summary: Utility for payer audit export page. * score: 1 ### component PayerContractDetailPage * file: src/cores/pm/pages/PayerContractDetailPage.tsx:30 * kind: component * core: pm * spec: (none) * summary: Utility for payer contract detail page. * score: 1 ### component PayerContractFormDialog * file: src/cores/pm/components/contracts/PayerContractFormDialog.tsx:54 * kind: component * core: pm * spec: (none) * summary: Utility for payer contract form dialog. * score: 1 ### component PayerContractsListPage * file: src/cores/pm/pages/PayerContractsListPage.tsx:39 * kind: component * core: pm * spec: (none) * summary: Utility for payer contracts list page. * score: 1 ### component PayerDefaultsStep * file: src/cores/pm/components/wizards/site-billing-profile/PayerDefaultsStep.tsx:23 * kind: component * core: pm * spec: (none) * summary: Wizard step 3: payer-specific claim defaults. * score: 2 ### component PayerDrillDownSheet * file: src/cores/pm/components/era-reconciliation/PayerDrillDownSheet.tsx:32 * kind: component * core: pm * spec: (none) * summary: Drill-down sheet showing CPT-level breakdown for a payer. * score: 2 ### component PayerEnrollmentFormDialog * file: src/cores/pm/components/clearinghouse/PayerEnrollmentFormDialog.tsx:34 * kind: component * core: pm * spec: (none) * summary: Utility for payer enrollment form dialog. * score: 1 ### component PayerEnrollmentListPage * file: src/cores/pm/pages/PayerEnrollmentListPage.tsx:35 * kind: component * core: pm * spec: (none) * summary: Utility for payer enrollment list page. * score: 1 ### component PayerEnrollmentWizard * file: src/cores/pm/components/wizards/payer-enrollment/PayerEnrollmentWizard.tsx:41 * kind: component * core: pm * spec: (none) * summary: Payer Enrollment Wizard (PM-UX-07).Mounted via the route. * score: 2 ### component PayerEnrollmentWizardPage * file: src/cores/pm/pages/PayerEnrollmentWizardPage.tsx:14 * kind: component * core: pm * spec: (none) * summary: Full-page payer enrollment wizard. * score: 2 ### component PayerFormDialog * file: src/cores/pm/components/PayerFormDialog.tsx:41 * kind: component * core: pm * spec: (none) * summary: Utility for payer form dialog. * score: 1 ### component PayerModifierRuleFormDialog * file: src/cores/pm/components/payer-modifier-rules/PayerModifierRuleFormDialog.tsx:49 * kind: component * core: pm * spec: (none) * summary: Form dialog for creating/editing payer modifier rules. * score: 2 ### component PayerModifierRulesPage * file: src/cores/pm/pages/PayerModifierRulesPage.tsx:36 * kind: component * core: pm * spec: (none) * summary: Payer Modifier Rules admin page. * score: 2 ### component PayerPerformancePage * file: src/cores/pm/pages/PayerPerformancePage.tsx:32 * kind: component * core: pm * spec: (none) * summary: Payer Performance Dashboard. * score: 1 ### component PayerPolicyFormDialog * file: src/cores/pm/components/care-mgmt/PayerPolicyFormDialog.tsx:110 * kind: component * core: pm * spec: (none) * summary: Form dialog for creating/editing a payer-policy row. * score: 2 ### component PayerRoutesTable * file: src/cores/pm/components/clearinghouse/PayerRoutesTable.tsx:37 * kind: component * core: pm * spec: PM-15-P2-EN-01 * summary: Table of per-payer clearinghouse route overrides, letting admins add, edit,or remove which vendor a given payer routes through. Mutations are gated by. * params: * props — The route override rows and config context for mutations. * score: 4 ### component PayersListPage * file: src/cores/pm/pages/PayersListPage.tsx:46 * kind: component * core: pm * spec: (none) * summary: Utility for payers list page. * score: 1 ### component PaymentDetailPage * file: src/cores/pm/pages/PaymentDetailPage.tsx:40 * kind: component * core: pm * spec: (none) * summary: Utility for payment detail page. * score: 1 ### component PaymentMethodStep * file: src/cores/pm/components/payment-plans/wizard/PaymentMethodStep.tsx:23 * kind: component * core: pm * spec: (none) * summary: Wizard step for selecting payment method. * score: 2 ### component PaymentPlanDetailPage * file: src/cores/pm/pages/PaymentPlanDetailPage.tsx:26 * kind: component * core: pm * spec: (none) * summary: Utility for payment plan detail page. * score: 1 ### component PaymentPlanFormDialog * file: src/cores/pm/components/statements/PaymentPlanFormDialog.tsx:36 * kind: component * core: pm * spec: (none) * summary: Utility for payment plan form dialog. * score: 1 ### component PaymentPlanListPage * file: src/cores/pm/pages/PaymentPlanListPage.tsx:30 * kind: component * core: pm * spec: (none) * summary: Utility for payment plan list page. * score: 1 ### component PaymentPlanReportingPage * file: src/cores/pm/pages/PaymentPlanReportingPage.tsx:44 * kind: component * core: pm * spec: (none) * summary: Payment plan reporting dashboard with KPI cards and charts. * score: 2 ### component PaymentPlanWizard * file: src/cores/pm/components/payment-plans/PaymentPlanWizard.tsx:76 * kind: component * core: pm * spec: (none) * summary: 5-step wizard dialog for creating a patient payment plan. * score: 2 ### component PaymentPostDialog * file: src/cores/pm/components/payments/PaymentPostDialog.tsx:112 * kind: component * core: pm * spec: (none) * summary: Utility for payment post dialog. * score: 1 ### component PaymentsListPage * file: src/cores/pm/pages/PaymentsListPage.tsx:40 * kind: component * core: pm * spec: (none) * summary: Utility for payments list page. * score: 1 ### component PendingIntakePacketsTab * file: src/cores/pm/components/portal/PendingIntakePacketsTab.tsx:34 * kind: component * core: pm * spec: (none) * summary: Workbench tab body — pending intake packets blocking scheduling. * score: 2 ### component PeriodsTab * file: src/cores/pm/components/capitation/PeriodsTab.tsx:35 * kind: component * core: pm * spec: (none) * summary: PM-33: Periods tab inside contract detail page. * score: 2 ### component PersonalInfoStep * file: src/cores/pm/components/wizards/pre-admission-packet/steps/PersonalInfoStep.tsx:43 * kind: component * core: pm * spec: (none) * summary: Step 1 of the pre-admission wizard — personal information and demographics. * score: 2 ### component PMDashboard * file: src/cores/pm/pages/PMDashboard.tsx:7 * kind: component * core: pm * spec: (none) * summary: Utility for pmdashboard. * score: 1 ### component PMOverview * file: src/cores/pm/pages/PMOverview\.tsx:28 * kind: component * core: pm * spec: (none) * summary: Utility for pmoverview. * score: 1 ### component PMRoomSettingsPage * file: src/cores/pm/pages/PMRoomSettingsPage.tsx:30 * kind: component * core: pm * spec: (none) * summary: Settings page for managing organization rooms. * score: 2 ### component PMSettingsForm * file: src/cores/pm/components/PMSettingsForm.tsx:99 * kind: component * core: pm * spec: (none) * summary: Utility for pmsettings form. * score: 1 ### component PMSettingsPage * file: src/cores/pm/pages/PMSettingsPage.tsx:87 * kind: component * core: pm * spec: (none) * summary: Utility for pmsettings page. * score: 1 ### component PortalAppointmentsPage * file: src/cores/pm/pages/portal/PortalAppointmentsPage.tsx:33 * kind: component * core: pm * spec: (none) * summary: Utility for portal appointments page. * score: 1 ### component PortalBillingPage * file: src/cores/pm/pages/portal/PortalBillingPage.tsx:19 * kind: component * core: pm * spec: (none) * summary: Utility for portal billing page. * score: 1 ### component PortalClinicalPage * file: src/cores/pm/pages/portal/PortalClinicalPage.tsx:32 * kind: component * core: pm * spec: (none) * summary: Utility for portal clinical page. * score: 1 ### component PortalDashboardPage * file: src/cores/pm/pages/portal/PortalDashboardPage.tsx:34 * kind: component * core: pm * spec: (none) * summary: Utility for portal dashboard page. * score: 1 ### component PortalDemographicsPage * file: src/cores/pm/pages/portal/PortalDemographicsPage.tsx:30 * kind: component * core: pm * spec: (none) * summary: Utility for portal demographics page. * score: 1 ### component PortalFormsPage * file: src/cores/pm/pages/portal/PortalFormsPage.tsx:88 * kind: component * core: pm * spec: (none) * summary: Utility for portal forms page. * score: 1 ### component PortalIntakePacket * file: src/cores/pm/components/portal/PortalIntakePacket.tsx:36 * kind: component * core: pm * spec: (none) * summary: Patient intake packet card with progress, readiness, and item list. * score: 2 ### component PortalLayout * file: src/cores/pm/pages/portal/PortalLayout.tsx:56 * kind: component * core: pm * spec: (none) * summary: Utility for portal layout. * score: 1 ### component PortalLoginPage * file: src/cores/pm/pages/portal/PortalLoginPage.tsx:33 * kind: component * core: pm * spec: (none) * summary: Utility for portal login page. * score: 1 ### component PortalMessagesPage * file: src/cores/pm/pages/portal/PortalMessagesPage.tsx:24 * kind: component * core: pm * spec: (none) * summary: Utility for portal messages page. * score: 1 ### component PortalMfaPage * file: src/cores/pm/pages/portal/PortalMfaPage.tsx:26 * kind: component * core: pm * spec: (none) * summary: Utility for portal mfa page. * score: 1 ### component PortalPacketItem * file: src/cores/pm/components/portal/PortalPacketItem.tsx:55 * kind: component * core: pm * spec: (none) * summary: Row representing a single intake packet item. * score: 2 ### component PortalPacketProgress * file: src/cores/pm/components/portal/PortalPacketProgress.tsx:34 * kind: component * core: pm * spec: (none) * summary: Renders a circular progress ring showing packet items. * score: 2 ### component PortalPreAdmissionWizardPage * file: src/cores/pm/pages/portal/PortalPreAdmissionWizardPage.tsx:25 * kind: component * core: pm * spec: (none) * summary: Utility for portal pre-admission wizard page. * score: 1 ### component PortalRegisterPage * file: src/cores/pm/pages/portal/PortalRegisterPage.tsx:41 * kind: component * core: pm * spec: (none) * summary: Utility for portal register page. * score: 1 ### component PreadmissionFormRenderer * file: src/cores/pm/components/PreadmissionFormRenderer.tsx:263 * kind: component * core: pm * spec: PM-40 * summary: Renders a digital preadmission packet form from its schema, driving fieldinput, validation, and e-signature capture for the patient to complete thepacket online before admission. * params: * props — The form schema/definition plus submit and value-changehandlers. * score: 5 ### component PreAdmissionPacketWizard * file: src/cores/pm/components/wizards/pre-admission-packet/PreAdmissionPacketWizard.tsx:69 * kind: component * core: pm * spec: (none) * summary: Full-page pre-admission packet wizard for the patient portal. * score: 2 ### component PreadmissionPortalPage * file: src/cores/pm/pages/PreadmissionPortalPage.tsx:194 * kind: component * core: pm * spec: (none) * summary: Default export adds patient-portal SEO metadata so thepreadmission packet page has a unique title and description. * score: 2 ### component PreadmissionStatusCard * file: src/cores/pm/components/PreadmissionStatusCard.tsx:87 * kind: component * core: pm * spec: PM-40 * summary: Status card summarizing a patient's digital preadmission packet — whichsections are complete, outstanding signatures, and overall readiness foradmission. * params: * props — The preadmission packet/status record being summarized. * score: 5 ### component PredictionDetailSheet * file: src/cores/pm/components/denial-prediction/PredictionDetailSheet.tsx:49 * kind: component * core: pm * spec: (none) * summary: Sheet displaying prediction details with biller action workflow. * score: 2 ### component PriorAuthorizationDetailPage * file: src/cores/pm/pages/PriorAuthorizationDetailPage.tsx:62 * kind: component * core: pm * spec: (none) * summary: Utility for prior authorization detail page. * score: 1 ### component PriorAuthorizationFormDialog * file: src/cores/pm/components/authorizations/PriorAuthorizationFormDialog.tsx:51 * kind: component * core: pm * spec: (none) * summary: Utility for prior authorization form dialog. * score: 1 ### component PriorAuthorizationListPage * file: src/cores/pm/pages/PriorAuthorizationListPage.tsx:49 * kind: component * core: pm * spec: (none) * summary: Utility for prior authorization list page. * score: 1 ### component ProviderCaseloadPage * file: src/cores/pm/pages/ProviderCaseloadPage.tsx:24 * kind: component * core: pm * spec: (none) * summary: Utility for provider caseload page. * score: 1 ### component ProviderEnrollmentDetailPage * file: src/cores/pm/pages/ProviderEnrollmentDetailPage.tsx:63 * kind: component * core: pm * spec: (none) * summary: Utility for provider enrollment detail page. * score: 1 ### component ProviderEnrollmentFormDialog * file: src/cores/pm/components/credentialing/ProviderEnrollmentForm.tsx:43 * kind: component * core: pm * spec: (none) * summary: Utility for provider enrollment form dialog. * score: 1 ### component ProviderEnrollmentListPage * file: src/cores/pm/pages/ProviderEnrollmentListPage.tsx:44 * kind: component * core: pm * spec: (none) * summary: Utility for provider enrollment list page. * score: 1 ### component ProviderHeatmap * file: src/cores/pm/components/analytics/ProviderHeatmap.tsx:60 * kind: component * core: pm * spec: PM-41 * summary: Provider performance heatmap with one row per provider and columns forconversion %, no-show %, and revenue realized. Cells are colour-banded bypercentile (top quartile through bottom quartile) for quick comparison. * params: * props — Provider metric rows to render and optional formatting flags. * score: 5 ### component ProviderIdentifierValidationDialog * file: src/cores/pm/components/credentialing/ProviderIdentifierValidationDialog.tsx:34 * kind: component * core: pm * spec: (none) * summary: Utility for provider identifier validation dialog. * score: 1 ### component ProviderPayerConfigHubPage * file: src/cores/pm/pages/ProviderPayerConfigHubPage.tsx:46 * kind: component * core: pm * spec: (none) * summary: Provider & Payer Config hub page. Renders the contracts/fee-schedule/credentialingadmin tab strip via the shared primitive. * score: 2 ### component ProviderScheduleFormDialog * file: src/cores/pm/components/provider-schedule/ProviderScheduleFormDialog.tsx:62 * kind: component * core: pm * spec: (none) * summary: Utility for provider schedule form dialog. * score: 1 ### component ProviderSchedulePage * file: src/cores/pm/pages/ProviderSchedulePage.tsx:66 * kind: component * core: pm * spec: (none) * summary: Utility for provider schedule page. * score: 1 ### component QuestionnairesStep * file: src/cores/pm/components/wizards/pre-admission-packet/steps/QuestionnairesStep.tsx:32 * kind: component * core: pm * spec: (none) * summary: Step 3 of the pre-admission wizard — intake questionnaires. * score: 2 ### component QueueSummaryPanel * file: src/cores/pm/components/workbench/QueueSummaryPanel.tsx:81 * kind: component * core: pm * spec: (none) * summary: Queue summary sidebar panel for the coordinator workbench. * score: 2 ### component RateAdjustmentsStep * file: src/cores/pm/components/wizards/contract-modeling/RateAdjustmentsStep.tsx:22 * kind: component * core: pm * spec: (none) * summary: Step 3: define rate adjustments for each CPT/HCPCS code. * score: 2 ### component RcmActionBuilder * file: src/cores/pm/components/rcm/RcmActionBuilder.tsx:29 * kind: component * core: pm * spec: PM-49 * summary: Form-based editor for the actions an RCM automation rule performs when itsconditions match. Supports adding, configuring, and removing action rows. * params: * props — The current action list and its change handler. * score: 5 ### component RcmActivationDialog * file: src/cores/pm/components/rcm/RcmActivationDialog.tsx:40 * kind: component * core: pm * spec: PM-49 * summary: Confirmation dialog for activating an RCM automation rule, summarizing therule before the operator approves it going live. * params: * props — The rule being activated plus controlled open state. * score: 5 ### component RcmConditionBuilder * file: src/cores/pm/components/rcm/RcmConditionBuilder.tsx:29 * kind: component * core: pm * spec: PM-49 * summary: Form-based editor for the matching conditions of an RCM automation rule.Supports adding, configuring, and removing condition rows that gate the rule. * params: * props — The current condition list and its change handler. * score: 5 ### component RcmOverrideDialog * file: src/cores/pm/components/rcm/RcmOverrideDialog.tsx:34 * kind: component * core: pm * spec: PM-49 * summary: Dialog for overriding an RCM rule execution, capturing a reason code andfree-text justification that are recorded as a new immutable audit row. * params: * props — The execution being overridden plus controlled open state. * score: 5 ### component RcmRuleEditorSheet * file: src/cores/pm/components/rcm/RcmRuleEditorSheet.tsx:54 * kind: component * core: pm * spec: PM-49 * summary: Side-sheet editor for creating or updating an RCM automation rule — name,trigger, conditions, and actions — wiring the condition and action buildersinto a single save flow. * params: * props — The rule under edit (or new) plus controlled open state. * score: 5 ### component RcmScoreBreakdown * file: src/cores/pm/components/rcm/RcmScoreBreakdown.tsx:30 * kind: component * core: pm * spec: PM-49 * summary: Visualizes an RCM denial-risk score as four horizontal bars, one per scoringdimension, so reviewers can see what drove the overall score. * params: * props — The score breakdown to render. * score: 5 ### component RcmSimulationResultsDialog * file: src/cores/pm/components/rcm/RcmSimulationResultsDialog.tsx:31 * kind: component * core: pm * spec: PM-49 * summary: Dialog presenting the results of a dry-run RCM rule simulation — how manyrecords would be affected and the projected financial impact — before theoperator activates the rule. * params: * props — The simulation identifier/results plus controlled open state. * score: 5 ### component ReassignTaskDialog * file: src/cores/pm/components/workbench/dialogs/ReassignTaskDialog.tsx:29 * kind: component * core: pm * spec: (none) * summary: Reassign dialog for a coordinator task. * score: 2 ### component ReconciliationDetailSheet * file: src/cores/pm/components/era-reconciliation/ReconciliationDetailSheet.tsx:47 * kind: component * core: pm * spec: (none) * summary: Reconciliation detail sheet with claim info, variance, and actions. * score: 2 ### component ReconciliationFilterBar * file: src/cores/pm/components/era-reconciliation/ReconciliationFilterBar.tsx:34 * kind: component * core: pm * spec: (none) * summary: Filter bar for the underpayment work queue. * score: 2 ### component ReconciliationsTab * file: src/cores/pm/components/capitation/ReconciliationsTab.tsx:34 * kind: component * core: pm * spec: (none) * summary: PM-33: Reconciliations tab inside contract detail page. * score: 2 ### component RecordSiteTransferDialog * file: src/cores/pm/components/site-billing/RecordSiteTransferDialog.tsx:44 * kind: component * core: pm * spec: (none) * summary: Utility for record site transfer dialog. * score: 1 ### component ReferralDialog * file: src/cores/pm/components/financial-counseling/ReferralDialog.tsx:36 * kind: component * core: pm * spec: (none) * summary: Referral form dialog for PM-32 Financial Counseling. * score: 2 ### component ReferralFormDialog * file: src/cores/pm/components/referrals/ReferralFormDialog.tsx:58 * kind: component * core: pm * spec: (none) * summary: Utility for referral form dialog. * score: 1 ### component ReferralNextSteps * file: src/cores/pm/components/referrals/ReferralNextSteps.tsx:22 * kind: component * core: pm * spec: (none) * summary: Utility for referral next steps. * score: 1 ### component ReferralPacketChecklist * file: src/cores/pm/components/referrals/ReferralPacketChecklist.tsx:23 * kind: component * core: pm * spec: (none) * summary: Inline checklist of packet items for a referral. Touch targets ≥44px. * score: 2 ### component ReferralSlaBadge * file: src/cores/pm/components/referrals/ReferralSlaBadge.tsx:20 * kind: component * core: pm * spec: (none) * summary: Renders a contextual SLA badge (none / on-track / due soon / breached). * score: 2 ### component ReferralsListPage * file: src/cores/pm/pages/ReferralsListPage.tsx:46 * kind: component * core: pm * spec: (none) * summary: Utility for referrals list page. * score: 1 ### component ReferralsTab * file: src/cores/pm/components/financial-counseling/ReferralsTab.tsx:31 * kind: component * core: pm * spec: (none) * summary: Referrals list tab for the Financial Counseling hub. * score: 2 ### component ReferralStatusMenu * file: src/cores/pm/components/referrals/ReferralStatusMenu.tsx:23 * kind: component * core: pm * spec: (none) * summary: Utility for referral status menu. * score: 1 ### component RelationshipMappingStep * file: src/cores/pm/components/wizards/patient-merge-resolution/steps/RelationshipMappingStep.tsx:24 * kind: component * core: pm * spec: (none) * summary: Step 3 of the Patient Merge Resolution Wizard: Relationship Mapping.Shows guarantor/coverage counts and asks the operator to acknowledgebefore proceeding to impact preview. * score: 2 ### component ReplacementClaimDialog * file: src/cores/pm/components/claims/ReplacementClaimDialog.tsx:27 * kind: component * core: pm * spec: (none) * summary: Dialog confirming creation of a replacement claim. * score: 2 ### component ResolveGapDialog * file: src/cores/pm/components/ResolveGapDialog.tsx:25 * kind: component * core: pm * spec: (none) * summary: Dialog for resolving a reconciliation gap with optional notes. * score: 2 ### component RetroAuthFormDialog * file: src/cores/pm/components/auth-tracking/RetroAuthFormDialog.tsx:41 * kind: component * core: pm * spec: (none) * summary: Dialog for creating a retro-authorization request. * score: 2 ### component RevenueCodeMappingFormDialog * file: src/cores/pm/components/RevenueCodeMappingFormDialog.tsx:46 * kind: component * core: pm * spec: (none) * summary: Create / edit dialog for revenue code mappings. * score: 2 ### component RevenueCodeMappingsPage * file: src/cores/pm/pages/RevenueCodeMappingsPage.tsx:29 * kind: component * core: pm * spec: (none) * summary: Settings page for managing CPT/HCPCS → revenue code mappings. * score: 2 ### component RevenueCycleDashboardPage * file: src/cores/pm/pages/RevenueCycleDashboardPage.tsx:559 * kind: component * core: pm * spec: (none) * summary: Utility for revenue cycle dashboard page. * score: 1 ### component RevenueImpactCard * file: src/cores/pm/components/denial-prediction/RevenueImpactCard.tsx:23 * kind: component * core: pm * spec: (none) * summary: Card displaying estimated revenue savings from denial prediction. * score: 2 ### component RevenueImpactWidget * file: src/cores/pm/components/analytics/RevenueImpactWidget.tsx:34 * kind: component * core: pm * spec: PM-41 * summary: Summary card comparing revenue realized versus revenue lost, broken down bythe funnel drop-off stage where prospective revenue leaked. Backed by. * params: * props — Optional scope props selecting the org/period summarized. * score: 5 ### component ReviewStep * file: src/cores/pm/components/wizards/denial-appeal/steps/ReviewStep.tsx:30 * kind: component * core: pm * spec: PM-29 * summary: Final step of the denial-appeal wizard: a read-only review of all capturedinputs before the appeal is submitted. * params: * props — Wizard state for the review-and-submit step. * score: 5 ### component ReviewSubmitStep * file: src/cores/pm/components/batch/wizard/ReviewSubmitStep.tsx:26 * kind: component * core: pm * spec: (none) * summary: Step 4 of the Batch Operation Wizard — review & submit. * score: 2 ### component ReviewSubmitStep * file: src/cores/pm/components/wizards/contract-modeling/ReviewSubmitStep.tsx:59 * kind: component * core: pm * spec: (none) * summary: Step 5: review the scenario and provide save metadata. * score: 2 ### component ReviewSubmitStep * file: src/cores/pm/components/wizards/patient-merge-resolution/steps/ReviewSubmitStep.tsx:27 * kind: component * core: pm * spec: (none) * summary: Step 5 of the Patient Merge Resolution Wizard: Review & Submit.Presents a final summary and requires double confirmation before merge commit. * score: 2 ### component ReviewSubmitStep * file: src/cores/pm/components/wizards/payer-enrollment/steps/ReviewSubmitStep.tsx:35 * kind: component * core: pm * spec: (none) * summary: Review & Submit step. * score: 1 ### component ReviewSubmitStep * file: src/cores/pm/components/wizards/pre-admission-packet/steps/ReviewSubmitStep.tsx:85 * kind: component * core: pm * spec: (none) * summary: Step 6 of the pre-admission wizard — review and submit. * score: 2 ### component ReviewSubmitStep * file: src/cores/pm/components/wizards/site-billing-profile/ReviewSubmitStep.tsx:29 * kind: component * core: pm * spec: (none) * summary: Wizard step 5: readiness checklist and final review before submit. * score: 2 ### component RiskScoreBadge * file: src/cores/pm/components/analytics/RiskScoreBadge.tsx:33 * kind: component * core: pm * spec: PM-41 * summary: Colour-coded pill that renders a no-show risk score, with a tooltip breakingdown the contributing risk factors on hover/focus. * params: * props — The numeric/categorical risk score and optional factor listshown in the tooltip. * score: 5 ### component RoomAvailabilityPanel * file: src/cores/pm/components/RoomAvailabilityPanel.tsx:31 * kind: component * core: pm * spec: (none) * summary: Right-rail panel that summarizes free/busy state per room across theprovided date range. Read-only — gated by . * score: 2 ### component RoomFormDialog * file: src/cores/pm/components/RoomFormDialog.tsx:41 * kind: component * core: pm * spec: (none) * summary: Dialog for creating or editing a room. Remounts on entity change via key. * score: 2 ### component RoomPicker * file: src/cores/pm/components/RoomPicker.tsx:35 * kind: component * core: pm * spec: (none) * summary: Native-select room picker. Filters by site and (optionally) supportedappointment type. Returns when "No room" is selected. * score: 2 ### component RosterTab * file: src/cores/pm/components/capitation/RosterTab.tsx:37 * kind: component * core: pm * spec: (none) * summary: PM-33: Roster tab inside contract detail page. * score: 2 ### component RpaBotConfigDialog * file: src/cores/pm/components/rpa/RpaBotConfigDialog.tsx:49 * kind: component * core: pm * spec: PM-51 * summary: Create/edit dialog for an RPA payer-portal bot configuration — credentials,target portal, and schedule — validated with react-hook-form + zod. * params: * props — The bot config under edit (or new) plus controlled open state. * score: 5 ### component RpaBotListPage * file: src/cores/pm/pages/rpa/RpaBotListPage.tsx:21 * kind: component * core: pm * spec: (none) * summary: Bot list tab content with My Bots / Templates toggle. * score: 2 ### component RpaBotTable * file: src/cores/pm/components/rpa/RpaBotTable.tsx:39 * kind: component * core: pm * spec: PM-51 * summary: Table of configured RPA bots with per-row actions to run, edit, or delete abot, used on the RPA monitoring dashboard. * params: * props — The bot configuration rows and row-action callbacks. * score: 5 ### component RpaDashboardCards * file: src/cores/pm/components/rpa/RpaDashboardCards.tsx:17 * kind: component * core: pm * spec: (none) * summary: Four KPI summary cards for the monitoring dashboard. * score: 2 ### component RpaExecutionDetailSheet * file: src/cores/pm/components/rpa/RpaExecutionDetailSheet.tsx:29 * kind: component * core: pm * spec: PM-51 * summary: Side-sheet showing the detail of a single RPA bot execution, including errorinformation and any captured screenshots, for troubleshooting failed runs. * params: * props — The execution record to display plus controlled open state. * score: 5 ### component RpaExecutionTable * file: src/cores/pm/components/rpa/RpaExecutionTable.tsx:53 * kind: component * core: pm * spec: PM-51 * summary: History table of RPA bot executions with status and timing, used to monitorautomation runs and open individual executions for detail. * params: * props — The execution rows and an optional row-select callback. * score: 5 ### component RpaMonitoringPage * file: src/cores/pm/pages/rpa/RpaMonitoringPage.tsx:17 * kind: component * core: pm * spec: (none) * summary: Monitoring tab showing KPI cards and execution history. * score: 2 ### component RpaPortalAutomationPage * file: src/cores/pm/pages/rpa/RpaPortalAutomationPage.tsx:34 * kind: component * core: pm * spec: (none) * summary: Portal Automation tabbed hub for bot management, monitoring, and staged documents. * score: 2 ### component RpaSettingsSection * file: src/cores/pm/components/rpa/RpaSettingsSection.tsx:19 * kind: component * core: pm * spec: (none) * summary: RPA settings section for portal automation configuration. * score: 2 ### component RpaStagedDocsPage * file: src/cores/pm/pages/rpa/RpaStagedDocsPage.tsx:13 * kind: component * core: pm * spec: (none) * summary: Staged documents tab content. * score: 1 ### component RpaStagedDocsTable * file: src/cores/pm/components/rpa/RpaStagedDocsTable.tsx:58 * kind: component * core: pm * spec: PM-51 * summary: Queue table of documents staged by RPA bots, with status filter tabs andapprove/reject actions so staff can review automation output before it posts. * params: * props — The staged-document rows and review-action callbacks. * score: 5 ### component RpaTemplateCards * file: src/cores/pm/components/rpa/RpaTemplateCards.tsx:22 * kind: component * core: pm * spec: (none) * summary: Grid of system template cards with Clone CTA. * score: 2 ### component RuleVersionHistoryDialog * file: src/cores/pm/components/payer-modifier-rules/RuleVersionHistoryDialog.tsx:36 * kind: component * core: pm * spec: (none) * summary: Dialog showing version history timeline for a modifier rule. * score: 2 ### component RunEligibilityDialog * file: src/cores/pm/components/RunEligibilityDialog.tsx:44 * kind: component * core: pm * spec: (none) * summary: Utility for run eligibility dialog. * score: 1 ### component SchedulingPage * file: src/cores/pm/pages/SchedulingPage.tsx:345 * kind: component * core: pm * spec: (none) * summary: Utility for scheduling page. * score: 1 ### component SchedulingReadinessBlock * file: src/cores/pm/components/portal/SchedulingReadinessBlock.tsx:22 * kind: component * core: pm * spec: (none) * summary: Renders a readiness alert based on . * score: 2 ### component ScrubEffectivenessReport * file: src/cores/pm/components/scrub-rules/ScrubEffectivenessReport.tsx:49 * kind: component * core: pm * spec: (none) * summary: Effectiveness report component showing per-rule trigger rates. * score: 2 ### component ScrubRulesSettingsPage * file: src/cores/pm/pages/ScrubRulesSettingsPage.tsx:29 * kind: component * core: pm * spec: (none) * summary: Scrub rules settings page with system overrides and custom edits tabs. * score: 2 ### component SecondaryClaimsTab * file: src/cores/pm/components/claims/SecondaryClaimsTab.tsx:48 * kind: component * core: pm * spec: (none) * summary: Tab content showing linked secondary/tertiary claims for a primary claim. * score: 2 ### component SessionSheet * file: src/cores/pm/components/financial-counseling/SessionSheet.tsx:33 * kind: component * core: pm * spec: (none) * summary: Session form sheet for PM-32 Financial Counseling. * score: 2 ### component SessionsTab * file: src/cores/pm/components/financial-counseling/SessionsTab.tsx:24 * kind: component * core: pm * spec: (none) * summary: Sessions list tab for the Financial Counseling hub. * score: 2 ### component SignaturePad * file: src/cores/pm/components/kiosk/SignaturePad.tsx:30 * kind: component * core: pm * spec: PM-34-EN-01 * summary: Touch-friendly canvas signature capture with a clear control and atype-to-sign fallback, used by the kiosk consent-signing step. * params: * props — Change callback emitting the captured signature and optionalsizing. * score: 4 ### component SimulationResultDisplay * file: src/cores/pm/components/payer-modifier-rules/SimulationResultDisplay.tsx:35 * kind: component * core: pm * spec: (none) * summary: Inline simulation result display for charge form integration. * score: 2 ### component SiteBillingConfigFormDialog * file: src/cores/pm/components/site-billing/SiteBillingConfigFormDialog.tsx:52 * kind: component * core: pm * spec: (none) * summary: Utility for site billing config form dialog. * score: 1 ### component SiteBillingConfigListPage * file: src/cores/pm/pages/SiteBillingConfigListPage.tsx:34 * kind: component * core: pm * spec: (none) * summary: Utility for site billing config list page. * score: 1 ### component SiteBillingProfileWizard * file: src/cores/pm/components/wizards/site-billing-profile/SiteBillingProfileWizard.tsx:49 * kind: component * core: pm * spec: (none) * summary: Site Billing Profile Wizard (PM-UX-13).Renders a 5-step (sidebar layout) for creating or updatinga PM-27 site billing profile. Supports both create and edit flows. * score: 2 ### component SiteIdentityStep * file: src/cores/pm/components/wizards/site-billing-profile/SiteIdentityStep.tsx:46 * kind: component * core: pm * spec: (none) * summary: Wizard step 1: site identity, NPI, Tax ID, billing/pay-to address. * score: 2 ### component SlidingFeeScheduleFormDialog * file: src/cores/pm/components/SlidingFeeScheduleFormDialog.tsx:71 * kind: component * core: pm * spec: (none) * summary: Utility for sliding fee schedule form dialog. * score: 1 ### component SlidingFeeScheduleListPage * file: src/cores/pm/pages/SlidingFeeScheduleListPage.tsx:28 * kind: component * core: pm * spec: (none) * summary: Utility for sliding fee schedule list page. * score: 1 ### component StatementPreviewDialog * file: src/cores/pm/components/statements/StatementPreviewDialog.tsx:27 * kind: component * core: pm * spec: (none) * summary: Utility for statement preview dialog. * score: 1 ### component StatementRunDetailPage * file: src/cores/pm/pages/StatementRunDetailPage.tsx:24 * kind: component * core: pm * spec: (none) * summary: Utility for statement run detail page. * score: 1 ### component StatementRunListPage * file: src/cores/pm/pages/StatementRunListPage.tsx:29 * kind: component * core: pm * spec: (none) * summary: Utility for statement run list page. * score: 1 ### component StatementRunTriggerDialog * file: src/cores/pm/components/statements/StatementRunTriggerDialog.tsx:26 * kind: component * core: pm * spec: (none) * summary: Utility for statement run trigger dialog. * score: 1 ### component StatusTransitionMenu * file: src/cores/pm/components/StatusTransitionMenu.tsx:43 * kind: component * core: pm * spec: (none) * summary: Utility for status transition menu. * score: 1 ### component SubmissionPathStep * file: src/cores/pm/components/wizards/denial-appeal/steps/SubmissionPathStep.tsx:37 * kind: component * core: pm * spec: PM-29 * summary: Step 5 of the denial-appeal wizard: selects the submission path (portal, mail,fax, clearinghouse) and captures the tracking reference for follow-up. * params: * props — Wizard state/handlers for the submission-path step. * score: 5 ### component SuperbillListPage * file: src/cores/pm/pages/SuperbillListPage.tsx:24 * kind: component * core: pm * spec: (none) * summary: Utility for superbill list page. * score: 1 ### component SupervisorReviewSheet * file: src/cores/pm/components/collections/SupervisorReviewSheet.tsx:28 * kind: component * core: pm * spec: (none) * summary: Sheet for supervisor to review a patient's collection history and take action. * score: 2 ### component TaskDetailPanel * file: src/cores/pm/components/workbench/TaskDetailPanel.tsx:50 * kind: component * core: pm * spec: (none) * summary: Detail panel for the coordinator workbench. * score: 2 ### component TaskListView * file: src/cores/pm/components/workbench/TaskListView\.tsx:73 * kind: component * core: pm * spec: (none) * summary: Main task list for the coordinator workbench. * score: 2 ### component TelehealthConfigurationPage * file: src/cores/pm/pages/TelehealthConfigurationPage.tsx:14 * kind: component * core: pm * spec: (none) * summary: Utility for telehealth configuration page. * score: 1 ### component TelehealthSessionListPage * file: src/cores/pm/pages/TelehealthSessionListPage.tsx:34 * kind: component * core: pm * spec: (none) * summary: Utility for telehealth session list page. * score: 1 ### component TermsConfigStep * file: src/cores/pm/components/payment-plans/wizard/TermsConfigStep.tsx:19 * kind: component * core: pm * spec: (none) * summary: Wizard step for configuring plan terms. * score: 2 ### component TimeOffRequestDialog * file: src/cores/pm/components/provider-schedule/TimeOffRequestDialog.tsx:45 * kind: component * core: pm * spec: (none) * summary: Utility for time off request dialog. * score: 1 ### component TimeToEnrollmentChart * file: src/cores/pm/components/edi-enrollment/TimeToEnrollmentChart.tsx:20 * kind: component * core: pm * spec: (none) * summary: Renders a line chart of average time-to-enrollment over the last 6 months. * score: 2 ### component TransactionBatchDetailPage * file: src/cores/pm/pages/TransactionBatchDetailPage.tsx:21 * kind: component * core: pm * spec: (none) * summary: Utility for transaction batch detail page. * score: 1 ### component TransactionBatchListPage * file: src/cores/pm/pages/TransactionBatchListPage.tsx:32 * kind: component * core: pm * spec: (none) * summary: Utility for transaction batch list page. * score: 1 ### component TransactionLogListPage * file: src/cores/pm/pages/TransactionLogListPage.tsx:29 * kind: component * core: pm * spec: (none) * summary: Utility for transaction log list page. * score: 1 ### component TransactionMatrixStep * file: src/cores/pm/components/wizards/payer-enrollment/steps/TransactionMatrixStep.tsx:24 * kind: component * core: pm * spec: (none) * summary: Step 2 — Transaction Matrix step. * score: 2 ### component ValidationOverrideDialog * file: src/cores/pm/components/auth-tracking/ValidationOverrideDialog.tsx:49 * kind: component * core: pm * spec: (none) * summary: Dialog to override auth-to-claim validation failures with mandatory justification. * score: 2 ### component VbpIncentivePaymentForm * file: src/cores/pm/components/VbpIncentivePaymentForm.tsx:43 * kind: component * core: pm * spec: (none) * summary: Utility for vbp incentive payment form. * score: 1 ### component VbpIncentivesTab * file: src/cores/pm/components/VbpIncentivesTab.tsx:32 * kind: component * core: pm * spec: (none) * summary: Utility for vbp incentives tab. * score: 1 ### component VbpMeasureForm * file: src/cores/pm/components/VbpMeasureForm.tsx:46 * kind: component * core: pm * spec: (none) * summary: Utility for vbp measure form. * score: 1 ### component VbpMeasuresTab * file: src/cores/pm/components/VbpMeasuresTab.tsx:31 * kind: component * core: pm * spec: (none) * summary: Utility for vbp measures tab. * score: 1 ### component VbpProgramDetailPage * file: src/cores/pm/pages/VbpProgramDetailPage.tsx:36 * kind: component * core: pm * spec: (none) * summary: Utility for vbp program detail page. * score: 1 ### component VbpProgramForm * file: src/cores/pm/components/VbpProgramForm.tsx:38 * kind: component * core: pm * spec: (none) * summary: Utility for vbp program form. * score: 1 ### component VbpProgramListPage * file: src/cores/pm/pages/VbpProgramListPage.tsx:35 * kind: component * core: pm * spec: (none) * summary: Utility for vbp program list page. * score: 1 ### component VoidClaimDialog * file: src/cores/pm/components/claims/VoidClaimDialog.tsx:26 * kind: component * core: pm * spec: (none) * summary: Dialog confirming a destructive void action on a claim. * score: 2 ### component VolumeAssumptionsStep * file: src/cores/pm/components/wizards/contract-modeling/VolumeAssumptionsStep.tsx:22 * kind: component * core: pm * spec: (none) * summary: Step 2: define service volume assumptions for the scenario. * score: 2 ### component WaitlistAnalytics * file: src/cores/pm/components/waitlist/WaitlistAnalytics.tsx:16 * kind: component * core: pm * spec: (none) * summary: Analytics dashboard for PM-39 waitlist KPIs. * score: 2 ### component WaitlistContactActions * file: src/cores/pm/components/waitlist/WaitlistContactActions.tsx:22 * kind: component * core: pm * spec: (none) * summary: Action buttons for waitlist entry: mark contacted and decline. * score: 2 ### component WaitlistManagementPage * file: src/cores/pm/pages/WaitlistManagementPage.tsx:18 * kind: component * core: pm * spec: (none) * summary: Main page for PM-39 waitlist management. * score: 2 ### component WaitlistPanel * file: src/cores/pm/components/WaitlistPanel.tsx:279 * kind: component * core: pm * spec: (none) * summary: Utility for waitlist panel. * score: 1 ### component WaitlistPriorityBadge * file: src/cores/pm/components/waitlist/WaitlistPriorityBadge.tsx:25 * kind: component * core: pm * spec: (none) * summary: Display priority tier with optional score. * score: 2 ### component WaitlistQueue * file: src/cores/pm/components/waitlist/WaitlistQueue.tsx:47 * kind: component * core: pm * spec: (none) * summary: Queue table for PM-39 waitlist entries. * score: 2 ### component WaitlistStaleBadge * file: src/cores/pm/components/waitlist/WaitlistStaleBadge.tsx:18 * kind: component * core: pm * spec: (none) * summary: Shows a warning icon when entry has been on the waitlist 28+ days. * score: 2 ### component WriteoffApprovalDialog * file: src/cores/pm/components/writeoffs/WriteoffApprovalDialog.tsx:23 * kind: component * core: pm * spec: (none) * summary: Dialog for approving or denying a write-off request. * score: 2 ### component WriteOffRequestForm * file: src/cores/pm/components/payments/WriteOffRequestForm.tsx:39 * kind: component * core: pm * spec: (none) * summary: Utility for write off request form. * score: 1 ### component WriteoffRequestSheet * file: src/cores/pm/components/writeoffs/WriteoffRequestSheet.tsx:27 * kind: component * core: pm * spec: (none) * summary: Sheet for creating a bad debt write-off request. * score: 2 ### component WriteoffRequestsPage * file: src/cores/pm/pages/WriteoffRequestsPage.tsx:37 * kind: component * core: pm * spec: (none) * summary: Write-off requests page with approval workflow. * score: 2 ## Functions & utilities ### function \_\_resetFailoverAuditCache * file: src/cores/pm/services/clearinghouse/audit.ts:39 * kind: function * core: pm * spec: (none) * summary: Test/runtime helper to clear the dedupe cache. * score: 4 ### function addBusinessDays * file: src/cores/pm/utils/gfeDeliveryDeadline.ts:15 * kind: function * core: pm * spec: (none) * summary: Add N business days to a date (skips weekends, Phase 1 — no holiday calendar). * score: 4 ### function annualizeIncome * file: src/cores/pm/utils/financial-counseling-calculations.ts:25 * kind: function * core: pm * spec: (none) * summary: Annualize an income amount from a given period. * params: * amount — Income amount in the given period. * period — The period of the income amount. * returns: Annualized income, rounded to 2 decimal places. * score: 4 ### function applyConventionModifiers * file: src/cores/pm/utils/modifier-logic.ts:145 * kind: function * core: pm * spec: (none) * summary: PM-07-EN-13: Apply jurisdiction-defined modifier conventions.Each convention has a string evaluated against the encounter context.Recognized triggers: , , ,, , ,, , , . * score: 4 ### function assertAllowedDispositionTransition * file: src/cores/pm/lib/capitation/disposition.ts:7 * kind: function * core: pm * spec: (none) * summary: Validates that a disposition transition is allowed per the state machine. * score: 4 ### function assertCredentialGate * file: src/cores/pm/hooks/useCareMgmtTimeLogMutation.ts:89 * kind: function * core: pm * spec: (none) * summary: Assert that the credential gate result allows the entry.Throws with the copy-pasteable reason if not.(FR-3 / AC-5.1 / AC-5.2) PM-75 AC-5 * score: 4 ### function assertModelCardValidated * file: src/cores/pm/lib/modelCardDisclosureMapping.ts:122 * kind: function * core: pm * spec: (none) * summary: Assert a card is validated/promoted before its attributes may source apublishable disclosure (AC-5: no field hand-entered without a card basis). * score: 4 ### function buildFairnessAttestationPayload * file: src/cores/pm/lib/fairnessAttestation.ts:76 * kind: function * core: pm * spec: (none) * summary: Build the attestation payload from de-identified daily metrics rows.Rows are assumed already scoped to the org + period by the caller's query. * score: 4 ### function buildGfeItems * file: src/cores/pm/utils/buildGfeItems.ts:30 * kind: function * core: pm * spec: (none) * summary: Build GFE line items by looking up CPT mappings for the appointment type,then resolving rates from the active fee schedule. * score: 4 ### function buildPm63Payload * file: src/cores/pm/hooks/useAuditResponseWizard.ts:177 * kind: function * core: pm * spec: (none) * summary: Builds the PM-63 payload shape for server submission. * score: 4 ### function buildRuleSnapshot * file: src/cores/pm/services/careMgmtGateEngine.ts:327 * kind: function * core: pm * spec: (none) * summary: Build the immutable JSONB written to .The snapshot captures the complete rule state at evaluation time so anyauto-posted charge is reproducible by replaying the snapshot (NFR-determinism-1).Required top-level keys per spec AC-3: - code\_family\_rules - payer\_policy - credentials\_check - kill\_switch\_state PM-75 AC-3 (rule\_snapshot completeness) * score: 4 ### function buildScrubRuleOverrideMap * file: src/cores/pm/utils/scrub-rule-resolver.ts:24 * kind: function * core: pm * spec: (none) * summary: Merge definitions with org overrides into a lookup map.For each rule\_key: selects the most specific override matching the given context.Precedence: payer+type → payer-only → org-wide → definition default. * score: 4 ### function buildSuperbillData * file: src/cores/pm/lib/superbill-data.ts:21 * kind: function * core: pm * spec: (none) * summary: Builds a complete superbill data payload from an encounter. * score: 4 ### function buildTimeLogInsert * file: src/cores/pm/hooks/useCareMgmtTimeLogMutation.ts:62 * kind: function * core: pm * spec: (none) * summary: Build the Supabase INSERT payload from a time-log input.Both live\_timer and retrospective paths call this — same shape, same keys.(AC-1.1: shape invariant) PM-75 AC-1 * score: 4 ### function calcMeasureRate * file: src/cores/pm/utils/vbpMeasureCalc.ts:13 * kind: function * core: pm * spec: (none) * summary: Calculates measure rate from numerator and denominator.Returns null if denominator is zero or inputs are missing. * score: 4 ### function calculateAutoModifiers * file: src/cores/pm/utils/modifier-logic.ts:72 * kind: function * core: pm * spec: (none) * summary: Calculate auto-applied modifiers from encounter context.Returns an array of modifier codes (e.g., \['HQ', '95']). * score: 4 ### function calculateAutoModifiersWithProfile * file: src/cores/pm/utils/modifier-logic.ts:84 * kind: function * core: pm * spec: (none) * summary: PM-07-EN-13: Profile-aware overload.When is provided and non-empty, conventions drive modifierassignment via . When omitted/empty, the legacyhardcoded modifier logic (default AHCCCS/Arizona profile) is used as thefail-safe fallback so jurisdictions without configured conventions remain at parity. * score: 4 ### function calculateCostEstimate * file: src/cores/pm/utils/cost-estimation-engine.ts:55 * kind: function * core: pm * spec: (none) * summary: Calculate a cost estimate from benefit data and rate lookups.For copay plans: patient responsibility = copay × total visits.For coinsurance plans: deductible applied first, then coinsuranceon remaining charges, capped at OOP max remaining. * score: 4 ### function calculateDeliveryDeadline * file: src/cores/pm/utils/gfeDeliveryDeadline.ts:44 * kind: function * core: pm * spec: (none) * summary: Calculate the GFE delivery deadline from the scheduling date and appointment date. * params: * scheduledOnDate — When the appointment was scheduled (today if just scheduled) * appointmentDate — The date of the appointment * score: 4 ### function calculateEncounterCost * file: src/cores/pm/utils/costCalculation.ts:122 * kind: function * core: pm * spec: (none) * summary: Calculates total encounter cost from available rates and categories.Rate unit handling:- per\_session: quantity = 1 (always)- per\_hour: quantity = durationHours (required)- per\_day: quantity = 1 (single encounter = 1 day)- per\_unit: quantity = 1, quantitySource = 'auto\_default' (C-12) * score: 4 ### function calculateFilingDeadline * file: src/cores/pm/utils/filing-deadline.ts:12 * kind: function * core: pm * spec: (none) * summary: Calculate the filing deadline date string from a service date. * score: 4 ### function calculateFplPercentage * file: src/cores/pm/utils/financial-counseling-calculations.ts:36 * kind: function * core: pm * spec: (none) * summary: Calculate FPL percentage from annual income and threshold. * params: * annualIncome — Annualized income. * thresholdAmount — FPL threshold for the household size and region. * returns: FPL percentage rounded to 2 decimal places. * score: 4 ### function calculatePriorityScore * file: src/cores/pm/services/waitlist-scoring.ts:34 * kind: function * core: pm * spec: (none) * summary: Calculate the composite priority score for a waitlist entry. * params: * input — The 5 scoring factors. * returns: Score (0-100), per-factor breakdown, and tier. * score: 4 ### function calculateRemainingBalance * file: src/cores/pm/utils/payment-plan-logic.ts:96 * kind: function * core: pm * spec: (none) * summary: Calculates remaining balance with safe rounding. * score: 4 ### function calculateTimedUnits * file: src/cores/pm/utils/timed-codes.ts:35 * kind: function * core: pm * spec: (none) * summary: Calculate timed code units from duration in minutes.Thresholds are sourced from the active jurisdiction profile (PF-96). When is omitted, falls back to the default profile values(AHCCCS/Arizona: 8-minute minimum, 15-minute units) to preserve legacy parity.| Duration | Units (default profile) ||-------------|-------|| 8 min | 0 (not billable) || 8–22 min | 1 || 23–37 min | 2 || 38–52 min | 3 || 53–67 min | 4 || 68+ min | 5+ (1 per 15 min over 67) | * score: 4 ### function canTransition * file: src/cores/pm/hooks/useAppointmentMutation.ts:42 * kind: function * core: pm * spec: (none) * summary: Checks whether can transition. * score: 4 ### function computeAccruedMinutes * file: src/cores/pm/hooks/useCareMgmtTimeLogMutation.ts:103 * kind: function * core: pm * spec: (none) * summary: Sum accrued minutes from a list of time-log rows for a given enrollment/month.Used to verify the AC-1.2 additive-accrual invariant. PM-75 AC-1 * score: 4 ### function computeDeadlineRisk * file: src/cores/pm/hooks/useAuditResponseWizard.ts:23 * kind: function * core: pm * spec: (none) * summary: Pure helper — computes deadline risk level from a date string without side effects. * score: 4 ### function computeDisparityRatios * file: src/cores/pm/lib/aiFairnessAggregate.ts:34 * kind: function * core: pm * spec: (none) * summary: Compute the four-fifths disparity ratio per class\_value. Reference group is thebucket with the highest approval rate (1 − denial rate); every bucket's approvalrate is divided by the reference. Returns 1.0 for all when the reference approvalrate is 0 (degenerate — no disparity measurable). * score: 4 ### function computeElapsedMinutes * file: src/cores/pm/hooks/useCareMgmtLiveTimer.ts:23 * kind: function * core: pm * spec: (none) * summary: Compute whole minutes elapsed between two Unix-ms timestamps.Rounds down (floor) so partial minutes are not billed.Minimum: 0. Maximum: 1440 (24 h). PM-75 AC-1 * score: 4 ### function computeEndDate * file: src/cores/pm/utils/payment-plan-logic.ts:103 * kind: function * core: pm * spec: (none) * summary: Computes the end date of a payment plan from start date, frequency, and total installments. * score: 4 ### function computeFplAndTier * file: src/cores/pm/sliding-fee/fpl-utils.ts:59 * kind: function * core: pm * spec: (none) * summary: Compute FPL percentage and resolve tier from a schedule row\.Combines computeFplPercentage + getTierFromBrackets. * score: 4 ### function computeFplPercentage * file: src/cores/pm/sliding-fee/fpl-utils.ts:16 * kind: function * core: pm * spec: (none) * summary: Compute FPL percentage from annual income and the poverty threshold.Returns percentage rounded to 2 decimals. * example: | computeFplPercentage(25000, 15060) = 165.89 * score: 4 ### function computeSlaDueAt * file: src/cores/pm/lib/referralSla.ts:38 * kind: function * core: pm * spec: (none) * summary: Compute initial sla\_due\_at from referral\_date + default SLA hours. * score: 4 ### function computeUrgency * file: src/cores/pm/components/wizards/denial-appeal/useDenialAppealWizard.ts:58 * kind: function * core: pm * spec: PM-29 * summary: Classifies how urgent a denial appeal is from the days remaining until thefiling deadline: expired at or below zero, then critical within seven days,warning within fourteen days, otherwise normal. * params: * daysRemaining — Whole days left before the appeal deadline. * returns: The urgency level driving UI emphasis and gating. * score: 5 ### function createClearinghouseAdapter * file: src/cores/pm/services/clearinghouse/waystar-adapter.ts:108 * kind: function * core: pm * spec: (none) * summary: Factory function to create a clearinghouse adapter by provider name. * score: 4 ### function cronToHumanReadable * file: src/cores/pm/utils/rpaConfigValidation.ts:43 * kind: function * core: pm * spec: (none) * summary: Converts a cron expression to a human-readable description * score: 4 ### function daysUntilFilingDeadline * file: src/cores/pm/utils/filing-deadline.ts:23 * kind: function * core: pm * spec: (none) * summary: Number of calendar days remaining until the filing deadline. Negative = overdue. * score: 4 ### function deriveFilingUrgency * file: src/cores/pm/wizards/claim-submission/hooks/useClaimSubmissionWizard.ts:32 * kind: function * core: pm * spec: (none) * summary: Derive filing urgency from the configured filing deadline window (days). * score: 4 ### function deriveTelehealthQualityMetrics * file: src/cores/pm/hooks/useTelehealthQualityMetrics.ts:83 * kind: function * core: pm * spec: (none) * summary: Pure derivation of dashboard metrics from a list of sessions. Exported forunit testing — no React, no network, no clock dependency beyond the passed. is assumed already scoped to the current org, last 30 days,and not soft-deleted (the query enforces that). * score: 4 ### function detectPlanDefault * file: src/cores/pm/utils/payment-plan-logic.ts:87 * kind: function * core: pm * spec: (none) * summary: Detects if a plan should be marked as defaulted based on missed payment count. * score: 4 ### function detectRateOverlaps * file: src/cores/pm/utils/costCalculation.ts:182 * kind: function * core: pm * spec: (none) * summary: Checks if any rates in a set have overlapping effective date rangesfor the same category + site + provider combination.Returns warnings for display (non-blocking per CONTEXT.md). * score: 4 ### function determineAgingTier * file: src/cores/pm/utils/payment-plan-logic.ts:64 * kind: function * core: pm * spec: (none) * summary: Determines the collections aging tier from number of days past due. * score: 4 ### function evaluateBasicScrub * file: src/cores/pm/wizards/claim-submission/hooks/useClaimSubmissionWizard.ts:45 * kind: function * core: pm * spec: (none) * summary: Lightweight client-side scrub: flags charges missing the fields required fora clean claim. The server-side scrub engine (full rule evaluation) istracked separately; this surface keeps the wizard useful today whileavoiding hardcoded clinical logic. Returns one entry per failing rule. * score: 4 ### function evaluateCareMgmtBillingPeriod * file: src/cores/pm/services/careMgmtEvaluationService.ts:146 * kind: function * core: pm * spec: (none) * summary: Run the complete gate evaluation pipeline for one (enrollment, service\_month).Steps:1. Fetch enrollment (org, patient, program, billing\_provider\_id).2. SUM accrued minutes from pm\_care\_mgmt\_time\_logs.3. Fetch active payer policy (if payerId provided).4. Fetch kill-switch state from pm\_module\_settings.5. Check CoCM registry (CL-54-EN-01 surface; graceful degrade when unavailable).6. Determine concurrent programs: the patient's OTHER enrollments that have ≥1 time log in this service\_month (dormant/zero-minute enrollments excluded).7. Run pure gate-engine functions.8. Call pm\_75\_record\_evaluation RPC (atomic write).9. Return GateEvaluationResult. PM-75 AC-2 (auto-post on gate-pass) PM-75 AC-3 (every evaluation writes an audit row) PM-75 AC-6 (concurrent-billing guardrail) PM-75 AC-7 (CoCM registry graceful degrade) * score: 4 ### function evaluateChargeModifiers * file: src/cores/pm/utils/modifier-rule-resolution.ts:80 * kind: function * core: pm * spec: (none) * summary: Evaluates a set of modifier codes against payer rules and returnsactionable results for each modifier that has a matching rule. * params: * rules — All active rules for the payer (pre-fetched) * modifierCodes — Modifiers applied to the charge line * cptCode — The CPT code on the charge line * serviceDate — Service date (ISO string) * returns: Array of evaluation results (only for modifiers with matching rules) * score: 4 ### function evaluateConcurrentBilling * file: src/cores/pm/services/careMgmtGateEngine.ts:214 * kind: function * core: pm * spec: (none) * summary: Apply the concurrent-billing guardrail (AC-6).Checks whether the current program conflicts with any other active programsin the same service month for the same patient.Rules are read from payer-policy ; if no policy exists,the default CMS-derived exclusion is applied: CoCM (priority 1) conflicts with BHI (priority 2). No other default exclusions at Phase 3. * params: * program — The program being evaluated. * sameMonthPrograms — Other programs with time-logs for the same patient × service\_month. * concurrentRules — Rules from payer policy (may be empty; defaults applied if so). * returns: PM-75 AC-6 * score: 4 ### function evaluateCondition * file: src/cores/pm/utils/custom-edit-evaluator.ts:35 * kind: function * core: pm * spec: (none) * summary: Evaluate a condition expression (single, all, or any) against context. * score: 4 ### function evaluateCustomEdits * file: src/cores/pm/utils/custom-edit-evaluator.ts:60 * kind: function * core: pm * spec: (none) * summary: Evaluate a list of custom edits against claim/line context and return errors. * score: 4 ### function evaluateIopCompliance * file: src/cores/pm/utils/iop-php-compliance.ts:56 * kind: function * core: pm * spec: (none) * summary: Evaluate IOP compliance for a set of weekly schedule occurrences.Only counts non-cancelled sessions. * score: 4 ### function evaluatePhpCompliance * file: src/cores/pm/utils/iop-php-compliance.ts:75 * kind: function * core: pm * spec: (none) * summary: Evaluate PHP compliance for a set of weekly schedule occurrences.Only counts non-cancelled sessions. * score: 4 ### function evaluateReferralSla * file: src/cores/pm/lib/referralSla.ts:21 * kind: function * core: pm * spec: (none) * summary: Compute SLA state for a referral at a given moment. triggers when within 4 hours of due time. * score: 4 ### function exportReferralsAsCsv * file: src/cores/pm/hooks/useExternalReferrals45.ts:115 * kind: function * core: pm * spec: (none) * summary: Exports external referrals as CSV (returns Blob URL for download). * score: 4 ### function exportScenarioPdf * file: src/cores/pm/lib/contract-modeling-export.ts:18 * kind: function * core: pm * spec: (none) * summary: Build and download a PDF report for the finalized wizard scenario. * score: 4 ### function exportTasksCsv * file: src/cores/pm/utils/exportTasks.ts:13 * kind: function * core: pm * spec: (none) * summary: Exports an array of coordinator tasks as a CSV file download. * score: 4 ### function findEffectiveRate * file: src/cores/pm/utils/costCalculation.ts:80 * kind: function * core: pm * spec: (none) * summary: Finds the most specific effective rate for a category on a given date.Resolution order (most specific first):1. Provider + Site match2. Provider-only match3. Site-only match4. Organization-wide (no provider, no site) * score: 4 ### function formatElapsedTime * file: src/cores/pm/hooks/useCareMgmtLiveTimer.ts:33 * kind: function * core: pm * spec: (none) * summary: Format elapsed milliseconds as "HH:MM:SS" for the live-timer display.Pure function — suitable for unit tests and React render. * score: 4 ### function formatHintToHumanText * file: src/cores/pm/utils/validateIdentifierFormat.ts:55 * kind: function * core: pm * spec: (none) * summary: Converts a regex format pattern into human-readable hint text. * params: * format — Regex pattern string from the jurisdiction profile, or null. * returns: Human-friendly description, or null if no format is configured. * score: 4 ### function generateClaimsFromCharges * file: src/cores/pm/utils/claim-generation.ts:30 * kind: function * core: pm * spec: (none) * summary: Generate claim(s) from a list of approved charges.Groups by patient\_id + the first charge's payer (fee\_schedule payer or org default).Returns one GeneratedClaim per group. * score: 4 ### function generateCostEstimatePdf * file: src/cores/pm/utils/cost-estimate-pdf.ts:29 * kind: function * core: pm * spec: (none) * summary: Generate a PDF for a cost estimate. * params: * estimate — Cost estimate with line items * orgName — Organization name for header * patientName — Patient name for header * returns: jsPDF document ready for save/download * score: 4 ### function generateInstallmentSchedule * file: src/cores/pm/utils/payment-plan-logic.ts:19 * kind: function * core: pm * spec: (none) * summary: Generates an installment schedule from plan parameters. * score: 4 ### function getAllowedNextDispositions * file: src/cores/pm/lib/capitation/disposition.ts:17 * kind: function * core: pm * spec: (none) * summary: Returns the list of allowed next dispositions from a given state. * score: 4 ### function getAppointmentTelehealthUrl * file: src/cores/pm/utils/telehealth-url.ts:70 * kind: function * core: pm * spec: (none) * summary: Resolve the telehealth join URL for an appointment, preferring the PM-13session link and falling back to the deprecated column.When a linked PM-13 session with a is supplied, that URL isreturned and **no** warning fires. Otherwise the deprecated column value isreturned and — when non-null — a structured warning is emitted (Sentry breadcrumb + structured log) carrying only thecolumn name and UUID context, so migration progress is queryable. * params: * appointment — Appointment row (or compatible shape) holding the deprecated column. * linkedSession — The PM-13 row linked to this appointment, if one exists. When it carries a , it wins. * context — Optional UUID-only telemetry context (org/user); never PHI. * returns: The resolved join URL, or when neither source has one. * score: 4 ### function getAuthoritativeSession * file: src/cores/pm/utils/financial-counseling-calculations.ts:50 * kind: function * core: pm * spec: (none) * summary: Determine the authoritative (most relevant) financial counseling sessionfor a patient. Priority:1. Most recent session with 2. Fallback: most recent session by * params: * sessions — All sessions for the patient, in any order. * returns: The authoritative session, or null if no sessions. * score: 4 ### function getPatientListQueryKey * file: src/cores/pm/hooks/usePatientList.ts:18 * kind: function * core: pm * spec: (none) * summary: Canonical TanStack Query key for . Exported so routeprefetchers (and tests) can hit the same cache entry as the hook. * score: 4 ### function getPerformanceLevel * file: src/cores/pm/utils/vbpMeasureCalc.ts:27 * kind: function * core: pm * spec: (none) * summary: Derives performance level from rate vs benchmark.Returns null if rate or benchmark is missing. * score: 4 ### function getPriorityTier * file: src/cores/pm/services/waitlist-scoring.ts:52 * kind: function * core: pm * spec: (none) * summary: Derive priority tier from a numeric score. * score: 4 ### function getQuarterPeriod * file: src/cores/pm/lib/fairnessAttestation.ts:45 * kind: function * core: pm * spec: (none) * summary: Compute the calendar quarter containing (start-of-quarter → , in UTC).The end is (period-to-date) so a mid-quarter attestation is well-defined. * score: 4 ### function getTelehealthModifier * file: src/cores/pm/utils/modifier-logic.ts:40 * kind: function * core: pm * spec: (none) * summary: PM-13: Map telehealth modality to the correct billing modifier.| Modality | Modifier ||-------------------|----------|| audio\_video | 95 || audio\_only | FQ || store\_forward | GQ || remote\_monitoring | null (no modifier) | * score: 4 ### function getTelehealthPOS * file: src/cores/pm/utils/modifier-logic.ts:63 * kind: function * core: pm * spec: (none) * summary: PM-13: Determine Place of Service code for telehealth encounters.| Patient Location | POS ||------------------|-----|| 'home' | 10 || other / unknown | 02 | * score: 4 ### function getTierFromBrackets * file: src/cores/pm/sliding-fee/fpl-utils.ts:43 * kind: function * core: pm * spec: (none) * summary: Given a sorted brackets array and an FPL percentage, find the matching tier.Returns the first bracket where fpl\_min = fplPct fpl\_max.Returns null if no bracket matches. * score: 4 ### function groupFairnessByClass * file: src/cores/pm/lib/aiFairnessAggregate.ts:48 * kind: function * core: pm * spec: (none) * summary: Group rows into per-protected-class groups, keeping only each class's LATESTmetric\_date (the current fairness snapshot) and enriching each bucket with itsdisparity ratio + breach flags. * score: 4 ### function isBillableDuration * file: src/cores/pm/utils/timed-codes.ts:56 * kind: function * core: pm * spec: (none) * summary: Check if a duration is billable (meets minimum threshold).When is omitted, uses the default jurisdiction profile(AHCCCS/Arizona: ≥ 8 minutes). * score: 4 ### function isCourtDeadlineApproaching * file: src/cores/pm/lib/referralSla.ts:47 * kind: function * core: pm * spec: (none) * summary: Determine if a court deadline is within the warning window. * score: 4 ### function isDeliveryOverdue * file: src/cores/pm/utils/gfeDeliveryDeadline.ts:79 * kind: function * core: pm * spec: (none) * summary: Check if a GFE delivery is overdue relative to deadline. * score: 4 ### function isFilingDeadlineExpired * file: src/cores/pm/utils/filing-deadline.ts:18 * kind: function * core: pm * spec: (none) * summary: Check whether the filing deadline has already passed. * score: 4 ### function isModelCardValidated * file: src/cores/pm/lib/modelCardDisclosureMapping.ts:79 * kind: function * core: pm * spec: (none) * summary: Returns true if the card has passed validation (validated or promoted). * score: 4 ### function isScopeComplete * file: src/cores/pm/components/batch/wizard/batchOperationPayloadMapper.ts:58 * kind: function * core: pm * spec: (none) * summary: Validates that a scope has the minimum required fields to proceed. * score: 4 ### function isStepValid * file: src/cores/pm/hooks/usePreAdmissionPacketWizard.ts:228 * kind: function * core: pm * spec: (none) * summary: Returns whether the given step has all required fields completed. * score: 4 ### function mapEncounterTypeToServiceLine * file: src/cores/pm/utils/costCalculation.ts:26 * kind: function * core: pm * spec: (none) * summary: Maps encounter\_type to a normalized service\_line value. * score: 4 ### function mapModelCardToDisclosure * file: src/cores/pm/lib/modelCardDisclosureMapping.ts:93 * kind: function * core: pm * spec: (none) * summary: Map a model card's (iv)(B) fields 1:1 onto the predictive-disclosure sourceattributes. Pure transform — does NOT check validation status (use first if you need the guard). * score: 4 ### function mapScopeToBatchPayload * file: src/cores/pm/components/batch/wizard/batchOperationPayloadMapper.ts:35 * kind: function * core: pm * spec: (none) * summary: Builds a PM-24 batch job insert payload from wizard scope selections. * params: * scope — Wizard scope values collected in Step 1. * returns: A structured payload ready for the useBatchOperationWizard mutation. * score: 4 ### function maskMemberId * file: src/cores/pm/hooks/useCapitationRosterEvents.ts:13 * kind: function * core: pm * spec: (none) * summary: Masks member\_id\_external for display.Full value shown only for users with pm.capitation.manage per CONTEXT.md. * score: 4 ### function matchProviders * file: src/cores/pm/services/matching.ts:34 * kind: function * core: pm * spec: (none) * summary: Fetches provider candidates and ranks them for intake appointment matching. * params: * orgId — Organization ID for tenant scoping * criteria — Matching criteria (program type, specialty, insurance, availability window) * returns: MatchResult with selected provider or null * score: 4 ### function mergeAppealLetter * file: src/cores/pm/utils/appeal-letter-merge.ts:23 * kind: function * core: pm * spec: (none) * summary: Merge template with data, escaping all values to prevent XSS.Supports field\_name syntax. Unmatched placeholders are left as-is. * score: 4 ### function needsAction * file: src/cores/pm/hooks/useCareMgmtWorklist.ts:60 * kind: function * core: pm * spec: (none) * summary: A period only belongs on the worklist while it has not auto-posted.Exported for unit testing the worklist-membership rule without a DB. * score: 4 ### function parseFplBrackets * file: src/cores/pm/sliding-fee/fpl-utils.ts:25 * kind: function * core: pm * spec: (none) * summary: Parse the JSONB fpl\_brackets from a schedule row into typed brackets.Returns empty array if input is null/invalid. * score: 4 ### function payerFromSnapshot * file: src/cores/pm/hooks/useCareMgmtWorklist.ts:70 * kind: function * core: pm * spec: (none) * summary: Recover the payer (id + name) the evaluation used from the latest audit snapshot.Exported for unit testing the snapshot-recovery rule without a DB. * score: 4 ### function prefetchPatientList * file: src/cores/pm/hooks/usePatientList.ts:52 * kind: function * core: pm * spec: (none) * summary: Warm the cache for the default view (no filters). Safeto call from route prefetchers — TanStack short-circuits while datais still . * score: 4 ### function primaryCodeForProgram * file: src/cores/pm/services/careMgmtGateEngine.ts:98 * kind: function * core: pm * spec: (none) * summary: The primary (representative) billable code for a program — the first entry in: cocm→'99492', bhi→'99484', ccm→'99490', pcm→'99424'.Used to reference the *conflicting* program's code id in AC-6 concurrent-billingdenial reasons (the token references a code, not a family). PM-75 AC-6 * score: 4 ### function protectedClassLabel * file: src/cores/pm/lib/aiFairnessAggregate.ts:122 * kind: function * core: pm * spec: (none) * summary: Human-readable label for a protected-class axis. * score: 4 ### function rankCandidates * file: src/cores/pm/services/matching.ts:18 * kind: function * core: pm * spec: (none) * summary: Ranks provider candidates by lowest caseload utilization, then most available slots.Exported for unit testing. * params: * candidates — Array of provider candidates to rank * returns: Sorted array (best match first) * score: 4 ### function renderMessageTemplate * file: src/cores/pm/utils/custom-edit-evaluator.ts:50 * kind: function * core: pm * spec: (none) * summary: Render a message template with context values.Unknown fields render as . * score: 4 ### function resolveBillingRulesWithFallback * file: src/cores/pm/utils/jurisdiction-fallback.ts:41 * kind: function * core: pm * spec: (none) * summary: Resolve effective billing rules with AHCCCS fallback.Logs a sanitized when falling back. Never throws. * score: 4 ### function resolveModifierRule * file: src/cores/pm/utils/modifier-rule-resolution.ts:36 * kind: function * core: pm * spec: (none) * summary: Resolves modifier rules for a given payer, filtering by active status,effective date range, and optional CPT code match.Rules are matched in order of specificity: 1. Exact modifier + exact CPT (most specific) 2. Exact modifier + no CPT (wildcard — applies to all CPTs) * params: * rules — All active, non-deleted rules for the payer * modifierCode — The modifier to evaluate * cptCode — Optional CPT code for specificity matching * serviceDate — Service date for effective range filtering (ISO string) * returns: The most specific matching rule, or null * score: 4 ### function resolveModifiers * file: src/cores/pm/services/careMgmtGateEngine.ts:120 * kind: function * core: pm * spec: (none) * summary: Resolve the billing modifier set for an auto-posted charge from payer policy(FR-5 / AC-2.1 — "a PM-07 charge is created with the resolved … modifier set").The payer-policy JSONB is a keyed map, e.g. .The entry is the modifier set applied to standard (non-telehealth)care-management charges. When no payer policy exists, or it carries no usable array, fall back to the caller-supplied (defaults to ) so the engine never invents modifiers.Pure function — no DB, no side effects. The resolved set is data-driven frompayer policy (NFR-config-1: zero hardcoded payer/modifier constants). PM-75 AC-2 (resolved modifier set from payer policy) * score: 4 ### function resolveProviderAvailability * file: src/cores/pm/utils/availability.ts:36 * kind: function * core: pm * spec: (none) * summary: Returns available time blocks for a provider within a date range,excluding approved time-off periods. * score: 4 ### function resolveVendorRoute * file: src/cores/pm/services/clearinghouse/router.ts:59 * kind: function * core: pm * spec: (none) * summary: Select the vendor for a new transaction. Pure / deterministic given inputs. * score: 4 ### function resolveVendorRouteWithAudit * file: src/cores/pm/services/clearinghouse/audit.ts:48 * kind: function * core: pm * spec: (none) * summary: Resolve a vendor route and asynchronously emit a entry ontransitions. Returns the routing decision synchronously; the audit insertis fire-and-forget and never blocks the caller. * score: 4 ### function RiskScoreBadge * file: src/cores/pm/components/denial-prediction/RiskScoreBadge.tsx:43 * kind: function * core: pm * spec: (none) * summary: Displays a claim's denial risk score as a colored pill badge. * params: * props — Badge configuration * score: 4 ### function routeWriteoffApproval * file: src/cores/pm/utils/payment-plan-logic.ts:78 * kind: function * core: pm * spec: (none) * summary: Routes write-off approval based on dollar threshold.Returns true if supervisor (higher-level) approval is required. * score: 4 ### function scrubClaim * file: src/cores/pm/utils/claim-scrubbing.ts:171 * kind: function * core: pm * spec: (none) * summary: Run pre-submission scrubbing rules on a claim and its lines. * params: * overrides — PM-18 org-level overrides. If omitted, all rules run with defaults. * score: 4 ### function scrubInstitutionalClaim * file: src/cores/pm/utils/claim-scrubbing.ts:56 * kind: function * core: pm * spec: (none) * summary: PM-08-EN-14: Pure scrubber for institutional (837I) specifics.Returns errors/warnings; never throws. Does not duplicate professional rules. * score: 4 ### function selectBillableCode * file: src/cores/pm/services/careMgmtGateEngine.ts:153 * kind: function * core: pm * spec: (none) * summary: Select the highest-value qualifying CPT/HCPCS code for a billing period.Algorithm:1. Determine the candidate codes (payer-policy or program defaults).2. Build an effective threshold map: payer-policy thresholds override defaults.3. From the candidates, find the highest-threshold code where . (Highest threshold = highest-value code for billing purposes.)4. Return on success or on failure. PM-75 AC-2 (auto-post on gate-pass) PM-75 AC-3 (audit invariant: code\_selected is set iff gate passes) * score: 4 ### function shouldAutoPost * file: src/cores/pm/services/careMgmtGateEngine.ts:271 * kind: function * core: pm * spec: (none) * summary: Determine whether the resolved charge should be auto-posted to PM-07.Logic (most-restrictive wins):1. If = true → false (org-level master switch).2. If payer-specific override for has → false.3. Otherwise → true.Note: this function only handles the kill-switch dimension. The CoCM registrycheck (AC-7) is handled separately in the evaluation service because it requiresan async call. When the registry is unavailable, the service forces before calling this function. PM-75 AC-2 (kill-switch blocks auto-post) * score: 4 ### function shouldReferToFinancialCounseling * file: src/cores/pm/utils/clearance-threshold.ts:11 * kind: function * core: pm * spec: (none) * summary: PM-48: Financial Clearance Threshold CheckUtility to determine whether a patient's estimated responsibilityexceeds the configurable threshold for PM-32 financial counseling referral. * params: * patientResponsibility — The patient's estimated responsibility amount * thresholdValue — Pre-resolved threshold value (from jurisdiction profile or pm\_module\_settings) * returns: true if the patient should be referred to financial counseling * score: 4 ### function summarizeFairness * file: src/cores/pm/lib/aiFairnessAggregate.ts:99 * kind: function * core: pm * spec: (none) * summary: Range-level rollup over ALL rows in the window (every metric\_date, every bucket). * score: 4 ### function tryParseJson * file: src/cores/pm/utils/rpaConfigValidation.ts:30 * kind: function * core: pm * spec: (none) * summary: Attempts to parse a string as JSON, returns null on failure * score: 4 ### function validateFplBrackets * file: src/cores/pm/sliding-fee/fpl-utils.ts:84 * kind: function * core: pm * spec: (none) * summary: Validate that FPL brackets are non-overlapping and well-formed.Returns array of validation error strings (empty if valid). * score: 4 ### function validateIdentifierFormat * file: src/cores/pm/utils/validateIdentifierFormat.ts:25 * kind: function * core: pm * spec: (none) * summary: Validates an identifier value against a jurisdiction-provided format regex. * params: * value — The identifier value to validate (may be empty/null). * format — Regex pattern string from the jurisdiction profile, or null for free-text. * returns: if valid or no format is configured; if the value doesn't match. * score: 4 ### function validatePayerSpecificConfig * file: src/cores/pm/utils/otp-payer-config-validation.ts:59 * kind: function * core: pm * spec: (none) * summary: Validates payer-specific config data against the canonical schema. * returns: Zod SafeParseReturnType with success/data/error * score: 4 ### function voidCareMgmtCharge * file: src/cores/pm/services/careMgmtEvaluationService.ts:595 * kind: function * core: pm * spec: (none) * summary: Void an auto-posted care-management charge back to the worklist (AC-2.3 / FR-7).Delegates to the SECURITY DEFINER RPC, which voidsthe linked PM-07 charge (status='void'), resets the billing period togate\_status='void' (worklist re-eligible), and writes a verdict='void' audit rowin the same chain — all behind an in-function org-access guard. PM-75 AC-2 (void path) * score: 4 ## Classes ### class WaystarClearinghouseAdapter * file: src/cores/pm/services/clearinghouse/waystar-adapter.ts:34 * kind: class * core: pm * spec: (none) * summary: Represents waystar clearinghouse adapter. * score: 4 # rh — Public API surface Source: https://docs.encoreos.io/api/rh Per-symbol API documentation for the rh area, generated from TSDoc blocks. Refresh with `npm run docs:api:generate`. # rh — Public API surface ## Types & interfaces ### interface AlumniSummary * file: src/cores/rh/hooks/useAlumniSummary.ts:22 * kind: interface * core: rh * spec: RH-07 * summary: Alumni engagement rollup returned by : total alumni,the active/inactive split, and the total number of recorded engagements. * score: 5 ### interface AssessmentContextData * file: src/cores/rh/components/wizards/outcomes-assessment/steps/AssessmentContextStep.tsx:26 * kind: interface * core: rh * spec: RH-UX-05 * summary: Data captured in the context step of the Outcomes Assessment Wizard: whetherthe assessment is a baseline or follow-up, its reporting period and date, andthe optional associated episode. * score: 5 ### interface ChecklistItem * file: src/cores/rh/components/wizards/discharge-planning-wizard/steps/ChecklistsReferralsStep.tsx:26 * kind: interface * core: rh * spec: RH-UX-03 * summary: A single discharge-checklist task tracked in the wizard, with its displaylabel, completion state, and whether it must be completed before discharge. * score: 5 ### interface ChecklistItem * file: src/cores/rh/utils/compliance-calculations.ts:19 * kind: interface * core: rh * spec: RH-06 * summary: Minimal compliance-checklist item used by the pure scoring helpers in thismodule — just an id and its current . * score: 5 ### type ChecklistItemStatus * file: src/cores/rh/components/discharge/ChecklistItemBadge.tsx:17 * kind: type * core: rh * spec: RH-05 * summary: Completion state of a single discharge-checklist item. * score: 3 ### interface ChecklistsReferralsData * file: src/cores/rh/components/wizards/discharge-planning-wizard/steps/ChecklistsReferralsStep.tsx:66 * kind: interface * core: rh * spec: RH-UX-03 * summary: Aggregate data for the checklists-and-referrals step: the discharge checklistitems and the list of outbound referrals. * score: 5 ### type ChecklistStatus * file: src/cores/rh/utils/compliance-calculations.ts:7 * kind: type * core: rh * spec: (none) * summary: RH-06: Compliance Calculation UtilitiesPure calculation functions for compliance scoring and categorization. * score: 2 ### type CompleteDischargeFormData * file: src/cores/rh/components/discharge/forms/CompleteDischargeForm.tsx:45 * kind: type * core: rh * spec: RH-05 * summary: Validated values for finalizing (completing) a resident discharge: the actualdischarge date, final discharge type and destination, and a required summary.Inferred from (Zod). * score: 5 ### interface DischargeChecklistCardProps * file: src/cores/rh/components/discharge/cards/DischargeChecklistCard.tsx:29 * kind: interface * core: rh * spec: RH-05 * summary: Props for , the discharge-readiness checklist panel.Either or may be supplied; when only is given the card resolves the resident's active (non-completed) discharge plan. * score: 5 ### type DischargeChecklistFormData * file: src/cores/rh/components/discharge/forms/DischargeChecklistForm.tsx:39 * kind: type * core: rh * spec: RH-05 * summary: Validated values for creating or editing a discharge-checklist item: its name,category, whether it is required, and optional notes.Inferred from (Zod). * score: 5 ### type DischargeDocumentFormData * file: src/cores/rh/components/discharge/forms/DischargeDocumentForm.tsx:38 * kind: type * core: rh * spec: RH-05 * summary: Validated values for attaching a discharge document (PF-11 integration): itstype, display name, and optional description.Inferred from (Zod). * score: 5 ### type DischargePlanFormData * file: src/cores/rh/components/discharge/forms/DischargePlanForm.tsx:45 * kind: type * core: rh * spec: RH-05 * summary: Validated values for creating or editing a discharge plan: planned date,discharge type, destination, reason, and notes.Inferred from (Zod). * score: 5 ### type DischargePlanStatus * file: src/cores/rh/components/discharge/DischargePlanStatusBadge.tsx:18 * kind: type * core: rh * spec: RH-05 * summary: Lifecycle status of a resident's discharge plan. * score: 3 ### interface DischargeReadinessSummary * file: src/cores/rh/hooks/discharge/useDischargeReadiness.ts:26 * kind: interface * core: rh * spec: RH-05 * summary: Organization-wide discharge-readiness rollup returned by: counts of plans by readiness bucket, the total,and the percentage of plans that are ready. * score: 5 ### interface DischargeTypeData * file: src/cores/rh/components/wizards/discharge-planning-wizard/steps/DischargeTypeStep.tsx:26 * kind: interface * core: rh * spec: RH-UX-03 * summary: Data captured in the discharge-type step of the Discharge Planning Wizard:the discharge classification, planned date, reason, and optional notes. * score: 5 ### interface EpisodeDischargeReadinessResult * file: src/cores/rh/hooks/discharge/useDischargeReadiness.ts:52 * kind: interface * core: rh * spec: RH-05 * summary: Per-episode discharge-checklist readiness: item totals and completed counts(overall and required-only), the completion percentage, and a derivedreadiness status. * score: 5 ### interface EventClassificationData * file: src/cores/rh/components/wizards/significant-event-reporting/steps/EventClassificationStep.tsx:32 * kind: interface * core: rh * spec: RH-UX-02 * summary: Data captured in the classification step of the Significant Event ReportingWizard: the selected event type, severity tier, when it occurred, and anoptional location. * score: 5 ### type FaEpisodeBalancePaymentStatus * file: src/cores/rh/hooks/useFaEpisodeBalance.ts:23 * kind: type * core: rh * spec: RH-01 * summary: Payment standing of an episode's billing account as reported by the FA core. * score: 3 ### type FaEpisodeBalanceResponse * file: src/cores/rh/hooks/useFaEpisodeBalance.ts:34 * kind: type * core: rh * spec: RH-01 * summary: Episode billing-balance payload returned by the edgefunction (API\_CONTRACTS FA-01): current and past-due balances, last/nextpayment details, charge/paid totals, account and payment status, and therecent payment history. * ## see: * score: 5 ### type FollowUpContactFormData * file: src/cores/rh/components/discharge/forms/FollowUpContactForm.tsx:45 * kind: type * core: rh * spec: RH-05 * summary: Validated values for recording a completed post-discharge follow-up contact:date, method, whether it succeeded, the reported outcome, and notes.Inferred from (Zod). * score: 5 ### type FollowUpOutcome * file: src/cores/rh/components/discharge/FollowUpOutcomeBadge.tsx:20 * kind: type * core: rh * spec: RH-05 * summary: Reported outcome captured during a post-discharge follow-up contact. * score: 3 ### type FollowUpScheduleFormData * file: src/cores/rh/components/discharge/forms/FollowUpScheduleForm.tsx:41 * kind: type * core: rh * spec: RH-05 * summary: Validated values for scheduling a future post-discharge follow-up: thescheduled date, an optional timepoint label (e.g. 7/30/90-day), and notes.Inferred from (Zod). * score: 5 ### interface GrievanceDetailsData * file: src/cores/rh/components/wizards/grievance-filing/steps/GrievanceDetailsStep.tsx:27 * kind: interface * core: rh * spec: RH-UX-06 * summary: Data captured in the details step of the Grievance Filing Wizard: thegrievance category, narrative description, optional desired outcome, andwhether the filer wishes to remain anonymous. * score: 5 ### interface HousingFollowUpData * file: src/cores/rh/components/wizards/discharge-planning-wizard/steps/HousingFollowUpStep.tsx:30 * kind: interface * core: rh * spec: RH-UX-03 * summary: Data captured in the housing-and-follow-up step of the Discharge PlanningWizard: the post-discharge housing destination and address, which standardfollow-up timepoints (7/30/90-day) to schedule, and follow-up contact info. * score: 5 ### type InitiateDischargePlanningFormData * file: src/cores/rh/components/discharge/forms/InitiateDischargePlanningForm.tsx:42 * kind: type * core: rh * spec: RH-05 * summary: Validated values for initiating discharge planning for an episode: a targetdischarge date (must be in the future), the anticipated discharge type, andoptional initial notes.Inferred from (Zod). * score: 5 ### interface InstrumentSectionsData * file: src/cores/rh/components/wizards/outcomes-assessment/steps/InstrumentSectionsStep.tsx:41 * kind: interface * core: rh * spec: RH-UX-05 * summary: Aggregate instrument data for the assessment wizard: the per-sectionresponses across all answered sections. * score: 5 ### interface MilestoneDefinition * file: src/cores/rh/components/wizards/program-creation/steps/MilestonesPrivilegesStep.tsx:27 * kind: interface * core: rh * spec: RH-UX-01 * summary: Definition of a single program milestone: its title, the phase it belongs to,whether it is required, and an optional dependency on another milestone. * score: 5 ### interface MilestonesPrivilegesData * file: src/cores/rh/components/wizards/program-creation/steps/MilestonesPrivilegesStep.tsx:49 * kind: interface * core: rh * spec: RH-UX-01 * summary: Milestones-and-privileges configuration for a program: the milestonedefinitions plus the program-wide visitor policy and pass eligibility. * score: 5 ### interface NarrLevelOption * file: src/cores/rh/hooks/useNarrLevels.ts:38 * kind: interface * core: rh * spec: RH-11 * summary: A selectable NARR residence-level option: the stored picklist value and itshuman-readable display label. * score: 5 ### interface PartiesWitnessesData * file: src/cores/rh/components/wizards/grievance-filing/steps/PartiesWitnessesStep.tsx:27 * kind: interface * core: rh * spec: RH-UX-06 * summary: Optional data captured in the parties-and-witnesses step of the GrievanceFiling Wizard: involved parties, witness names and contact info, and theincident date and location. * score: 5 ### interface PassDetail * file: src/cores/rh/hooks/usePassDetail.ts:13 * kind: interface * core: rh * spec: RH-03 * summary: A resident pass with its related episode, resident profile, and residenceeagerly joined — the shape returned by for pass detailsurfaces. * ## see: * score: 5 ### interface PendingAttachment * file: src/cores/rh/components/wizards/grievance-filing/steps/AttachmentsStep.tsx:26 * kind: interface * core: rh * spec: RH-UX-06 * summary: A file staged for upload in the grievance-filing wizard before the grievancerow exists. Each entry pairs a client-generated id with the selected ;the actual upload happens after the grievance is created so the storage pathcan include the grievance id. * score: 5 ### interface PeopleAndNarrativeData * file: src/cores/rh/components/wizards/significant-event-reporting/steps/PeopleAndNarrativeStep.tsx:26 * kind: interface * core: rh * spec: RH-UX-02 * summary: Data captured in the people-and-narrative step of the Significant EventReporting Wizard: the factual event narrative, the immediate actions taken,any witnesses, and the reporter's name. * score: 5 ### interface PhaseDefinition * file: src/cores/rh/components/wizards/program-creation/steps/PhaseLadderStep.tsx:24 * kind: interface * core: rh * spec: RH-UX-01 * summary: Definition of one program phase: its machine name, human label, duration indays, and whether residents must complete it (per the RH-02 phase model). * score: 5 ### interface PhaseLadderData * file: src/cores/rh/components/wizards/program-creation/steps/PhaseLadderStep.tsx:42 * kind: interface * core: rh * spec: RH-UX-01 * summary: The ordered ladder of phases that defines a program's structure. * score: 5 ### interface ProgramIdentityData * file: src/cores/rh/components/wizards/program-creation/steps/ProgramIdentityStep.tsx:25 * kind: interface * core: rh * spec: RH-UX-01 * summary: Core identity of a Recovery Housing program: its name, description, defaultlength in days, and program type (standard, specialized, or transitional). * score: 5 ### interface ProgressionRulesData * file: src/cores/rh/components/wizards/program-creation/steps/ProgressionRulesStep.tsx:28 * kind: interface * core: rh * spec: RH-UX-01 * summary: Phase-progression policy for a program: whether advancement is automatic ormanual, whether residents may regress to an earlier phase, and which actionsrequire approval (extensions, manager-approved advances). * score: 5 ### type ReferralFormData * file: src/cores/rh/components/discharge/forms/ReferralForm.tsx:50 * kind: type * core: rh * spec: RH-05 * summary: Validated values for creating a discharge resource referral: the referraltype, receiving agency, contact details, referral date, and notes.Inferred from (Zod). * score: 5 ### interface ReferralItem * file: src/cores/rh/components/wizards/discharge-planning-wizard/steps/ChecklistsReferralsStep.tsx:47 * kind: interface * core: rh * spec: RH-UX-03 * summary: A resource referral captured during discharge planning: its category, thereceiving provider, and an optional scheduled date. * score: 5 ### interface ReferralsCardProps * file: src/cores/rh/components/discharge/cards/ReferralsCard.tsx:31 * kind: interface * core: rh * spec: RH-05 * summary: Props for , the discharge-plan referrals panel that listsoutbound resource referrals (housing, employment, healthcare, etc.).Either or may be supplied; when only is given the card resolves the resident's active (non-completed) discharge plan. * score: 5 ### interface ReferralStats * file: src/cores/rh/hooks/discharge/useReferralStats.ts:26 * kind: interface * core: rh * spec: RH-05 * summary: Aggregate discharge-referral statistics returned by :the total referral count, breakdowns by type and status, the number awaitingfollow-up, and the overall completion rate. * score: 5 ### type ReferralStatus * file: src/cores/rh/components/discharge/ReferralStatusBadge.tsx:19 * kind: type * core: rh * spec: RH-05 * summary: Lifecycle status of an outbound discharge resource referral. * score: 3 ### interface RequirementDefinitionData * file: src/cores/rh/components/wizards/compliance-setup/steps/RequirementDefinitionStep.tsx:28 * kind: interface * core: rh * spec: RH-UX-04 * summary: Data captured in the requirement-definition step of the Compliance SetupWizard: the requirement's title, description, category, type, and an optionalregulatory reference. * score: 5 ### type RHModuleSettingsFormValues * file: src/cores/rh/components/RHSettingsForm.tsx:78 * kind: type * core: rh * spec: none * summary: Validated values for the Recovery Housing module settings form, spanninggeneral stay/discharge defaults, phase durations, compliance and auditresponse thresholds, automation toggles, cross-core integration flags, andwizard behavior. All fields are optional so partial updates are supported.Inferred from (Zod). * score: 5 ### interface ScheduleScopeData * file: src/cores/rh/components/wizards/compliance-setup/steps/ScheduleScopeStep.tsx:26 * kind: interface * core: rh * spec: RH-UX-04 * summary: Data captured in the schedule-and-scope step of the Compliance Setup Wizard:recurrence frequency, optional due day of month, target scope (all orspecific residences), and the lead-time window before a due date. * score: 5 ### interface SectionResponse * file: src/cores/rh/components/wizards/outcomes-assessment/steps/InstrumentSectionsStep.tsx:24 * kind: interface * core: rh * spec: RH-UX-05 * summary: Recorded answers for a single instrument section, keyed by question id. * score: 5 ### interface ValidationResult * file: src/cores/rh/utils/dischargeValidation.ts:20 * kind: interface * core: rh * spec: RH-05 * summary: Outcome of a discharge-planning validation check: an overall validity flagand the list of human-readable error messages (empty when valid). * score: 5 ## Hooks ### hook useAdmissionDraft * file: src/cores/rh/hooks/useAdmissionDraft.ts:108 * kind: hook * core: rh * spec: (none) * summary: Hook for managing admission wizard draft persistence.PHI is encrypted at rest using AES-GCM derived from the user's session. * score: 1 ### hook useAlumni * file: src/cores/rh/hooks/useAlumni.ts:11 * kind: hook * core: rh * spec: (none) * summary: Hook for managing alumni. * score: 1 ### hook useAlumniDetail * file: src/cores/rh/hooks/useAlumniDetail.ts:11 * kind: hook * core: rh * spec: (none) * summary: Hook for managing alumni detail. * score: 1 ### hook useAlumniEngagementMutation * file: src/cores/rh/hooks/useAlumniEngagementMutation.ts:13 * kind: hook * core: rh * spec: (none) * summary: Hook for managing alumni engagement mutation. * score: 1 ### hook useAlumniEngagements * file: src/cores/rh/hooks/useAlumniEngagements.ts:11 * kind: hook * core: rh * spec: (none) * summary: Hook for managing alumni engagements. * score: 1 ### hook useAlumniEngagementSummary * file: src/cores/rh/hooks/useAlumniEngagementSummary.ts:11 * kind: hook * core: rh * spec: (none) * summary: Hook for managing alumni engagement summary. * score: 1 ### hook useAlumniMutation * file: src/cores/rh/hooks/useAlumniMutation.ts:13 * kind: hook * core: rh * spec: (none) * summary: Hook for managing alumni mutation. * score: 1 ### hook useAlumniSummary * file: src/cores/rh/hooks/useAlumniSummary.ts:32 * kind: hook * core: rh * spec: (none) * summary: Hook for managing alumni summary. * score: 1 ### hook useApproveExcusedAbsence * file: src/cores/rh/hooks/useApproveExcusedAbsence.ts:21 * kind: hook * core: rh * spec: (none) * summary: Hook for managing approve excused absence. * score: 1 ### hook useAttendancePercentage * file: src/cores/rh/hooks/useAttendancePercentage.ts:23 * kind: hook * core: rh * spec: (none) * summary: Hook for managing attendance percentage. * score: 1 ### hook useAttendanceRecords * file: src/cores/rh/hooks/useAttendanceRecords.ts:16 * kind: hook * core: rh * spec: (none) * summary: Hook for managing attendance records. * score: 1 ### hook useAuditFindingDetail * file: src/cores/rh/hooks/useAuditFindingDetail.ts:17 * kind: hook * core: rh * spec: (none) * summary: Hook for managing audit finding detail. * score: 1 ### hook useAuditFindingMutation * file: src/cores/rh/hooks/useAuditFindingMutation.ts:13 * kind: hook * core: rh * spec: (none) * summary: Hook for managing audit finding mutation. * score: 1 ### hook useAuditFindings * file: src/cores/rh/hooks/useAuditFindings.ts:11 * kind: hook * core: rh * spec: (none) * summary: Hook for managing audit findings. * score: 1 ### hook useAuditScheduleDetail * file: src/cores/rh/hooks/useAuditScheduleDetail.ts:11 * kind: hook * core: rh * spec: (none) * summary: Hook for managing audit schedule detail. * score: 1 ### hook useAuditScheduleMutation * file: src/cores/rh/hooks/useAuditScheduleMutation.ts:13 * kind: hook * core: rh * spec: (none) * summary: Hook for managing audit schedule mutation. * score: 1 ### hook useAuditSchedules * file: src/cores/rh/hooks/useAuditSchedules.ts:11 * kind: hook * core: rh * spec: (none) * summary: Hook for managing audit schedules. * score: 1 ### hook useBedBoard * file: src/cores/rh/hooks/useBedBoard.ts:19 * kind: hook * core: rh * spec: (none) * summary: Hook for managing bed board. * score: 1 ### hook useBedMutation * file: src/cores/rh/hooks/useBedMutation.ts:16 * kind: hook * core: rh * spec: (none) * summary: Hook for managing bed mutation. * score: 1 ### hook useBeds * file: src/cores/rh/hooks/useBeds.ts:14 * kind: hook * core: rh * spec: (none) * summary: Hook for managing beds. * score: 1 ### hook useCensus * file: src/cores/rh/hooks/useCensus.ts:14 * kind: hook * core: rh * spec: (none) * summary: Hook for managing census. * score: 1 ### hook useChoreAssignmentMutation * file: src/cores/rh/hooks/useChoreAssignmentMutation.ts:18 * kind: hook * core: rh * spec: (none) * summary: Hook for managing chore assignment mutation. * score: 1 ### hook useChoreAssignments * file: src/cores/rh/hooks/useChoreAssignments.ts:18 * kind: hook * core: rh * spec: (none) * summary: Hook for managing chore assignments. * score: 1 ### hook useCompleteMilestone * file: src/cores/rh/hooks/useCompleteMilestone.ts:16 * kind: hook * core: rh * spec: (none) * summary: Hook for managing complete milestone. * score: 1 ### hook useCompletionRate * file: src/cores/rh/hooks/useCompletionRate.ts:11 * kind: hook * core: rh * spec: (none) * summary: Hook for managing completion rate. * score: 1 ### hook useComplianceChecklistMutation * file: src/cores/rh/hooks/useComplianceChecklistMutation.ts:12 * kind: hook * core: rh * spec: (none) * summary: Hook for managing compliance checklist mutation. * score: 1 ### hook useComplianceChecklists * file: src/cores/rh/hooks/useComplianceChecklists.ts:11 * kind: hook * core: rh * spec: (none) * summary: Hook for managing compliance checklists. * score: 1 ### hook useComplianceDeadlines * file: src/cores/rh/hooks/useComplianceDeadlines.ts:21 * kind: hook * core: rh * spec: (none) * summary: Dashboard hook: Get upcoming compliance deadlines * score: 4 ### hook useComplianceRequirementDetail * file: src/cores/rh/hooks/useComplianceRequirements.ts:54 * kind: hook * core: rh * spec: (none) * summary: Hook for managing compliance requirement detail. * score: 1 ### hook useComplianceRequirementMutation * file: src/cores/rh/hooks/useComplianceRequirementMutation.ts:13 * kind: hook * core: rh * spec: (none) * summary: Hook for managing compliance requirement mutation. * score: 1 ### hook useComplianceRequirements * file: src/cores/rh/hooks/useComplianceRequirements.ts:11 * kind: hook * core: rh * spec: (none) * summary: Hook for managing compliance requirements. * score: 1 ### hook useComplianceStatus * file: src/cores/rh/hooks/useComplianceStatus.ts:11 * kind: hook * core: rh * spec: (none) * summary: Dashboard hook: Get overall compliance status * score: 4 ### hook useCurfewCheckMutation * file: src/cores/rh/hooks/useCurfewCheckMutation.ts:19 * kind: hook * core: rh * spec: (none) * summary: Hook for managing curfew check mutation. * score: 1 ### hook useCurfewChecks * file: src/cores/rh/hooks/useCurfewChecks.ts:14 * kind: hook * core: rh * spec: (none) * summary: Hook for managing curfew checks. * score: 1 ### hook useDashboardStats * file: src/cores/rh/hooks/useDashboardStats.ts:23 * kind: hook * core: rh * spec: (none) * summary: Hook for managing dashboard stats. * score: 1 ### hook useDischargeChecklistMutation * file: src/cores/rh/hooks/discharge/useDischargeChecklistMutation.ts:15 * kind: hook * core: rh * spec: (none) * summary: Hook for managing discharge checklist mutation. * score: 1 ### hook useDischargeChecklists * file: src/cores/rh/hooks/discharge/useDischargeChecklists.ts:12 * kind: hook * core: rh * spec: (none) * summary: Hook for managing discharge checklists. * score: 1 ### hook useDischargeDocumentMutation * file: src/cores/rh/hooks/discharge/useDischargeDocumentMutation.ts:17 * kind: hook * core: rh * spec: (none) * summary: Hook for managing discharge document mutation. * score: 1 ### hook useDischargeDocuments * file: src/cores/rh/hooks/discharge/useDischargeDocuments.ts:16 * kind: hook * core: rh * spec: (none) * summary: Hook for managing discharge documents. * score: 1 ### hook useDischargePlan * file: src/cores/rh/hooks/discharge/useDischargePlan.ts:12 * kind: hook * core: rh * spec: (none) * summary: Hook for managing discharge plan. * score: 1 ### hook useDischargePlanMutation * file: src/cores/rh/hooks/discharge/useDischargePlanMutation.ts:17 * kind: hook * core: rh * spec: (none) * summary: Hook for managing discharge plan mutation. * score: 1 ### hook useDischargePlans * file: src/cores/rh/hooks/discharge/useDischargePlans.ts:13 * kind: hook * core: rh * spec: (none) * summary: Hook for managing discharge plans. * score: 1 ### hook useDischargeReadiness * file: src/cores/rh/hooks/discharge/useDischargeReadiness.ts:64 * kind: hook * core: rh * spec: (none) * summary: Hook for managing discharge readiness. * score: 1 ### hook useDischargeSummaryPdf * file: src/cores/rh/hooks/useDischargeSummaryPdf.ts:16 * kind: hook * core: rh * spec: (none) * summary: Hook for managing discharge summary pdf. * score: 1 ### hook useEligibilityChecklist * file: src/cores/rh/hooks/useEligibilityChecklist.ts:19 * kind: hook * core: rh * spec: (none) * summary: Hook for managing eligibility checklist. * score: 1 ### hook useEnrollEpisodeInProgram * file: src/cores/rh/hooks/useEnrollEpisodeInProgram.ts:16 * kind: hook * core: rh * spec: (none) * summary: Hook for managing enroll episode in program. * score: 1 ### hook useEpisodeDetail * file: src/cores/rh/hooks/useEpisodeDetail.ts:14 * kind: hook * core: rh * spec: (none) * summary: Hook for managing episode detail. * score: 1 ### hook useEpisodeDischargeReadiness * file: src/cores/rh/hooks/discharge/useDischargeReadiness.ts:127 * kind: hook * core: rh * spec: (none) * summary: Hook for managing episode discharge readiness. * score: 1 ### hook useEpisodeFollowUpSchedules * file: src/cores/rh/hooks/discharge/useFollowUpSchedules.ts:65 * kind: hook * core: rh * spec: (none) * summary: Hook for managing episode follow up schedules. * score: 1 ### hook useEpisodeMutation * file: src/cores/rh/hooks/useEpisodeMutation.ts:16 * kind: hook * core: rh * spec: (none) * summary: Hook for managing episode mutation. * score: 1 ### hook useEpisodePhaseProgress * file: src/cores/rh/hooks/useEpisodePhaseProgress.ts:20 * kind: hook * core: rh * spec: (none) * summary: Hook for managing episode phase progress. * score: 1 ### hook useEpisodeProgram * file: src/cores/rh/hooks/useEpisodeProgram.ts:13 * kind: hook * core: rh * spec: (none) * summary: Hook for managing episode program. * score: 1 ### hook useEpisodeReferrals * file: src/cores/rh/hooks/discharge/useReferrals.ts:61 * kind: hook * core: rh * spec: (none) * summary: Hook for managing episode referrals. * score: 1 ### hook useEpisodes * file: src/cores/rh/hooks/useEpisodes.ts:14 * kind: hook * core: rh * spec: (none) * summary: Hook for managing episodes. * score: 1 ### hook useEpisodeStatusUpdate * file: src/cores/rh/hooks/useEpisodeStatusUpdate.ts:16 * kind: hook * core: rh * spec: (none) * summary: Hook for managing episode status update. * score: 1 ### hook useExpiringTrainings * file: src/cores/rh/hooks/useStaffTrainings.ts:63 * kind: hook * core: rh * spec: (none) * summary: Dashboard hook: Get trainings expiring within N days * score: 4 ### hook useFaEpisodeBalance * file: src/cores/rh/hooks/useFaEpisodeBalance.ts:60 * kind: hook * core: rh * spec: (none) * summary: Fetches episode balance from FA edge function (cached RH row until FA AR is wired). * score: 4 ### hook useFollowUpContactMutation * file: src/cores/rh/hooks/discharge/useFollowUpContactMutation.ts:17 * kind: hook * core: rh * spec: (none) * summary: Hook for managing follow up contact mutation. * score: 1 ### hook useFollowUpContacts * file: src/cores/rh/hooks/discharge/useFollowUpContacts.ts:12 * kind: hook * core: rh * spec: (none) * summary: Hook for managing follow up contacts. * score: 1 ### hook useFollowUpScheduleMutation * file: src/cores/rh/hooks/discharge/useFollowUpScheduleMutation.ts:15 * kind: hook * core: rh * spec: (none) * summary: Hook for managing follow up schedule mutation. * score: 1 ### hook useFollowUpSchedules * file: src/cores/rh/hooks/discharge/useFollowUpSchedules.ts:13 * kind: hook * core: rh * spec: (none) * summary: Hook for managing follow up schedules. * score: 1 ### hook useFollowUpSchedulesDue * file: src/cores/rh/hooks/discharge/useFollowUpSchedulesDue.ts:21 * kind: hook * core: rh * spec: (none) * summary: Hook for managing follow up schedules due. * score: 1 ### hook useGenerateScheduleInstances * file: src/cores/rh/hooks/useGenerateScheduleInstances.ts:23 * kind: hook * core: rh * spec: (none) * summary: Hook for managing generate schedule instances. * score: 1 ### hook useGrievanceDetail * file: src/cores/rh/hooks/useGrievanceDetail.ts:11 * kind: hook * core: rh * spec: (none) * summary: Fetch one grievance with its resident profile and assignee. * score: 4 ### hook useGrievanceMutation * file: src/cores/rh/hooks/useGrievanceMutation.ts:13 * kind: hook * core: rh * spec: (none) * summary: Assign / reassign and status-update mutations for a grievance. * score: 4 ### hook useGrievances * file: src/cores/rh/hooks/useGrievances.ts:11 * kind: hook * core: rh * spec: (none) * summary: List grievances for an organization with optional status/category/assignee filters. * score: 4 ### hook useIncidentReportPdf * file: src/cores/rh/hooks/useIncidentReportPdf.ts:16 * kind: hook * core: rh * spec: (none) * summary: Hook for managing incident report pdf. * score: 1 ### hook useInvestigation * file: src/cores/rh/hooks/useInvestigation.ts:12 * kind: hook * core: rh * spec: (none) * summary: Hook for managing investigation. * score: 1 ### hook useInvestigationActionMutation * file: src/cores/rh/hooks/useInvestigationActionMutation.ts:10 * kind: hook * core: rh * spec: (none) * summary: Hook for managing investigation action mutation. * score: 1 ### hook useInvestigationActions * file: src/cores/rh/hooks/useInvestigationActions.ts:8 * kind: hook * core: rh * spec: (none) * summary: Hook for managing investigation actions. * score: 1 ### hook useInvestigationMutation * file: src/cores/rh/hooks/useInvestigationMutation.ts:10 * kind: hook * core: rh * spec: (none) * summary: Hook for managing investigation mutation. * score: 1 ### hook useMedStorageAuditDetail * file: src/cores/rh/hooks/useMedStorageAuditDetail.ts:8 * kind: hook * core: rh * spec: (none) * summary: Hook for managing med storage audit detail. * score: 1 ### hook useMedStorageAuditMutation * file: src/cores/rh/hooks/useMedStorageAuditMutation.ts:10 * kind: hook * core: rh * spec: (none) * summary: Hook for managing med storage audit mutation. * score: 1 ### hook useMedStorageAudits * file: src/cores/rh/hooks/useMedStorageAudits.ts:9 * kind: hook * core: rh * spec: (none) * summary: Hook for managing med storage audits. * score: 1 ### hook useMilestoneCompletions * file: src/cores/rh/hooks/useMilestoneCompletions.ts:13 * kind: hook * core: rh * spec: (none) * summary: Hook for managing milestone completions. * score: 1 ### hook useMilestoneMutation * file: src/cores/rh/hooks/useMilestoneMutation.ts:17 * kind: hook * core: rh * spec: (none) * summary: Hook for managing milestone mutation. * score: 1 ### hook useMilestones * file: src/cores/rh/hooks/useMilestones.ts:14 * kind: hook * core: rh * spec: (none) * summary: Hook for managing milestones. * score: 1 ### hook useNarrLevels * file: src/cores/rh/hooks/useNarrLevels.ts:54 * kind: hook * core: rh * spec: (none) * summary: Loads NARR level picklist items and exposes options plus a label resolver. * score: 4 ### hook useOutcomeAssessmentDetail * file: src/cores/rh/hooks/useOutcomeAssessmentDetail.ts:11 * kind: hook * core: rh * spec: (none) * summary: Hook for managing outcome assessment detail. * score: 1 ### hook useOutcomeAssessmentMutation * file: src/cores/rh/hooks/useOutcomeAssessmentMutation.ts:13 * kind: hook * core: rh * spec: (none) * summary: Hook for managing outcome assessment mutation. * score: 1 ### hook useOutcomeAssessments * file: src/cores/rh/hooks/useOutcomeAssessments.ts:11 * kind: hook * core: rh * spec: (none) * summary: Hook for managing outcome assessments. * score: 1 ### hook useOutcomeCheckpointMutation * file: src/cores/rh/hooks/useOutcomeCheckpointMutation.ts:13 * kind: hook * core: rh * spec: (none) * summary: Hook for managing outcome checkpoint mutation. * score: 1 ### hook useOutcomeCheckpoints * file: src/cores/rh/hooks/useOutcomeCheckpoints.ts:11 * kind: hook * core: rh * spec: (none) * summary: Hook for managing outcome checkpoints. * score: 1 ### hook useOutcomeIndicatorDetail * file: src/cores/rh/hooks/useOutcomeIndicatorDetail.ts:11 * kind: hook * core: rh * spec: (none) * summary: Hook for managing outcome indicator detail. * score: 1 ### hook useOutcomeIndicatorMutation * file: src/cores/rh/hooks/useOutcomeIndicatorMutation.ts:13 * kind: hook * core: rh * spec: (none) * summary: Hook for managing outcome indicator mutation. * score: 1 ### hook useOutcomeIndicators * file: src/cores/rh/hooks/useOutcomeIndicators.ts:11 * kind: hook * core: rh * spec: (none) * summary: Hook for managing outcome indicators. * score: 1 ### hook useOutcomeMeasurementMutation * file: src/cores/rh/hooks/useOutcomeMeasurementMutation.ts:13 * kind: hook * core: rh * spec: (none) * summary: Hook for managing outcome measurement mutation. * score: 1 ### hook useOutcomeMeasurements * file: src/cores/rh/hooks/useOutcomeMeasurements.ts:11 * kind: hook * core: rh * spec: (none) * summary: Hook for managing outcome measurements. * score: 1 ### hook useOutcomeSummary * file: src/cores/rh/hooks/useOutcomeSummary.ts:14 * kind: hook * core: rh * spec: (none) * summary: Hook for managing outcome summary. * score: 1 ### hook useParticipationMetrics * file: src/cores/rh/hooks/useParticipationMetrics.ts:13 * kind: hook * core: rh * spec: (none) * summary: Hook for managing participation metrics. * score: 1 ### hook useParticipationStats * file: src/cores/rh/hooks/useParticipationMetrics.ts:57 * kind: hook * core: rh * spec: (none) * summary: Hook for getting aggregated participation stats for the dashboard * score: 1 ### hook usePassApproval * file: src/cores/rh/hooks/usePassApproval.ts:17 * kind: hook * core: rh * spec: (none) * summary: Hook for managing pass approval. * score: 1 ### hook usePassDetail * file: src/cores/rh/hooks/usePassDetail.ts:23 * kind: hook * core: rh * spec: (none) * summary: Hook for managing pass detail. * score: 1 ### hook usePassEligibility * file: src/cores/rh/hooks/usePassEligibility.ts:36 * kind: hook * core: rh * spec: (none) * summary: Hook for managing pass eligibility. * score: 1 ### hook usePasses * file: src/cores/rh/hooks/usePasses.ts:9 * kind: hook * core: rh * spec: (none) * summary: Hook for managing passes. * score: 1 ### hook usePassMutation * file: src/cores/rh/hooks/usePassMutation.ts:11 * kind: hook * core: rh * spec: (none) * summary: Hook for managing pass mutation. * score: 1 ### hook usePassReturn * file: src/cores/rh/hooks/usePassReturn.ts:16 * kind: hook * core: rh * spec: (none) * summary: Hook for managing pass return. * score: 1 ### hook usePaymentStatus * file: src/cores/rh/hooks/usePaymentStatus.ts:14 * kind: hook * core: rh * spec: (none) * summary: Hook for managing payment status. * score: 1 ### hook usePhaseMutation * file: src/cores/rh/hooks/usePhaseMutation.ts:17 * kind: hook * core: rh * spec: (none) * summary: Hook for managing phase mutation. * score: 1 ### hook usePhasePrivileges * file: src/cores/rh/hooks/usePhasePrivileges.ts:13 * kind: hook * core: rh * spec: (none) * summary: Hook for managing phase privileges. * score: 1 ### hook usePhasePrivilegesMutation * file: src/cores/rh/hooks/usePhasePrivilegesMutation.ts:17 * kind: hook * core: rh * spec: (none) * summary: Hook for managing phase privileges mutation. * score: 1 ### hook usePhaseProgression * file: src/cores/rh/hooks/usePhaseProgression.ts:16 * kind: hook * core: rh * spec: (none) * summary: Hook for managing phase progression. * score: 1 ### hook usePhases * file: src/cores/rh/hooks/usePhases.ts:16 * kind: hook * core: rh * spec: (none) * summary: Hook for managing phases. * score: 1 ### hook useProgramDetail * file: src/cores/rh/hooks/useProgramDetail.ts:14 * kind: hook * core: rh * spec: (none) * summary: Hook for managing program detail. * score: 1 ### hook useProgramMutation * file: src/cores/rh/hooks/useProgramMutation.ts:17 * kind: hook * core: rh * spec: (none) * summary: Hook for managing program mutation. * score: 1 ### hook usePrograms * file: src/cores/rh/hooks/usePrograms.ts:14 * kind: hook * core: rh * spec: (none) * summary: Hook for managing programs. * score: 1 ### hook useRecordAttendance * file: src/cores/rh/hooks/useRecordAttendance.ts:19 * kind: hook * core: rh * spec: (none) * summary: Hook for managing record attendance. * score: 1 ### hook useReferralMutation * file: src/cores/rh/hooks/discharge/useReferralMutation.ts:17 * kind: hook * core: rh * spec: (none) * summary: Hook for managing referral mutation. * score: 1 ### hook useReferrals * file: src/cores/rh/hooks/discharge/useReferrals.ts:13 * kind: hook * core: rh * spec: (none) * summary: Hook for managing referrals. * score: 1 ### hook useReferralStats * file: src/cores/rh/hooks/discharge/useReferralStats.ts:37 * kind: hook * core: rh * spec: (none) * summary: Hook for managing referral stats. * score: 1 ### hook useReportDefinitionDetail * file: src/cores/rh/hooks/useReportDefinitionDetail.ts:11 * kind: hook * core: rh * spec: (none) * summary: Hook for managing report definition detail. * score: 1 ### hook useReportDefinitionMutation * file: src/cores/rh/hooks/useReportDefinitionMutation.ts:13 * kind: hook * core: rh * spec: (none) * summary: Hook for managing report definition mutation. * score: 1 ### hook useReportDefinitions * file: src/cores/rh/hooks/useReportDefinitions.ts:11 * kind: hook * core: rh * spec: (none) * summary: Hook for managing report definitions. * score: 1 ### hook useReportsDue * file: src/cores/rh/hooks/useReportsDue.ts:15 * kind: hook * core: rh * spec: (none) * summary: Hook for managing reports due. * score: 1 ### hook useResidenceDetail * file: src/cores/rh/hooks/useResidenceDetail.ts:18 * kind: hook * core: rh * spec: (none) * summary: Hook for managing residence detail. * score: 1 ### hook useResidenceMutation * file: src/cores/rh/hooks/useResidenceMutation.ts:16 * kind: hook * core: rh * spec: (none) * summary: Hook for managing residence mutation. * score: 1 ### hook useResidences * file: src/cores/rh/hooks/useResidences.ts:14 * kind: hook * core: rh * spec: (none) * summary: Hook for managing residences. * score: 1 ### hook useResidentAdmissionWizard * file: src/cores/rh/hooks/useResidentAdmissionWizard.ts:88 * kind: hook * core: rh * spec: (none) * summary: Hook for managing the resident admission wizard * score: 1 ### hook useResidentAgreement * file: src/cores/rh/hooks/useResidentAgreement.ts:19 * kind: hook * core: rh * spec: (none) * summary: Hook for managing resident agreement. * score: 1 ### hook useResidentAgreementPdf * file: src/cores/rh/hooks/useResidentAgreementPdf.ts:16 * kind: hook * core: rh * spec: (none) * summary: Hook for managing resident agreement pdf. * score: 1 ### hook useRHModuleSettings * file: src/cores/rh/hooks/useRHModuleSettings.ts:21 * kind: hook * core: rh * spec: (none) * summary: Hook for managing rhmodule settings. * score: 1 ### hook useRunRandomUDSSelection * file: src/cores/rh/hooks/useRunRandomUDSSelection.ts:14 * kind: hook * core: rh * spec: (none) * summary: Hook for managing run random udsselection. * score: 1 ### hook useScheduleInstanceMutation * file: src/cores/rh/hooks/useScheduleInstanceMutation.ts:17 * kind: hook * core: rh * spec: (none) * summary: Hook for managing schedule instance mutation. * score: 1 ### hook useScheduleInstances * file: src/cores/rh/hooks/useScheduleInstances.ts:14 * kind: hook * core: rh * spec: (none) * summary: Hook for managing schedule instances. * score: 1 ### hook useScheduleTemplateMutation * file: src/cores/rh/hooks/useScheduleTemplateMutation.ts:17 * kind: hook * core: rh * spec: (none) * summary: Hook for managing schedule template mutation. * score: 1 ### hook useScheduleTemplates * file: src/cores/rh/hooks/useScheduleTemplates.ts:14 * kind: hook * core: rh * spec: (none) * summary: Hook for managing schedule templates. * score: 1 ### hook useShiftNoteDetail * file: src/cores/rh/hooks/useShiftNoteDetail.ts:11 * kind: hook * core: rh * spec: (none) * summary: Hook for managing shift note detail. * score: 1 ### hook useShiftNoteMutation * file: src/cores/rh/hooks/useShiftNoteMutation.ts:13 * kind: hook * core: rh * spec: (none) * summary: Hook for managing shift note mutation. * score: 1 ### hook useShiftNotes * file: src/cores/rh/hooks/useShiftNotes.ts:11 * kind: hook * core: rh * spec: (none) * summary: Hook for managing shift notes. * score: 1 ### hook useSignificantEventAlerts * file: src/cores/rh/hooks/useSignificantEventAlerts.ts:14 * kind: hook * core: rh * spec: (none) * summary: Hook for managing significant event alerts. * score: 1 ### hook useSignificantEventDetail * file: src/cores/rh/hooks/useSignificantEventDetail.ts:9 * kind: hook * core: rh * spec: (none) * summary: Fetch a single significant event with all related data * score: 4 ### hook useSignificantEventMutation * file: src/cores/rh/hooks/useSignificantEventMutation.ts:11 * kind: hook * core: rh * spec: (none) * summary: Create or update a significant event * score: 4 ### hook useSignificantEvents * file: src/cores/rh/hooks/useSignificantEvents.ts:10 * kind: hook * core: rh * spec: (none) * summary: Fetch significant events with optional filtersPF-66: Added realtime subscription for live table updates * score: 4 ### hook useSignificantEventStatusUpdate * file: src/cores/rh/hooks/useSignificantEventStatusUpdate.ts:18 * kind: hook * core: rh * spec: (none) * summary: Update significant event status using the state machine RPC functionThis enforces valid state transitions: draft - submitted - under\_review - closed * score: 4 ### hook useSignificantEventTypes * file: src/cores/rh/hooks/useSignificantEventTypes.ts:8 * kind: hook * core: rh * spec: (none) * summary: Fetch all significant event types (catalog) * score: 4 ### hook useSobrietyRate * file: src/cores/rh/hooks/useSobrietyRate.ts:11 * kind: hook * core: rh * spec: (none) * summary: Hook for managing sobriety rate. * score: 1 ### hook useStaffAssignmentMutation * file: src/cores/rh/hooks/useStaffAssignmentMutation.ts:13 * kind: hook * core: rh * spec: (none) * summary: Hook for managing staff assignment mutation. * score: 1 ### hook useStaffAssignments * file: src/cores/rh/hooks/useStaffAssignments.ts:11 * kind: hook * core: rh * spec: (none) * summary: Hook for managing staff assignments. * score: 1 ### hook useStaffTrainingMutation * file: src/cores/rh/hooks/useStaffTrainingMutation.ts:13 * kind: hook * core: rh * spec: (none) * summary: Hook for managing staff training mutation. * score: 1 ### hook useStaffTrainings * file: src/cores/rh/hooks/useStaffTrainings.ts:12 * kind: hook * core: rh * spec: (none) * summary: Hook for managing staff trainings. * score: 1 ### hook useTransportRequestMutation * file: src/cores/rh/hooks/useTransportRequestMutation.ts:17 * kind: hook * core: rh * spec: (none) * summary: Hook for managing transport request mutation. * score: 1 ### hook useTransportRequests * file: src/cores/rh/hooks/useTransportRequests.ts:18 * kind: hook * core: rh * spec: (none) * summary: Hook for managing transport requests. * score: 1 ### hook useUDSRandomScheduleMutation * file: src/cores/rh/hooks/useUDSRandomScheduleMutation.ts:10 * kind: hook * core: rh * spec: (none) * summary: Hook for managing udsrandom schedule mutation. * score: 1 ### hook useUDSRandomSchedules * file: src/cores/rh/hooks/useUDSRandomSchedules.ts:9 * kind: hook * core: rh * spec: (none) * summary: Hook for managing udsrandom schedules. * score: 1 ### hook useUDSTestDetail * file: src/cores/rh/hooks/useUDSTestDetail.ts:8 * kind: hook * core: rh * spec: (none) * summary: Hook for managing udstest detail. * score: 1 ### hook useUDSTestMutation * file: src/cores/rh/hooks/useUDSTestMutation.ts:10 * kind: hook * core: rh * spec: (none) * summary: Hook for managing udstest mutation. * score: 1 ### hook useUDSTests * file: src/cores/rh/hooks/useUDSTests.ts:17 * kind: hook * core: rh * spec: (none) * summary: Hook for managing udstests. * score: 1 ### hook useUpcomingAudits * file: src/cores/rh/hooks/useAuditSchedules.ts:53 * kind: hook * core: rh * spec: (none) * summary: Dashboard hook: Get upcoming audits * score: 4 ### hook useUpcomingDischarges * file: src/cores/rh/hooks/discharge/useUpcomingDischarges.ts:34 * kind: hook * core: rh * spec: (none) * summary: Hook for managing upcoming discharges. * score: 1 ## Components ### component ActionStatusBadge * file: src/cores/rh/components/ActionStatusBadge.tsx:33 * kind: component * core: rh * spec: RH-06 * summary: Renders a colored status badge for a compliance/follow-up action, mapping each (pending, in\_progress, completed, overdue) to a label andsemantic variant.Props:- — the action status to display. * params: * props — The action status to render. * score: 5 ### component AdmissionWizardPage * file: src/cores/rh/pages/AdmissionWizardPage.tsx:40 * kind: component * core: rh * spec: (none) * summary: Utility for admission wizard page. * score: 1 ### component AlumniDetailPage * file: src/cores/rh/pages/AlumniDetailPage.tsx:24 * kind: component * core: rh * spec: (none) * summary: Utility for alumni detail page. * score: 1 ### component AlumniDialog * file: src/cores/rh/components/forms/AlumniDialog.tsx:20 * kind: component * core: rh * spec: (none) * summary: Utility for alumni dialog. * score: 1 ### component AlumniEngagementChart * file: src/cores/rh/components/charts/AlumniEngagementChart.tsx:52 * kind: component * core: rh * spec: RH-07 * summary: Pie chart visualizing the distribution of alumni engagement types (mentoring,volunteer work, events, re-engagement, other). Shows a skeleton while loadingand falls back to placeholder data when none is provided.Props:- — engagement buckets, each with , , and .- — when true, renders a loading skeleton instead of the chart. * params: * props — The engagement data and loading flag. * score: 5 ### component AlumniEngagementDialog * file: src/cores/rh/components/forms/AlumniEngagementDialog.tsx:19 * kind: component * core: rh * spec: (none) * summary: Utility for alumni engagement dialog. * score: 1 ### component AlumniEngagementForm * file: src/cores/rh/components/forms/AlumniEngagementForm.tsx:43 * kind: component * core: rh * spec: (none) * summary: Utility for alumni engagement form. * score: 1 ### component AlumniEngagementsTable * file: src/cores/rh/components/tables/AlumniEngagementsTable.tsx:34 * kind: component * core: rh * spec: (none) * summary: Utility for alumni engagements table. * score: 1 ### component AlumniEngagementStatusBadge * file: src/cores/rh/components/AlumniEngagementStatusBadge.tsx:37 * kind: component * core: rh * spec: RH-07 * summary: Renders a colored status badge for an alumni engagement, mapping each (scheduled, completed, cancelled) to a labeland semantic variant.Props:- — the engagement status to display.- — optional extra classes for the badge. * params: * props — The engagement status and optional className. * score: 5 ### component AlumniEngagementWidget * file: src/cores/rh/components/dashboard/AlumniEngagementWidget.tsx:16 * kind: component * core: rh * spec: (none) * summary: Utility for alumni engagement widget. * score: 1 ### component AlumniForm * file: src/cores/rh/components/forms/AlumniForm.tsx:44 * kind: component * core: rh * spec: (none) * summary: Utility for alumni form. * score: 1 ### component AlumniPage * file: src/cores/rh/pages/AlumniPage.tsx:27 * kind: component * core: rh * spec: (none) * summary: Utility for alumni page. * score: 1 ### component AlumniTable * file: src/cores/rh/components/tables/AlumniTable.tsx:33 * kind: component * core: rh * spec: (none) * summary: Utility for alumni table. * score: 1 ### component AssessmentContextStep * file: src/cores/rh/components/wizards/outcomes-assessment/steps/AssessmentContextStep.tsx:56 * kind: component * core: rh * spec: RH-UX-05 * summary: First step of the Outcomes Assessment Wizard. Renders controlled inputs forthe assessment type, period, and date before instrument responses arerecorded, surfacing per-field validation errors.Props:- — current (partial) assessment context.- — emits partial updates as fields change.- — field-keyed validation messages to display. * params: * props — Current data, change handler, and validation errors. * score: 5 ### component AssessmentReviewSubmitStep * file: src/cores/rh/components/wizards/outcomes-assessment/steps/AssessmentReviewSubmitStep.tsx:32 * kind: component * core: rh * spec: RH-UX-05 * summary: Final step of the Outcomes Assessment Wizard. Summarizes the assessmentcontext and reports how many instrument sections have at least one recordedresponse before the assessment is submitted.Props:- — assessment context gathered in step 1.- — multi-section instrument responses from step 2. * params: * props — The collected context and instrument response data. * score: 5 ### component AssessmentTypeBadge * file: src/cores/rh/components/AssessmentTypeBadge.tsx:34 * kind: component * core: rh * spec: RH-07 * summary: Renders a badge distinguishing an outcome assessment as a baseline orfollow-up. Returns nothing when is null/empty.Props:- — the assessment type ( or ), or null to render nothing.- — optional extra classes for the badge. * params: * props — The assessment type and optional className. * score: 5 ### component AttachmentsStep * file: src/cores/rh/components/wizards/grievance-filing/steps/AttachmentsStep.tsx:61 * kind: component * core: rh * spec: RH-UX-06 * summary: Attachments step of the Grievance Filing Wizard. Lets the filer selectsupporting PDFs or images, enforcing an allowed MIME-type list and a 25 MBper-file size cap before staging them as entries.Props:- — currently staged pending attachments.- — emits the next attachment list when files are added/removed. * params: * props — Staged attachments and the change handler. * score: 5 ### component AttendanceComplianceWidget * file: src/cores/rh/components/dashboard/AttendanceComplianceWidget.tsx:16 * kind: component * core: rh * spec: (none) * summary: Utility for attendance compliance widget. * score: 1 ### component AttendancePage * file: src/cores/rh/pages/AttendancePage.tsx:23 * kind: component * core: rh * spec: (none) * summary: Utility for attendance page. * score: 1 ### component AttendanceRecordDialog * file: src/cores/rh/components/forms/AttendanceRecordDialog.tsx:18 * kind: component * core: rh * spec: (none) * summary: Utility for attendance record dialog. * score: 1 ### component AttendanceRecordForm * file: src/cores/rh/components/forms/AttendanceRecordForm.tsx:45 * kind: component * core: rh * spec: (none) * summary: Utility for attendance record form. * score: 1 ### component AttendanceStatusBadge * file: src/cores/rh/components/AttendanceStatusBadge.tsx:37 * kind: component * core: rh * spec: RH-04 * summary: Renders a colored status badge for program attendance, mapping each (present, absent, excused, late) to a label andsemantic variant.Props:- — the attendance status to display. * params: * props — The attendance status to render. * score: 5 ### component AuditFindingDetailPage * file: src/cores/rh/pages/AuditFindingDetailPage.tsx:27 * kind: component * core: rh * spec: (none) * summary: Utility for audit finding detail page. * score: 1 ### component AuditFindingDialog * file: src/cores/rh/components/forms/AuditFindingDialog.tsx:19 * kind: component * core: rh * spec: (none) * summary: Utility for audit finding dialog. * score: 1 ### component AuditFindingForm * file: src/cores/rh/components/forms/AuditFindingForm.tsx:45 * kind: component * core: rh * spec: (none) * summary: Utility for audit finding form. * score: 1 ### component AuditFindingSeverityBadge * file: src/cores/rh/components/AuditFindingSeverityBadge.tsx:38 * kind: component * core: rh * spec: RH-06 * summary: Renders a colored badge for an audit finding's severity, mapping each (critical, major, minor, observation) to a labeland semantic variant.Props:- — the finding severity to display. * params: * props — The finding severity to render. * score: 5 ### component AuditFindingsTable * file: src/cores/rh/components/AuditFindingsTable.tsx:59 * kind: component * core: rh * spec: RH-06 * summary: Data table listing audit findings for the current organization, showing thedescription, severity, status, corrective-action deadline, and assignee.Fetches via and applies the supplied filters.Props:- — optional filters (severity, status, etc.) narrowing the findings query. * params: * props — Optional audit-finding filters. * score: 5 ### component AuditFindingStatusBadge * file: src/cores/rh/components/AuditFindingStatusBadge.tsx:32 * kind: component * core: rh * spec: RH-06 * summary: Renders a colored badge for an audit finding's remediation status, mappingeach (open, in\_progress, resolved, closed) to alabel and semantic variant.Props:- — the finding status to display. * params: * props — The finding status to render. * score: 5 ### component AuditScheduleDetailPage * file: src/cores/rh/pages/AuditScheduleDetailPage.tsx:33 * kind: component * core: rh * spec: (none) * summary: Utility for audit schedule detail page. * score: 1 ### component AuditScheduleDialog * file: src/cores/rh/components/forms/AuditScheduleDialog.tsx:19 * kind: component * core: rh * spec: (none) * summary: Utility for audit schedule dialog. * score: 1 ### component AuditScheduleForm * file: src/cores/rh/components/forms/AuditScheduleForm.tsx:44 * kind: component * core: rh * spec: (none) * summary: Utility for audit schedule form. * score: 1 ### component AuditSchedulesPage * file: src/cores/rh/pages/AuditSchedulesPage.tsx:39 * kind: component * core: rh * spec: (none) * summary: Utility for audit schedules page. * score: 1 ### component AuditSchedulesTable * file: src/cores/rh/components/AuditSchedulesTable.tsx:57 * kind: component * core: rh * spec: RH-06 * summary: Data table listing scheduled compliance audits for the current organization,showing the audit name, type, date, status, and residence, with row actionsto view detail. Fetches via and applies thesupplied filters.Props:- — optional filters (type, status, etc.) narrowing the schedules query. * params: * props — Optional audit-schedule filters. * score: 5 ### component AuditStatusBadge * file: src/cores/rh/components/AuditStatusBadge.tsx:32 * kind: component * core: rh * spec: RH-06 * summary: Renders a colored badge for an audit's lifecycle status, mapping each (scheduled, in\_progress, completed, cancelled) to alabel and semantic variant. Returns nothing when is null/empty.Props:- — the audit status to display, or null to render nothing. * params: * props — The audit status to render. * score: 5 ### component BasicInfoStep * file: src/cores/rh/components/wizards/admission-steps/BasicInfoStep.tsx:23 * kind: component * core: rh * spec: (none) * summary: Utility for basic info step. * score: 1 ### component BedAssignmentStep * file: src/cores/rh/components/wizards/admission-steps/BedAssignmentStep.tsx:35 * kind: component * core: rh * spec: (none) * summary: Utility for bed assignment step. * score: 1 ### component BedAvailabilityWidget * file: src/cores/rh/components/dashboard/BedAvailabilityWidget.tsx:13 * kind: component * core: rh * spec: (none) * summary: Utility for bed availability widget. * score: 1 ### component BedBoardPage * file: src/cores/rh/pages/BedBoardPage.tsx:139 * kind: component * core: rh * spec: (none) * summary: Utility for bed board page. * score: 1 ### component BedDialog * file: src/cores/rh/components/BedDialog.tsx:52 * kind: component * core: rh * spec: RH-01 * summary: Modal dialog for creating (or editing) a bed within a residence, capturingthe residence, room number, bed label, gender restriction, ADA accessibility,and status via a validated react-hook-form/Zod form.Props:- — whether the dialog is visible.- — called when the dialog requests open/close.- — optional id of an existing bed to edit.- — optional residence to pre-select for a new bed. * params: * props — Dialog visibility, change handler, and optional bed/residence ids. * score: 5 ### component BedsTable * file: src/cores/rh/components/BedsTable.tsx:38 * kind: component * core: rh * spec: RH-01 * summary: Data table listing beds, optionally scoped to a residence, showing room, bedlabel, and status, with add and CSV-export actions. Fetches via and opens to create new beds.Props:- — optional residence id to scope the bed list to. * params: * props — Optional residence scope. * score: 5 ### component BedStatusBadge * file: src/cores/rh/components/BedStatusBadge.tsx:37 * kind: component * core: rh * spec: RH-01 * summary: Renders a colored badge for a bed's occupancy status, mapping each (available, occupied, reserved, maintenance) to a label andsemantic variant. Returns nothing when is null/empty.Props:- — the bed status to display, or null to render nothing. * params: * props — The bed status to render. * score: 5 ### component CensusSummaryWidget * file: src/cores/rh/components/dashboard/CensusSummaryWidget.tsx:12 * kind: component * core: rh * spec: (none) * summary: Utility for census summary widget. * score: 1 ### component ChecklistItemBadge * file: src/cores/rh/components/discharge/ChecklistItemBadge.tsx:34 * kind: component * core: rh * spec: (none) * summary: Utility for checklist item badge. * score: 1 ### component ChecklistsReferralsStep * file: src/cores/rh/components/wizards/discharge-planning-wizard/steps/ChecklistsReferralsStep.tsx:114 * kind: component * core: rh * spec: RH-UX-03 * summary: Second step of the Discharge Planning Wizard. Lets staff toggle dischargechecklist items (seeding a default set) and add resource referrals, surfacingper-field validation errors.Props:- — current (partial) checklist and referral selections.- — emits partial updates as items change.- — field-keyed validation messages to display. * params: * props — Current data, change handler, and validation errors. * score: 5 ### component ChoreAssignmentDialog * file: src/cores/rh/components/forms/ChoreAssignmentDialog.tsx:18 * kind: component * core: rh * spec: (none) * summary: Utility for chore assignment dialog. * score: 1 ### component ChoreAssignmentForm * file: src/cores/rh/components/forms/ChoreAssignmentForm.tsx:37 * kind: component * core: rh * spec: (none) * summary: Utility for chore assignment form. * score: 1 ### component ChoreCompletionWidget * file: src/cores/rh/components/dashboard/ChoreCompletionWidget.tsx:17 * kind: component * core: rh * spec: (none) * summary: Utility for chore completion widget. * score: 1 ### component ChoresPage * file: src/cores/rh/pages/ChoresPage.tsx:19 * kind: component * core: rh * spec: (none) * summary: Utility for chores page. * score: 1 ### component ChoreStatusBadge * file: src/cores/rh/components/ChoreStatusBadge.tsx:37 * kind: component * core: rh * spec: RH-04 * summary: Renders a badge for a resident chore's completion status, mapping each (assigned, completed, incomplete, excused) to a label andvariant.Props:- — the chore status to display. * params: * props — The chore status to render. * score: 5 ### component CompleteDischargeDialog * file: src/cores/rh/components/discharge/CompleteDischargeDialog.tsx:23 * kind: component * core: rh * spec: (none) * summary: Utility for complete discharge dialog. * score: 1 ### component CompleteDischargeForm * file: src/cores/rh/components/discharge/forms/CompleteDischargeForm.tsx:57 * kind: component * core: rh * spec: (none) * summary: Utility for complete discharge form. * score: 1 ### component CompletionRateWidget * file: src/cores/rh/components/dashboard/CompletionRateWidget.tsx:16 * kind: component * core: rh * spec: (none) * summary: Utility for completion rate widget. * score: 1 ### component ComplianceChecklistDialog * file: src/cores/rh/components/forms/ComplianceChecklistDialog.tsx:20 * kind: component * core: rh * spec: (none) * summary: Utility for compliance checklist dialog. * score: 1 ### component ComplianceChecklistForm * file: src/cores/rh/components/forms/ComplianceChecklistForm.tsx:40 * kind: component * core: rh * spec: (none) * summary: Utility for compliance checklist form. * score: 1 ### component ComplianceChecklistsPage * file: src/cores/rh/pages/ComplianceChecklistsPage.tsx:28 * kind: component * core: rh * spec: (none) * summary: Utility for compliance checklists page. * score: 1 ### component ComplianceChecklistsTable * file: src/cores/rh/components/ComplianceChecklistsTable.tsx:47 * kind: component * core: rh * spec: RH-06 * summary: Data table listing compliance checklist items for the current organization,showing the item, owning requirement, due date, status, and completer, withan inline checkbox to toggle completion. Fetches via and mutates via the checklist mutation hook.Props:- — optional filters (status, requirement, etc.) narrowing the query. * params: * props — Optional compliance-checklist filters. * score: 5 ### component ComplianceChecklistStatusBadge * file: src/cores/rh/components/ComplianceChecklistStatusBadge.tsx:33 * kind: component * core: rh * spec: RH-06 * summary: Renders a colored badge for a compliance checklist item's status, mappingeach (pending, completed, verified,non\_compliant) to a label and semantic variant.Props:- — the checklist status to display. * params: * props — The checklist status to render. * score: 5 ### component ComplianceDashboardPage * file: src/cores/rh/pages/ComplianceDashboardPage.tsx:23 * kind: component * core: rh * spec: (none) * summary: Utility for compliance dashboard page. * score: 1 ### component ComplianceDeadlinesWidget * file: src/cores/rh/components/dashboard/ComplianceDeadlinesWidget.tsx:17 * kind: component * core: rh * spec: (none) * summary: Utility for compliance deadlines widget. * score: 1 ### component ComplianceRequirementDetailPage * file: src/cores/rh/pages/ComplianceRequirementDetailPage.tsx:23 * kind: component * core: rh * spec: (none) * summary: Utility for compliance requirement detail page. * score: 1 ### component ComplianceRequirementDialog * file: src/cores/rh/components/forms/ComplianceRequirementDialog.tsx:18 * kind: component * core: rh * spec: (none) * summary: Utility for compliance requirement dialog. * score: 1 ### component ComplianceRequirementForm * file: src/cores/rh/components/forms/ComplianceRequirementForm.tsx:47 * kind: component * core: rh * spec: (none) * summary: Utility for compliance requirement form. * score: 1 ### component ComplianceRequirementsPage * file: src/cores/rh/pages/ComplianceRequirementsPage.tsx:39 * kind: component * core: rh * spec: (none) * summary: Utility for compliance requirements page. * score: 1 ### component ComplianceRequirementsTable * file: src/cores/rh/components/ComplianceRequirementsTable.tsx:50 * kind: component * core: rh * spec: (none) * summary: Utility for compliance requirements table. * score: 1 ### component ComplianceReviewActivateStep * file: src/cores/rh/components/wizards/compliance-setup/steps/ComplianceReviewActivateStep.tsx:34 * kind: component * core: rh * spec: RH-UX-04 * summary: Final step of the Compliance Setup Wizard: summarizes the collectedrequirement definition and schedule/scope for review, and surfaces a warningwhen a similar active requirement already exists.Props:- — partial requirement definition gathered in step 1.- — partial schedule/scope gathered in step 2.- — when true, shows a possible-duplicate warning. * params: * props — Collected wizard data and the duplicate-warning flag. * score: 5 ### component ComplianceSetupWizard * file: src/cores/rh/components/wizards/compliance-setup/ComplianceSetupWizard.tsx:50 * kind: component * core: rh * spec: RH-UX-04 * summary: Three-step guided wizard for defining a Recovery Housing compliancerequirement: requirement definition, schedule and scope, then review andactivate. On completion it persists the requirement and reports its id.Props:- — called with the created requirement id after activation.- — called when the user dismisses the wizard. * params: * props — Wizard completion and exit callbacks. * score: 5 ### component ComplianceSetupWizardPage * file: src/cores/rh/pages/ComplianceSetupWizardPage.tsx:21 * kind: component * core: rh * spec: RH-UX-04 * summary: Route page that hosts the , wiring itscompletion and exit handlers to navigate to the created requirement or backto the requirements list. Takes no props. * score: 5 ### component ComplianceStatusBadge * file: src/cores/rh/components/ComplianceStatusBadge.tsx:19 * kind: component * core: rh * spec: (none) * summary: Utility for compliance status badge. * score: 1 ### component ComplianceStatusWidget * file: src/cores/rh/components/dashboard/ComplianceStatusWidget.tsx:17 * kind: component * core: rh * spec: (none) * summary: Utility for compliance status widget. * score: 1 ### component CurfewCheckDialog * file: src/cores/rh/components/forms/CurfewCheckDialog.tsx:18 * kind: component * core: rh * spec: (none) * summary: Utility for curfew check dialog. * score: 1 ### component CurfewCheckForm * file: src/cores/rh/components/forms/CurfewCheckForm.tsx:44 * kind: component * core: rh * spec: (none) * summary: Utility for curfew check form. * score: 1 ### component CurfewChecksPage * file: src/cores/rh/pages/CurfewChecksPage.tsx:19 * kind: component * core: rh * spec: (none) * summary: Utility for curfew checks page. * score: 1 ### component CurfewComplianceWidget * file: src/cores/rh/components/dashboard/CurfewComplianceWidget.tsx:16 * kind: component * core: rh * spec: (none) * summary: Utility for curfew compliance widget. * score: 1 ### component DischargeChecklistCard * file: src/cores/rh/components/discharge/cards/DischargeChecklistCard.tsx:38 * kind: component * core: rh * spec: (none) * summary: Utility for discharge checklist card. * score: 1 ### component DischargeChecklistDialog * file: src/cores/rh/components/discharge/DischargeChecklistDialog.tsx:25 * kind: component * core: rh * spec: (none) * summary: Utility for discharge checklist dialog. * score: 1 ### component DischargeChecklistForm * file: src/cores/rh/components/discharge/forms/DischargeChecklistForm.tsx:50 * kind: component * core: rh * spec: (none) * summary: Utility for discharge checklist form. * score: 1 ### component DischargeDocumentDialog * file: src/cores/rh/components/discharge/DischargeDocumentDialog.tsx:24 * kind: component * core: rh * spec: (none) * summary: Utility for discharge document dialog. * score: 1 ### component DischargeDocumentForm * file: src/cores/rh/components/discharge/forms/DischargeDocumentForm.tsx:49 * kind: component * core: rh * spec: (none) * summary: Utility for discharge document form. * score: 1 ### component DischargeDocumentsPage * file: src/cores/rh/pages/discharge/DischargeDocumentsPage.tsx:26 * kind: component * core: rh * spec: (none) * summary: Lists and manages discharge documents for the current organization. * score: 2 ### component DischargeDocumentsTable * file: src/cores/rh/components/discharge/DischargeDocumentsTable.tsx:36 * kind: component * core: rh * spec: (none) * summary: Utility for discharge documents table. * score: 1 ### component DischargePlanCard * file: src/cores/rh/components/discharge/cards/DischargePlanCard.tsx:23 * kind: component * core: rh * spec: (none) * summary: Utility for discharge plan card. * score: 1 ### component DischargePlanDetailPage * file: src/cores/rh/pages/discharge/DischargePlanDetailPage.tsx:33 * kind: component * core: rh * spec: (none) * summary: Utility for discharge plan detail page. * score: 1 ### component DischargePlanDialog * file: src/cores/rh/components/discharge/DischargePlanDialog.tsx:22 * kind: component * core: rh * spec: (none) * summary: Utility for discharge plan dialog. * score: 1 ### component DischargePlanForm * file: src/cores/rh/components/discharge/forms/DischargePlanForm.tsx:56 * kind: component * core: rh * spec: (none) * summary: Utility for discharge plan form. * score: 1 ### component DischargePlanningPage * file: src/cores/rh/pages/discharge/DischargePlanningPage.tsx:18 * kind: component * core: rh * spec: (none) * summary: Utility for discharge planning page. * score: 1 ### component DischargePlanningWizard * file: src/cores/rh/components/wizards/discharge-planning-wizard/DischargePlanningWizard.tsx:55 * kind: component * core: rh * spec: RH-UX-03 * summary: Four-step guided wizard for building a resident's discharge plan: dischargetype, checklists and referrals, housing and follow-up scheduling, then reviewand finalize. On finalize it persists the plan and reports its id.Props:- — the resident episode the discharge plan belongs to.- — called with the created plan id after finalization.- — called when the user dismisses the wizard. * params: * props — Target episode and completion/exit callbacks. * score: 5 ### component DischargePlanningWizardPage * file: src/cores/rh/pages/DischargePlanningWizardPage.tsx:22 * kind: component * core: rh * spec: RH-UX-03 * summary: Route page that hosts the . Reads the target from the query string, renders an empty state when it is missing,and navigates to the created plan or back to the plans list. Takes no props. * score: 5 ### component DischargePlanReviewStep * file: src/cores/rh/components/wizards/discharge-planning-wizard/steps/DischargePlanReviewStep.tsx:39 * kind: component * core: rh * spec: RH-UX-03 * summary: Final step of the Discharge Planning Wizard. Summarizes the discharge type,checklist/referrals, and housing/follow-up selections, and flags any requiredchecklist items that remain incomplete before finalizing.Props:- — discharge type/date/reason gathered in step 1.- — checklist items and referrals from step 2.- — housing destination and follow-up schedule from step 3. * params: * props — The three sections of collected wizard data. * score: 5 ### component DischargePlansTable * file: src/cores/rh/components/discharge/DischargePlansTable.tsx:28 * kind: component * core: rh * spec: (none) * summary: Utility for discharge plans table. * score: 1 ### component DischargePlanStatusBadge * file: src/cores/rh/components/discharge/DischargePlanStatusBadge.tsx:36 * kind: component * core: rh * spec: (none) * summary: Utility for discharge plan status badge. * score: 1 ### component DischargeReadinessWidget * file: src/cores/rh/components/dashboard/DischargeReadinessWidget.tsx:15 * kind: component * core: rh * spec: (none) * summary: Utility for discharge readiness widget. * score: 1 ### component DischargeTypeStep * file: src/cores/rh/components/wizards/discharge-planning-wizard/steps/DischargeTypeStep.tsx:64 * kind: component * core: rh * spec: RH-UX-03 * summary: First step of the Discharge Planning Wizard. Renders controlled inputs forthe discharge type, planned date, reason, and notes, surfacing per-fieldvalidation errors.Props:- — current (partial) discharge-type selections.- — emits partial updates as fields change.- — field-keyed validation messages to display. * params: * props — Current data, change handler, and validation errors. * score: 5 ### component DocumentationStep * file: src/cores/rh/components/wizards/admission-steps/DocumentationStep.tsx:25 * kind: component * core: rh * spec: (none) * summary: Utility for documentation step. * score: 1 ### component EligibilityChecklistCard * file: src/cores/rh/components/EligibilityChecklistCard.tsx:18 * kind: component * core: rh * spec: (none) * summary: Utility for eligibility checklist card. * score: 1 ### component EmergencyContactsStep * file: src/cores/rh/components/wizards/admission-steps/EmergencyContactsStep.tsx:38 * kind: component * core: rh * spec: (none) * summary: Utility for emergency contacts step. * score: 1 ### component EpisodeDetailPage * file: src/cores/rh/pages/EpisodeDetailPage.tsx:39 * kind: component * core: rh * spec: (none) * summary: Utility for episode detail page. * score: 1 ### component EpisodeMilestonesCard * file: src/cores/rh/components/EpisodeMilestonesCard.tsx:20 * kind: component * core: rh * spec: (none) * summary: Utility for episode milestones card. * score: 1 ### component EpisodePhaseProgressCard * file: src/cores/rh/components/EpisodePhaseProgressCard.tsx:22 * kind: component * core: rh * spec: (none) * summary: Utility for episode phase progress card. * score: 1 ### component EpisodesPage * file: src/cores/rh/pages/EpisodesPage.tsx:46 * kind: component * core: rh * spec: RH-01 * summary: Route page listing resident episodes. Renders a filterable with a status filter bar, seeding the initial statusfilter from the query param, plus a guided admission tour. Takes noprops. * score: 5 ### component EpisodesTable * file: src/cores/rh/components/EpisodesTable.tsx:24 * kind: component * core: rh * spec: (none) * summary: Utility for episodes table. * score: 1 ### component EpisodeStatusBadge * file: src/cores/rh/components/EpisodeStatusBadge.tsx:38 * kind: component * core: rh * spec: (none) * summary: Utility for episode status badge. * score: 1 ### component EventClassificationStep * file: src/cores/rh/components/wizards/significant-event-reporting/steps/EventClassificationStep.tsx:70 * kind: component * core: rh * spec: RH-UX-02 * summary: First step of the Significant Event Reporting Wizard. Loads theorganization's significant-event types and renders controlled inputs for theevent type, severity, occurrence date/time, and location, surfacing per-fieldvalidation errors.Props:- — current (partial) event classification.- — emits partial updates as fields change.- — field-keyed validation messages to display. * params: * props — Current data, change handler, and validation errors. * score: 5 ### component EventReviewSubmitStep * file: src/cores/rh/components/wizards/significant-event-reporting/steps/EventReviewSubmitStep.tsx:39 * kind: component * core: rh * spec: RH-UX-02 * summary: Final step of the Significant Event Reporting Wizard. Summarizes the eventclassification and narrative for review before the report is submitted,highlighting critical-severity events.Props:- — event classification gathered in step 1.- — people and narrative gathered in step 2. * params: * props — The collected classification and narrative data. * score: 5 ### component FollowUpCard * file: src/cores/rh/components/discharge/cards/FollowUpCard.tsx:24 * kind: component * core: rh * spec: (none) * summary: Utility for follow up card. * score: 1 ### component FollowUpContactDialog * file: src/cores/rh/components/discharge/FollowUpContactDialog.tsx:22 * kind: component * core: rh * spec: (none) * summary: Utility for follow up contact dialog. * score: 1 ### component FollowUpContactForm * file: src/cores/rh/components/discharge/forms/FollowUpContactForm.tsx:56 * kind: component * core: rh * spec: (none) * summary: Utility for follow up contact form. * score: 1 ### component FollowUpDetailPage * file: src/cores/rh/pages/discharge/FollowUpDetailPage.tsx:25 * kind: component * core: rh * spec: (none) * summary: Utility for follow up detail page. * score: 1 ### component FollowUpOutcomeBadge * file: src/cores/rh/components/discharge/FollowUpOutcomeBadge.tsx:47 * kind: component * core: rh * spec: (none) * summary: Utility for follow up outcome badge. * score: 1 ### component FollowUpScheduleDialog * file: src/cores/rh/components/discharge/FollowUpScheduleDialog.tsx:24 * kind: component * core: rh * spec: (none) * summary: Utility for follow up schedule dialog. * score: 1 ### component FollowUpScheduleForm * file: src/cores/rh/components/discharge/forms/FollowUpScheduleForm.tsx:52 * kind: component * core: rh * spec: (none) * summary: Utility for follow up schedule form. * score: 1 ### component FollowUpSchedulesTable * file: src/cores/rh/components/discharge/FollowUpSchedulesTable.tsx:29 * kind: component * core: rh * spec: (none) * summary: Utility for follow up schedules table. * score: 1 ### component FollowUpsDueWidget * file: src/cores/rh/components/dashboard/FollowUpsDueWidget.tsx:13 * kind: component * core: rh * spec: (none) * summary: Utility for follow ups due widget. * score: 1 ### component FollowUpsPage * file: src/cores/rh/pages/discharge/FollowUpsPage.tsx:22 * kind: component * core: rh * spec: (none) * summary: Utility for follow ups page. * score: 1 ### component FollowUpStatusBadge * file: src/cores/rh/components/discharge/FollowUpStatusBadge.tsx:49 * kind: component * core: rh * spec: (none) * summary: Utility for follow up status badge. * score: 1 ### component GrievanceDetailPage * file: src/cores/rh/pages/GrievanceDetailPage.tsx:37 * kind: component * core: rh * spec: (none) * summary: Grievance detail + triage page (RH-09 #907). * score: 2 ### component GrievanceDetailsStep * file: src/cores/rh/components/wizards/grievance-filing/steps/GrievanceDetailsStep.tsx:70 * kind: component * core: rh * spec: RH-UX-06 * summary: First step of the Grievance Filing Wizard. Renders controlled inputs for thegrievance category, description, desired outcome, and anonymity toggle, andreassures the filer that filing is retaliation-free. Surfaces per-field errors.Props:- — current (partial) grievance details.- — emits partial updates as fields change.- — field-keyed validation messages to display. * params: * props — Current data, change handler, and validation errors. * score: 5 ### component GrievanceFilingWizard * file: src/cores/rh/components/wizards/grievance-filing/GrievanceFilingWizard.tsx:61 * kind: component * core: rh * spec: (none) * summary: Guides residents through the grievance filing flow and backend availability handling. * score: 2 ### component GrievanceFilingWizardPage * file: src/cores/rh/pages/GrievanceFilingWizardPage.tsx:21 * kind: component * core: rh * spec: RH-UX-06 * summary: Route page that hosts the . Reads an optional from the query string and navigates to the grievances list oncompletion or back on exit. Takes no props. * score: 5 ### component GrievanceReviewSubmitStep * file: src/cores/rh/components/wizards/grievance-filing/steps/GrievanceReviewSubmitStep.tsx:36 * kind: component * core: rh * spec: RH-UX-06 * summary: Final step of the Grievance Filing Wizard. Summarizes the entered grievancedetails and parties/witnesses, then requires the filer to attest to accuracybefore submission, propagating the attestation state to the parent wizard.Props:- — grievance details gathered in step 1.- — parties/witnesses gathered in the parties step.- — called with the attestation checkbox state. * params: * props — Collected wizard data and the attestation change handler. * score: 5 ### component GrievancesListPage * file: src/cores/rh/pages/GrievancesListPage.tsx:43 * kind: component * core: rh * spec: (none) * summary: Grievances management list page (RH-09 #907). * score: 2 ### component HousingFollowUpStep * file: src/cores/rh/components/wizards/discharge-planning-wizard/steps/HousingFollowUpStep.tsx:73 * kind: component * core: rh * spec: RH-UX-03 * summary: Third step of the Discharge Planning Wizard. Renders controlled inputs forthe housing destination/address, the follow-up timepoint toggles, andfollow-up contact details, surfacing per-field validation errors.Props:- — current (partial) housing and follow-up selections.- — emits partial updates as fields change.- — field-keyed validation messages to display. * params: * props — Current data, change handler, and validation errors. * score: 5 ### component InitiateDischargePlanningDialog * file: src/cores/rh/components/discharge/InitiateDischargePlanningDialog.tsx:26 * kind: component * core: rh * spec: (none) * summary: Utility for initiate discharge planning dialog. * score: 1 ### component InitiateDischargePlanningForm * file: src/cores/rh/components/discharge/forms/InitiateDischargePlanningForm.tsx:53 * kind: component * core: rh * spec: (none) * summary: Utility for initiate discharge planning form. * score: 1 ### component InstrumentSectionsStep * file: src/cores/rh/components/wizards/outcomes-assessment/steps/InstrumentSectionsStep.tsx:142 * kind: component * core: rh * spec: RH-UX-05 * summary: Second step of the Outcomes Assessment Wizard. Renders a multi-sectioninstrument (substance use, housing stability, employment/education,well-being) with internal section navigation and live per-section completionpercentages, emitting responses as the user answers questions.Props:- — current (partial) instrument responses.- — emits partial updates as responses change.- — field-keyed validation messages (unused in the current layout). * params: * props — Current data, change handler, and validation errors. * score: 5 ### component InvestigationActionDialog * file: src/cores/rh/components/forms/InvestigationActionDialog.tsx:19 * kind: component * core: rh * spec: (none) * summary: Utility for investigation action dialog. * score: 1 ### component InvestigationActionForm * file: src/cores/rh/components/forms/InvestigationActionForm.tsx:42 * kind: component * core: rh * spec: (none) * summary: Utility for investigation action form. * score: 1 ### component InvestigationDialog * file: src/cores/rh/components/forms/InvestigationDialog.tsx:19 * kind: component * core: rh * spec: (none) * summary: Utility for investigation dialog. * score: 1 ### component InvestigationForm * file: src/cores/rh/components/forms/InvestigationForm.tsx:37 * kind: component * core: rh * spec: (none) * summary: Utility for investigation form. * score: 1 ### component InvestigationStatusBadge * file: src/cores/rh/components/InvestigationStatusBadge.tsx:21 * kind: component * core: rh * spec: (none) * summary: Utility for investigation status badge. * score: 1 ### component LicenseAlertsWidget * file: src/cores/rh/components/dashboard/LicenseAlertsWidget.tsx:15 * kind: component * core: rh * spec: (none) * summary: Utility for license alerts widget. * score: 1 ### component MeasurementTypeBadge * file: src/cores/rh/components/MeasurementTypeBadge.tsx:23 * kind: component * core: rh * spec: (none) * summary: Utility for measurement type badge. * score: 1 ### component MedStorageAuditDetailPage * file: src/cores/rh/pages/MedStorageAuditDetailPage.tsx:17 * kind: component * core: rh * spec: (none) * summary: Utility for med storage audit detail page. * score: 1 ### component MedStorageAuditDialog * file: src/cores/rh/components/forms/MedStorageAuditDialog.tsx:19 * kind: component * core: rh * spec: (none) * summary: Utility for med storage audit dialog. * score: 1 ### component MedStorageAuditForm * file: src/cores/rh/components/forms/MedStorageAuditForm.tsx:84 * kind: component * core: rh * spec: (none) * summary: Utility for med storage audit form. * score: 1 ### component MedStorageAuditsPage * file: src/cores/rh/pages/MedStorageAuditsPage.tsx:15 * kind: component * core: rh * spec: (none) * summary: Utility for med storage audits page. * score: 1 ### component MedStorageAuditsTable * file: src/cores/rh/components/MedStorageAuditsTable.tsx:28 * kind: component * core: rh * spec: (none) * summary: Utility for med storage audits table. * score: 1 ### component MilestonesPrivilegesStep * file: src/cores/rh/components/wizards/program-creation/steps/MilestonesPrivilegesStep.tsx:85 * kind: component * core: rh * spec: RH-UX-01 * summary: Third step of the Program Creation Wizard. Lets staff add, edit, and removemilestone definitions per phase and set the program-wide visitor policy andpass eligibility, surfacing per-field validation errors.Props:- — current (partial) milestones and privilege selections.- — emits partial updates as milestones/policies change.- — field-keyed validation messages to display. * params: * props — Current data, change handler, and validation errors. * score: 5 ### component NewEpisodePage * file: src/cores/rh/pages/NewEpisodePage.tsx:19 * kind: component * core: rh * spec: (none) * summary: Choose an episode type before launching the appropriate workflow. * score: 2 ### component OutcomeAssessmentDetailPage * file: src/cores/rh/pages/OutcomeAssessmentDetailPage.tsx:22 * kind: component * core: rh * spec: (none) * summary: Utility for outcome assessment detail page. * score: 1 ### component OutcomeAssessmentDialog * file: src/cores/rh/components/forms/OutcomeAssessmentDialog.tsx:19 * kind: component * core: rh * spec: (none) * summary: Utility for outcome assessment dialog. * score: 1 ### component OutcomeAssessmentForm * file: src/cores/rh/components/forms/OutcomeAssessmentForm.tsx:55 * kind: component * core: rh * spec: (none) * summary: Utility for outcome assessment form. * score: 1 ### component OutcomeAssessmentsPage * file: src/cores/rh/pages/OutcomeAssessmentsPage.tsx:28 * kind: component * core: rh * spec: (none) * summary: Utility for outcome assessments page. * score: 1 ### component OutcomeAssessmentsTable * file: src/cores/rh/components/tables/OutcomeAssessmentsTable.tsx:28 * kind: component * core: rh * spec: (none) * summary: Utility for outcome assessments table. * score: 1 ### component OutcomeAssessmentStatusBadge * file: src/cores/rh/components/OutcomeAssessmentStatusBadge.tsx:25 * kind: component * core: rh * spec: (none) * summary: Utility for outcome assessment status badge. * score: 1 ### component OutcomeCheckpointDialog * file: src/cores/rh/components/forms/OutcomeCheckpointDialog.tsx:18 * kind: component * core: rh * spec: (none) * summary: Utility for outcome checkpoint dialog. * score: 1 ### component OutcomeCheckpointForm * file: src/cores/rh/components/forms/OutcomeCheckpointForm.tsx:46 * kind: component * core: rh * spec: (none) * summary: Utility for outcome checkpoint form. * score: 1 ### component OutcomeIndicatorDialog * file: src/cores/rh/components/forms/OutcomeIndicatorDialog.tsx:18 * kind: component * core: rh * spec: (none) * summary: Utility for outcome indicator dialog. * score: 1 ### component OutcomeIndicatorForm * file: src/cores/rh/components/forms/OutcomeIndicatorForm.tsx:38 * kind: component * core: rh * spec: (none) * summary: Utility for outcome indicator form. * score: 1 ### component OutcomeIndicatorsPage * file: src/cores/rh/pages/OutcomeIndicatorsPage.tsx:23 * kind: component * core: rh * spec: (none) * summary: Utility for outcome indicators page. * score: 1 ### component OutcomeMeasurementDialog * file: src/cores/rh/components/forms/OutcomeMeasurementDialog.tsx:19 * kind: component * core: rh * spec: (none) * summary: Utility for outcome measurement dialog. * score: 1 ### component OutcomeMeasurementForm * file: src/cores/rh/components/forms/OutcomeMeasurementForm.tsx:48 * kind: component * core: rh * spec: (none) * summary: Utility for outcome measurement form. * score: 1 ### component OutcomeMeasurementsTable * file: src/cores/rh/components/tables/OutcomeMeasurementsTable.tsx:24 * kind: component * core: rh * spec: (none) * summary: Utility for outcome measurements table. * score: 1 ### component OutcomesAssessmentWizard * file: src/cores/rh/components/wizards/outcomes-assessment/OutcomesAssessmentWizard.tsx:53 * kind: component * core: rh * spec: RH-UX-05 * summary: Three-step guided wizard for completing a resident outcomes assessment:assessment context, multi-section instrument responses, then review andsubmit. On submit it persists the assessment and reports its id.Props:- — optional episode to associate the assessment with (prefills context).- — called with the created assessment id after submission.- — called when the user dismisses the wizard. * params: * props — Optional episode context and completion/exit callbacks. * score: 5 ### component OutcomesAssessmentWizardPage * file: src/cores/rh/pages/OutcomesAssessmentWizardPage.tsx:21 * kind: component * core: rh * spec: RH-UX-05 * summary: Route page that hosts the . Reads an optional from the query string and navigates to the created assessment orback to the assessments list. Takes no props. * score: 5 ### component OutcomesDashboardPage * file: src/cores/rh/pages/OutcomesDashboardPage.tsx:26 * kind: component * core: rh * spec: (none) * summary: Utility for outcomes dashboard page. * score: 1 ### component OutcomeSuccessChart * file: src/cores/rh/components/charts/OutcomeSuccessChart.tsx:39 * kind: component * core: rh * spec: RH-07 * summary: Bar chart comparing success rates across outcome indicators, including thenumber of measurements behind each rate. Shows a skeleton while loading.Props:- — outcome rows, each with , , and .- — when true, renders a loading skeleton instead of the chart. * params: * props — The outcome data and loading flag. * score: 5 ### component OutcomeSummaryWidget * file: src/cores/rh/components/dashboard/OutcomeSummaryWidget.tsx:17 * kind: component * core: rh * spec: (none) * summary: Utility for outcome summary widget. * score: 1 ### component PartiesWitnessesStep * file: src/cores/rh/components/wizards/grievance-filing/steps/PartiesWitnessesStep.tsx:58 * kind: component * core: rh * spec: RH-UX-06 * summary: Optional step of the Grievance Filing Wizard. Renders controlled inputs forinvolved parties, witness names/contact, and the incident date and location,surfacing per-field validation errors.Props:- — current (partial) parties/witnesses entries.- — emits partial updates as fields change.- — field-keyed validation messages to display. * params: * props — Current data, change handler, and validation errors. * score: 5 ### component PassDetailPage * file: src/cores/rh/pages/PassDetailPage.tsx:17 * kind: component * core: rh * spec: (none) * summary: Utility for pass detail page. * score: 1 ### component PassDialog * file: src/cores/rh/components/forms/PassDialog.tsx:19 * kind: component * core: rh * spec: (none) * summary: Utility for pass dialog. * score: 1 ### component PassesPage * file: src/cores/rh/pages/PassesPage.tsx:16 * kind: component * core: rh * spec: (none) * summary: Utility for passes page. * score: 1 ### component PassesTable * file: src/cores/rh/components/PassesTable.tsx:37 * kind: component * core: rh * spec: (none) * summary: Utility for passes table. * score: 1 ### component PassForm * file: src/cores/rh/components/forms/PassForm.tsx:58 * kind: component * core: rh * spec: (none) * summary: Utility for pass form. * score: 1 ### component PassStatusBadge * file: src/cores/rh/components/PassStatusBadge.tsx:23 * kind: component * core: rh * spec: (none) * summary: Utility for pass status badge. * score: 1 ### component PassTypeBadge * file: src/cores/rh/components/PassTypeBadge.tsx:10 * kind: component * core: rh * spec: (none) * summary: Utility for pass type badge. * score: 1 ### component PaymentStatusCard * file: src/cores/rh/components/PaymentStatusCard.tsx:17 * kind: component * core: rh * spec: (none) * summary: Utility for payment status card. * score: 1 ### component PeopleAndNarrativeStep * file: src/cores/rh/components/wizards/significant-event-reporting/steps/PeopleAndNarrativeStep.tsx:56 * kind: component * core: rh * spec: RH-UX-02 * summary: Second step of the Significant Event Reporting Wizard. Renders controlledinputs for the factual event narrative, immediate actions taken, witnesses,and reporter name, surfacing per-field validation errors.Props:- — current (partial) people/narrative entries.- — emits partial updates as fields change.- — field-keyed validation messages to display. * params: * props — Current data, change handler, and validation errors. * score: 5 ### component PhaseActionButtons * file: src/cores/rh/components/PhaseActionButtons.tsx:10 * kind: component * core: rh * spec: (none) * summary: Utility for phase action buttons. * score: 1 ### component PhaseCard * file: src/cores/rh/components/PhaseCard.tsx:18 * kind: component * core: rh * spec: (none) * summary: Utility for phase card. * score: 1 ### component PhaseLadderStep * file: src/cores/rh/components/wizards/program-creation/steps/PhaseLadderStep.tsx:76 * kind: component * core: rh * spec: RH-UX-01 * summary: Second step of the Program Creation Wizard. Renders editable phase rows(seeding the default 120-day ladder) where staff adjust each phase's label,duration, and required flag, surfacing per-field validation errors.Props:- — current (partial) phase ladder.- — emits partial updates as phases change.- — field-keyed validation messages to display. * params: * props — Current data, change handler, and validation errors. * score: 5 ### component PhaseProgressionDialog * file: src/cores/rh/components/PhaseProgressionDialog.tsx:12 * kind: component * core: rh * spec: (none) * summary: Utility for phase progression dialog. * score: 1 ### component PhaseProgressionTimeline * file: src/cores/rh/components/PhaseProgressionTimeline.tsx:13 * kind: component * core: rh * spec: (none) * summary: Utility for phase progression timeline. * score: 1 ### component PhasesAccordion * file: src/cores/rh/components/PhasesAccordion.tsx:18 * kind: component * core: rh * spec: (none) * summary: Utility for phases accordion. * score: 1 ### component ProgramCreationWizard * file: src/cores/rh/components/wizards/program-creation/ProgramCreationWizard.tsx:61 * kind: component * core: rh * spec: RH-UX-01 * summary: Five-step guided wizard for creating a Recovery Housing program: programidentity, phase ladder, milestones and privileges, progression rules, thenreview and activate. On activation it persists the program and reports its id.Props:- — called with the created program id after activation.- — called when the user dismisses the wizard. * params: * props — Wizard completion and exit callbacks. * score: 5 ### component ProgramCreationWizardPage * file: src/cores/rh/pages/ProgramCreationWizardPage.tsx:21 * kind: component * core: rh * spec: RH-UX-01 * summary: Route page that hosts the , navigating to thecreated program or back to the programs list on completion/exit. Takes noprops. * score: 5 ### component ProgramDetailPage * file: src/cores/rh/pages/ProgramDetailPage.tsx:20 * kind: component * core: rh * spec: (none) * summary: Utility for program detail page. * score: 1 ### component ProgramDialog * file: src/cores/rh/components/ProgramDialog.tsx:19 * kind: component * core: rh * spec: (none) * summary: Utility for program dialog. * score: 1 ### component ProgramForm * file: src/cores/rh/components/ProgramForm.tsx:34 * kind: component * core: rh * spec: (none) * summary: Utility for program form. * score: 1 ### component ProgramIdentityStep * file: src/cores/rh/components/wizards/program-creation/steps/ProgramIdentityStep.tsx:61 * kind: component * core: rh * spec: RH-UX-01 * summary: First step of the Program Creation Wizard. Renders controlled inputs for theprogram name, description, default duration, and program type, surfacingper-field validation errors.Props:- — current (partial) program identity.- — emits partial updates as fields change.- — field-keyed validation messages to display. * params: * props — Current data, change handler, and validation errors. * score: 5 ### component ProgramSelectionStep * file: src/cores/rh/components/wizards/admission-steps/ProgramSelectionStep.tsx:29 * kind: component * core: rh * spec: (none) * summary: Utility for program selection step. * score: 1 ### component ProgramsPage * file: src/cores/rh/pages/ProgramsPage.tsx:19 * kind: component * core: rh * spec: (none) * summary: Utility for programs page. * score: 1 ### component ProgramsTable * file: src/cores/rh/components/ProgramsTable.tsx:22 * kind: component * core: rh * spec: (none) * summary: Utility for programs table. * score: 1 ### component ProgressionRulesStep * file: src/cores/rh/components/wizards/program-creation/steps/ProgressionRulesStep.tsx:58 * kind: component * core: rh * spec: RH-UX-01 * summary: Fourth step of the Program Creation Wizard. Renders controls for theprogression type and the regression/approval toggles that govern howresidents move between phases, surfacing per-field validation errors.Props:- — current (partial) progression rules.- — emits partial updates as toggles change.- — field-keyed validation messages to display. * params: * props — Current data, change handler, and validation errors. * score: 5 ### component RecentAdmissionsWidget * file: src/cores/rh/components/dashboard/RecentAdmissionsWidget.tsx:13 * kind: component * core: rh * spec: (none) * summary: Utility for recent admissions widget. * score: 1 ### component ReferralDetailPage * file: src/cores/rh/pages/discharge/ReferralDetailPage.tsx:26 * kind: component * core: rh * spec: (none) * summary: Utility for referral detail page. * score: 1 ### component ReferralDialog * file: src/cores/rh/components/discharge/ReferralDialog.tsx:24 * kind: component * core: rh * spec: (none) * summary: Utility for referral dialog. * score: 1 ### component ReferralForm * file: src/cores/rh/components/discharge/forms/ReferralForm.tsx:61 * kind: component * core: rh * spec: (none) * summary: Utility for referral form. * score: 1 ### component ReferralsCard * file: src/cores/rh/components/discharge/cards/ReferralsCard.tsx:41 * kind: component * core: rh * spec: (none) * summary: Utility for referrals card. * score: 1 ### component ReferralsPage * file: src/cores/rh/pages/discharge/ReferralsPage.tsx:20 * kind: component * core: rh * spec: (none) * summary: Utility for referrals page. * score: 1 ### component ReferralsTable * file: src/cores/rh/components/discharge/ReferralsTable.tsx:27 * kind: component * core: rh * spec: (none) * summary: Utility for referrals table. * score: 1 ### component ReferralStatusBadge * file: src/cores/rh/components/discharge/ReferralStatusBadge.tsx:38 * kind: component * core: rh * spec: (none) * summary: Utility for referral status badge. * score: 1 ### component ReferralSuccessWidget * file: src/cores/rh/components/dashboard/ReferralSuccessWidget.tsx:22 * kind: component * core: rh * spec: (none) * summary: Utility for referral success widget. * score: 1 ### component ReferralTypeBadge * file: src/cores/rh/components/discharge/ReferralTypeBadge.tsx:40 * kind: component * core: rh * spec: (none) * summary: Utility for referral type badge. * score: 1 ### component ReportCreatePage * file: src/cores/rh/pages/ReportCreatePage.tsx:15 * kind: component * core: rh * spec: (none) * summary: Utility for report create page. * score: 1 ### component ReportDefinitionDialog * file: src/cores/rh/components/forms/ReportDefinitionDialog.tsx:18 * kind: component * core: rh * spec: (none) * summary: Utility for report definition dialog. * score: 1 ### component ReportDefinitionForm * file: src/cores/rh/components/forms/ReportDefinitionForm.tsx:66 * kind: component * core: rh * spec: (none) * summary: Utility for report definition form. * score: 1 ### component ReportDefinitionsTable * file: src/cores/rh/components/tables/ReportDefinitionsTable.tsx:35 * kind: component * core: rh * spec: (none) * summary: Utility for report definitions table. * score: 1 ### component ReportDetailPage * file: src/cores/rh/pages/ReportDetailPage.tsx:21 * kind: component * core: rh * spec: (none) * summary: Utility for report detail page. * score: 1 ### component ReportsDueWidget * file: src/cores/rh/components/dashboard/ReportsDueWidget.tsx:17 * kind: component * core: rh * spec: (none) * summary: Utility for reports due widget. * score: 1 ### component ReportsPage * file: src/cores/rh/pages/ReportsPage.tsx:24 * kind: component * core: rh * spec: (none) * summary: Utility for reports page. * score: 1 ### component ReportTypeBadge * file: src/cores/rh/components/ReportTypeBadge.tsx:26 * kind: component * core: rh * spec: (none) * summary: Utility for report type badge. * score: 1 ### component RequirementDefinitionStep * file: src/cores/rh/components/wizards/compliance-setup/steps/RequirementDefinitionStep.tsx:80 * kind: component * core: rh * spec: RH-UX-04 * summary: First step of the Compliance Setup Wizard. Renders controlled inputs for therequirement title, description, category, type, and optional regulatoryreference, surfacing per-field validation errors.Props:- — current (partial) requirement definition.- — emits partial updates as fields change.- — field-keyed validation messages to display. * params: * props — Current data, change handler, and validation errors. * score: 5 ### component ResidenceDetailPage * file: src/cores/rh/pages/ResidenceDetailPage.tsx:25 * kind: component * core: rh * spec: (none) * summary: Utility for residence detail page. * score: 1 ### component ResidenceDialog * file: src/cores/rh/components/ResidenceDialog.tsx:17 * kind: component * core: rh * spec: (none) * summary: Utility for residence dialog. * score: 1 ### component ResidenceForm * file: src/cores/rh/components/ResidenceForm.tsx:43 * kind: component * core: rh * spec: (none) * summary: Utility for residence form. * score: 1 ### component ResidencesPage * file: src/cores/rh/pages/ResidencesPage.tsx:19 * kind: component * core: rh * spec: (none) * summary: Utility for residences page. * score: 1 ### component ResidencesTable * file: src/cores/rh/components/ResidencesTable.tsx:25 * kind: component * core: rh * spec: (none) * summary: Utility for residences table. * score: 1 ### component ResidentAdmissionWizard * file: src/cores/rh/components/wizards/ResidentAdmissionWizard.tsx:58 * kind: component * core: rh * spec: (none) * summary: Utility for resident admission wizard. * score: 1 ### component ResidentAgreementCard * file: src/cores/rh/components/ResidentAgreementCard.tsx:18 * kind: component * core: rh * spec: (none) * summary: Utility for resident agreement card. * score: 1 ### component ReviewActivateStep * file: src/cores/rh/components/wizards/program-creation/steps/ReviewActivateStep.tsx:44 * kind: component * core: rh * spec: RH-UX-01 * summary: Final step of the Program Creation Wizard. Presents a read-only summary ofthe program identity, phase ladder (with total program length), milestonesand privileges, and progression rules before the program is activated.Props:- — program identity gathered in step 1.- — phase ladder gathered in step 2.- — milestones and privileges gathered in step 3.- — progression rules gathered in step 4. * params: * props — The four sections of collected wizard data. * score: 5 ### component ReviewSubmitStep * file: src/cores/rh/components/wizards/admission-steps/ReviewSubmitStep.tsx:73 * kind: component * core: rh * spec: (none) * summary: Utility for review submit step. * score: 1 ### component RHFormsPage * file: src/cores/rh/pages/RHFormsPage.tsx:13 * kind: component * core: rh * spec: (none) * summary: Utility for rhforms page. * score: 1 ### component RHOverview * file: src/cores/rh/pages/RHOverview\.tsx:43 * kind: component * core: rh * spec: (none) * summary: Utility for rhoverview. * score: 1 ### component RHSettingsForm * file: src/cores/rh/components/RHSettingsForm.tsx:107 * kind: component * core: rh * spec: none * summary: Form for editing the Recovery Housing module's organization-wide settings(default stay duration, follow-up cadence, compliance and integrationtoggles), backed by react-hook-form + zod validation.Props: seeds the form from the current saved settings; receives the validated ; disables the submit control while a save is in flight. * params: * props — Form props: , , . * score: 5 ### component RHSettingsPage * file: src/cores/rh/pages/RHSettingsPage.tsx:24 * kind: component * core: rh * spec: (none) * summary: Utility for rhsettings page. * score: 1 ### component ScheduleScopeStep * file: src/cores/rh/components/wizards/compliance-setup/steps/ScheduleScopeStep.tsx:65 * kind: component * core: rh * spec: RH-UX-04 * summary: Second step of the Compliance Setup Wizard. Renders controlled inputs for therecurrence frequency, optional due day, lead-time window, and target scope,surfacing per-field validation errors.Props:- — current (partial) schedule/scope selections.- — emits partial updates as fields change.- — field-keyed validation messages to display. * params: * props — Current data, change handler, and validation errors. * score: 5 ### component ScheduleTemplateDialog * file: src/cores/rh/components/forms/ScheduleTemplateDialog.tsx:18 * kind: component * core: rh * spec: (none) * summary: Utility for schedule template dialog. * score: 1 ### component ScheduleTemplateForm * file: src/cores/rh/components/forms/ScheduleTemplateForm.tsx:42 * kind: component * core: rh * spec: (none) * summary: Utility for schedule template form. * score: 1 ### component ScheduleTemplatesPage * file: src/cores/rh/pages/ScheduleTemplatesPage.tsx:22 * kind: component * core: rh * spec: (none) * summary: Utility for schedule templates page. * score: 1 ### component ShiftNoteDetailPage * file: src/cores/rh/pages/ShiftNoteDetailPage.tsx:34 * kind: component * core: rh * spec: (none) * summary: Utility for shift note detail page. * score: 1 ### component ShiftNoteDialog * file: src/cores/rh/components/forms/ShiftNoteDialog.tsx:19 * kind: component * core: rh * spec: (none) * summary: Utility for shift note dialog. * score: 1 ### component ShiftNoteForm * file: src/cores/rh/components/forms/ShiftNoteForm.tsx:49 * kind: component * core: rh * spec: (none) * summary: Utility for shift note form. * score: 1 ### component ShiftNotesPage * file: src/cores/rh/pages/ShiftNotesPage.tsx:26 * kind: component * core: rh * spec: (none) * summary: Utility for shift notes page. * score: 1 ### component ShiftNotesTable * file: src/cores/rh/components/ShiftNotesTable.tsx:25 * kind: component * core: rh * spec: (none) * summary: Utility for shift notes table. * score: 1 ### component SignificantEventDetailPage * file: src/cores/rh/pages/SignificantEventDetailPage.tsx:29 * kind: component * core: rh * spec: (none) * summary: Utility for significant event detail page. * score: 1 ### component SignificantEventDialog * file: src/cores/rh/components/forms/SignificantEventDialog.tsx:19 * kind: component * core: rh * spec: (none) * summary: Utility for significant event dialog. * score: 1 ### component SignificantEventForm * file: src/cores/rh/components/forms/SignificantEventForm.tsx:45 * kind: component * core: rh * spec: (none) * summary: Utility for significant event form. * score: 1 ### component SignificantEventReportingWizard * file: src/cores/rh/components/wizards/significant-event-reporting/SignificantEventReportingWizard.tsx:53 * kind: component * core: rh * spec: RH-UX-02 * summary: Three-step guided wizard for reporting a significant event: eventclassification, people and narrative, then review and submit. On submit itpersists the event and reports its id.Props:- — optional resident episode the event relates to.- — called with the created event id after submission.- — called when the user dismisses the wizard. * params: * props — Optional episode context and completion/exit callbacks. * score: 5 ### component SignificantEventReportingWizardPage * file: src/cores/rh/pages/SignificantEventReportingWizardPage.tsx:21 * kind: component * core: rh * spec: RH-UX-02 * summary: Route page that hosts the . Reads anoptional from the query string and navigates to the created eventor back to the events list. Takes no props. * score: 5 ### component SignificantEventSeverityBadge * file: src/cores/rh/components/SignificantEventSeverityBadge.tsx:21 * kind: component * core: rh * spec: (none) * summary: Utility for significant event severity badge. * score: 1 ### component SignificantEventsPage * file: src/cores/rh/pages/SignificantEventsPage.tsx:16 * kind: component * core: rh * spec: (none) * summary: Utility for significant events page. * score: 1 ### component SignificantEventsTable * file: src/cores/rh/components/SignificantEventsTable.tsx:34 * kind: component * core: rh * spec: (none) * summary: Utility for significant events table. * score: 1 ### component SignificantEventStatusBadge * file: src/cores/rh/components/SignificantEventStatusBadge.tsx:21 * kind: component * core: rh * spec: (none) * summary: Utility for significant event status badge. * score: 1 ### component SobrietyRateWidget * file: src/cores/rh/components/dashboard/SobrietyRateWidget.tsx:16 * kind: component * core: rh * spec: (none) * summary: Utility for sobriety rate widget. * score: 1 ### component SobrietyTrendChart * file: src/cores/rh/components/charts/SobrietyTrendChart.tsx:36 * kind: component * core: rh * spec: RH-07 * summary: Line chart plotting sobriety rates across post-discharge checkpoints (e.g.discharge, 30/90/180-day), including the cohort count at each checkpoint.Shows a skeleton while loading and uses placeholder data when none is given.Props:- — checkpoint rows, each with , , , and .- — when true, renders a loading skeleton instead of the chart. * params: * props — The checkpoint data and loading flag. * score: 5 ### component StaffAssignmentDialog * file: src/cores/rh/components/forms/StaffAssignmentDialog.tsx:19 * kind: component * core: rh * spec: (none) * summary: Utility for staff assignment dialog. * score: 1 ### component StaffAssignmentForm * file: src/cores/rh/components/forms/StaffAssignmentForm.tsx:64 * kind: component * core: rh * spec: (none) * summary: Utility for staff assignment form. * score: 1 ### component StaffAssignmentsPage * file: src/cores/rh/pages/StaffAssignmentsPage.tsx:32 * kind: component * core: rh * spec: (none) * summary: Utility for staff assignments page. * score: 1 ### component StaffAssignmentsTable * file: src/cores/rh/components/StaffAssignmentsTable.tsx:49 * kind: component * core: rh * spec: (none) * summary: Utility for staff assignments table. * score: 1 ### component StaffTrainingDialog * file: src/cores/rh/components/forms/StaffTrainingDialog.tsx:19 * kind: component * core: rh * spec: (none) * summary: Utility for staff training dialog. * score: 1 ### component StaffTrainingForm * file: src/cores/rh/components/forms/StaffTrainingForm.tsx:51 * kind: component * core: rh * spec: (none) * summary: Utility for staff training form. * score: 1 ### component StaffTrainingsPage * file: src/cores/rh/pages/StaffTrainingsPage.tsx:38 * kind: component * core: rh * spec: (none) * summary: Utility for staff trainings page. * score: 1 ### component StaffTrainingsTable * file: src/cores/rh/components/StaffTrainingsTable.tsx:40 * kind: component * core: rh * spec: (none) * summary: Utility for staff trainings table. * score: 1 ### component TrainingDueWidget * file: src/cores/rh/components/dashboard/TrainingDueWidget.tsx:17 * kind: component * core: rh * spec: (none) * summary: Utility for training due widget. * score: 1 ### component TrainingStatusBadge * file: src/cores/rh/components/TrainingStatusBadge.tsx:41 * kind: component * core: rh * spec: (none) * summary: Utility for training status badge. * score: 1 ### component TransportPage * file: src/cores/rh/pages/TransportPage.tsx:19 * kind: component * core: rh * spec: (none) * summary: Utility for transport page. * score: 1 ### component TransportRequestDialog * file: src/cores/rh/components/forms/TransportRequestDialog.tsx:18 * kind: component * core: rh * spec: (none) * summary: Utility for transport request dialog. * score: 1 ### component TransportRequestForm * file: src/cores/rh/components/forms/TransportRequestForm.tsx:40 * kind: component * core: rh * spec: (none) * summary: Utility for transport request form. * score: 1 ### component UDSResultBadge * file: src/cores/rh/components/UDSResultBadge.tsx:20 * kind: component * core: rh * spec: (none) * summary: Utility for udsresult badge. * score: 1 ### component UDSTestDetailPage * file: src/cores/rh/pages/UDSTestDetailPage.tsx:18 * kind: component * core: rh * spec: (none) * summary: Utility for udstest detail page. * score: 1 ### component UDSTestDialog * file: src/cores/rh/components/forms/UDSTestDialog.tsx:19 * kind: component * core: rh * spec: (none) * summary: Utility for udstest dialog. * score: 1 ### component UDSTestForm * file: src/cores/rh/components/forms/UDSTestForm.tsx:59 * kind: component * core: rh * spec: (none) * summary: Utility for udstest form. * score: 1 ### component UDSTestsPage * file: src/cores/rh/pages/UDSTestsPage.tsx:15 * kind: component * core: rh * spec: (none) * summary: Utility for udstests page. * score: 1 ### component UDSTestsTable * file: src/cores/rh/components/UDSTestsTable.tsx:26 * kind: component * core: rh * spec: (none) * summary: Utility for udstests table. * score: 1 ### component UpcomingAuditsWidget * file: src/cores/rh/components/dashboard/UpcomingAuditsWidget.tsx:19 * kind: component * core: rh * spec: (none) * summary: Utility for upcoming audits widget. * score: 1 ### component UpcomingDischargesWidget * file: src/cores/rh/components/dashboard/UpcomingDischargesWidget.tsx:14 * kind: component * core: rh * spec: (none) * summary: Utility for upcoming discharges widget. * score: 1 ### component WaitlistWidget * file: src/cores/rh/components/dashboard/WaitlistWidget.tsx:13 * kind: component * core: rh * spec: (none) * summary: Utility for waitlist widget. * score: 1 ## Functions & utilities ### function buildDischargeSummaryContent * file: src/cores/rh/templates/discharge-summary-content.ts:15 * kind: function * core: rh * spec: (none) * summary: Build discharge summary document content for PDF generation (PF-64). * score: 4 ### function buildIncidentReportContent * file: src/cores/rh/templates/incident-report-content.ts:10 * kind: function * core: rh * spec: (none) * summary: Build incident report document content for PDF generation (PF-64). * score: 4 ### function buildResidentAgreementContent * file: src/cores/rh/templates/resident-agreement-content.ts:123 * kind: function * core: rh * spec: (none) * summary: Build resident agreement document content for PDF generation (PF-64). * score: 4 ### function calculateCompliancePercentage * file: src/cores/rh/utils/compliance-calculations.ts:27 * kind: function * core: rh * spec: (none) * summary: Calculate compliance percentage from checklist items * score: 4 ### function calculateFollowUpDate * file: src/cores/rh/utils/dischargeValidation.ts:201 * kind: function * core: rh * spec: (none) * summary: Calculate scheduled date for a follow-up timepoint * score: 4 ### function calculateReadinessPercentage * file: src/cores/rh/utils/dischargeValidation.ts:161 * kind: function * core: rh * spec: (none) * summary: Calculate discharge readiness percentage based on checklist completion * score: 4 ### function calculateStatusDistribution * file: src/cores/rh/utils/compliance-calculations.ts:55 * kind: function * core: rh * spec: (none) * summary: Calculate status distribution from checklists * score: 4 ### function categorizeChecklistStatus * file: src/cores/rh/utils/compliance-calculations.ts:39 * kind: function * core: rh * spec: (none) * summary: Categorize a checklist status for reporting * score: 4 ### function getComplianceLevel * file: src/cores/rh/utils/compliance-calculations.ts:75 * kind: function * core: rh * spec: (none) * summary: Determine compliance level based on percentage * score: 4 ### function getNextFollowUpTimepoint * file: src/cores/rh/utils/dischargeValidation.ts:186 * kind: function * core: rh * spec: (none) * summary: Get the next follow-up timepoint based on discharge date * score: 4 ### function getPassEligibilityByPhase * file: src/cores/rh/utils/passEligibility.ts:28 * kind: function * core: rh * spec: (none) * summary: Return the pass types permitted for a given phase.Unknown or missing phases return an empty array (deny-by-default). * score: 4 ### function getReadinessStatus * file: src/cores/rh/utils/dischargeValidation.ts:171 * kind: function * core: rh * spec: (none) * summary: Determine readiness status based on checklist completion * score: 4 ### function isTrainingExpired * file: src/cores/rh/utils/compliance-calculations.ts:99 * kind: function * core: rh * spec: (none) * summary: Check if training is expired * score: 4 ### function isTrainingExpiringSoon * file: src/cores/rh/utils/compliance-calculations.ts:85 * kind: function * core: rh * spec: (none) * summary: Check if training is expiring soon * score: 4 ### function validateChecklistItem * file: src/cores/rh/utils/dischargeValidation.ts:137 * kind: function * core: rh * spec: (none) * summary: Validate checklist item data before submission * score: 4 ### function validateDischargePlan * file: src/cores/rh/utils/dischargeValidation.ts:28 * kind: function * core: rh * spec: (none) * summary: Validate discharge plan data before submission * score: 4 ### function validateFollowUpContact * file: src/cores/rh/utils/dischargeValidation.ts:105 * kind: function * core: rh * spec: (none) * summary: Validate follow-up contact data before submission * score: 4 ### function validateReferral * file: src/cores/rh/utils/dischargeValidation.ts:64 * kind: function * core: rh * spec: (none) * summary: Validate referral data before submission * score: 4 # settings — module settings reference Source: https://docs.encoreos.io/api/settings Flat per-setting module configuration reference for AI/RAG retrieval, generated from *_module_settings. Refresh with `npm run docs:settings:generate`. # Module Settings Reference ```text theme={null} setting ce_module_settings activity_export_max_rows integer Maximum rows allowed for activity CSV export (100-5000). Default: 1000. Prevents large exports for performance. setting ce_module_settings activity_page_size integer Number of activities per page in timeline view (10-100). Default: 20. Used by CE-04 Activity Timeline. setting ce_module_settings ai_extraction_enabled boolean CE-59 Phase 2: Org-level AI extraction toggle. Default false. setting ce_module_settings auto_create_follow_up_task boolean Automatically create task when follow-up is scheduled setting ce_module_settings average_quality_target numeric(3,2) setting ce_module_settings business_hours_end time without time zone CE-13 default end of allowable sequence sends for business-hours-aware steps. setting ce_module_settings business_hours_start time without time zone CE-13 default start of allowable sequence sends for business-hours-aware steps. setting ce_module_settings calendar_default_meeting_duration_minutes integer Default duration in minutes for new calendar meetings setting ce_module_settings calendar_pre_meeting_notification_minutes integer Minutes before a meeting to send CRM-context notification via PF-10 setting ce_module_settings calendar_sync_poll_interval_minutes integer Polling fallback interval in minutes when webhooks are unavailable setting ce_module_settings call_disposition_deadline_hours integer Hours before undispositioned call is flagged as overdue setting ce_module_settings call_page_size integer Default page size for call log lists setting ce_module_settings call_recording_retention_days integer Days to retain call recordings (compliance) setting ce_module_settings campaign_conversion_definition text What counts as a conversion for campaign ROI: lead_converted, lead_qualified, or custom setting ce_module_settings campaign_conversion_value numeric setting ce_module_settings campaign_default_roi_days integer setting ce_module_settings campaign_utm_match_mode text How to match UTM parameters to campaigns: all, source_campaign, or campaign_only setting ce_module_settings click_to_call_enabled boolean CE-03-E1: Enable click-to-call feature for users. Default: true. setting ce_module_settings consent_retention_years integer CE-16: Years to retain consent evidence records for compliance setting ce_module_settings contact_page_size integer setting ce_module_settings crisis_detection_enabled boolean CE-28-EN-01 (CONTEXT §Feature Flags): Enable EN-01 keyword-based crisis detection. Default on; orgs may opt out. setting ce_module_settings custom_fields jsonb setting ce_module_settings declining_success_rate_threshold integer CE-05: Percent drop to trigger partner success rate alert. Default: 20. setting ce_module_settings declining_volume_threshold integer CE-05: Percent drop to trigger partner volume alert. Default: 30. setting ce_module_settings default_dashboard_date_range_days integer CE-05: Default date range for dashboard widgets in days. Default: 30. setting ce_module_settings default_follow_up_days integer Default number of days for follow-up tasks setting ce_module_settings default_lead_stage_id uuid setting ce_module_settings dnc_sync_frequency_days integer CE-16: Days between National Do Not Call Registry syncs (0 = disabled) setting ce_module_settings document_max_size_mb integer CE-59: Per-org max document upload size (1-100 MB). Default 25. setting ce_module_settings duplicate_detection_enabled boolean setting ce_module_settings eligibility_check_mode text CE-28-EN-04 (CONTEXT D-06): advisory (default) shows badge; gating blocks screening on non-eligible result. setting ce_module_settings email_body_size_limit_kb integer setting ce_module_settings email_custom_tracking_domain text setting ce_module_settings email_sender_address text Optional per-module email sender address (e.g. admissions@domain.com). Falls back to org default if null. setting ce_module_settings email_sync_history_days integer setting ce_module_settings email_sync_interval_minutes integer setting ce_module_settings email_tracking_enabled boolean setting ce_module_settings embeddable_custom_tabs_enabled boolean CE-14: Enable custom contact/partner tabs in widget setting ce_module_settings embeddable_enabled boolean CE-14: Enable RingCentral Embeddable widget for in-browser calling setting ce_module_settings embeddable_prefer_over_ringout boolean CE-14: Prefer Embeddable WebRTC over RingOut desk phone setting ce_module_settings embeddable_widget_position text CE-14: Widget position (bottom-right, bottom-left, etc.) setting ce_module_settings history_default_range text CE-60: Default date range filter for All History tab. One of last_7_days|last_30_days|last_90_days|all_time. setting ce_module_settings history_page_size integer CE-60: Default page size for All History timeline cursor pagination (10-200, default 50). setting ce_module_settings history_stage_fallback_enabled boolean CE-60: When true, fall back to CE-04 activity-derived stage markers when CE-63 stage events are missing. Default false post CE-63 GA. setting ce_module_settings intake_after_hours_routing_id uuid CE-28-EN-02: Active on-call rotation used for after-hours routing. setting ce_module_settings intake_business_hours_days integer[] CE-28-EN-02: Days of week considered business days (0=Sun..6=Sat). Default Mon-Fri. setting ce_module_settings intake_business_hours_end time without time zone CE-28-EN-02: Daily business-hours end time (org timezone). NULL = 24/7 / not configured. setting ce_module_settings intake_business_hours_start time without time zone CE-28-EN-02: Daily business-hours start time (org timezone). NULL = 24/7 / not configured. setting ce_module_settings intake_business_hours_timezone text CE-28-EN-02: IANA timezone for business hours (e.g. 'America/Phoenix'). setting ce_module_settings lead_auto_assignment_enabled boolean setting ce_module_settings pipeline_polling_interval_seconds integer CE-05: Dashboard polling interval in seconds (60-300). Default: 60. setting ce_module_settings quality_review_sample_pct integer CE-28-EN-06: Percent of screenings sampled for coordinator quality review (0-100, default 5). setting ce_module_settings recaptcha_threshold numeric(3,2) setting ce_module_settings referral_count_target integer setting ce_module_settings require_call_disposition boolean Require disposition for all calls before closing setting ce_module_settings response_time_target_hours numeric(5,2) setting ce_module_settings ringcentral_enabled boolean Enable/disable RingCentral integration for the organization setting ce_module_settings ringcentral_sms_phone_number text setting ce_module_settings screen_pop_duration_seconds integer CE-03-E1: Auto-dismiss timeout for screen pop (10-120 seconds). Default: 30. setting ce_module_settings screen_pop_enabled boolean CE-03-E1: Enable screen pop notifications on inbound calls. Default: true. setting ce_module_settings screen_pop_sound_enabled boolean CE-03-E1: Play sound notification on incoming call. Default: true. setting ce_module_settings segment_recalc_frequency text setting ce_module_settings sequence_batch_limit integer Maximum number of leads allowed in a manual/bulk sequence enrollment operation. setting ce_module_settings show_undispositioned_widget boolean Show pending calls widget on CE dashboard setting ce_module_settings sms_business_hours_end text setting ce_module_settings sms_business_hours_start text setting ce_module_settings sms_opt_out_footer text setting ce_module_settings sms_phi_detection_enabled boolean setting ce_module_settings sms_phi_detection_mode text setting ce_module_settings sms_provider text setting ce_module_settings sms_retention_days integer setting ce_module_settings stale_lead_threshold_days integer setting ce_module_settings successful_admission_rate_target numeric(5,2) setting ce_module_settings suppression_check_enabled boolean CE-16: Enable automatic suppression checks before SMS/email/phone sends setting ce_module_settings tile_field_config jsonb CE-65: Org-level configuration of pipeline tile metadata rows. Shape: {"fields": string[]}. Max 4 rows rendered per FR-1.4 with FR-1.5 priority ordering for overflow. setting ce_module_settings use_configurable_wizards boolean PF-41: Use configurable wizard templates when true; otherwise use hardcoded wizards. setting ce_module_settings web_form_default_lead_stage_id uuid setting ce_module_settings web_form_rate_limit_per_ip integer setting ce_module_settings web_form_rate_limit_window_minutes integer setting ce_module_settings web_form_send_staff_notification boolean setting ce_module_settings web_form_send_visitor_confirmation boolean setting cl_module_settings anomaly_business_hours_end time without time zone setting cl_module_settings anomaly_business_hours_start time without time zone setting cl_module_settings anomaly_high_volume_threshold integer setting cl_module_settings anomaly_same_patient_repeat_threshold integer setting cl_module_settings assessment_completion_hours integer CL-04: Hours after encounter in which an assessment/note must be completed and locked (1-168). Default 48. Key: cl.notes.assessment_completion_hours. setting cl_module_settings assessment_expiry_alert_days integer setting cl_module_settings break_glass_duration_minutes integer Duration in minutes that break-glass emergency access remains valid (15-480). Default 60. setting cl_module_settings break_glass_review_hours integer CL-01: Hours within which a supervisor must review a break-glass access event (1-168). Default 24. Key: cl.break_glass.review_hours. setting cl_module_settings break_glass_sla_hours integer setting cl_module_settings care_gap_engine_enabled boolean CL-35: Enable/disable care gap rules engine setting cl_module_settings care_gap_gad7_days integer CL-35: Days since last GAD-7 before gap opens setting cl_module_settings care_gap_gad7_priority text setting cl_module_settings care_gap_no_contact_days integer CL-35: Days since last signed note before gap opens setting cl_module_settings care_gap_phq9_days integer CL-35: Days since last PHQ-9 before gap opens setting cl_module_settings care_gap_phq9_priority text setting cl_module_settings care_gap_plan_review_days integer CL-35: Days past review_due_date before gap opens setting cl_module_settings cda_generation_enabled boolean CL-48 feature flag: when true, CDA generation UI is visible to users with cl.cda.* permissions. Defaults to false (opt-in per org). setting cl_module_settings cl_ai_ambient_vendor text Selected ambient voice vendor slug (e.g. nabla, nuance_dax). Null = structured-data only. Phase 3. setting cl_module_settings cl_ai_data_residency text Data residency region for AI PHI processing. us = US-only (Phase 1/2 default). setting cl_module_settings cl_ai_documentation_enabled boolean Org-level opt-in for AI-assisted clinical documentation (CL-36). BAA required before setting true. setting cl_module_settings cl_ai_policy940_enforcement text AHCCCS Policy 940 enforcement mode: warn | block | draft-warn-final-block. Default block for new orgs. setting cl_module_settings cohort_recompute_schedule text CL-54 / spec NC-3: Cron cadence for cl-cohort-recompute edge function. Default daily 02:00 UTC. setting cl_module_settings consent_expiration_reminder_days integer[] CL-11 EN-33: Array of day thresholds for consent expiration reminders (e.g., {30, 14, 7} means notify at 30, 14, and 7 days before expiry). setting cl_module_settings cosign_required_days integer CL-04: Org workflow deadline (days) for supervisor co-signature on BHP/trainee notes (1-90). Distinct from cosignature_deadline_days (AZDHS hard limit). Default 5. Key: cl.notes.cosign_required_days. setting cl_module_settings cosignature_deadline_days integer setting cl_module_settings custom_fields jsonb setting cl_module_settings default_audit_date_range_days integer setting cl_module_settings default_report_format text Default export format for report runs (pdf, csv, excel) setting cl_module_settings identical_time_flag_threshold integer setting cl_module_settings incident_business_day_config jsonb CL-15 Phase 2: JSONB config for business-day math. Example: {"excludeWeekends": true, "holidayCalendar": "us_federal"}. Runtime shape validation lives in application-layer Zod (no immutable JSON CHECK). holidayCalendar deferred per CL-15-CONTEXT.md; initial release is weekday-only. setting cl_module_settings incident_deadline_alert_minutes integer Minutes before AZDHS reporting_deadline to send alert setting cl_module_settings incident_deadline_track text CL-15 Phase 2: which regulatory clock to apply to incident reporting deadlines. 'azdhs' (default, preserves Phase 1 behavior), 'ahcccs' (AHCCCS Policy 961 business-day clock), or 'dual' (whichever is earlier). PF-96 migration note: Arizona-specific; future jurisdictions should resolve via pf_resolve_jurisdiction_profile(). setting cl_module_settings incident_sentinel_options jsonb CL-15 Phase 2: JSONB config for sentinel-event handling. Example: {"autoEscalate": true, "notifyRoles": ["org_admin", "compliance_officer"]}. Runtime shape validation lives in application-layer Zod. setting cl_module_settings low_risk_rescreen_interval_days integer CL-07: Days until next screening for low-risk patients (1-365 day range). Key: cl.screening.low_risk_rescreen_interval_days. Default: 30 days. setting cl_module_settings max_pathway_milestones integer Maximum number of milestones allowed per pathway template setting cl_module_settings order_set_max_items integer CL-44: Maximum number of items allowed in a single order set template. setting cl_module_settings order_sets_enabled boolean CL-44: Feature flag controlling visibility of Order Set / Standing Order navigation and activation entry points. setting cl_module_settings outcome_small_n_suppression_threshold integer Minimum denominator for program outcome display. Outcomes with denominator below this are suppressed for de-identification. setting cl_module_settings part2_consent_required boolean CL-01: When true, 42 CFR Part 2 SUD consent must be on file before disclosing applicable clinical records. Default true. Key: cl.privacy.part2_consent_required. setting cl_module_settings pathway_overdue_alert_hours integer Hours after milestone expected completion before overdue alert is generated setting cl_module_settings pending_result_expiry_days integer Number of days before pending (unsolicited) lab results automatically expire. Default: 30. setting cl_module_settings pop_health_assessment_expiry_days integer Days before a comprehensive assessment expires and triggers a care gap setting cl_module_settings pop_health_risk_refresh_hours integer Minimum hours between automated risk stratification refreshes setting cl_module_settings pop_health_risk_tier_thresholds jsonb Numeric thresholds for risk tier assignment: low, medium, high, critical setting cl_module_settings pop_health_risk_weights jsonb Component weights for composite risk score (must sum to 1.0): safety, outcome, metabolic, moud setting cl_module_settings portal_qm_config jsonb CL-15 Phase 3 (T8): Patient portal quality-measure display config. Shape: {instruments: string[], measure_types: string[], sud_instruments_require_consent: boolean}. SUD instruments (audit, dast10, and others tagged in application layer SUD_INSTRUMENTS) are filtered out when sud_instruments_require_consent=true AND cl_check_sud_consent(chart_id, 'outcome_measure', auth.uid()) returns false. Runtime shape validation lives in application-layer Zod (no immutable JSON CHECK). setting cl_module_settings report_generation_timeout_seconds integer Max seconds for report generation before timeout setting cl_module_settings standing_order_default_expiry_days integer CL-44: Default expiration period in days for clinical standing order protocols. setting cl_module_settings suicide_screening_min_age integer CL-07: Minimum patient age (years) for suicide/self-harm screening (5-18). Default 12 (PHQ-A threshold per AZDHS guidance). Key: cl.screening.suicide_screening_min_age. setting cl_module_settings tefca_match_confidence_threshold numeric(3,2) setting cl_module_settings tefca_max_retry_attempts integer setting cl_module_settings tefca_retry_backoff_base_ms integer setting cl_module_settings telehealth_block_session_without_consent boolean CL-24: when true, useStartTelehealthSession throws if consent invalid. setting cl_module_settings telehealth_block_session_without_safety_checklist boolean CL-24: when true, useStartTelehealthSession throws if safety_checklist_completed_at is NULL. setting cl_module_settings telehealth_consent_validity_days integer CL-24: telehealth consent expires_at = consented_at + this many days. setting cl_module_settings telehealth_documentation_enabled boolean CL-24 feature flag — when false, all CL-24 hooks short-circuit and routes redirect. setting cl_module_settings treatment_plan_review_days integer CL-04: Days between required treatment plan reviews (1-365). Default 90. Key: cl.treatment_plan.review_days. setting cl_module_settings use_configurable_wizards boolean PF-41: Use configurable wizard templates when true; otherwise use hardcoded wizards. setting cl_module_settings weno_directory_delta_cron text CL-06-EN-23: Cron expression for daily pharmacy directory delta fetch. setting cl_module_settings weno_directory_full_refresh_day integer CL-06-EN-23: Day-of-week for full directory refresh (0=Sunday … 6=Saturday). setting cl_module_settings weno_max_query_window_days integer CL-06-EN-23: Maximum NewRx query window in days (1–14, vendor cap 7). Vendor: WENO EZ. setting cl_module_settings weno_sync_interval_minutes integer CL-06-EN-23: NewRx sync polling interval in minutes (5–120). Vendor: WENO EZ. setting fa_module_settings ai_anomaly_detection_enabled boolean FA-28: Enable AI-powered anomaly detection on bank transactions setting fa_module_settings ai_categorization_auto_threshold numeric(5,2) FA-28: Confidence threshold (0-1) above which AI categorizations are auto-applied setting fa_module_settings ai_categorization_enabled boolean FA-28: Enable AI-powered transaction categorization setting fa_module_settings ai_enabled boolean Enable AI features for Finance module setting fa_module_settings ai_matching_auto_threshold numeric(5,2) FA-28: Confidence threshold (0-1) above which AI matches are auto-applied setting fa_module_settings ai_matching_enabled boolean FA-28: Enable AI-powered transaction matching setting fa_module_settings auto_create_revenue_schedules boolean WS-B: When true, fa-consume-revenue-source-events auto-creates revenue schedules from fa_invoice_finalized and fa_revenue_contract_signed domain events. setting fa_module_settings auto_generate_invoice_numbers boolean setting fa_module_settings auto_match_amount_tolerance numeric(8,2) FA-21: Amount tolerance for fuzzy matching (+/-). Default 0.50. setting fa_module_settings auto_match_date_range_days integer FA-21: Date range for matching (+/- days). Default 3. Range 1-30. setting fa_module_settings auto_match_description_threshold integer FA-21: Fuzzy description match threshold (%). Default 70. Range 0-100. setting fa_module_settings auto_match_on_sync boolean FA-21: Run auto-match after each Plaid sync. Default true. setting fa_module_settings auto_post_revenue_recognition boolean FA-18 P2: When true, fa_process_revenue_recognition auto-posts the generated journal entry via fa_post_journal_entry. When false (default), the JE is left in draft for manual review. setting fa_module_settings auto_post_threshold_amount numeric(12,2) FA-21: Auto-post rules only for amounts below this threshold. Default 5000. setting fa_module_settings budget_alert_percentages integer[] setting fa_module_settings budget_approval_threshold_amount numeric(15,2) setting fa_module_settings budget_variance_critical_threshold_percent numeric(5,2) Percentage threshold for marking budget variances as critical (highlighted in red). Range: 5.00-50.00%. setting fa_module_settings capitalization_threshold numeric(15,2) setting fa_module_settings cash_dashboard_refresh_interval_seconds integer Dashboard auto-refresh interval (30-3600 seconds) setting fa_module_settings cash_position_update_interval_minutes integer How often to recalculate cash positions (1-1440 minutes) setting fa_module_settings collection_queue_days_no_activity integer Days of inactivity before a collection queue item is flagged for follow-up (1-365, default 14) setting fa_module_settings collection_threshold_days integer Number of days past due before an invoice enters the collection workflow (1-365) setting fa_module_settings compliance_default_ap_account_id uuid FA-34: AP accrual account credited on compliance cost GL entries. setting fa_module_settings compliance_default_expense_account_id uuid FA-34: Fallback GL expense account when no fa_compliance_account_mapping exists for a compliance_type. setting fa_module_settings consolidation_allow_period_rerun boolean FA-09: When false, blocks new consolidation_runs for a period that already has a completed run. setting fa_module_settings consolidation_max_entities integer FA-09: Max entities allowed in a single consolidation run. Protects p95 SLA per SC-001. setting fa_module_settings consolidation_retention_months integer FA-09: Months to retain consolidation_runs and consolidated_balances rows. setting fa_module_settings credit_limit_alert_threshold_percent numeric(5,2) Credit utilization threshold for alerts (50-99%) setting fa_module_settings credit_line_number_sequence integer Current sequence for credit line numbers setting fa_module_settings custom_fields jsonb setting fa_module_settings default_budget_version_type text setting fa_module_settings default_currency text setting fa_module_settings default_date_format text setting fa_module_settings default_deferred_revenue_account_id uuid FA-18 P2: Default deferred revenue (DR offset) account used by fa_process_revenue_recognition when neither schedule nor contract specifies one. setting fa_module_settings default_fiscal_year_start_month integer setting fa_module_settings default_invoice_terms text setting fa_module_settings default_payment_method text setting fa_module_settings default_revenue_account_id uuid FA-18 P2: Default revenue (CR) account used by fa_process_revenue_recognition when neither schedule nor contract specifies one. setting fa_module_settings depreciation_gl_retry_max_attempts integer setting fa_module_settings drawdown_alert_threshold_percent integer Percentage threshold for grant drawdown alerts (FA-13). Default 90%. setting fa_module_settings email_sender_address text Optional per-module email sender address (e.g. accounting@domain.com). Falls back to org default if null. setting fa_module_settings enable_3_way_match boolean setting fa_module_settings idc_allocation_frequency text How often IDC is allocated to projects (FA-15). Options: monthly, quarterly, on_demand. setting fa_module_settings intercompany_variance_threshold_cents integer FA-09: IC variance (cents) at or below which the consolidation validator treats an IC pair as in-balance. Default 100 = $1.00. setting fa_module_settings investment_maturity_alert_days integer Days before maturity to alert (1-365) setting fa_module_settings investment_number_sequence integer Current sequence for investment numbers setting fa_module_settings invoice_due_days integer setting fa_module_settings invoice_number_prefix text setting fa_module_settings invoice_number_sequence integer Next sequence number for invoice generation setting fa_module_settings payment_batch_approval_required boolean setting fa_module_settings payment_plan_approval_threshold numeric(15,2) Payment plans with total amount above this threshold require manager approval setting fa_module_settings plaid_integration_enabled boolean Enable Plaid bank feed integration (FA-20) setting fa_module_settings plaid_link_customization_name text FA-20 Transfer UI: Plaid Link customization name (Account Select: one account) from Dashboard setting fa_module_settings plaid_origination_account_id text FA-20 Transfer UI: Plaid origination (funding) account ID from Dashboard; overrides PLAID_ORIGINATION_ACCOUNT_ID when set setting fa_module_settings po_approval_threshold_amount numeric(15,2) setting fa_module_settings po_number_prefix text setting fa_module_settings po_number_sequence integer Next sequence number for purchase order generation setting fa_module_settings project_number_include_year boolean Include year in project number format (FA-13). Default true for PRJ-YYYY-####. setting fa_module_settings project_number_prefix text Prefix for auto-generated project numbers (FA-13). Default PRJ. setting fa_module_settings project_number_sequence integer Current sequence number for project auto-numbering (FA-13). setting fa_module_settings ramp_integration_enabled boolean FA-30: Enable Ramp corporate cards integration (Connect Ramp, Sync Now, card transactions). setting fa_module_settings recurring_generation_time time without time zone Time of day (UTC) when recurring invoices are generated by the scheduled edge function setting fa_module_settings require_budget_approval boolean setting fa_module_settings require_po_approval boolean setting fa_module_settings require_review_above_amount numeric(12,2) FA-21: Force draft JE and review queue for amounts above this. Default 10000. setting fa_module_settings revenue_recognition_sum_tolerance numeric(12,4) FA-18: rounding tolerance (currency units) for revenue recognition sum checks. setting fa_module_settings rule_engine_enabled boolean FA-21: Master toggle for transaction rule engine. Default false. setting fa_module_settings show_account_numbers boolean setting fa_module_settings use_configurable_wizards boolean PF-41: Use configurable wizard templates instead of hardcoded wizards setting fa_module_settings variance_threshold_percent integer FA-16: Percentage threshold for flagging significant budget variances (default 10%) setting fa_module_settings vendor_1099_threshold numeric(15,2) setting fm_module_settings asset_tag_prefix text setting fm_module_settings asset_tag_sequence integer Next sequence number for asset tag generation setting fm_module_settings auto_assign_by_category boolean setting fm_module_settings auto_create_po_at_reorder boolean setting fm_module_settings auto_generate_pm_work_orders boolean setting fm_module_settings custom_fields jsonb setting fm_module_settings default_due_days integer setting fm_module_settings default_payment_terms_days integer setting fm_module_settings default_priority text setting fm_module_settings default_unit_of_measure text setting fm_module_settings depreciation_method text setting fm_module_settings enable_reorder_points boolean setting fm_module_settings fleet_default_mileage_rate numeric(6,4) setting fm_module_settings fleet_license_alert_days integer[] setting fm_module_settings fleet_prevent_expired_license boolean setting fm_module_settings fleet_registration_alert_days integer[] setting fm_module_settings fleet_vehicle_prefix text setting fm_module_settings fleet_vehicle_sequence integer setting fm_module_settings low_stock_alert_threshold integer setting fm_module_settings pm_alert_days integer[] setting fm_module_settings pm_compliance_priority text setting fm_module_settings pm_schedule_lookahead_days integer setting fm_module_settings preferred_vendor_discount_pct numeric(5,2) setting fm_module_settings priority_levels text[] setting fm_module_settings require_vendor_approval boolean setting fm_module_settings require_wo_approval_above numeric(15,2) setting fm_module_settings use_configurable_wizards boolean PF-41: Use configurable wizard templates when true; otherwise use hardcoded wizards. setting fm_module_settings vendor_certification_alert_days integer[] setting fm_module_settings vendor_default_payment_terms_days integer setting fm_module_settings vendor_number_prefix character varying(10) setting fm_module_settings vendor_number_sequence integer Next sequence number for vendor generation setting fm_module_settings vendor_require_certification_for_assignment boolean setting fm_module_settings wo_number_prefix text setting fm_module_settings wo_number_sequence integer Next sequence number for work order generation setting fw_module_settings ai_enabled boolean Enable AI features for Forms & Workflows module setting fw_module_settings allow_anonymous_submissions boolean setting fw_module_settings allowed_file_types text[] setting fw_module_settings automation_circuit_breaker_threshold integer setting fw_module_settings automation_retry_limit integer setting fw_module_settings automation_timeout_seconds integer setting fw_module_settings custom_form_categories text[] setting fw_module_settings data_query_enabled boolean FW-19: Enable data query and integration actions in workflows setting fw_module_settings debugging_enabled boolean Enable/disable step-through debugging setting fw_module_settings default_bulk_batch_size integer Default batch size for bulk operations setting fw_module_settings default_form_status form_status setting fw_module_settings default_query_limit integer Default number of records returned in workflow queries setting fw_module_settings execution_monitoring_enabled boolean Enable/disable execution monitoring dashboard setting fw_module_settings external_form_rate_limit_per_hour integer Rate limit for external form submissions per hour setting fw_module_settings form_number_prefix text Prefix for form IDs (e.g., FORM) setting fw_module_settings form_number_sequence integer Next sequence number for form generation setting fw_module_settings fw_approval_routing_enabled boolean FW-54: Feature flag for conditional approval routing. When false, legacy static chain selection is used. setting fw_module_settings fw_approval_routing_max_rules_per_entity integer FW-54: Maximum routing rules per entity_type per organization (1-200, default 50). setting fw_module_settings fw_audit_trail_config jsonb FW-43: Audit trail configuration including retention days per compliance category and scheduled report configs. setting fw_module_settings fw_checkpoint_enabled boolean Enable/disable execution step checkpoint writes. setting fw_module_settings fw_decision_table_max_rules integer Maximum number of rules allowed per decision table (50-5000). setting fw_module_settings fw_decision_tables_enabled boolean Enables or disables the FW-45 Decision Tables feature for the organization. setting fw_module_settings fw_decision_tables_max_per_org integer Maximum number of decision tables allowed per organization (10-500). setting fw_module_settings fw_default_timeout_minutes integer FW-49: Default timeout in minutes for workflows without explicit timeout_config. Default: 60. setting fw_module_settings fw_dlq_alert_interval_minutes integer FW-47: Minutes between repeated DLQ threshold alerts (5-1440) setting fw_module_settings fw_dlq_alert_threshold integer FW-47: Number of pending DLQ entries that triggers an alert (1-1000) setting fw_module_settings fw_dlq_auto_discard_after_days integer FW-47: Days after which pending DLQ entries are auto-discarded (7-365) setting fw_module_settings fw_dlq_enabled boolean FW-47: Enable/disable Dead Letter Queue processing setting fw_module_settings fw_error_recovery_enabled boolean FW-25: Master toggle for advanced error recovery (retry strategies, circuit breakers, recovery workflows, compensation actions) setting fw_module_settings fw_event_deprecation_grace_days integer FW-16-P2: Days after deprecation before event publish is rejected (1-365) setting fw_module_settings fw_event_schema_validation_mode text FW-16-P2: Event payload validation mode (off/warn/strict) setting fw_module_settings fw_execution_worker_enabled boolean setting fw_module_settings fw_rule_evaluation_retention_days integer Number of days to retain rule evaluation audit records before cleanup (30-365). setting fw_module_settings fw_step_data_retention_days integer Retention window in days for fw_execution_steps cleanup. setting fw_module_settings fw_step_max_input_output_size_kb integer Max per-step input/output payload size before truncation. setting fw_module_settings fw_timeout_check_interval_minutes integer FW-49: Interval in minutes between watchdog checks. Default: 5. setting fw_module_settings fw_timeout_enabled boolean FW-49: Whether the timeout watchdog is enabled for this organization. setting fw_module_settings fw_timeout_warning_threshold_percent integer FW-49: Percentage of deadline elapsed before sending a warning notification. Default: 80. setting fw_module_settings fw_worker_batch_size integer setting fw_module_settings fw_worker_visibility_timeout_seconds integer setting fw_module_settings log_retention_days integer Days to retain execution logs before cleanup setting fw_module_settings max_bulk_batch_size integer Maximum batch size for bulk operations setting fw_module_settings max_query_limit integer Maximum allowed records in workflow queries setting fw_module_settings max_upload_size_mb integer setting fw_module_settings require_submission_review boolean setting fw_module_settings submission_number_prefix text Prefix for submission IDs (e.g., SUB) setting fw_module_settings submission_number_sequence integer Next sequence number for submission generation setting fw_module_settings submission_retention_days integer Days to retain submissions (NULL = forever) setting fw_module_settings use_configurable_wizards boolean PF-41: Use configurable wizard templates instead of hardcoded wizards setting fw_module_settings worker_last_batch_size integer setting fw_module_settings worker_last_run_at timestamp with time zone setting fw_module_settings worker_running boolean setting fw_module_settings workflow_number_prefix text Prefix for workflow IDs (e.g., WF) setting fw_module_settings workflow_number_sequence integer Next sequence number for workflow generation setting gr_module_settings ai_compliance_enabled boolean Enable AI-assisted compliance advisor features setting gr_module_settings ai_renewal_recommendations_enabled boolean setting gr_module_settings ai_risk_analysis_enabled boolean setting gr_module_settings allow_self_enrollment boolean setting gr_module_settings audit_number_prefix text Prefix for audit numbers (e.g., AUD) setting gr_module_settings audit_number_sequence integer Next sequence number for audit generation setting gr_module_settings auto_create_compliance_tasks boolean setting gr_module_settings auto_generate_contract_numbers boolean setting gr_module_settings auto_mark_obligations_overdue boolean setting gr_module_settings benchmarking_opt_in boolean setting gr_module_settings cap_alert_lead_days integer GR-16: Days before CAP target_closure_date to send deadline alert notification (default 14) setting gr_module_settings coi_attestation_enabled boolean GR-15: Feature flag for COI attestation module setting gr_module_settings coi_reminder_days integer[] GR-15: Days before COI attestation deadline to send reminders setting gr_module_settings compliance_alert_days integer[] setting gr_module_settings contract_approval_threshold_amount numeric(15,2) setting gr_module_settings contract_number_prefix character varying(20) setting gr_module_settings contract_number_sequence integer setting gr_module_settings custom_fields jsonb setting gr_module_settings deadline_notification_days_before integer Days before statutory_deadline to send advance notification. Default: 2 (D-2 alert). setting gr_module_settings default_audit_frequency_days integer setting gr_module_settings default_expiration_alert_days integer[] setting gr_module_settings default_policy_review_period_days integer setting gr_module_settings default_renewal_notice_days integer setting gr_module_settings default_training_expiration_days integer setting gr_module_settings document_categories text[] setting gr_module_settings document_retention_days integer setting gr_module_settings email_sender_address text Optional per-module email sender address (e.g. compliance@domain.com). Falls back to org default if null. setting gr_module_settings gr_incident_ca_notification_days integer[] Days before corrective action due date to send reminder notifications (default: 7 days, 3 days) setting gr_module_settings gr_incident_investigation_timeline_days integer Target investigation completion in calendar days (default: 30, per AHCCCS best practice) setting gr_module_settings gr_incident_reporting_enabled boolean Feature flag: enables GR-09 incident reporting UI for this organization (default: false) setting gr_module_settings inservice jsonb GR-19: Org-level configuration for the in-service compliance monitor (retention, reminders, escalations, recipients). setting gr_module_settings obligation_reminder_days integer setting gr_module_settings policy_categories text[] setting gr_module_settings policy_number_prefix text Prefix for policy numbers (e.g., POL) setting gr_module_settings policy_number_sequence integer Next sequence number for policy generation setting gr_module_settings policy_version_naming text setting gr_module_settings procedure_analytics_last_refreshed_at timestamp with time zone Timestamp of last successful gr_procedure_execution_summary materialized view refresh setting gr_module_settings procedure_auto_save_interval_seconds integer Auto-save interval for procedure editor setting gr_module_settings procedure_benchmarking_last_refreshed_at timestamp with time zone setting gr_module_settings procedure_number_prefix text Prefix for auto-generated procedure numbers (e.g., SOP) setting gr_module_settings procedure_number_sequence integer Current sequence number for procedure number generation setting gr_module_settings procedure_overdue_threshold_days integer Days after which an in-progress procedure execution is flagged as overdue (default: 7, valid: 1-90) setting gr_module_settings procedure_review_reminder_days integer Days before review due to send reminders setting gr_module_settings procedure_step_analytics_last_refreshed_at timestamp with time zone setting gr_module_settings qi_default_cycle_duration_days integer Default duration for PDSA cycles in days setting gr_module_settings qi_enabled boolean Enable Quality Improvement feature setting gr_module_settings qi_improvement_reminder_days integer[] Days before due date to send improvement action reminders setting gr_module_settings qi_metric_goal_notifications boolean Enable alerts when metrics reach their goal values setting gr_module_settings qi_pdsa_completion_notifications boolean Enable notifications when PDSA cycles are completed setting gr_module_settings regulatory_rule_limit integer Maximum active regulatory reporting rules per organization (system + org-specific combined). Default: 50. setting gr_module_settings require_contract_approval boolean setting gr_module_settings require_document_approval boolean setting gr_module_settings require_policy_approval boolean setting gr_module_settings require_training_acknowledgment boolean setting gr_module_settings retention_warning_days integer GR-15: Days before retention deadline to send warning notification setting gr_module_settings risk_number_prefix text Prefix for risk assessment numbers (e.g., RISK) setting gr_module_settings risk_number_sequence integer Next sequence number for risk generation setting gr_module_settings tracer_evidence_stale_days integer GR-16: Days after which evidence is considered stale for gap analysis (default 365) setting gr_module_settings training_reminder_days integer[] setting gr_module_settings use_configurable_wizards boolean PF-41: Use configurable wizard templates when true; otherwise use hardcoded wizards. setting gr_module_settings whistleblower_enabled boolean GR-15: Feature flag for whistleblower intake setting hr_module_settings adverse_impact_threshold_percent numeric(5,2) EEOC four-fifths rule threshold (80% recommended) setting hr_module_settings ai_enabled boolean Enable AI features for Workforce/HR module setting hr_module_settings allow_self_upload boolean setting hr_module_settings analytics_cache_ttl_minutes integer Cache TTL in minutes for analytics data (default: 15) setting hr_module_settings appeal_resolution_sla_days integer Target days to resolve disciplinary appeals setting hr_module_settings ats_page_size integer Page size for ATS/recruiting lists setting hr_module_settings auto_create_onboarding boolean When true, automatically creates an onboarding instance when an offer is accepted. Uses default_onboarding_template_id. setting hr_module_settings auto_create_payroll_runs boolean setting hr_module_settings auto_create_skill_verification_tasks boolean setting hr_module_settings auto_vacancy_on_termination boolean Auto-vacate position when assigned employee is terminated setting hr_module_settings bgc_auto_initiate_on_offer boolean HR-09-P5: Auto-create a background check when an offer is sent. setting hr_module_settings bgc_default_package text HR-09-P5: Provider-specific default BGC package identifier. setting hr_module_settings bgc_default_provider_id uuid setting hr_module_settings candidate_number_prefix text setting hr_module_settings candidate_number_sequence integer setting hr_module_settings candidate_portal_enabled boolean HR-09-P5: Enable external candidate portal. setting hr_module_settings candidate_portal_session_hours integer HR-09-P5: Magic-link session lifetime for candidate self-service portal. setting hr_module_settings credential_renewal_enabled boolean Enable/disable automatic credential renewal workflows setting hr_module_settings credential_renewal_trigger_days integer Days before expiration to auto-trigger renewal workflow (default: 60) setting hr_module_settings critical_incident_notification_hours integer Hours within which critical incidents must be escalated setting hr_module_settings custom_credential_categories text[] setting hr_module_settings custom_employment_types text[] setting hr_module_settings custom_fields jsonb setting hr_module_settings dashboard_refresh_interval_minutes integer Auto-refresh interval for dashboard widgets (default: 15) setting hr_module_settings default_alert_days integer[] setting hr_module_settings default_currency text Default currency code for compensation data (e.g., USD, EUR, GBP) setting hr_module_settings default_merit_percentage_below numeric Default merit increase percentage for "Below Expectations" performance rating setting hr_module_settings default_merit_percentage_exceeds numeric Default merit increase percentage for "Exceeds Expectations" performance rating setting hr_module_settings default_merit_percentage_meets numeric Default merit increase percentage for "Meets Expectations" performance rating setting hr_module_settings default_onboarding_template_id uuid Template to use for automatic onboarding creation when auto_create_onboarding is enabled. setting hr_module_settings default_page_size integer Default page size for HR module list views setting hr_module_settings default_shift_duration_hours integer setting hr_module_settings default_skill_verification_days integer Default days from hire to verify skills if not set on position requirement setting hr_module_settings default_trend_period_months integer Default historical period for trend analysis (default: 12) setting hr_module_settings email_from_address text From email address for HR communications (used with Entra) setting hr_module_settings email_from_name text From display name for HR communications setting hr_module_settings email_provider text Email provider for org-level sending: entra (Microsoft Entra ID) or gmail (Google Workspace). setting hr_module_settings email_sender_address text Optional per-module email sender address (e.g. hr@domain.com). Falls back to org default if null. setting hr_module_settings employee_number_auto_generate boolean When true, automatically generates sequential employee numbers on insert. Default: true setting hr_module_settings employee_number_prefix text setting hr_module_settings employee_number_sequence integer setting hr_module_settings employee_relations_retention_years integer Years to retain incident/disciplinary records for compliance setting hr_module_settings engagement_analytics_auto_calculate boolean HR-17: Automatically calculate engagement analytics on survey completion setting hr_module_settings equity_disparity_threshold numeric Pay disparity percentage threshold that triggers equity alerts setting hr_module_settings exit_interview_auto_create boolean HR-17: Automatically create exit interview when employee is terminated setting hr_module_settings feedback_deadline_default_days integer Default deadline in days for feedback requests setting hr_module_settings fingerprint_clearance_alert_days integer[] HR-28: day thresholds for expiration alerts; sorted desc in job; max 5 positive integers setting hr_module_settings fingerprint_clearance_onboarding_required boolean HR-28: when false, HR-03 onboarding clearance gate is skipped setting hr_module_settings goal_deadline_warning_days integer Days before goal deadline to show warning setting hr_module_settings goal_reminder_interval_days integer Days between goal progress update reminders setting hr_module_settings grace_period_days integer setting hr_module_settings grievance_resolution_sla_days integer Target days to resolve grievances setting hr_module_settings handbook_default_acknowledgment_due_days integer setting hr_module_settings high_conversion_rate_threshold_percent numeric(5,2) Threshold for flagging high conversion rate sources setting hr_module_settings internal_mobility_eligibility_scope text setting hr_module_settings internal_mobility_manager_notify_stage text setting hr_module_settings internal_mobility_min_tenure_days integer setting hr_module_settings internal_mobility_record_retention_years integer setting hr_module_settings internal_mobility_require_pay_approval_before_transfer boolean setting hr_module_settings internal_mobility_score_ranking_enabled boolean setting hr_module_settings investigation_sla_critical_days integer Target days to complete critical investigations setting hr_module_settings investigation_sla_moderate_days integer Target days to complete moderate investigations setting hr_module_settings investigation_sla_serious_days integer Target days to complete serious investigations setting hr_module_settings job_board_auto_post boolean HR-09-P5: Auto-publish new job postings to configured boards. setting hr_module_settings job_board_default_boards text[] setting hr_module_settings job_description_min_qualifications integer HR-21: Minimum number of qualifications required in a job description setting hr_module_settings job_description_min_responsibilities integer HR-21: Minimum number of responsibilities required in a job description setting hr_module_settings job_description_pdf_template_id uuid HR-21: PF-64 letterhead ID override for job description PDFs. NULL = use org default setting hr_module_settings max_report_export_rows integer Maximum rows allowed in report exports (default: 10000) setting hr_module_settings max_successors_per_plan integer HR-16: Max successors per succession plan setting hr_module_settings offer_approval_levels integer setting hr_module_settings offer_approval_required boolean setting hr_module_settings offer_executive_threshold numeric setting hr_module_settings onboarding_due_days integer setting hr_module_settings overtime_threshold_hours integer setting hr_module_settings pathway_templates_enabled boolean HR-13-EN-08: Enables qualification pathway templates in HR-13 UI for an organization. setting hr_module_settings payroll_large_adjustment_threshold numeric(10,2) Dollar threshold for flagging large adjustments setting hr_module_settings payroll_overtime_threshold_percent numeric(5,2) Overtime hours threshold for anomaly detection (% of regular hours) setting hr_module_settings payroll_variance_threshold_percent numeric(5,2) Pay variance threshold for anomaly detection (% change from prior period) setting hr_module_settings performance_page_size integer Page size for performance review lists setting hr_module_settings pip_default_duration_days integer Default duration in days for Performance Improvement Plans setting hr_module_settings pip_review_interval_days integer Days between PIP review checkpoints setting hr_module_settings pip_warning_days integer Days before PIP deadline to show warning setting hr_module_settings position_code_auto_generate boolean Auto-generate position codes on creation setting hr_module_settings position_code_prefix text Prefix for auto-generated position codes (max 10 chars) setting hr_module_settings position_filled_threshold integer Assignment percentage threshold (50-100) for auto-transitioning position to filled setting hr_module_settings reference_expiration_days integer HR-09-P5: Days a reference request access token remains valid (default 30). setting hr_module_settings reference_form_intro_text text setting hr_module_settings reference_min_required integer HR-09-P5: Minimum completed references required before an offer can be sent. setting hr_module_settings reference_reminder_days integer[] HR-09-P5: Days after request to send follow-up reminders (default {3,7}). setting hr_module_settings reference_thank_you_text text setting hr_module_settings references_required_count integer setting hr_module_settings references_required_for_offer boolean setting hr_module_settings require_credential_for_shift boolean setting hr_module_settings require_document_for_credentials boolean setting hr_module_settings require_position_for_posting boolean When TRUE, HR-09 job postings require a linked approved/vacant position setting hr_module_settings require_profile_photo boolean setting hr_module_settings retention_risk_high_threshold integer Score threshold (0-100) for high retention risk classification (default: 70) setting hr_module_settings review_auto_assign_days_before integer Days before review deadline to auto-assign reviews to managers setting hr_module_settings send_deadline_reminders boolean setting hr_module_settings shifts_lookahead_days integer Number of days to show in shift/schedule lookahead setting hr_module_settings skill_reassessment_assessed_days integer Days between re-assessment for assessed skills setting hr_module_settings skill_reassessment_certified_days integer Days between re-assessment for certified skills setting hr_module_settings skill_reassessment_validated_days integer Days between re-assessment for manager-validated skills setting hr_module_settings skill_verification_alert_days integer[] Days before verification due date to send alerts setting hr_module_settings skills_feature_enabled boolean Enable/disable Skills & Competencies feature for this organization setting hr_module_settings skills_list_page_size integer setting hr_module_settings sms_business_hours_end time without time zone HR-09-P5: TCPA-compliant latest SMS send time (org local). setting hr_module_settings sms_business_hours_start time without time zone HR-09-P5: TCPA-compliant earliest SMS send time (org local). setting hr_module_settings sms_enabled boolean HR-09-P5: Master switch for SMS candidate communications (TCPA gated). setting hr_module_settings sms_notifications_enabled boolean setting hr_module_settings sms_phi_detection_mode text HR-09-P5: How bulk SMS composer reacts to PHI in message body (warn|block|off). setting hr_module_settings source_costs jsonb Configuration for recruitment source costs - monthly fees, per-post costs, referral bonuses setting hr_module_settings succession_readiness_performance_weight integer HR-16: Weight (0-100) for performance in readiness score calculation setting hr_module_settings succession_readiness_skills_weight integer HR-16: Weight (0-100) for skills in readiness score calculation setting hr_module_settings survey_default_reminder_days integer[] HR-17: Default reminder days before survey end date setting hr_module_settings talent_pipeline_review_frequency_days integer HR-16: Days between talent pipeline reviews setting hr_module_settings use_configurable_wizards boolean PF-41: Use configurable wizard templates instead of hardcoded wizards setting hr_module_settings use_enhanced_payroll_wizard boolean Enable 7-step PF-41 based payroll wizard setting it_module_settings approval_threshold_high numeric(12,2) setting it_module_settings approval_threshold_low numeric(12,2) setting it_module_settings approval_threshold_medium numeric(12,2) setting it_module_settings asset_depreciation_method text setting it_module_settings asset_tag_prefix text Prefix for auto-generated asset tags setting it_module_settings asset_tag_sequence integer setting it_module_settings auto_create_it_onboarding boolean setting it_module_settings auto_notify_stakeholders boolean setting it_module_settings auto_retirement_days integer setting it_module_settings auto_retirement_enabled boolean setting it_module_settings business_days integer[] Array of ISO weekday numbers (1=Monday, 7=Sunday) for SLA calculations setting it_module_settings business_hours_end time without time zone setting it_module_settings business_hours_start time without time zone setting it_module_settings cab_required_threshold text setting it_module_settings change_freeze_periods jsonb JSON array of {start_date, end_date, reason} objects setting it_module_settings change_lead_time_days integer setting it_module_settings change_request_prefix text setting it_module_settings change_request_sequence integer setting it_module_settings compliance_check_frequency text setting it_module_settings contract_alert_days integer[] setting it_module_settings contract_number_prefix text setting it_module_settings contract_number_sequence integer setting it_module_settings critical_vuln_alert_days integer setting it_module_settings custom_fields jsonb setting it_module_settings dashboard_refresh_interval_seconds integer setting it_module_settings default_new_hire_equipment jsonb setting it_module_settings default_sla_resolution_hours integer setting it_module_settings default_sla_response_hours integer setting it_module_settings deprovisioning_sla_hours integer setting it_module_settings emergency_change_requires_approval boolean setting it_module_settings enable_qr_codes boolean setting it_module_settings enable_sla_escalation boolean setting it_module_settings harvesting_inactivity_days integer setting it_module_settings high_vuln_alert_days integer setting it_module_settings incident_number_prefix text setting it_module_settings incident_number_sequence integer setting it_module_settings it_onboarding_template_id uuid setting it_module_settings kb_suggestion_limit integer Maximum number of suggested knowledge base articles shown when creating a ticket setting it_module_settings kpi_targets jsonb JSON object with KPI target values for dashboard widgets setting it_module_settings license_alert_days integer[] setting it_module_settings license_harvesting_enabled boolean setting it_module_settings offboarding_checklist_template_id uuid setting it_module_settings patch_compliance_target_percent integer setting it_module_settings provisioning_sla_hours integer setting it_module_settings purchase_order_prefix text setting it_module_settings purchase_order_sequence integer setting it_module_settings purchase_request_prefix text setting it_module_settings purchase_request_sequence integer setting it_module_settings require_assignment_approval boolean setting it_module_settings require_rollback_plan boolean setting it_module_settings require_three_quotes_above numeric(12,2) setting it_module_settings require_vendor_insurance boolean setting it_module_settings ticket_number_prefix text Prefix for auto-generated ticket numbers setting it_module_settings ticket_number_sequence integer setting it_module_settings true_up_reminder_days integer setting it_module_settings use_configurable_wizards boolean PF-41: Use configurable wizard templates when true; otherwise use hardcoded wizards. setting it_module_settings vendor_rating_enabled boolean setting it_module_settings vulnerability_scan_frequency text setting it_module_settings widget_preferences jsonb setting lo_module_settings ai_enabled boolean Enable AI features for Leadership OS module setting lo_module_settings custom_fields jsonb setting lo_module_settings default_article_visibility text private, team, organization setting lo_module_settings default_issue_priority text low, medium, high setting lo_module_settings default_meeting_duration_minutes integer setting lo_module_settings default_rock_duration_days integer setting lo_module_settings enable_article_ratings boolean setting lo_module_settings enable_gwc_assessments boolean setting lo_module_settings enable_issue_voting boolean setting lo_module_settings enable_meeting_notes boolean setting lo_module_settings enable_rock_notifications boolean setting lo_module_settings enable_vision_sharing boolean setting lo_module_settings gwc_assessment_frequency_days integer setting lo_module_settings issue_auto_archive_days integer setting lo_module_settings issue_number_prefix text Prefix for issue IDs (e.g., ISSUE) setting lo_module_settings issue_number_sequence integer Next sequence number for issue generation setting lo_module_settings max_rocks_per_quarter integer setting lo_module_settings meeting_number_prefix text Prefix for meeting IDs (e.g., MTG) setting lo_module_settings meeting_number_sequence integer Next sequence number for meeting generation setting lo_module_settings meeting_reminder_minutes integer setting lo_module_settings require_smart_validation boolean setting lo_module_settings rock_number_prefix text Prefix for quarterly rock IDs (e.g., ROCK) setting lo_module_settings rock_number_sequence integer Next sequence number for rock generation setting lo_module_settings scorecard_threshold_green numeric(5,2) setting lo_module_settings scorecard_threshold_yellow numeric(5,2) setting lo_module_settings smart_minimum_score integer setting lo_module_settings smart_wizard_enabled boolean setting lo_module_settings use_configurable_wizards boolean PF-41: Use configurable wizard templates when true; otherwise use hardcoded wizards. setting lo_module_settings version_retention_days integer setting lo_module_settings week_start_day integer 0=Sunday, 1=Monday, etc. setting pf_module_settings allowed_file_types text[] Array of allowed MIME types for file uploads. Organizations can customize this list. setting pf_module_settings analytics_events_retention_days integer setting pf_module_settings auto_version_templates boolean setting pf_module_settings bulk_operation_items_per_second integer Bulk operation processing rate (items per second). Range: 1-100. setting pf_module_settings bulk_operation_rollback_window_hours integer Hours after completion during which a bulk operation can be rolled back. Range: 1-168. setting pf_module_settings condition_cache_max_entries_per_org integer PF-32: Maximum cached condition evaluation entries per organization. Default 1000. setting pf_module_settings condition_evaluation_complexity_threshold integer PF-32: Number of conditions above which to use server-side evaluation. Default 5. setting pf_module_settings condition_metrics_retention_days integer PF-32: Days to retain condition evaluation metrics before archival. Default 90. setting pf_module_settings custom_fields jsonb setting pf_module_settings custom_metric_retention_days integer Days to retain pf_custom_metric_values. Enforced by retention job. Range: 30-365. setting pf_module_settings custom_metrics_enabled boolean When false, custom metrics routes/UI are hidden and SLA detection jobs skip this org. setting pf_module_settings data_retention_default_years integer Default retention period in years for data lifecycle management (1-100). Used as fallback when no entity-specific policy exists. setting pf_module_settings default_letterhead_id uuid setting pf_module_settings default_page_size integer Default number of items per page in data tables setting pf_module_settings default_widget_limit integer setting pf_module_settings device_trust_expiration_days integer setting pf_module_settings email_signature_allow_user_customization boolean Allow users to customize their personal signature setting pf_module_settings email_signature_require_disclaimer boolean Require compliance disclaimer on all signatures setting pf_module_settings email_signature_require_org_default boolean Require organization default signature before users can send emails setting pf_module_settings enabled_modules jsonb Controls which top-level modules are visible to users setting pf_module_settings enabled_nav_groups jsonb Controls nav group visibility, e.g., {"hr.ats": false} setting pf_module_settings export_download_link_expiration_days integer Signed download link TTL in days (1-30) setting pf_module_settings export_file_expiration_days integer Export file retention in days before cleanup (1-365) setting pf_module_settings export_max_size_mb integer Max export size in MB (10-5000) setting pf_module_settings export_queue_processing_rate_per_minute integer Max export jobs processed per minute per org (1-10) setting pf_module_settings feature_flag_cache_ttl_minutes integer setting pf_module_settings formatting_currency_code text ISO 4217 currency code for formatting (e.g., USD, EUR, GBP) setting pf_module_settings formatting_date_format text Date format pattern (e.g., MM/dd/yyyy, dd/MM/yyyy, yyyy-MM-dd) setting pf_module_settings formatting_locale text BCP 47 locale tag for number/date formatting (e.g., en-US, de-DE) setting pf_module_settings formatting_number_decimals integer Default decimal places for number formatting (0-10) setting pf_module_settings fw_service_role_event_expiry_hours integer Expiry window in hours for service-role published events (NFR-3.3). Default 24 hours. Events published via service role must include expires_at timestamp within this window. Range: 1-168 hours (1 week max). setting pf_module_settings fw_service_role_event_publishers jsonb Allowlist of service identities permitted to publish events via service role (NFR-3.3). JSONB array of service identity names/IDs. Used by Edge Function validation supplement for service-role event publishing. setting pf_module_settings headshot_allowed_styles text[] Available style identifiers setting pf_module_settings headshot_default_count integer Default headshots per job (10–200) setting pf_module_settings headshot_default_provider text Default AI provider setting pf_module_settings headshot_generation_enabled boolean Enable/disable AI headshot generation setting pf_module_settings headshot_monthly_limit integer Max headshot jobs per month (0–500) setting pf_module_settings headshot_upload_retention_days integer Source photo retention days (7–365) setting pf_module_settings integration_logs_retention_days integer setting pf_module_settings max_excel_preview_rows integer setting pf_module_settings max_file_size_bytes bigint Maximum file upload size in bytes (default 50MB) setting pf_module_settings pf_ai_template_gen_enabled boolean PF-64 Phase 2: Enables AI-powered template generation features (description-to-template, section suggestions). Default false; set per-org. setting pf_module_settings pf_templates_enabled boolean setting pf_module_settings query_performance_anomaly_new_pattern_alert boolean PF-52 Phase 6: Send notification when a new query pattern is detected setting pf_module_settings query_performance_anomaly_spike_alert boolean PF-52 Phase 6: Send notification when query execution time spikes above threshold setting pf_module_settings query_performance_anomaly_spike_threshold integer PF-52 Phase 6: Percentage increase over baseline p95 that triggers a spike alert (default 50%) setting pf_module_settings query_performance_capture_plan boolean PF-52 Phase 5: Enable execution plan capture at slow-query logging time (before redaction) setting pf_module_settings query_performance_log_retention_days integer Number of days to retain query performance log entries before cleanup. setting pf_module_settings query_performance_pattern_analysis boolean PF-52 Phase 6: Enable query fingerprint pattern clustering on the Patterns tab setting pf_module_settings query_performance_recommendations boolean PF-52 Phase 5: Enable index recommendation engine on the Recommendations tab setting pf_module_settings query_performance_slow_threshold_ms integer Slow query threshold in milliseconds; queries exceeding this are flagged and logged. setting pf_module_settings quota_default_api_calls_per_day integer Default API call quota per day (PF-43) setting pf_module_settings quota_default_custom_objects integer Default custom object quota (PF-43) setting pf_module_settings quota_default_grace_period_hours integer Default grace period in hours (PF-43) setting pf_module_settings quota_default_storage_gb numeric(15,2) Default storage quota in GB (PF-43) setting pf_module_settings quota_default_users integer Default user quota (PF-43) setting pf_module_settings quota_default_workflow_executions_per_day integer Default workflow execution quota per day (PF-43) setting pf_module_settings quota_violation_logging_interval_hours integer Min hours between logging duplicate soft violations (PF-43) setting pf_module_settings rate_limit_default_per_day integer Default rate limit per day for organizations without custom limits setting pf_module_settings rate_limit_default_per_hour integer Default rate limit per hour for organizations without custom limits setting pf_module_settings rate_limit_default_per_minute integer Default rate limit per minute for organizations without custom limits setting pf_module_settings rate_limit_violation_alert_threshold integer Alert platform admins after N violations per hour for an organization setting pf_module_settings realtime_fallback_poll_ms integer Polling interval (ms) when Realtime is disconnected. Default: 30000 (30s). setting pf_module_settings realtime_max_channels integer Maximum concurrent Supabase Realtime channels per browser client. Default: 20. setting pf_module_settings require_letterhead_on_export boolean setting pf_module_settings search_debounce_ms integer Debounce delay for search inputs in milliseconds setting pf_module_settings security_failed_login_threshold_per_hour integer Number of failed logins from same IP per hour before triggering suspicious_activity. Range: 1-100. setting pf_module_settings security_suspicious_activity_window_hours integer Time window (hours) for evaluating suspicious activity patterns. Range: 1-168. setting pf_module_settings server_side_condition_evaluation_enabled boolean PF-32: Enable server-side condition evaluation for complex forms. Default false. setting pf_module_settings session_expiration_hours integer setting pf_module_settings session_pii_retention_days integer setting pf_module_settings signature_expiration_hours integer setting pf_module_settings signature_reminder_hours integer setting pf_module_settings swim_lane_builder_enabled boolean PF-73: Enable/disable swim lane builder for the organization setting pf_module_settings validation_async_timeout_ms integer PF-55: Async validation timeout in ms (1000-30000). Default 5000. setting pf_module_settings validation_default_phone_format text PF-55: Default phone format for validation (us | international). setting pf_transcription_module_settings audio_retention_days integer setting pf_transcription_module_settings custom_fields jsonb setting pf_transcription_module_settings default_llm_vendor text setting pf_transcription_module_settings default_stt_vendor text setting pf_transcription_module_settings default_template_id uuid setting pf_transcription_module_settings enable_part2_handling boolean setting pf_transcription_module_settings enable_phi_detection boolean setting pf_transcription_module_settings is_enabled boolean setting pf_transcription_module_settings monthly_cost_alert_threshold_usd numeric(10,2) setting pf_transcription_module_settings per_session_cost_alert_threshold_usd numeric(10,2) setting pf_transcription_module_settings require_mfa_for_attestation boolean setting pf_transcription_module_settings retain_audio boolean setting pf_transcription_module_settings transcript_retention_days integer setting pm_module_settings ahcccs_compliance_window_hours integer PM-41: AHCCCS compliance window in hours (24-168) setting pm_module_settings ahcccs_min_billable_minutes integer PM-07: Minimum minutes for AHCCCS timed billing (default 8) setting pm_module_settings ai_coding_confidence_threshold numeric(3,2) PM-64: min confidence to surface suggestion (default 0.60) setting pm_module_settings ai_coding_cost_cap_per_suggestion numeric(5,2) PM-64: max USD per suggestion (default $0.05) setting pm_module_settings ai_coding_enabled boolean PM-64: master switch for AI coding suggestions setting pm_module_settings appointment_reminder_days_first integer First reminder: days before appointment (default 7) setting pm_module_settings appointment_reminder_days_second integer Second reminder: days before appointment (default 1) setting pm_module_settings auth_alert_intervals_days jsonb PM-47: Array of days-before-expiration to trigger alerts (e.g., [14,7,3,1]) setting pm_module_settings auth_unit_warning_threshold_pct numeric(5,2) PM-47: Percentage of authorized units used that triggers a warning (e.g., 80.00) setting pm_module_settings auto_apply_modifiers boolean setting pm_module_settings auto_approval_threshold numeric(12,2) setting pm_module_settings auto_calculate_encounter_cost boolean setting pm_module_settings batch_async_threshold integer PM-24: Above this count use async execution with progress dialog (default 50). setting pm_module_settings batch_size_max integer PM-24: Max items per batch operation (default 200). setting pm_module_settings bh_block_grant_modifiers text[] setting pm_module_settings billing_provider_npi text Billing provider NPI used for claim generation (PM-08). Configured in PM Settings. setting pm_module_settings charge_recon_charge_lag_days integer Days after encounter before flagging missing charge. Default 3. Range 1-30. setting pm_module_settings charge_recon_claim_lag_days integer Days after charge before flagging missing claim. Default 5. Range 1-60. setting pm_module_settings charge_recon_detect_duplicates boolean Enable/disable duplicate charge detection. Default true. setting pm_module_settings charge_recon_detect_zero_amount boolean Enable/disable zero-amount charge detection. Default true. setting pm_module_settings charge_recon_enabled boolean Enable/disable nightly charge reconciliation job. Default true. setting pm_module_settings charge_recon_payment_lag_days integer Days after claim before flagging missing payment. Default 45. Range 7-365. setting pm_module_settings charge_review_required_roles text[] PM-07: Roles that must review/approve charges setting pm_module_settings checkin_eligibility_enabled boolean setting pm_module_settings checkin_eligibility_notification_enabled boolean setting pm_module_settings checkin_eligibility_timeout_seconds integer setting pm_module_settings claim_filing_deadline_days integer Days from service date to file a claim (default 365) setting pm_module_settings claim_number_prefix text setting pm_module_settings claim_number_sequence integer setting pm_module_settings clean_claim_threshold_percent integer Target clean claim rate percentage (default 95) setting pm_module_settings cob_order_change_triggers_reverification boolean setting pm_module_settings cob_secondary_claim_auto_trigger boolean setting pm_module_settings concurrent_review_lead_days integer PM-47: Days before review due date to surface in worklist (e.g., 7) setting pm_module_settings cost_accounting_enabled boolean setting pm_module_settings court_deadline_warning_days integer Days-out threshold for court deadline warning indicator setting pm_module_settings crossover_routing text setting pm_module_settings custom_fields jsonb Organization-specific metadata setting pm_module_settings days_in_ar_target integer Target days in accounts receivable (default 45) setting pm_module_settings default_fee_schedule_id uuid PM-07: Default fee schedule for charge capture when none specified setting pm_module_settings default_place_of_service text PM-07: Default POS code for new charges setting pm_module_settings denial_appeal_default_days integer setting pm_module_settings denial_bulk_resubmit_batch_size integer setting pm_module_settings denial_prediction_enabled boolean Master toggle for AI denial prediction feature. setting pm_module_settings denial_prediction_high_risk_threshold integer Risk score threshold (0-100) above which claims are classified as high-risk. setting pm_module_settings documentation_window_hours integer PM-07: Window in hours to capture charge from note (default 48) setting pm_module_settings edi_stall_threshold_days integer Number of days an enrollment can remain in pending_payer status before being flagged as stalled setting pm_module_settings eligibility_check_frequency text When to check insurance eligibility: per_encounter, daily, weekly setting pm_module_settings era_recon_ai_lookback_days integer Number of historical days used for AI pattern detection analysis setting pm_module_settings era_recon_auto_enabled boolean Whether ERA reconciliation runs automatically on payment posting setting pm_module_settings era_recon_variance_threshold numeric(10,2) Minimum dollar variance to flag an ERA claim line as underpaid setting pm_module_settings estimate_validity_days integer Number of days a cost estimate remains valid before requiring refresh setting pm_module_settings fhir_patient_access_enabled boolean PM-55: Enables FHIR Patient Access API (SMART App Launch v2.0). Per-tenant feature flag for phased rollout. setting pm_module_settings financial_clearance_threshold numeric(10,2) Patient responsibility amount that triggers auto-referral to financial counseling (PM-32) setting pm_module_settings intake_auto_schedule_enabled boolean PM-38: Whether automated intake appointment scheduling is enabled setting pm_module_settings intake_match_availability_days integer PM-38: Number of days ahead to search for provider availability (1-30) setting pm_module_settings intake_match_max_latency_sec integer PM-38: Maximum seconds allowed for matching algorithm execution (1-60) setting pm_module_settings intake_override_alert_pct integer PM-38: Override percentage threshold that triggers alerts (1-100) setting pm_module_settings kiosk_consent_signing_enabled boolean When true, kiosk includes consent form signing step. setting pm_module_settings kiosk_copay_collection_enabled boolean When true, kiosk includes copay collection step. setting pm_module_settings kiosk_enabled boolean Enable/disable kiosk self-service check-in for this organization. setting pm_module_settings kiosk_inactivity_timeout_seconds integer Seconds of inactivity before kiosk session times out. Default 90s. Range 30-300. setting pm_module_settings kiosk_insurance_card_capture_enabled boolean When true, kiosk includes insurance card photo capture step. setting pm_module_settings max_plan_duration_months integer PM-45: Maximum payment plan duration in months setting pm_module_settings min_installment_amount numeric(12,2) PM-45: Minimum monthly installment for payment plans setting pm_module_settings missed_payments_default_threshold integer PM-45: Consecutive missed payments before plan defaults setting pm_module_settings mrn_auto_generate boolean When true, MRN is auto-generated on patient registration setting pm_module_settings mrn_prefix text Prefix for auto-generated Medical Record Numbers (e.g. MRN-) setting pm_module_settings no_show_risk_alert_threshold integer PM-41: No-show risk score threshold for alerts (50-95) setting pm_module_settings patient_merge_undo_window_hours integer PM-01-EN-01: Hours after a patient merge during which an authorized user may undo it. setting pm_module_settings payment_number_prefix text setting pm_module_settings payment_number_sequence integer setting pm_module_settings portal_packet_default_due_days integer PM-12-EN-01: Default number of days from assignment to packet due date. setting pm_module_settings portal_packet_reminder_cadence_hours integer setting pm_module_settings portal_packet_required_item_types jsonb setting pm_module_settings portal_packet_scheduling_block_enabled boolean PM-12-EN-01: When true, scheduling is blocked until required packet items are completed. setting pm_module_settings rcm_override_window_hours integer Hours within which automated actions can be manually overridden setting pm_module_settings rcm_queue_claim_lock_hours integer Hours a claimed work queue item is locked to the specialist setting pm_module_settings rcm_queue_weight_aging numeric(3,2) AR queue scoring weight for aging tier (0.00-1.00) setting pm_module_settings rcm_queue_weight_balance numeric(3,2) AR queue scoring weight for balance amount (0.00-1.00) setting pm_module_settings rcm_queue_weight_payer_rate numeric(3,2) AR queue scoring weight for payer collection rate (0.00-1.00) setting pm_module_settings rcm_queue_weight_service numeric(3,2) AR queue scoring weight for service type value (0.00-1.00) setting pm_module_settings recred_alert_lead_days integer PM-17: Days before recert_due_on to raise re-credentialing alerts (default 90, range 7-365). setting pm_module_settings referral_number_prefix text setting pm_module_settings referral_number_sequence integer setting pm_module_settings referral_sla_default_hours integer Default SLA window (hours) for new inbound referrals setting pm_module_settings reminder_channels text[] Active delivery channels for appointment reminders: sms, email, voice setting pm_module_settings reminder_email_template text Email body template. Same merge fields as SMS. setting pm_module_settings reminder_sms_template text SMS message template. Merge fields: {{patient_name}}, {{appointment_date}}, {{appointment_time}}, {{provider_name}}, {{organization_name}} setting pm_module_settings reminder_voice_template text Voice/IVR script template. Same merge fields as SMS. setting pm_module_settings small_balance_writeoff_threshold numeric(12,2) PM-45: Balances below this auto-qualify for write-off setting pm_module_settings snapshot_retention_days integer setting pm_module_settings telehealth_default_platform text PM-13: Default platform (stub, zoom, doxy). setting pm_module_settings telehealth_recording_retention_days integer PM-13: Recording retention days. setting pm_module_settings telehealth_require_consent_every_encounter boolean PM-13: Re-obtain consent per encounter. setting pm_module_settings use_configurable_wizards boolean PF-41: Use configurable wizard templates when true; otherwise use hardcoded wizards. setting pm_module_settings waitlist_abandon_risk_alert_threshold integer PM-41: Waitlist abandon risk score threshold for alerts (50-95) setting pm_module_settings writeoff_approval_threshold numeric(12,2) PM-45: Dollar threshold requiring director-level write-off approval setting pm_rpa_module_settings default_retry_count integer Default retry count for new bot configurations (0-10) setting pm_rpa_module_settings failure_alert_threshold integer Consecutive bot execution failures before alerting RPA admins (1-20) setting pm_rpa_module_settings max_concurrent_sessions integer Maximum simultaneous headless browser sessions per organization (1-20) setting rh_module_settings ai_enabled boolean Enable AI features for Recovery Housing module setting rh_module_settings audit_critical_response_hours integer Required response time for critical audit findings in hours setting rh_module_settings audit_major_response_days integer Required response time for major audit findings in days setting rh_module_settings audit_minor_response_days integer Required response time for minor audit findings in days setting rh_module_settings audit_observation_response_days integer Required response time for audit observations in days setting rh_module_settings auto_assign_beds_from_waitlist boolean setting rh_module_settings auto_create_invoices boolean setting rh_module_settings auto_save_interval_seconds integer Interval in seconds for auto-saving wizard and form drafts. Range: 10-300 seconds. setting rh_module_settings curfew_grace_period_minutes integer setting rh_module_settings custom_fields jsonb Organization-specific module configuration. Examples: {"default_payment_method": "check", "require_sponsor_approval": true, "grace_period_override_days": 3, "custom_phase_names": {"1": "Orientation", "2": "Foundation"}, "intake_form_id": "frm_123"} setting rh_module_settings default_stay_duration_days integer setting rh_module_settings discharge_planning_initiation_days integer Days before planned discharge date to begin discharge planning process. Range: 7-90 days. setting rh_module_settings draft_expiration_days integer Number of days before unsaved wizard drafts expire and are deleted. Range: 1-90 days. setting rh_module_settings email_sender_address text Optional per-module email sender address (e.g. admissions@domain.com). Falls back to org default if null. setting rh_module_settings integrate_with_fa boolean setting rh_module_settings integrate_with_hr boolean setting rh_module_settings license_expiry_warning_days integer setting rh_module_settings minimum_attendance_percentage numeric(5,2) setting rh_module_settings outcome_follow_up_days integer[] Array of days post-discharge to schedule outcome follow-up assessments (e.g., 7, 30, 90, 180, 365). setting rh_module_settings phase_1_duration_days integer setting rh_module_settings phase_2_duration_days integer setting rh_module_settings phase_3_duration_days integer setting rh_module_settings phase_4_duration_days integer setting rh_module_settings resident_number_prefix text setting rh_module_settings resident_number_sequence integer setting rh_module_settings use_configurable_wizards boolean PF-41: Use configurable wizard templates instead of hardcoded wizards setting rh_module_settings waitlist_priority_by_referral_date boolean ``` # shared — Public API surface Source: https://docs.encoreos.io/api/shared Per-symbol API documentation for the shared area, generated from TSDoc blocks. Refresh with `npm run docs:api:generate`. # shared — Public API surface ## Types & interfaces ### type AppIconProps * file: src/shared/ui/icon.tsx:156 * kind: type * core: shared * spec: (none) * summary: Decorative icons ( defaults to ) get and forbid . Meaningful icons () require so screen readers announce them. * score: 2 ### type AppIconTone * file: src/shared/ui/icon.tsx:75 * kind: type * core: shared * spec: (none) * summary: Semantic tone keys — map 1:1 to existing semantic color tokens defined in and consumed by in. Dark mode and PF-95 tenant themingapply automatically; no new CSS variables. * score: 2 ### type AppIconVariant * file: src/shared/ui/icon.tsx:105 * kind: type * core: shared * spec: (none) * summary: Visual variant. is the default Lucide line look; fills the glyph. * score: 2 ### type AppIconWeight * file: src/shared/ui/icon.tsx:108 * kind: type * core: shared * spec: (none) * summary: Stroke-width shorthand. prop, when passed, always wins. * score: 2 ### interface BarShapeProps * file: src/shared/lib/recharts-types.ts:8 * kind: interface * core: shared * spec: (none) * summary: Props passed to custom Bar shape renderers * score: 2 ### interface BillingProvider837I * file: src/shared/lib/x12/x12-837i.ts:13 * kind: interface * core: shared * spec: (none) * summary: PM-08-EN-14: Pure X12 837I Institutional Claim GeneratorGenerates ANSI X12 837I (005010X223A2) claim segments. Does NOT build theISA/GS/ST envelope — pair with the envelope builder in (Deno) when serializing.Pure: no React, no Supabase, no Deno globals. Safe for Vitest + browser.A Deno mirror lives at for edge-function consumption (kept in lockstep — update both). * score: 2 ### interface BuildErrorToastOptions * file: src/shared/lib/error-utils.ts:166 * kind: interface * core: shared * spec: (none) * summary: Options controlling how formats its payload. * score: 2 ### type CalendarProps * file: src/shared/ui/calendar.tsx:16 * kind: type * core: shared * spec: (none) * summary: Calendar component with enhanced mobile touch targets.Touch target sizes (WCAG 2.5.8 compliant):- Navigation buttons: 44x44px minimum- Day cells: 44x44px minimum- Head cells: 44px width for alignment * score: 2 ### interface CollapsedNavTriggerProps * file: src/shared/ui/trigger-wrapper.tsx:101 * kind: interface * core: shared * spec: (none) * summary: Icon-based nav trigger (collapsed sidebar pattern)Uses button element for proper Radix UI TooltipTrigger compatibility * score: 2 ### type DestructiveToastPayload * file: src/shared/lib/error-utils.ts:159 * kind: type * core: shared * spec: (none) * summary: Standardized payload for a destructive (error) toast notification. * score: 2 ### type DiffType * file: src/shared/lib/semantic-colors.ts:261 * kind: type * core: shared * spec: (none) * summary: Diff Visualization ColorsFor version comparison UIs showing added, removed, modified changes. * score: 2 ### type DomainStatus * file: src/shared/lib/semantic-colors.ts:98 * kind: type * core: shared * spec: (none) * summary: Domain Status → Icon ToneAliases for product/business statuses (workflow lifecycle, approvals,scheduling, billing, clinical) that map back to the six core values — and therefore to existings. No new CSS tokens; no expansion of .Use this when a UI needs for a status string thatisn't one of the core six (e.g. , , ).Unknown keys fall back to so the UI never breaks.Keep alphabetized within each lifecycle group below to make additionsobvious in code review. * example: | AppIcon icon=CheckCircle2 size="sm" tone=domainStatusToIconTone(claim.status) / * score: 5 ### interface EstimatorBenefitInputs * file: src/shared/lib/pm/benefit-estimator.ts:15 * kind: interface * core: shared * spec: (none) * summary: PM-02-EN-02: Benefit Estimator (pure logic)Calculates patient out-of-pocket responsibility for a single encountergiven a normalized benefit detail row and the contracted/fee-scheduleamount for the CPT.Pure and synchronous — mirror-maintained atsupabase/functions/\_shared/pm/benefit-estimator.ts.See PM-02-EN-02-CONTEXT.md § D3. shared/lib/pm/benefit-estimator * score: 2 ### type FederalBaseline * file: src/shared/lib/state-compliance/federal-baseline.ts:17 * kind: type * core: shared * spec: (none) * summary: GR-06-EN-01: Federal Baseline Evaluation HelperPure helper that evaluates whether a proposed AI compliance recommendationweakens the federal baseline. Used as the second enforcement layer (afterthe AI system prompt) per CONTEXT.md decision §1 (two-layer enforcement).Field semantics: - time-based (, ) - recommendation must be ≤ baseline (shorter or equal) - count-based (, ) - recommendation must be ≥ baseline (larger or equal) - enum/array (, ) - recommendation must be a superset (union) - boolean (, ) - if baseline is , recommendation must remain * see: * specs/gr/specs/GR-06-EN-01-ai-state-compliance-checking.md §FR-2 federal baseline enforcement * score: 5 ### type InferSchema * file: src/shared/lib/validation/schema-builders.ts:256 * kind: type * core: shared * spec: (none) * summary: Extracts the inferred type from a schema * score: 2 ### type InferSchemaInput * file: src/shared/lib/validation/schema-builders.ts:261 * kind: type * core: shared * spec: (none) * summary: Extracts the input type from a schema (before transforms) * score: 2 ### type InferSchemaOutput * file: src/shared/lib/validation/schema-builders.ts:266 * kind: type * core: shared * spec: (none) * summary: Extracts the output type from a schema (after transforms) * score: 2 ### type NullToUndefined * file: src/shared/lib/utils/type-utils.ts:22 * kind: type * core: shared * spec: (none) * summary: Type that converts all null values in an object type to undefined.Useful for converting Supabase Row types to form-compatible types. * example: | type DbRow = name: string; email: string | null ;type FormValues = NullToUndefinedDbRow;// Result: name: string; email: string | undefined * score: 5 ### interface ParsedEbSegment * file: src/shared/lib/pm/benefit-parser.ts:18 * kind: interface * core: shared * spec: (none) * summary: Subset of EB-loop fields produced by the clearinghouse adapter. * score: 2 ### type PartialNullToUndefined * file: src/shared/lib/utils/type-utils.ts:30 * kind: type * core: shared * spec: (none) * summary: Type that makes all properties optional and converts nulls to undefined.Useful for partial form updates. * score: 2 ### interface PHIPattern * file: src/shared/lib/phi-detection.ts:15 * kind: interface * core: shared * spec: (none) * summary: A single PHI/PII detection pattern with a human-readable label. * score: 2 ### interface PieLabelProps * file: src/shared/lib/recharts-types.ts:21 * kind: interface * core: shared * spec: (none) * summary: Props passed to Pie label render functionBased on Recharts PieLabelRenderProps but with optional fields * score: 2 ### interface ProcedureGapEventPayload * file: src/shared/lib/gr/buildQIDraftFromGap.ts:14 * kind: interface * core: shared * spec: (none) * summary: GR-13-EN-01: Build a draft QI project from a event payload.Pure function — no Supabase, no Deno, no I/O. Used by the edge function handler() and unit-tested directly.Payload shape mirrors the publisher in : organization\_id, procedure\_id, procedure\_title, category, completion\_rate\_pct, overdue\_count, exported\_by, exported\_at * score: 2 ### type QIProjectCategory * file: src/shared/lib/gr/buildQIDraftFromGap.ts:37 * kind: type * core: shared * spec: (none) * summary: Categories accepted by .Source: migration enforcing CHECK (category IN (...)) on . * score: 2 ### type RecommendationLevel * file: src/shared/lib/semantic-colors.ts:196 * kind: type * core: shared * spec: (none) * summary: Recommendation/Rating Scale ColorsFor 5-point scales commonly used in HR evaluations, interviews, etc.Maps to semantic tokens while maintaining visual distinction. * score: 2 ### interface ScrollAreaProps * file: src/shared/ui/scroll-area.tsx:17 * kind: interface * core: shared * spec: (none) * summary: ScrollArea component with enhanced mobile scroll behavior.Features:- iOS momentum scrolling via -webkit-overflow-scrolling: touch- Optional overscroll containment to prevent scroll chaining- Customizable scrollbar orientation * see: * [https://developer.mozilla.org/en-US/docs/Web/CSS/overscroll-behavior](https://developer.mozilla.org/en-US/docs/Web/CSS/overscroll-behavior) * score: 5 ### interface ServiceTypeMapping * file: src/shared/lib/pm/service-type-mapper.ts:16 * kind: interface * core: shared * spec: (none) * summary: PM-02-EN-02: Service Type MapperMaps X12 271 EB service type codes to user-friendly behavioral-healthcategories and labels. v1 ships a hardcoded default mapping; per-payeroverrides are deferred (see CONTEXT.md "Open Questions").NOTE: This file is mirror-maintained at supabase/functions/\_shared/pm/service-type-mapper.tsEdge Functions cannot import / aliases; if logic changes here, updatethe mirror copy as well. See PM-02-EN-02-CONTEXT.md § D3. shared/lib/pm/service-type-mapper * score: 2 ### interface StatusIndicatorTriggerProps * file: src/shared/ui/trigger-wrapper.tsx:130 * kind: interface * core: shared * spec: (none) * summary: Status indicator trigger (dashboard sync, stale data patterns) * score: 2 ## Hooks ### hook useAutoAnimate * file: src/shared/lib/hooks/use-auto-animate.ts:105 * kind: hook * core: shared * spec: (none) * summary: Extended auto-animate hook with preset support * params: * options — Animation options or preset name * returns: Tuple of \[parent ref, enable/disable function] * score: 4 ### hook useDebounce * file: src/shared/lib/hooks/use-debounce.ts:20 * kind: hook * core: shared * spec: none * summary: Returns a debounced copy of that only updates after ms havepassed without further changes. Useful for search inputs, autosave drafts,and any expensive effect that should wait until the user stops typing.Cleans up the timer on unmount and on every value/delay change so callersdo not need to track ids themselves. * params: * value — The source value to debounce; type is preserved via generic . * delay — Milliseconds of quiet time required before the debouncedvalue updates (typical: 150–400 for search). * returns: The latest that has remained stable for ms. * example: | const debouncedQuery = useDebounce(query, 250);useEffect(() = runSearch(debouncedQuery); , \[debouncedQuery]); * score: 5 ### hook useDockBlurPreset * file: src/shared/lib/hooks/useDockBlurPreset.ts:57 * kind: hook * core: shared * spec: none * summary: Reads the user's persisted dock/header backdrop-blur preset from (defaulting to ), syncs the active value to the CSS variable on via an effect, and exposes a setterplus a toggle that flips between the two presets: - - 8px (more underlay detail visible, lighter perf cost) - - 24px (deeper frosted-glass look, default)Both and consume so thechange applies instantly without re-rendering the dock surfaces. SSR-safe:skips / access when those globals are unavailable, andsilently swallows write failures (private-browsing / quota). * returns: An object with the current , a writerthat also persists to localStorage, and a helper that flipsbetween and . * example: | const preset, toggle = useDockBlurPreset();Switch checked=preset === 'high' onCheckedChange=toggle / * score: 5 ### hook useEntityBreadcrumb * file: src/shared/lib/hooks/useEntityBreadcrumb.ts:18 * kind: hook * core: shared * spec: (none) * summary: Sets a breadcrumb label from entity data * params: * data — The entity data (can be undefined while loading) * labelExtractor — Function to extract the label from the data * score: 4 ### hook useFormBuilderAnimation * file: src/shared/lib/hooks/use-auto-animate.ts:135 * kind: hook * core: shared * spec: none * summary: Specialized wrapper tuned for the form-builder field list:applies the preset (200ms ease-out, respects) so drag-and-drop reordering and insertion animatesmoothly without distracting from the editing surface. * returns: Tuple of from —attach to the container of the animated children; call to suspend animations (e.g. during bulk imports). * example: | const \[fieldsRef] = useFormBuilderAnimation();div ref=fieldsReffields.map((f) = FieldCard key=f.id field=f /)/div * score: 5 ### hook useIsMobile * file: src/shared/lib/hooks/use-mobile.tsx:27 * kind: hook * core: shared * spec: (none) * summary: Returns when the viewport is narrower than 768 px.Initial state is read synchronously from to eliminatethe desktop-chrome hydration flash that v1 of this hook caused on realmobile devices (PR-3.1 in the mobile-gestures consistency plan).Use this hook in preference to . See for non-standard breakpoints. * score: 4 ### hook useListAnimation * file: src/shared/lib/hooks/use-auto-animate.ts:157 * kind: hook * core: shared * spec: none * summary: Default-preset wrapper for general-purpose listcontainers: 250ms ease-in-out fades and reflows when items are added,removed, or reordered. Use as a drop-in for typical lists without choosinga preset explicitly. * returns: Tuple of from .Attach to the list container and toggle topause animations for the lifetime of the component. * example: | const \[listRef] = useListAnimation();ul ref=listRefitems.map((i) = li key=i.idi.name/li)/ul * score: 5 ### hook useMediaQuery * file: src/shared/lib/hooks/use-media-query.ts:17 * kind: hook * core: shared * spec: (none) * summary: Generic media-query hook.Use this for **non-standard breakpoints** (e.g. 1024 px desktop boundary,, , etc.). * score: 4 ### hook usePrefetch * file: src/shared/lib/hooks/usePrefetch.ts:70 * kind: hook * core: shared * spec: none * summary: Returns a helper that warm-imports the lazy chunk fora known module / page on demand (typically called from / on a navigation link). Each route is preloaded at most once persession, tracked in a module-level . Failed imports (offline, missingchunk) are silently swallowed so the cache can retry later — prefetch isalways best-effort and never surfaces errors to the user. * returns: An object exposing ; unknown routesare a no-op so callers can pass any string defensively. * example: | const preloadRoute = usePrefetch();Link to="/rh" onMouseEnter=() = preloadRoute('/rh')Recovery Housing/Link * score: 5 ### hook useSafeAreaInsetSync * file: src/shared/lib/hooks/useSafeAreaInsetSync.ts:18 * kind: hook * core: shared * spec: (none) * summary: Keeps the CSS variables on in sync with the live values acrossorientation changes.iOS Safari (and some Android browsers) do not refresh valuessynchronously on — they wait for the next layout/scroll,which leaves fixed surfaces (dock, FAB, MobileHeader, BottomTabBar) usingstale insets and visibly misaligned for a beat after rotation.We read the resolved env values from a hidden probe element and write themas explicit pixel values onto , overriding the stale resolutionuntil the browser catches up. Existing consumers automatically pick up therefreshed values because they already read . * score: 4 ### hook useTabVisibility * file: src/shared/lib/hooks/use-tab-visibility.ts:38 * kind: hook * core: shared * spec: none * summary: Subscribes to the document event and returns whether thecurrent tab is foregrounded. Useful for pausing polling, websockets, orrealtime subscriptions when the tab is hidden to conserve battery andnetwork. SSR-safe: returns and skips the listener when isnot defined. * returns: when the tab is visible (), when hidden. The value updates synchronously as the user switchestabs or minimizes the window. * example: | const isVisible = useTabVisibility();useQuery( queryKey: \['inbox'], queryFn: fetchInbox, refetchInterval: isVisible ? 30\_000 : false,); * score: 5 ### hook useWizardAnimation * file: src/shared/lib/hooks/use-auto-animate.ts:179 * kind: hook * core: shared * spec: none * summary: Slow-preset wrapper for wizard step transitions: 400msease-in-out, deliberately more visible than so usersnotice that the page has advanced from one step to the next. Honors via the underlying library. * returns: Tuple of from .Attach to the step-container element so each rendered stepfades / slides into place when changes. * example: | const \[stepRef] = useWizardAnimation();div ref=stepRefrenderStep(currentStep)/div * score: 5 ## Components ### component AreaNavigationCard * file: src/shared/components/AreaNavigationCard.tsx:59 * kind: component * core: shared * spec: none * summary: Renders a clickable card that links to a functional area, used on moduleoverview pages to surface sub-areas with a leading icon, headline metrics,and up to three quick-link buttons. Whole-card click navigates to ;quick-link buttons stop propagation so they navigate independently. Keyboardaccessible (Enter / Space) with descriptive and a 44x44 hittarget on each quick-link button. * params: * props — , , (lucide), and arerequired. renders inline KPI tiles (with variants); renders the firstthree as small outlinebuttons. is merged onto the Card. * example: | AreaNavigationCard title="Recovery Housing" description="Beds, residents, and house policies" icon=Home route="/rh" metrics=\[ label: 'Open beds', value: 12 ] quickLinks=\[ label: 'Residents', route: '/rh/residents' ]/ * score: 5 ### component BackNav * file: src/shared/components/BackNav.tsx:57 * kind: component * core: shared * spec: (none) * summary: Standardized back-navigation control (outline button with visible label).Prominent by default — labeled + bordered so users can easily locate it onboth desktop and mobile. Use for icon-only mode.When is provided alongside , a history-aware wrapperfires if in-app history exists, otherwise navigates to . * score: 2 ### component CardActionsMenu * file: src/shared/components/CardActionsMenu.tsx:43 * kind: component * core: shared * spec: (none) * summary: CardActionsMenu - A consistent actions dropdown for cardsFeatures:- Touch-safe sizing (44x44px on mobile, 32x32px on desktop)- Optional hover-reveal behavior (always visible on mobile)- Uses semantic design tokens onlyUsage:Note: Parent card should have class for hover-reveal to work * score: 2 ### component CardContentCompact * file: src/shared/components/CardContentVariants.tsx:18 * kind: component * core: shared * spec: (none) * summary: CardContentCompact - Reduced padding for dense contentUse for: Dashboard widgets, list items, compact cards * score: 2 ### component CardContentFlush * file: src/shared/components/CardContentVariants.tsx:42 * kind: component * core: shared * spec: (none) * summary: CardContentFlush - No padding, for edge-to-edge contentUse for: Tables, images, custom layouts that need full width * score: 2 ### component CardContentSpacious * file: src/shared/components/CardContentVariants.tsx:30 * kind: component * core: shared * spec: (none) * summary: CardContentSpacious - Extra padding for prominent contentUse for: Hero sections, empty states, feature highlights * score: 2 ### component ConfirmationDialog * file: src/shared/components/ConfirmationDialog.tsx:56 * kind: component * core: shared * spec: (none) * summary: ConfirmationDialogA reusable confirmation dialog that replaces native window\.confirm().Supports different variants for different action types, and an optionaltype-to-confirm gate for irreversible actions. * score: 5 ### component DatePicker * file: src/shared/ui/date-picker.tsx:39 * kind: component * core: shared * spec: none * summary: Accessible single-date picker built on a Popover + the shadcn component. The trigger is a 44px-tall outline button that displays theselected date in long-form ( via ) or the placeholder whenunset. The trigger's swaps between "Selected date: …" and"Choose date" so screen readers always announce current state. Use forform fields where a relative or natural date is more user-friendly than araw . * params: * props — is required (controlled component). Provide for the current selection, (default ), to lock the trigger, and to extend the triggerbutton styling (e.g. width overrides). * example: | DatePicker date=value onDateChange=setValue placeholder="Admit date" / * score: 5 ### component DetailPageLayout * file: src/shared/components/DetailPageLayout.tsx:64 * kind: component * core: shared * spec: (none) * summary: DetailPageLayout provides a consistent structure for entity detail pages:- PageContainer for responsive padding, max-width, and optional breadcrumbs- PageHeader (title, description, icon, actions, meta)- Loading state support (full-page skeleton)- Body slot for tabs, cards, or stacked sections * score: 2 ### component EmptyState * file: src/shared/components/EmptyState.tsx:132 * kind: component * core: shared * spec: none * summary: Renders a centered empty-state block with an icon (or fan of up to threeicons that animate on hover), a title, optional description, and anoptional action button. When no explicit / is provided thecomponent picks a glyph from ( for default, forfirst-run, for no-results, for no-permission, for error). Three size tiers () drive padding, icon size, andthe description column width. * params: * props — is required; other props customize the icon (single, multi fan, or implicit via ), , (label + onClick), visual (), and . Apply for layout overrides. * example: | EmptyState kind="no-results" title="No residents match your filters" description="Try clearing the date range or status filter." action= label: 'Clear filters', onClick: resetFilters / * score: 5 ### component ErrorState * file: src/shared/components/ErrorState.tsx:113 * kind: component * core: shared * spec: (none) * summary: Standardized error state for full-page / full-card surfaces. * score: 2 ### component GlobalQueryProgress * file: src/shared/components/GlobalQueryProgress.tsx:111 * kind: component * core: shared * spec: (none) * summary: Renders a fixed, indeterminate progress bar tied to global query activity. * score: 2 ### component HexSpinner * file: src/shared/components/HexSpinner.tsx:34 * kind: component * core: shared * spec: (none) * summary: Renders the branded cube spinner used by route and inline loading states. * score: 2 ### component HexSplash * file: src/shared/components/HexSplash.tsx:11 * kind: component * core: shared * spec: (none) * summary: Displays the full-screen branded loading state used during initial app boot. * score: 2 ### component InfoTooltip * file: src/shared/components/InfoTooltip.tsx:43 * kind: component * core: shared * spec: none * summary: Renders a small icon button that reveals contextual help text in a Radixtooltip on hover, focus, or tap. The trigger is a 44x44 button (touch-targetcompliant) and the tooltip content is constrained to with so it works well next to form labels and dense table headers. * params: * props — Props for the tooltip, including (the help body),optional (aria-label, default "More info"), placement, custom (default from lucide-react), and class overrides for thetrigger, icon, and content elements. defaults to 0 so thetooltip appears immediately on hover. * example: | InfoTooltip content="Members enrolled in the last 30 days" side="right" label="About new members"/ * score: 5 ### component Kbd * file: src/shared/ui/kbd.tsx:28 * kind: component * core: shared * spec: none * summary: Renders a styled element that visually represents a single keyboardkey for use inside shortcut hints (command palette, tooltips, help dialogs).Sized to 24x24 minimum so it does not destabilize inline text height, andstyled with plus a subtle border + bottom shadow to read as aphysical key cap on both light and dark themes. * params: * props — is the key label (a string like / ora small JSX fragment); pass to extend or override the defaultstyling (e.g. wider keys like ). * example: | Press KbdgetModifierKey()/Kbd + KbdK/Kbd to open the command palette. * score: 5 ### component ListFilterBar * file: src/shared/components/ListFilterBar.tsx:85 * kind: component * core: shared * spec: none * summary: Renders a consolidated filter bar for list views: a search input, oneselect/dropdown per (single or multi-select), an optional daterange select, and removable chips for every active filter plus a "Clearall" button when any filter is set. Replaces ad-hoc per-page search bars sofilter UX is consistent across cores. All controls meet the touch-targetdensity token (). * params: * props — Controlled props: + (omit bothto hide the search input), (config with options and optional), map keyed by , and callback. Provide //to enable the date selector (defaults to 7/30/90/all-time presets). * example: | ListFilterBar searchValue=query onSearchChange=setQuery filters=\[ key: 'status', label: 'Status', options: STATUS\_OPTIONS, multiSelect: true ] selectedValues= status: selectedStatuses onFilterChange=(key, val) = setFilter(key, val)/ * score: 5 ### component ListPageLayout * file: src/shared/components/ListPageLayout.tsx:58 * kind: component * core: shared * spec: (none) * summary: ListPageLayout provides a consistent structure for list/index pages:- PageContainer for responsive padding and max-width- PageHeader with title, description, icon, and actions- Optional filter card- Main content area- Loading state support * score: 2 ### component MobileOverviewHero * file: src/shared/components/MobileOverviewHero.tsx:81 * kind: component * core: shared * spec: (none) * summary: Mobile-only Focus Bento hero. Hidden on and above. * score: 2 ### component MobileTableWrapper * file: src/shared/components/MobileTableWrapper.tsx:21 * kind: component * core: shared * spec: (none) * summary: MobileTableWrapper - Wraps tables with horizontal scroll on mobileand provides visual scroll indicators. * example: | MobileTableWrapper Table TableHeader.../TableHeader TableBody.../TableBody /Table/MobileTableWrapper * score: 5 ### component OverviewPageWrapper * file: src/shared/components/OverviewPageWrapper.tsx:48 * kind: component * core: shared * spec: none * summary: Standardized wrapper for module overview/landing pages. Combines (pull-to-refresh gesture on touch devices) with (page padding + max-width), and invalidates the suppliedTanStack Query keys in parallel when refresh fires so all core dashboardsstay fresh after a deliberate pull. Pass fordesktop-only pages where the gesture is not wanted. * params: * props — is the page content; is thelist of query-key prefixes to invalidate (e.g. , ). Pass / / to forward to PageContainer, and to run additional async work after invalidation completes. * example: | OverviewPageWrapper refreshQueryKeys=\['hr'] maxWidth="7xl" HROverviewContent //OverviewPageWrapper * score: 5 ### component PageContainer * file: src/shared/components/PageContainer.tsx:140 * kind: component * core: shared * spec: (none) * summary: PageContainer wraps page content with responsive padding and spacing. * example: | Titled page (PageContainer renders the PageHeader for you) With explicit breadcrumbs * score: 5 ### component PageHeader * file: src/shared/components/PageHeader.tsx:36 * kind: component * core: shared * spec: (none) * summary: PageHeader - A consistent page header component for all modulesFeatures:- Responsive layout (stacks on mobile, horizontal on desktop)- Optional icon with semantic background- Actions slot for buttons- Meta slot for breadcrumbs/badges- Uses semantic design tokens onlyBack navigation is owned globally by the app-shell header(); pages do not render their own back button. * score: 2 ### component PageLoading * file: src/shared/components/PageLoading.tsx:47 * kind: component * core: shared * spec: (none) * summary: Renders the canonical in-app loader. Centered, branded, delay-fade indefault mode; in-flow skeleton block in inline mode. * score: 2 ### component PageSeo * file: src/shared/components/PageSeo.tsx:39 * kind: component * core: shared * spec: none * summary: Renders a per-route , meta description, optional canonical link,and optional tag via . Use onpublic/unauthenticated routes (form portal, verify, preadmission packet) soeach surface advertises its own metadata instead of inheriting the genericsite-wide tags from . * params: * props — and are required; pass (relative URL like ) for self-referencing canonicals and for non-indexable surfaces (verify links, portal previews). * example: | PageSeo title="Verify your email — Encore" description="Confirm your email to start your application." canonicalPath="/portal/verify" noindex/ * score: 5 ### component PageTransition * file: src/shared/components/PageTransition.tsx:32 * kind: component * core: shared * spec: none * summary: Wraps page content in a div that fades in on every route change. Uses to detect path changes, then toggles a CSS class on the nextanimation frame to retrigger the keyframe. Honors via the global CSS rule in .Not a loading indicator — see for the loading family. * params: * props — to wrap, plus an optional merged ontothe transition container. * example: | PageTransition Outlet //PageTransition * score: 5 ### component RadialGauge * file: src/shared/ui/radial-gauge.tsx:48 * kind: component * core: shared * spec: (none) * summary: Circular progress ring built from pure SVG. * score: 5 ### component RequiredMark * file: src/shared/components/RequiredMark.tsx:28 * kind: component * core: shared * spec: (none) * summary: RequiredMarkInline required-field indicator that pairs with . Renders anasterisk styled with , marked , andpaired with a visually-hidden screen-reader label so assistive tech stillannounces the field as required.Replaces the ad-hoc patternrecreated across the wizard step files (CCR R-T2.2 / R-T4.1). * score: 5 ### component ResponsiveFormLayout * file: src/shared/components/ResponsiveFormLayout.tsx:34 * kind: component * core: shared * spec: (none) * summary: ResponsiveFormLayout - A wrapper for forms with responsive column layouts. * example: | ResponsiveFormLayout columns=2 spacing="md" FormField name="firstName" / FormField name="lastName" //ResponsiveFormLayout * score: 5 ### component RouteFallback * file: src/shared/components/RouteFallback.tsx:33 * kind: component * core: shared * spec: none * summary: Lightweight Suspense fallback for in-app lazy-route transitions. Renders acentered with a delayed fade-in (avoids flashing for fastchunks) and an live region for screen readers. Sizedto fill the route slot () so it does not collapse the layout.Loading-family selection (single source of truth — see ): - — first-boot only (shell lazy load) - — lazy route Suspense fallback (this file) - — inline page-level overlay - — primitive (compose inside the three above) - — top progress bar for query/router activity * example: | Suspense fallback=RouteFallback / LazyRouteComponent //Suspense * score: 5 ### component ScrollableTabsList * file: src/shared/components/ScrollableTabsList.tsx:47 * kind: component * core: shared * spec: none * summary: Wraps shadcn with horizontal-overflow handling: left/right fadegradients, decorative scroll-arrow buttons, scroll-snap, an optionalfirst-mount scroll-hint nudge, and automatic scroll-to-active-tab on mountand whenever changes (URL-synced tabs). Honors (instant scroll, no nudge). When is it skips all overflow chrome and renders a plain vertical. * params: * props — (the s), / forwardedto , for inner styling, (default ), (default ; disable for verydense headers), and for the tablist landmark. * example: | ScrollableTabsList aria-label="Resident sections" TabsTrigger value="overview"Overview/TabsTrigger TabsTrigger value="encounters"Encounters/TabsTrigger/ScrollableTabsList * score: 5 ### component StatCard * file: src/shared/components/StatCard.tsx:146 * kind: component * core: shared * spec: (none) * summary: StatCard - A consistent stat/metric card componentFeatures:- Optional icon with semantic background- Trend indicator with semantic colors- Sparkline mini chart support- Comparison with previous values- Variant support for value coloring- Loading skeleton state- Clickable with hover effects- Uses semantic design tokens only * score: 2 ### component StatusBadge * file: src/shared/components/StatusBadge.tsx:48 * kind: component * core: shared * spec: (none) * summary: Generic status badge that resolves a status key against a config map.Falls back to a badge with the raw status as the label whenthe key is not in the config (defensive — protects against silentlymissing badge variants on new enum values). * score: 2 ### component TypeToConfirm * file: src/shared/components/TypeToConfirm.tsx:86 * kind: component * core: shared * spec: (none) * summary: Type-to-confirm input. Disables the parent action button until the user hastyped exactly (or case-insensitively if ). * score: 2 ## Functions & utilities ### function assertRegulatoryChangeLogPayloadPhiSafe * file: src/shared/lib/regulatory-change-log-phi.ts:82 * kind: function * core: shared * spec: FW-57 * summary: Client-side guard that throws before submission when the regulatory changelog payload appears to contain HIPAA-style identifiers (SSN-like patterns,emails, phone/fax numbers, URLs, IP addresses, long numeric IDs, orcalendar dates). Mirrors the categories enforced by database trigger so the UI surfaces the samerejection cause without an extra round trip. Error message is prefixed with so the UI can route it through with a friendly toast. * params: * payload — The regulatory change log payload about to be persisted —the function concatenates , ,, and the JSON-stringified in the sameorder as the DB trigger, then scans the combined text. * score: 5 ### function build837i * file: src/shared/lib/x12/x12-837i.ts:100 * kind: function * core: shared * spec: (none) * summary: Generate 837I claim segments (between ST/SE envelope) per 005010X223A2.Returns segment array — caller joins with and wraps in envelope. * score: 4 ### function buildErrorToast * file: src/shared/lib/error-utils.ts:177 * kind: function * core: shared * spec: (none) * summary: Builds a standardized destructive toast payload using sanitizeErrorMessage().Use this to avoid leaking raw error messages to users. * score: 4 ### function buildFieldKey * file: src/shared/lib/forms/fieldEditorUtils.ts:32 * kind: function * core: shared * spec: (none) * summary: Provides build field key functionality. * score: 4 ### function buildQIDraftFromGap * file: src/shared/lib/gr/buildQIDraftFromGap.ts:106 * kind: function * core: shared * spec: (none) * summary: Build a draft row from the event payload. * score: 4 ### function calculateBenefitEstimate * file: src/shared/lib/pm/benefit-estimator.ts:48 * kind: function * core: shared * spec: (none) * summary: Estimate patient responsibility. Deductible applied first, then coinsuranceon remaining amount, then copay (if present). Total is capped by remainingout-of-pocket maximum when known. * score: 4 ### function cn * file: src/shared/lib/utils.ts:31 * kind: function * core: shared * spec: none * summary: Composes Tailwind class strings from any combination of strings, arrays,objects, and conditional expressions (via ) and then resolvesconflicting Tailwind utilities so later classes win (via). The merge configuration is extended with the family so heading-font overrides do not collide with / from upstream defaults. Use this everywhereclassName strings are assembled — never concatenate with template literalsbecause conflicting utilities will both ship to the DOM. * params: * inputs — Variadic arguments (string, array, object, orfalsy); see types for the accepted shapes. * returns: The merged, deduplicated class string, ready to assign to. * example: | div className=cn('px-2 py-1', isActive && 'bg-accent', className) / * score: 5 ### function combineRegulatoryChangeLogPhiScanText * file: src/shared/lib/regulatory-change-log-phi.ts:26 * kind: function * core: shared * spec: (none) * summary: Combine payload fields the same way as the DB trigger (order + JSON for custom\_fields). * score: 4 ### function computeCheckrSignature * file: src/shared/lib/checkr-signature.ts:28 * kind: function * core: shared * spec: (none) * summary: Compute the canonical Checkr webhook HMAC-SHA256 hex signature. Generates the same hex digest the Edge Function expects in. Pass the **exact** raw request body bytes (not are-serialized JSON) to keep the signature stable. * params: * rawBody — Exact UTF-8 raw request body as received. * apiKey — Checkr API key (secret). * returns: Lowercase hex string (64 chars). * score: 4 ### function createEntitySchema * file: src/shared/lib/validation/schema-builders.ts:195 * kind: function * core: shared * spec: (none) * summary: Creates a standard entity schema with common fields * score: 4 ### function createFormSchema * file: src/shared/lib/validation/schema-builders.ts:232 * kind: function * core: shared * spec: (none) * summary: Creates a form schema (without audit fields, for user input) * score: 4 ### function createStatusBadge * file: src/shared/components/createStatusBadge.tsx:42 * kind: function * core: shared * spec: (none) * summary: Type-safe factory for domain-specific status badges.Returns a small component that wraps with a typed enum and abaked-in map. Eliminates the per-core boilerplate ofdefining a wrapper component just to pair an enum with a label/varianttable. * example: | Optionally accept an unknown status (e.g. legacy data, late-bound enumwidening) by adding it to the config under a sentinel key — will fall through to the raw status label when the key is missing. * score: 4 ### function deepEqual * file: src/shared/lib/utils/deepEqual.ts:10 * kind: function * core: shared * spec: (none) * summary: Performs a deep equality check between two values.Unlike JSON.stringify comparison, this handles different key orderings. * score: 4 ### function derivePriority * file: src/shared/lib/gr/buildQIDraftFromGap.ts:67 * kind: function * core: shared * spec: (none) * summary: Derive priority from gap signal.- overdue 0 → high- completion\_rate\_pct 60 → medium- else → low * score: 4 ### function detectPotentialPHI * file: src/shared/lib/phi-detection.ts:40 * kind: function * core: shared * spec: (none) * summary: Quick client-side check for obvious PHI/PII patterns in text. * params: * text — The text to scan for potential PHI/PII. * returns: A warning message if potential PHI is detected, otherwise. * score: 4 ### function domainStatusToIconTone * file: src/shared/lib/semantic-colors.ts:181 * kind: function * core: shared * spec: (none) * summary: Resolve a domain status string to an .Accepts the canonical keys above as well as common variants(, , ) so callers can pass DB enumsverbatim. Unknown keys return to keep the UI safe. * score: 4 ### function evaluateFederalBaseline * file: src/shared/lib/state-compliance/federal-baseline.ts:52 * kind: function * core: shared * spec: (none) * summary: Evaluates whether weakens .Returns if all overlapping fields are at-least-as-strict; otherwisereturns an array of violations with the offending field, baseline, and proposed value.Fields present on the baseline but absent on the recommendation are treated as"not changed" (no violation). Fields present only on the recommendation are ignored(additive/non-baselined). * score: 4 ### function formatCurrency * file: src/shared/lib/format/index.ts:45 * kind: function * core: shared * spec: (none) * summary: Format a numeric value as currency. * example: | formatCurrency(1234.5) // "\$1,234.50"formatCurrency(1234.5, currency: 'EUR' ) // "€1,234.50"formatCurrency(null) // "—" * score: 4 ### function formatDate * file: src/shared/lib/format/index.ts:85 * kind: function * core: shared * spec: (none) * summary: Format a date with a stable default pattern () and optionalIANA time zone. Returns for nullish or invalid input. * example: | formatDate(new Date('2026-01-15')) // "Jan 15, 2026"formatDate('2026-01-15T13:00:00Z', pattern: 'PP p', timeZone: 'America/Phoenix' ) * score: 4 ### function formatDateIso * file: src/shared/lib/format/index.ts:108 * kind: function * core: shared * spec: (none) * summary: Format a date as a short ISO calendar date (). Useful forinput\[type="date"] values, audit logs, and CSV export. * score: 4 ### function formatDateTime * file: src/shared/lib/format/index.ts:115 * kind: function * core: shared * spec: (none) * summary: Format a date with time, e.g. . * score: 4 ### function formatNumber * file: src/shared/lib/format/index.ts:135 * kind: function * core: shared * spec: (none) * summary: Format a number with locale-aware thousand separators. * example: | formatNumber(12345.678) // "12,346"formatNumber(12345.678, maximumFractionDigits: 2 ) // "12,345.68" * score: 4 ### function formatPercent * file: src/shared/lib/format/index.ts:155 * kind: function * core: shared * spec: (none) * summary: Format a number as a percent. Default matches percent style — pass if your value is already in 0-100 space. * example: | formatPercent(0.4567) // "46%"formatPercent(45.67, source: 'percent' ) // "46%"formatPercent(0.4567, maximumFractionDigits: 2 ) // "45.67%" * score: 4 ### function getCanonicalVariant * file: src/shared/lib/status-variants.ts:57 * kind: function * core: shared * spec: (none) * summary: Returns the canonical Badge variant for a given status string.Lookup is case-insensitive. Falls back to 'secondary' for unknown statuses. * score: 4 ### function getDiffColors * file: src/shared/lib/semantic-colors.ts:287 * kind: function * core: shared * spec: (none) * summary: Provides get diff colors functionality. * score: 4 ### function getInitials * file: src/shared/lib/utils/format-initials.ts:8 * kind: function * core: shared * spec: (none) * summary: Get initials from a name string * params: * name — The full name to extract initials from * returns: Up to 2 uppercase letters, or '?' if name is falsy * score: 4 ### function getLoadDiagnostic * file: src/shared/lib/lazy-retry.ts:62 * kind: function * core: shared * spec: (none) * summary: Returns the most recent failed-load diagnostic for a chunk, if any. * score: 4 ### function getModifierKey * file: src/shared/lib/utils/platform.ts:62 * kind: function * core: shared * spec: (none) * summary: Get the command/control modifier key based on platformReturns true if the platform-appropriate modifier key is pressed * params: * event — Keyboard event to check * returns: true if Cmd (Mac) or Ctrl (Windows/Linux) is pressed * score: 4 ### function getPlatformName * file: src/shared/lib/utils/platform.ts:45 * kind: function * core: shared * spec: (none) * summary: Get the current platform nameReturns 'unknown' if platform cannot be determined * score: 4 ### function getRecommendationColors * file: src/shared/lib/semantic-colors.ts:229 * kind: function * core: shared * spec: (none) * summary: Provides get recommendation colors functionality. * score: 4 ### function getScoreColor * file: src/shared/lib/semantic-colors.ts:239 * kind: function * core: shared * spec: (none) * summary: Score-Based Color UtilitiesFor numeric scores on a 1-10 scale (e.g., GWC assessments, goal reviews).= 70% = success, = 40% = warning, 40% = destructive * score: 4 ### function getScoreColorClasses * file: src/shared/lib/semantic-colors.ts:249 * kind: function * core: shared * spec: (none) * summary: Provides get score color classes functionality. * score: 4 ### function getStatusColors * file: src/shared/lib/semantic-colors.ts:66 * kind: function * core: shared * spec: (none) * summary: Provides get status colors functionality. * score: 4 ### function hasProperty * file: src/shared/lib/recharts-types.ts:37 * kind: function * core: shared * spec: (none) * summary: Type guard to check if a value has a specific property * score: 4 ### function installRechartsReducedMotion * file: src/shared/lib/a11y/recharts-motion.ts:58 * kind: function * core: shared * spec: (none) * summary: Idempotent. Call once at app startup (before React renders charts). * score: 4 ### function isBehavioralHealthServiceType * file: src/shared/lib/pm/service-type-mapper.ts:55 * kind: function * core: shared * spec: (none) * summary: Determine whether a service type is behavioral-health relevant. * score: 4 ### function isDefined * file: src/shared/lib/utils/type-utils.ts:159 * kind: function * core: shared * spec: (none) * summary: Type guard to check if a value is not null or undefined.Useful in array filter operations. * example: | const items = \[1, null, 2, undefined, 3].filter(isDefined);// items is now number\[] with value \[1, 2, 3] * score: 4 ### function isIOS * file: src/shared/lib/utils/platform.ts:35 * kind: function * core: shared * spec: (none) * summary: Check if the current platform is iOSHandles iPad masquerading as Mac in Safari * score: 4 ### function isMacOS * file: src/shared/lib/utils/platform.ts:19 * kind: function * core: shared * spec: (none) * summary: Check if the current platform is macOSUses modern userAgentData API when available (Chrome 90+, Edge 90+) * score: 4 ### function isValidEnum * file: src/shared/lib/utils/type-utils.ts:127 * kind: function * core: shared * spec: (none) * summary: Type-safe check if a value is a valid enum member. * params: * value — Value to check * enumValues — Array of valid enum values * returns: Type predicate indicating if value is a valid enum member * example: | const STATUSES = \['draft', 'active', 'archived'] as const;if (isValidEnum(status, STATUSES)) // status is now typed as 'draft' | 'active' | 'archived' * score: 4 ### function isValidUUID * file: src/shared/lib/validation/isValidUUID.ts:6 * kind: function * core: shared * spec: (none) * summary: Returns true when the input is a valid RFC4122 UUID string. * score: 4 ### function iterateBannerCsv * file: src/shared/lib/weno/csv.ts:36 * kind: function * core: shared * spec: (none) * summary: Iterate a banner+header CSV: skip lines until isHeaderRow(cells) is true,then yield header-keyed rows. Lines that match isHeaderRow are treated as(re-)headers and never yielded as data — calling onHeaders each time theyappear. This allows drift detection when a vendor appends new columns. * score: 4 ### function lazyRetry * file: src/shared/lib/lazy-retry.ts:111 * kind: function * core: shared * spec: (none) * summary: Creates a lazy component that retries failed dynamic imports. * params: * importFn — The dynamic import function. * maxRetries — Maximum number of retry attempts (default 3). * chunkName — Optional name used to record/observe load diagnostics. * score: 4 ### function lengthMessage * file: src/shared/lib/validation/error-messages.ts:87 * kind: function * core: shared * spec: (none) * summary: Creates a min/max length message * score: 4 ### function mapProcedureCategoryToQI * file: src/shared/lib/gr/buildQIDraftFromGap.ts:85 * kind: function * core: shared * spec: (none) * summary: Map a value to a value. allows: clinical | operational | safety | hr | financial | it | emergency | other allows: clinical | operational | safety | compliance | outcomesMapping rules (preserves clinical/safety semantics, defaults everything else to operational):- clinical → clinical- safety, emergency → safety- operational, hr, financial, it, other, '', unknown → operational * score: 4 ### function mapServiceTypeCode * file: src/shared/lib/pm/service-type-mapper.ts:42 * kind: function * core: shared * spec: (none) * summary: Resolve a service type code to a mapping. Unknown codes return apass-through mapping with category 'other'. * score: 4 ### function markRoutePrewarmComplete * file: src/shared/lib/dev/routePrewarmSignal.ts:51 * kind: function * core: shared * spec: (none) * summary: Mark the prewarm complete. No-op in production. * score: 4 ### function normalizeSelectValue * file: src/shared/lib/select-utils.ts:15 * kind: function * core: shared * spec: (none) * summary: Converts SELECT\_NONE\_VALUE back to an empty string for use in form state or filters. * score: 4 ### function nullish * file: src/shared/lib/utils/type-utils.ts:63 * kind: function * core: shared * spec: (none) * summary: Converts null to undefined for a single value.Useful for individual field conversions. * params: * value — Value that may be null * returns: The value with null converted to undefined * example: | const dbValue: string | null = null;const formValue = nullish(dbValue); // undefined * score: 4 ### function nullToUndefined * file: src/shared/lib/utils/type-utils.ts:44 * kind: function * core: shared * spec: (none) * summary: Converts all null values in an object to undefined.Useful for converting Supabase responses to form-compatible objects. * params: * obj — Object with potential null values * returns: Object with null values converted to undefined, or undefined if input is null/undefined * example: | const dbRow = name: 'John', email: null ;const formData = nullToUndefined(dbRow);// Result: name: 'John', email: undefined * score: 4 ### function optionsToMultilineText * file: src/shared/lib/forms/fieldEditorUtils.ts:67 * kind: function * core: shared * spec: none * summary: Serializes a heterogeneous form-builder options array back into thenewline-separated text representation used by the textarea editor. Acceptsthe loose shape that ships through the form-builder state machine(strings, objects, or junk) and returns one label perline, skipping empty labels. Returns for non-array input. * params: * options — The current options array (typically , but to tolerate partially-typed editor state and legacy data). * returns: A newline-separated label string suitable for placing back intothe textarea control; pairs with for a round trip. * score: 5 ### function parse271Benefits * file: src/shared/lib/pm/benefit-parser.ts:98 * kind: function * core: shared * spec: (none) * summary: Group raw EB segments by (service\_type\_code, network\_tier) and produce onenormalized benefit detail per group. * score: 4 ### function parseJsonArray * file: src/shared/lib/utils/type-utils.ts:93 * kind: function * core: shared * spec: (none) * summary: Safely parses a JSONB array field.Returns empty array if the field is null, undefined, or not an array. * params: * value — JSONB value expected to be an array * returns: Typed array or empty array * example: | const lines = parseJsonArrayJournalLine(data.template\_lines); * score: 4 ### function parseJsonField * file: src/shared/lib/utils/type-utils.ts:78 * kind: function * core: shared * spec: (none) * summary: Safely parses a JSONB field with type assertion.Returns a default value if the field is null, undefined, or not the expected type. * params: * value — JSONB value from database (typed as unknown or Json) * defaultValue — Default value to return if parsing fails * returns: Typed value or default * example: | const settings = parseJsonFieldWorkflowSettings(data.settings, autoSave: true ); * score: 4 ### function parseJsonObject * file: src/shared/lib/utils/type-utils.ts:108 * kind: function * core: shared * spec: (none) * summary: Safely parses a JSONB object field.Returns undefined if the field is null, undefined, or not an object. * params: * value — JSONB value expected to be an object * returns: Typed object or undefined * example: | const config = parseJsonObjectEventConfig(rule.event\_config); * score: 4 ### function parseOptionsFromText * file: src/shared/lib/forms/fieldEditorUtils.ts:43 * kind: function * core: shared * spec: (none) * summary: Provides parse options from text functionality. * score: 4 ### function prefersReducedMotion * file: src/shared/lib/a11y/scroll.ts:12 * kind: function * core: shared * spec: (none) * summary: Sync read of the OS reduced-motion preference. SSR-safe. * score: 4 ### function rangeMessage * file: src/shared/lib/validation/error-messages.ts:106 * kind: function * core: shared * spec: (none) * summary: Creates a range message for numeric fields * score: 4 ### function requiredMessage * file: src/shared/lib/validation/error-messages.ts:80 * kind: function * core: shared * spec: (none) * summary: Creates a custom required message for a specific field * score: 4 ### function RouterPendingTracker * file: src/shared/components/GlobalQueryProgress.tsx:67 * kind: function * core: shared * spec: (none) * summary: Mount inside to feed router/navigation transitionsinto . Renders nothing. * score: 4 ### function safeAccess * file: src/shared/lib/utils/type-utils.ts:174 * kind: function * core: shared * spec: (none) * summary: Safely access a nested property that may be null.Alternative to optional chaining when you need the result to be undefined. * params: * value — Value that may be null * accessor — Function to access nested property * returns: Property value or undefined * example: | const name = safeAccess(employee.department, d = d.name); * score: 4 ### function safeScrollBehavior * file: src/shared/lib/a11y/scroll.ts:20 * kind: function * core: shared * spec: (none) * summary: Returns 'auto' when reduced motion is preferred, otherwise 'smooth'. * score: 4 ### function safeScrollBy * file: src/shared/lib/a11y/scroll.ts:38 * kind: function * core: shared * spec: (none) * summary: scrollBy wrapper for elements (used by ScrollableTabsList nudge buttons). * score: 4 ### function safeScrollIntoView * file: src/shared/lib/a11y/scroll.ts:25 * kind: function * core: shared * spec: (none) * summary: scrollIntoView wrapper that downgrades smooth scrolling under reduced-motion. * score: 4 ### function safeScrollTo * file: src/shared/lib/a11y/scroll.ts:32 * kind: function * core: shared * spec: (none) * summary: scrollTo wrapper for window or element. * score: 4 ### function sanitizeErrorMessage * file: src/shared/lib/error-utils.ts:27 * kind: function * core: shared * spec: (none) * summary: Sanitizes an error message to prevent leaking internal details to users. * params: * error — Error object, Error instance, or string message * returns: User-friendly error message * score: 4 ### function sanitizeHtml * file: src/shared/lib/utils/sanitize.ts:11 * kind: function * core: shared * spec: (none) * summary: Sanitize HTML content to prevent XSS attacksUses DOMPurify with a safe configuration for rich text content * score: 4 ### function scanRegulatoryChangeLogPayloadForPhiCategories * file: src/shared/lib/regulatory-change-log-phi.ts:60 * kind: function * core: shared * spec: (none) * summary: Categories for a regulatory change log payload (convenience). * score: 4 ### function scanRegulatoryChangeLogTextForPhiCategories * file: src/shared/lib/regulatory-change-log-phi.ts:44 * kind: function * core: shared * spec: (none) * summary: Returns heuristic category labels when text matches (no raw PHI returned). * score: 4 ### function scrollToQuickActions * file: src/shared/components/scrollToQuickActions.ts:21 * kind: function * core: shared * spec: (none) * summary: Convenience helper for the optional Quick Actions anchor scroll behavior.Robust against: - The app's real scroll container being an inner (not ) when the responsive shell mounts the mobile layout. - The Quick Actions section not yet existing when the user taps the tile (auth gate still resolving, Suspense chunk still loading, dashboard widgets streaming in). We poll briefly via MutationObserver + rAF and only give up after \~3s so a delayed render still snaps to the section. - Reduced-motion users: we fall back to instant scroll. - Focus management: we move focus to the first focusable child of the section *after* the scroll settles so screen-reader users land there. * score: 4 ### function ScrollToTop * file: src/shared/components/ScrollToTop.tsx:47 * kind: function * core: shared * spec: none * summary: Mount-once route observer that resets , , ,and every container to the top whenever the pathnameor search string changes. Skips reset when the URL includes a hash (soin-page anchors still work) and runs both synchronously via and again on the next animation frame to catch routeswhose content paints late (Suspense / lazy chunks). Returns — renderonce at the top of the router subtree. * returns: Always (this component renders no DOM). * example: | BrowserRouter ScrollToTop / Routes.../Routes/BrowserRouter * score: 5 ### function semanticStatusToIconTone * file: src/shared/lib/semantic-colors.ts:76 * kind: function * core: shared * spec: (none) * summary: Map a to an for use with .Identity today — kept as a function so future divergence (e.g. a new value that needs a different tone) is a single edit. * score: 4 ### function splitCsvLine * file: src/shared/lib/weno/csv.ts:10 * kind: function * core: shared * spec: (none) * summary: Quote-aware CSV line splitter ("" escapes, quoted commas). Trims each cell. * score: 4 ### function subscribeLoadDiagnostic * file: src/shared/lib/lazy-retry.ts:67 * kind: function * core: shared * spec: (none) * summary: Subscribe to diagnostic changes for a chunk. Returns an unsubscribe fn. * score: 4 ### function timingSafeEqualHex * file: src/shared/lib/checkr-signature.ts:43 * kind: function * core: shared * spec: (none) * summary: Constant-time hex-string comparison. Returns only when both inputs have identical length ANDidentical content, performing the equality check in constant time relativeto the longer input to avoid leaking length information. * params: * a — First hex string to compare. * b — Second hex string to compare. * returns: if both strings are equal, otherwise. * score: 4 ### function toEnum * file: src/shared/lib/utils/type-utils.ts:144 * kind: function * core: shared * spec: (none) * summary: Coerces a database string to a TypeScript enum with fallback.Use when you need to guarantee a valid enum value. * params: * value — Database value (may be null or invalid) * enumValues — Array of valid enum values * fallback — Default value if coercion fails * returns: Valid enum value * example: | const STATUSES = \['draft', 'active', 'archived'] as const;const status = toEnum(invoice.status, STATUSES, 'draft'); * score: 4 ### function toError * file: src/shared/lib/error-utils.ts:138 * kind: function * core: shared * spec: (none) * summary: Coerces an unknown thrown value into a real instance.Supabase/PostgREST surface errors as plain objects carrying a field(plus , , ), not instances. Throwing thosedirectly trips the typed-lint rule — it breaks stack tracesand Sentry grouping. Use this at sites that propagate a Supabase error:The original value is preserved on , so structured fields (e.g. thePostgREST ) remain reachable to error handlers via .Anything already an is returned unchanged. User-facing display muststill go through . * params: * value — The caught/returned error value of unknown shape * returns: An whose message mirrors the source and whose is the original value * score: 4 ### function toSnakeCaseKey * file: src/shared/lib/forms/fieldEditorUtils.ts:20 * kind: function * core: shared * spec: none * summary: Normalizes an arbitrary string into a identifier suitable foruse as a form-field key or column name: trims whitespace, lowercases,collapses every non-alphanumeric run to a single underscore, and stripsleading / trailing / repeated underscores. Returns an empty string when theinput contains no alphanumerics. * params: * input — Free-form label or identifier candidate; any value isaccepted but only runs survive in the output. * returns: The snake\_cased identifier (e.g. → ). * score: 5 ### function undefinedToNull * file: src/shared/lib/utils/type-utils.ts:186 * kind: function * core: shared * spec: (none) * summary: Converts undefined to null for database writes.Inverse of nullToUndefined - use when sending data TO database. * params: * obj — Object with potential undefined values * returns: Object with undefined values converted to null * score: 4 ### function waitForRoutePrewarm * file: src/shared/lib/dev/routePrewarmSignal.ts:72 * kind: function * core: shared * spec: (none) * summary: Returns the prewarm-ready promise (resolves immediately in production).Browser tests can . * score: 4 ### function withAtLeastOne * file: src/shared/lib/validation/schema-builders.ts:172 * kind: function * core: shared * spec: (none) * summary: Adds at-least-one-required validation * score: 4 ### function withAuditFields * file: src/shared/lib/validation/schema-builders.ts:28 * kind: function * core: shared * spec: (none) * summary: Adds audit fields (created\_at, updated\_at, created\_by, updated\_by) * score: 4 ### function withConditionalRequired * file: src/shared/lib/validation/schema-builders.ts:122 * kind: function * core: shared * spec: (none) * summary: Adds conditional required field validation * score: 4 ### function withCustomFields * file: src/shared/lib/validation/schema-builders.ts:40 * kind: function * core: shared * spec: (none) * summary: Adds custom\_fields JSON column * score: 4 ### function withDateRangeValidation * file: src/shared/lib/validation/schema-builders.ts:90 * kind: function * core: shared * spec: (none) * summary: Adds date range validation (end date must be = start date) * score: 4 ### function withId * file: src/shared/lib/validation/schema-builders.ts:70 * kind: function * core: shared * spec: none * summary: Extends a Zod object schema with an field for entities thatalready exist in the database (read / update payloads). Pairs with / which intentionally omit on create paths so the database can mint it. * params: * schema — Any whose raw shape will be extended with the field; the generic preserves the inferred input shape . * returns: The same schema augmented with a required (UUID v4) property. * example: | const ResidentRowSchema = withId(ResidentBaseSchema);type ResidentRow = z.infertypeof ResidentRowSchema; // includes * score: 5 ### function withMutuallyExclusive * file: src/shared/lib/validation/schema-builders.ts:148 * kind: function * core: shared * spec: (none) * summary: Adds mutual exclusivity validation (only one of the fields can be set) * score: 4 ### function withOrganization * file: src/shared/lib/validation/schema-builders.ts:19 * kind: function * core: shared * spec: (none) * summary: Adds organization\_id field to a schema (required for multi-tenant entities) * score: 4 ### function withSoftDelete * file: src/shared/lib/validation/schema-builders.ts:49 * kind: function * core: shared * spec: (none) * summary: Adds soft delete field (deleted\_at) * score: 4 ### function withStandardFields * file: src/shared/lib/validation/schema-builders.ts:79 * kind: function * core: shared * spec: (none) * summary: Combines multiple common extensions (org, audit, custom fields) * score: 4 # wizards — system wizard template reference Source: https://docs.encoreos.io/api/wizards Flat per-step wizard template reference for AI/RAG retrieval, generated from pf_wizard_templates. Refresh with `npm run docs:wizards:generate`. # Wizard Templates Reference (system defaults) ```text theme={null} wizard Audit Setup Wizard gr Audit Type & Body form 4 wizard Audit Setup Wizard gr Scope & Schedule form 4 wizard Audit Setup Wizard gr Audit Team custom 0 wizard Audit Setup Wizard gr Checklist Preparation custom 0 wizard Audit Setup Wizard gr Review & Submit review 0 wizard Bank Reconciliation Wizard fa select_account 0 wizard Bank Reconciliation Wizard fa import_statement 0 wizard Bank Reconciliation Wizard fa review_matches 0 wizard Bank Reconciliation Wizard fa manual_match 0 wizard Bank Reconciliation Wizard fa complete 0 wizard Budget Creation Wizard fa budget_header 0 wizard Budget Creation Wizard fa copy_template 0 wizard Budget Creation Wizard fa enter_lines 0 wizard Budget Creation Wizard fa review_submit 0 wizard Compliance Requirement Setup gr Basic Information form 5 wizard Compliance Requirement Setup gr Regulatory Body custom 0 wizard Compliance Requirement Setup gr Scope form 3 wizard Compliance Requirement Setup gr Compliance Schedule custom 0 wizard Compliance Requirement Setup gr Ownership form 2 wizard Compliance Requirement Setup gr Documentation custom 0 wizard Compliance Requirement Setup gr Review & Submit custom 0 wizard Contract Creation Wizard gr contract-details 6 wizard Contract Creation Wizard gr counterparty 4 wizard Contract Creation Wizard gr terms-renewal 10 wizard Contract Creation Wizard gr documents 0 wizard Contract Creation Wizard gr review-submit 0 wizard Employee Onboarding hr welcome 0 wizard Employee Onboarding hr personal-info 0 wizard Employee Onboarding hr employment 0 wizard Employee Onboarding hr documentation 0 wizard Employee Onboarding hr credentials 0 wizard Employee Onboarding hr system-access 0 wizard Employee Onboarding hr orientation 0 wizard Employee Onboarding hr review 0 wizard Financial Close Setup Wizard fa assign_tasks 0 wizard Financial Close Setup Wizard fa configure_dependencies 0 wizard Financial Close Setup Wizard fa confirm_start 0 wizard Financial Close Setup Wizard fa review_tasks 0 wizard Financial Close Setup Wizard fa select_period 4 wizard Financial Close Setup Wizard fa select_template 0 wizard Follow-up Sequence Builder ce basics 4 wizard Follow-up Sequence Builder ce enrollment 0 wizard Follow-up Sequence Builder ce step-builder 0 wizard Follow-up Sequence Builder ce exits 0 wizard Follow-up Sequence Builder ce review-submit 0 wizard Incident Reporting Wizard gr Incident Details form 3 wizard Incident Reporting Wizard gr Classification form 2 wizard Incident Reporting Wizard gr People Involved form 3 wizard Incident Reporting Wizard gr Narrative & Immediate Actions form 2 wizard Incident Reporting Wizard gr Regulatory Assessment custom 0 wizard Incident Reporting Wizard gr Review & Submit review 0 wizard Intake Screening & Triage ce context-consent 5 wizard Intake Screening & Triage ce questionnaire 0 wizard Intake Screening & Triage ce triage-summary 0 wizard Intake Screening & Triage ce disposition 0 wizard Intake Screening & Triage ce review-submit 0 wizard Partner Contract Lifecycle ce partner-type 2 wizard Partner Contract Lifecycle ce terms-dates 6 wizard Partner Contract Lifecycle ce documents 0 wizard Partner Contract Lifecycle ce status-notes 2 wizard Partner Contract Lifecycle ce review-submit 0 wizard Payroll Run hr period 0 wizard Payroll Run hr employees 0 wizard Payroll Run hr timesheets 0 wizard Payroll Run hr leave 0 wizard Payroll Run hr calculations 0 wizard Payroll Run hr export 0 wizard Payroll Run hr review 0 wizard Performance Review hr review-context 0 wizard Performance Review hr goals-assessment 0 wizard Performance Review hr competency-ratings 0 wizard Performance Review hr narrative-feedback 3 wizard Performance Review hr rating-summary 0 wizard QI Project Creation gr Problem & Objectives form 6 wizard QI Project Creation gr Quality Metrics custom 0 wizard QI Project Creation gr First PDSA Plan form 4 wizard QI Project Creation gr Team & Timeline form 4 wizard QI Project Creation gr Review & Submit review 0 wizard Recurring Invoice & Collections Setup fa customer-template 0 wizard Recurring Invoice & Collections Setup fa schedule 0 wizard Recurring Invoice & Collections Setup fa payment-plan 0 wizard Recurring Invoice & Collections Setup fa review-submit 0 wizard Resident Admission rh basic-info 0 wizard Resident Admission rh program-selection 0 wizard Resident Admission rh bed-assignment 0 wizard Resident Admission rh documentation 0 wizard Resident Admission rh emergency-contacts 0 wizard Resident Admission rh review-submit 0 ``` # FA-PLAID-INTEGRATION Source: https://docs.encoreos.io/architecture/integrations/FA-PLAID-INTEGRATION Pending integration contract for FA-PLAID — schemas and payloads are authored once the owning dependency is built. # FA-PLAID-INTEGRATION **Status:** pending — owning spec `(unknown)`. **Unblock when:** owning dependency not yet built Tracked pending integration contract. Schemas/payloads are authored by `integration-contract-author` once the dependency is built. See `docs/architecture/integrations/PENDING_CONTRACTS.md`. # PF-111 Unified AI Gateway Integration Source: https://docs.encoreos.io/architecture/integrations/PF-111-unified-ai-gateway-integration Integration stub for PF-111, the unified AI gateway consolidation in Platform Foundation. # PF-111 — Unified AI Gateway Integration **Spec:** [PF-111 Unified AI Gateway Consolidation](https://github.com/Encore-OS/encoreos/blob/development/specs/pf/specs/PF-111-unified-ai-gateway.md) **Status:** Planned (stub — completed during Phase 1 implementation) **Owner:** Platform Foundation (PF) **Last Updated:** 2026-05-29 > Integration with an **external system** (Vercel AI Gateway), not a cross-core integration. Listed here for the external-integration catalog; not added to `CROSS_CORE_INTEGRATIONS.md` (no core-to-core surface). ## External System | Field | Value | | --------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Provider | Vercel AI Gateway | | Protocol | HTTPS, OpenAI-compatible (`/v1/chat/completions`) | | Model selection | `"provider/model"` strings; ordered list → gateway-native fallback | | Auth | Bearer token, single `AI_GATEWAY_API_KEY` Edge Function Secret (read via `requireEnv` in `vercel-gateway.ts`; Edge Function Secret per PM-15-P2 — `vault.decrypted_secrets` not service\_role-accessible) | | Data retention | Zero-Data-Retention (confirmed 2026-05-29) | | BAA | In place with Vercel (confirmed 2026-05-29) | ## Consumers (16 edge functions) All AI-calling edge functions import only `supabase/functions/_shared/ai` and call the `AIProvider` interface: `ai-assistant`, `ai-skill-execute`, `ai-document-analyze`, `ai-generate-template`, `ai-categorize-transactions`, `ai-match-transactions`, `ai-match-benefits-employees`, `generate-report-narrative`, `generate-embeddings`, `chatbot-message`, `ce-extract-document-data`, `extract-document-text`, `hr-ai-import-assist`, `messaging-summarize-conversation`, `messaging-translate-message`, `org-data-sync-consumer`. ## Contract (to be finalized in Phase 1) * **Request:** OpenAI-compatible chat-completions body (`model`, `messages`, optional `tools`, `tool_choice`, `temperature`, `max_tokens`, `stream`). * **Response (non-stream):** normalized to `{ content, toolCalls?, usage?, modelUsed }`. * **Response (stream):** SSE passthrough, OpenAI-compatible frames (consumed by `src/platform/ai/utils/encoreOpenAiSseChatTransport.ts`). * **Errors:** `{ error: { code, message } }`, sanitized; 429 retried with backoff; 402/401 non-retryable; ≥500 retryable. * **PHI lane:** `lane: 'phi'` resolves to BAA-covered models for modules with a PHI-lane configuration, and throws `PhiLaneNotConfiguredError` for any module that does not. As of 2026-05-29, the clinical (`cl`) and practice management (`pm`) modules are enabled on the PHI lane with `anthropic/claude-sonnet-4.6` (primary) and `openai/gpt-4o` (fallback) — both BAA-covered through the Vercel AI Gateway. All other modules continue to fail closed on `lane: 'phi'`. ## PHI lane routing The PHI lane is **fail-closed by default**. Any module that calls `resolveModels(module, 'phi')` without an explicit BAA-confirmed entry raises `PhiLaneNotConfiguredError`. As of **2026-05-29**, with Vercel AI Gateway BAA + ZDR confirmed, the following modules are enabled on the PHI lane: | Module | Primary | Fallback | | --------------------------------- | ----------------------------- | --------------- | | `cl` (Clinical, CL-36) | `anthropic/claude-sonnet-4.6` | `openai/gpt-4o` | | `pm` (Practice Management, PM-64) | `anthropic/claude-sonnet-4.6` | `openai/gpt-4o` | All other modules (for example `gr`, `hr`, `fa`, `ce`) continue to throw `PhiLaneNotConfiguredError` on the PHI lane and must use the standard lane until a per-module entry is added to `PHI_MODELS`. To enable a new module, add it to `supabase/functions/_shared/ai/models.ts` with a BAA-covered primary plus fallback. ```ts theme={null} // supabase/functions/_shared/ai/models.ts export const PHI_MODELS: Record = { cl: ['anthropic/claude-sonnet-4.6', 'openai/gpt-4o'], pm: ['anthropic/claude-sonnet-4.6', 'openai/gpt-4o'], }; ``` ## Trace store (Langfuse) All AI calls routed through the gateway are instrumented with Langfuse tracing at the single `_shared/ai` seam (`tracing.ts`, `withTracing` decorator, wired into `createAIProvider`). | Field | Value | | ----------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Provider | Langfuse Cloud SaaS | | Production endpoint (default) | `https://cloud.langfuse.com` (EU) — set by `DEFAULT_BASE_URL` in `tracing.ts` when `LANGFUSE_BASE_URL` secret is absent | | Recommended endpoint | `https://us.cloud.langfuse.com` (US) — see residency recommendation below | | Dev MCP tool | `https://us.cloud.langfuse.com/api/public/mcp` (registered in `.mcp.json`) | | BAA | Not executed — not required under the current metadata-only posture | | PHI posture | **Metadata-only invariant**: prompt and completion content are never attached to observations on any lane (including `phi`). Only model name, token usage, latency, lane, module, finish reason, sanitized error text, and JWT-derived correlation IDs (userId/sessionId) are transmitted. Live-verified 2026-06-03: `input`/`output` null on every trace including `ai.chat:cl` (PHI lane). | | Backstop | `tracing-mask.ts` `mask()` passed to `LangfuseSpanProcessor` — redacts SSN/email/phone/CC from any attribute value before transmission. Defense-in-depth only; not a HIPAA de-identification engine. | **Retention caveat:** Langfuse Cloud SaaS has no configurable server-side retention cap (EE-gated; Encore does not have a Langfuse EE license). This is acceptable only while no PHI content is ever sent to Langfuse. **Residency recommendation (ops, no code change):** Rotate `LANGFUSE_BASE_URL` Edge Function Secret to `https://us.cloud.langfuse.com` to align production trace storage with the US region and eliminate the mismatch with the MCP dev tool. Command: `supabase secrets set LANGFUSE_BASE_URL=https://us.cloud.langfuse.com --project-ref `. **Gate before enabling content capture:** If `input`/`output` are ever attached to Langfuse observations (any lane), the following must happen first — in order — before deployment: 1. Execute a Langfuse BAA. 2. Rotate `LANGFUSE_BASE_URL` to `https://hipaa.cloud.langfuse.com` (or a self-hosted instance). 3. Update [AI\_SUBPROCESSOR\_BAA\_POSTURE.md](/compliance/AI_SUBPROCESSOR_BAA_POSTURE) and the REGULATORY\_COMPLIANCE\_TRACKER row. Full posture documentation: [AI\_SUBPROCESSOR\_BAA\_POSTURE.md](/compliance/AI_SUBPROCESSOR_BAA_POSTURE). ## Open items * Confirm `"provider/model"` ids (incl. an embedding model for `generate-embeddings`) against the live catalog. * Finalize request/response examples once the gateway is wired (Phase 1). *** ### PF-111-EN-01 — AI Usage/Audit Ledger + Cost Governance **Spec:** [PF-111-EN-01](../../../specs/pf/specs/PF-111-EN-01-ai-usage-audit-ledger-cost-governance.md) **Status:** Partially implemented — ledger table + agent dimensions + PHI-access audit shipped; spend-cap pre-dispatch wiring, pricing table, and per-org rollup view are planned. **ADR:** ADR-029 (platform-wide AI governance posture) **Last Updated:** 2026-06-28 #### Producer / Consumer Matrix | Role | Core / Module | Surface | | ------------------------ | --------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | Producer | PF — AI gateway (`_shared/ai/usage.ts`) | Writes one `pf_ai_usage_logs` row per gateway completion (success / error / throttled), carrying agent/session/task dimensions when the caller is an agent principal | | Producer | PF — PHI-access path (`_shared/ai/agent-usage.ts` + `pf_record_agent_phi_access`) | Writes one `pf_agent_phi_access_log` row per agent PHI touch (read or write), fail-closed | | Consumer (alert sink) | PF-10 — Notifications | `pf-check-ai-usage-anomalies` edge function (scheduled hourly) emits deduplicated `ai_usage_anomaly` notifications via `createNotification()` on anomaly detection | | Consumer (budget source) | PF-43 — Tenant Resource Quotas | The gateway reads per-org soft / hard budget limits and grace window to evaluate the spend cap before dispatch (FR-5); absent PF-43 entry degrades gracefully (no cap, cost still logged) | | Attribution source | PF-30-EN-01 — AgentPrincipal | `agent_principal_id` UUID is the identity stamped on ledger rows and PHI-access rows; loose ref (no FK) | | Run context source | PF-125 — Durable Runs / Tasks | `session_id` ≡ PF-125 `run_id`; `parent_task_id` ≡ PF-125 `task_id`; run policy supplies per-agent / per-task budget limits fed into FR-9 | | Governance source | PF-126 — Per-action Governance | `governance_approval_id` is a soft ref to `pf_agent_action_approvals.id`; required for every PHI write (FR-12); validated via `to_regclass` guard (no-op until PF-126 deploys) | | Consumer (fleet reads) | PF-130 — Agent Fleet Control Tower | Calls `pf_agent_usage_rollup(org, since)` RPC for per-agent / per-session cost, token, latency, and PHI-touch aggregates; owns no schema here | | Indirect producers | CL, PM, GR, FA, HR, CE, and other domain cores | Every edge function calling `AIProvider.chat()` / `chatWithTools()` / `stream()` / `embed()` triggers a ledger row as a side effect; the `module` column carries the core slug (e.g. `cl`, `pm`, `gr`) | #### Event Contract PF-111-EN-01 does not define typed domain events in the pub/sub sense. The anomaly surface emits PF-10 notifications via direct `createNotification()` invocation. No entries in EVENT\_CONTRACTS.md are required. **PF-10 notification shape emitted by `pf-check-ai-usage-anomalies` (runs hourly via pg\_cron):** | Field | Value | | ------------------ | ------------------------------------------------------------------------------ | | `notificationType` | `ai_usage_anomaly` | | `channel` | `in_app` (plus email and Slack fan-out per `pf_ai_usage_alert_configs`) | | `title` | `AI Usage Alert: ` | | `body` | `: (threshold )` — no PHI content | | `priority` | `high` when `metricValue > threshold * 2`; `normal` otherwise | | `actionUrl` | `/platform/settings/ai-usage` | | `referenceType` | `pf_ai_usage_alert_configs` | | `metadata` | `{ metric_type, metric_value, threshold }` — no PHI values | Deduplication is keyed on `(alert_config_id, organization_id)` via `pf_ai_usage_alert_history` cooldown check. #### API / RPC Surface **`pf_record_agent_phi_access(...)` — SECURITY DEFINER, fail-closed PHI-access writer (FR-10/FR-11/FR-12)** ```sql theme={null} pf_record_agent_phi_access( p_organization_id UUID, p_agent_principal_id UUID, p_authorizer_user_id UUID, p_operation TEXT, -- 'read' | 'write' p_resource_table TEXT, p_resource_ref UUID DEFAULT NULL, p_session_id UUID DEFAULT NULL, p_parent_task_id UUID DEFAULT NULL, p_governance_approval_id UUID DEFAULT NULL, -- required for 'write' (FR-12) p_phi_category TEXT DEFAULT NULL, -- e.g. 'clinical' | 'sud_part2' p_correlation_id TEXT DEFAULT NULL ) RETURNS UUID ``` Grants: `authenticated`, `service_role`. A `write` without `governance_approval_id` raises `check_violation`. If the insert fails the caller (TypeScript `recordAgentPhiAccess()`) throws `PhiAccessLogError` and MUST block the PHI operation — the audit is a precondition, not fire-and-forget. **`pf_agent_usage_rollup(p_organization_id, p_since)` — SECURITY DEFINER, read-only fleet rollup (FR-13)** ```sql theme={null} pf_agent_usage_rollup( p_organization_id UUID, p_since TIMESTAMPTZ DEFAULT (now() - interval '30 days') ) RETURNS TABLE ( agent_principal_id UUID, session_id UUID, calls BIGINT, total_tokens BIGINT, total_cost_usd NUMERIC, total_latency_ms BIGINT, phi_touches BIGINT ) ``` Gated on `pf.audit.phi_access.view` permission. Joins `pf_ai_usage_logs` (agent rows) + `pf_agent_phi_access_log` (PHI touches) via `FULL OUTER JOIN` on `(agent_principal_id, session_id)`. Content-free. PF-130 is the exclusive read consumer. **`pf_ai_usage_rollup(...)` — per-org billing rollup view + RPC (FR-4) — planned** ``` pf_ai_usage_rollup(p_organization_id, p_billing_month) RETURNS TABLE (billing_month, consumer_module, model_used, total_tokens, estimated_cost_usd) ``` Not yet materialized. Depends on `pf_ai_model_pricing` (also planned). To be defined in spec PF-111-EN-01 FR-4. **TypeScript helpers (Deno edge runtime, `_shared/ai/agent-usage.ts`):** * `checkAgentBudget(input: AgentBudgetInput, projectedCost: number): AgentBudgetVerdict` — pure, synchronous budget-decision function. Evaluates `task → agent → org` hard caps independently; returns `{ throttled: true, dimension, limit, used }` on a hard breach and `{ throttled: false, warn: true }` on an org soft-limit breach. Not yet wired into the gateway dispatch path. * `recordAgentPhiAccess(rpc: UsageRpcClient, input: PhiAccessInput): Promise<{ recorded: true; id: string }>` — calls `pf_record_agent_phi_access` via RPC; throws `PhiAccessLogError` on failure; caller MUST re-throw to block the PHI operation. * `buildUsageRecord(module, result): AIUsageRecord` (in `_shared/ai/usage.ts`) — builds a PHI-safe token record; persistence to `pf_ai_usage_logs` is planned (FR-2) but not yet wired. **Gateway pre-dispatch spend-cap — planned (FR-5 / FR-9)** When wired into `_shared/ai/usage.ts`, the gateway will evaluate `checkAgentBudget()` plus the per-org PF-43 entitlement before every provider call. A hard breach throws `AiBudgetExceededError` (error class planned; not yet declared in codebase) and records a `status='throttled'` ledger row without dispatching to the provider. A soft-limit breach warns and proceeds. #### Data / FK Contract **`pf_ai_usage_logs`** — live, shipped | Column | Type | Notes | | --------------------------- | ------------------------------------- | ---------------------------------------------------------------------------- | | `id` | UUID PK | | | `organization_id` | UUID NOT NULL → `pf_organizations.id` | Tenant isolation anchor; RLS-gated | | `module` | TEXT | Core slug (e.g. `cl`, `pm`, `gr`, `fa`, `hr`, `ce`) | | `model` | TEXT | Model used | | `feature` | TEXT (nullable) | | | `prompt_tokens` | INT (nullable) | Count only — no content | | `completion_tokens` | INT (nullable) | Count only — no content | | `total_tokens` | INT (nullable) | Count only — no content | | `cost` | NUMERIC (nullable) | Estimated cost USD; NULL when model not yet in pricing table | | `success` | BOOLEAN | | | `error_type` | TEXT (nullable) | Sanitized error class; no PHI | | `duration_ms` | INT (nullable) | | | `metadata` | JSONB | No PHI values | | `user_id` | UUID → `pf_profiles.id` | Human caller; `service-role` path uses NULL | | `created_at` / `updated_at` | TIMESTAMPTZ | | | `agent_principal_id` | UUID (nullable) | FR-8: soft ref to PF-30-EN-01 AgentPrincipal; NULL for human-initiated calls | | `session_id` | UUID (nullable) | FR-8: ≡ PF-125 `run_id` | | `parent_task_id` | UUID (nullable) | FR-8: ≡ PF-125 `task_id` | | `agent_role` | TEXT (nullable) | FR-8: sanitized label; never content | The last four columns were added by migration `20260630000008_pf111_en01_agent_phi_access_audit.sql` (additive, nullable; existing rows stay NULL). Indexes on `(organization_id, agent_principal_id, created_at)` (filtered, agent rows only) and `(organization_id, session_id)` (filtered). No cross-core FK on any column. **`pf_agent_phi_access_log`** — new, shipped via migration `20260630000008` | Column | Type | Notes | | ------------------------ | ------------------------------------- | ------------------------------------------------------------------------------------------- | | `id` | UUID PK | | | `organization_id` | UUID NOT NULL → `pf_organizations.id` | | | `agent_principal_id` | UUID NOT NULL | Soft ref to PF-30-EN-01 AgentPrincipal (no FK) | | `authorizer_user_id` | UUID NOT NULL → `pf_profiles.id` | The human the agent acts for | | `operation` | TEXT CHECK IN ('read','write') | | | `resource_table` | TEXT | Soft ref — e.g. `cl_assessments` (no FK; any-core record) | | `resource_ref` | UUID (nullable) | Soft ref — touched record id; never a PHI value | | `session_id` | UUID (nullable) | ≡ PF-125 `run_id` | | `parent_task_id` | UUID (nullable) | ≡ PF-125 `task_id` | | `governance_approval_id` | UUID (nullable) | Soft ref to PF-126 `pf_agent_action_approvals.id`; required for `write` by CHECK constraint | | `phi_category` | TEXT (nullable) | Sanitized label only (e.g. `clinical`, `sud_part2`) — never a PHI value | | `correlation_id` | TEXT (nullable) | | | `occurred_at` | TIMESTAMPTZ | | | `created_at` | TIMESTAMPTZ | | | `created_by` | UUID (nullable) → `pf_profiles.id` | | No PHI value columns by construction. `resource_table` + `resource_ref` are soft (text + UUID) references — not FKs — so any-core records can be named without violating the no-cross-core-FK rule (constitution §1). Append-only: `UPDATE` revoked from `authenticated`; no `UPDATE`/`DELETE` RLS policy. **`pf_ai_model_pricing`** — planned (not yet materialized) | Column | Type | Notes | | ------------------- | ----------- | ----- | | `provider` | TEXT | | | `model` | TEXT | | | `input_per_1k_usd` | NUMERIC | | | `output_per_1k_usd` | NUMERIC | | | `effective_at` | TIMESTAMPTZ | | To be defined in spec PF-111-EN-01 FR-3. Drives deterministic `estimated_cost_usd` computation; unknown model logs at zero cost (never blocks the call). **`pf_ai_usage_alert_configs` / `pf_ai_usage_alert_history`** — live, shipped Config-driven anomaly detection consumed by the `pf-check-ai-usage-anomalies` scheduled function. Metric types: `daily_cost_usd`, `hourly_call_count`, `failure_rate_pct`, `per_org_daily_cost_usd`, `per_model_daily_cost_usd`. Cooldown deduplication keyed on `(alert_config_id, organization_id)`. #### PHI / RLS / Tenant-Scoping Notes * **`pf_ai_usage_logs`** — RLS on `organization_id`; org-member reads; gateway / service-role writes. No content columns: `prompt_tokens`, `completion_tokens`, `total_tokens` are integer counts only. The table has no column capable of holding prompt or response text (NFR-1 enforced by schema, not policy). * **`pf_agent_phi_access_log`** — deny-by-default RLS. `SELECT` requires both `pf_has_org_access` and the `pf.audit.phi_access.view` permission (compliance / admin readers only). `INSERT` is exclusively via the `pf_record_agent_phi_access` SECURITY DEFINER RPC. `UPDATE` is revoked from `authenticated`; no `DELETE` policy. Append-only audit by construction. * **`pf_agent_usage_rollup`** — SECURITY DEFINER function; `pf.audit.phi_access.view` gated; returns only aggregated counts and costs — no content, no per-row PHI exposure. * **SUD category handling** — PHI touches on 42 CFR Part 2 records set `phi_category='sud_part2'`; the access event is recorded here, but the protected SUD content itself is governed by CL / PF-27-EN-01. This table records the access event identifier, not the content. * **No cross-core FKs** — `resource_table` / `resource_ref` are soft (text + UUID) references, enabling PHI-touch audit of any-core records without a DB-level FK. `agent_principal_id` / `session_id` / `parent_task_id` are loose UUID references to PF-30-EN-01 and PF-125 entities (same-platform, no FK declared). * **Compliance gate** — `specs/pf/reviews/PF-111-EN-01-COMPLIANCE-SIGNOFF.md` must exist before `pipeline_status` may advance to `compliance_reviewed` (governed spec; regulated PHI-adjacent audit trail). #### Open Items | ID | Status | Description | | ----------- | --------- | ----------------------------------------------------------------------------------------------------------------------- | | OQ-Ext-1 | P0 — open | Reconcile `pf_ai_usage` (spec body name) vs `pf_ai_usage_logs` (live table) — rename/alias decision deferred | | OQ-Ext-2 | Open | Source of per-agent / per-task budget limits (PF-125 run policy vs PF-126 vs PF-43 sub-entitlement) — not yet pinned | | OQ-Ext-3 | Open | PHI-touch detection seam — explicit per-tool call vs central enforcement point in PF-125 / PF-127 data layer | | FR-2 | Planned | Persist `pf_ai_usage_logs` row per gateway completion from `usage.ts`; `buildUsageRecord()` exists but does not persist | | FR-3 | Planned | `pf_ai_model_pricing` table and deterministic `estimated_cost_usd` computation | | FR-4 | Planned | `pf_ai_usage_rollup` per-org billing rollup view + RPC | | FR-5 / FR-9 | Planned | Pre-dispatch spend-cap wiring in `usage.ts`; `AiBudgetExceededError` class not yet declared | | OQ-Ext-4 | Open | Whether per-agent spend spikes extend `pf-check-ai-usage-anomalies` or are owned by PF-130 dashboards | ### PF-111-EN-02 — AI Eval / Observability Quality Gate **Spec:** [PF-111-EN-02 AI Eval / Observability Quality Gate](../../../specs/pf/specs/PF-111-EN-02-ai-eval-observability-quality-gate.md) PF-111-EN-02 formalises ownership and run-mode governance for the three-layer eval harness (L1 JSONL deterministic / L2 self-hosted Langfuse observability / L3 Promptfoo LLM-judge) that rides the AI gateway established by PF-111. This enhancement introduces no new cross-core contracts or external integration surfaces — it operates entirely within the existing Vercel AI Gateway surface, the `supabase/functions/_shared/ai` consumer interface, and the metadata-only Langfuse trace pipeline already documented in this file. PHI guardrails remain unchanged: Langfuse traces stay metadata-only pending a signed BAA and US-residency confirmation, and real-trace eval-candidate capture remains deferred per the same PHI policy inherited from the parent spec. # Portal Task Automation — Integration Contract Source: https://docs.encoreos.io/architecture/integrations/portal-task-automation-integration PF-119 integration contract for Portal Task Automation: the @/platform/automation/portal consumer seam, dispatch/status APIs, and cross-core boundaries. # Portal Task Automation — Integration Contract (PF-119) **Spec:** [PF-119](../../../specs/pf/specs/PF-119-portal-task-automation.md) · **Owner:** Platform Foundation · **Status:** Phase 2 (framework) built; Phase 3 (live worker) pilot pending. Portal Task Automation is a PF capability that runs "portal bots" (log into an external web portal with no API and repeat steps) on a shared headless-browser worker. Consumer cores dispatch a run and receive the result **without importing any browser code or another core** (constitution §1). ## Consumer seam (the only supported entry point) * **Client (Vite SPA):** `@/platform/automation/portal` — `dispatchPortalRun(input)`, `getPortalRunStatus(runId)`, and the `usePortal*` hooks. No Playwright/Chromium is reachable through this import. * **Server (edge → edge):** `supabase/functions/_shared/portal-runner.ts` — `dispatchPortalRun(supabase, params)`. A consumer-core edge function (e.g. CE-69) calls this with the service client; it enforces the ToS gate, creates the run, enqueues it to FW-46, and (fixture/inline) returns the terminal result. ```ts theme={null} // Dispatch contract dispatchPortalRun({ flowId: string, // an enabled pf_portal_flows row (ToS-approved + acknowledged) inputs?: Record, // PHI-redacted before persistence consumerCore?: string, // e.g. 'ce' — recorded on the run for traceability consumerRef?: string, // the consumer's own id (e.g. a prior-auth id) }) => { runId: string, status: 'queued' | 'running' | 'succeeded' | 'healed_succeeded' | 'failed' | 'cancelled', result?: { confirmation_number?: string, ... } | null, confirmationNumber?: string | null, errorCode?: string | null, // TOS_NOT_APPROVED, FLOW_DISABLED, PORTAL_AUTOMATION_UNAVAILABLE, … } ``` ## Edge / control plane (Deno — no browser) | Function | verify\_jwt | Purpose | | ---------------------------- | ------------------------------------ | ------------------------------------------------------------------------------------------------------------ | | `portal-bot-dispatch` | false (validateAuth in-fn) | authz (`pf.portal_bot.run`), ToS gate (403 on block, AC-4), create run, enqueue FW-46, inline-run in fixture | | `portal-bot-status` | false (reads under caller JWT, RLS) | run status + extracted result + per-step screenshot trail | | `portal-bot-worker-callback` | false (`PORTAL_WORKER_TOKEN` header) | external worker posts terminal result + steps (Phase 3) | Success envelope: `{ data: {...} }`. Error envelope: `{ error: { code, message } }` (sanitized, no PHI). Edge-functions rules apply (`getCorsHeaders`, `createLogger`, service-role sentinel). ## Reused platform substrate (no parallel infrastructure) * **FW-46 durable worker** — runs ride `workflow_execution_queue` (pgmq) with `trigger_type='portal_task'` + `portal_run_id`; the `workflow-executor-worker` routes them to the runner before any rule lookup. `pf_portal_enqueue_due_runs()` (pg\_cron, every minute) enqueues due schedules. Retry/DLQ/timeout handling is inherited (FR-3). * **PF-75/76 vault** — bot credentials are stored at source `(pf_portal_flows, 'bot_credential', flowId)` and brokered at run time via `pf_retrieve_credential_by_source` (service-role friendly). Flows store a handle, never secret material (FR-5). * **Execution transport** — `_shared/portal-transport.ts`: deterministic Playwright (Phase 3 external worker) → AI self-heal → vision fallback; `fixture` for hermetic tests; `unavailable` default in the edge runtime. The orchestration + DB shape are stable across transports. ## ToS gate (AC-4) A flow is dispatchable only when its `pf_portal_definitions.terms_of_service_status='approved'` **and** the flow's `tos_acknowledged_at` is set. The gate is enforced in three places: the UI enable dialog, `dispatchPortalRun` (403, no run created), and the runner (defense in depth). ## Consumer registry | Consumer | Spec | Wiring | State | | ------------------------------------------ | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | | CE-69 (Optum AZ prior-auth) | CE-69 | `ce-submit-optum-pa/transport.ts` `worker` branch (opt-in, default off) | pilot hook documented; live cutover = Phase 3 (needs external worker) | | PM-10-EN-03 (UHC IOP pre-auth interim RPA) | PM-10-EN-03 | screenshot-intake worksheet (PF-62) → `pm_prior_authorizations` draft → fill dispatched via `dispatchPortalRun` (fill-then-pause; human clicks Submit) | spec v1.1 (draft); shares the CE-69 fill lane — both front-ends produce one approved-worksheet payload | | PM-51 (payer-portal RPA) | PM-51 | `pm_rpa_*` generalized onto `pf_portal_*`; PM-51 becomes a consumer | sequenced after the CE-69 pilot | | GR / FA / RH | — | recorder-authored flows | future | ## Failure modes * **Worker unreachable / no browser** → run `failed` with `PORTAL_AUTOMATION_UNAVAILABLE`; consumer cores degrade to their existing manual fallback (e.g. CE-69 AC-6). FW-46 retry/DLQ applies to scheduled runs. * **Selector drift** → AI self-heal re-locates and caches the locator into the flow's step graph (AC-3); a hard miss fails loudly with a screenshot — never a silent wrong-data success. * **Cross-tenant** → impossible by RLS on every `pf_portal_*` table (AC-6, verified). # Activities Source: https://docs.encoreos.io/ce/activities Search, filter, and export activity records logged across contacts and partners in the CE core. The Activities screen provides a searchable, paginated log of all activities recorded across contacts and partners. It is accessible at `/ce/activities`. ## Overview The Activities screen displays a timeline of activity records scoped to the current organization. Users can search and filter the list using the Search & Filter card, then page through results 20 at a time. A running total is shown in the Results card header. Users with the `ce.analytics.export` permission see an Export CSV button; clicking it opens a confirmation dialog before the file is downloaded. If results exceed a documented maximum row limit, a warning note appears in the Results card. ## Who it's for Access follows your organization's role and module configuration. The Export CSV button is gated by `ce.analytics.export`. ## Before you start * Your organization must be set up in the platform (the page remains in a loading skeleton until an organization is resolved). * To export results, you need the `ce.analytics.export` permission. ## Steps Navigate to `/ce/activities` from the Community Engagement menu. Use the Search & Filter card to enter a text query or select filter criteria, then wait for results to update. Use the Previous and Next buttons at the bottom of the Results card to navigate pages of 20 records. If you have export permission and results are present, click Export CSV, review the confirmation dialog, and confirm to download. ## Key concepts * **Activity timeline** — activities are rendered as timeline items via `ActivityTimelineItem`; each item includes an activity ID. * **Export row limit** — exports are capped at `MAX_EXPORT_ROWS` (constant defined in `src/cores/ce/utils/exportActivities.ts`). * **Pagination** — page size is fixed at 20 records per page. * **Follow-up tasks** — when you log an activity with a follow-up date, Encore creates a platform task tied to the activity. If your organization has [M365 calendar push](/ce/ce-settings#follow-up-task--m365-calendar-push) enabled, a PHI-safe calendar event is also written to the assignee's Outlook calendar. If the calendar write fails, the follow-up task is still created. ## Related Community Engagement core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/ce.tsx * src/cores/ce/pages/ActivitySearchPage.tsx * src/cores/ce/utils/exportActivities.ts # Activity Analytics Source: https://docs.encoreos.io/ce/activity-analytics Planned analytics screen for activity trends, engagement metrics, and team performance in the CE core. The Activity Analytics screen is accessible at `/ce/analytics/activities` and is intended to surface activity trends, engagement metrics, and team performance data. The analytics surface itself is . ## Overview The deployed screen currently shows a placeholder card while the analytics surface is . The page header states "Activity Analytics" with the description "Activity trends, engagement metrics, and team performance." An Export dropdown is rendered in the header for users with the `ce.analytics.export` permission, using `reportType="activities"`. No analytics charts or tables are rendered beneath the placeholder yet. ## Who it's for Required permission: `ce.analytics.view` (route-level gate in `ce.tsx`). The export action within the page requires `ce.analytics.export`. ## Before you start * You need the `ce.analytics.view` permission to reach this screen. * Export requires the additional `ce.analytics.export` permission. ## Steps Go to `/ce/analytics/activities` via the Community Engagement analytics menu. The screen currently shows a placeholder. This surface is — check the changelog for when the analytics implementation ships. Use the Export dropdown in the page header to download analytics data when the feature is live. ## Related Community Engagement core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/ce.tsx * src/cores/ce/pages/ActivityAnalyticsPage.tsx # Pipeline tracks admin guide Source: https://docs.encoreos.io/ce/admin-pipeline-tracks Configure multi-track service-line pipelines for the Community Engagement leads board, including default tracks, lead assignment, and reordering. # CE-64: Pipeline Tracks — Admin Guide **Version:** 1.0.0 **Last Updated:** 2026-05-16 **Module:** CE (Community Engagement) **Status:** Active > **Purpose:** Help administrators configure multi-track service-line pipelines for the CE Leads kanban board. *** ## Overview CE-64 introduces **pipeline tracks** — org-scoped service lines (e.g. Residential, IOP, PHP, Outpatient) that group lead stages on the pipeline board. Each lead belongs to exactly one track. The board renders one horizontal row per active track, with that track's stages displayed left-to-right. * **Spec:** [`specs/ce/specs/CE-64-multi-track-service-line-pipeline.md`](https://github.com/Encore-OS/encoreos/blob/development/specs/ce/specs/CE-64-multi-track-service-line-pipeline.md) * **Settings URL:** `/ce/settings/pipeline-tracks` * **Required permission:** `ce.pipeline_tracks.manage` *** ## Default Tracks Every organization is seeded with a **General** track (marked `is_default = true`). Existing stages and leads were migrated into this track during the CE-64 rollout. The default track cannot be deleted while any lead references it. You may add additional tracks (Residential, IOP, PHP, Outpatient, Sober Living, etc.) as needed. *** ## Creating a Track 1. Navigate to **CE → Settings → Pipeline Tracks**. 2. Click **New Track**. 3. Fill in: * **Name** (required) — e.g. `Residential`. * **Color** — optional hex value used for a thin row accent on the board. * **Associated Services** — comma-separated list of service strings matching the CE-58 `requested_services` picklist. Leads whose requested services overlap this list are auto-assigned to this track on creation. * **Active** — inactive tracks are hidden from the board and from lead creation. * **Default** — exactly one track per org is the fallback for leads that match no other track. Marking a new track default un-marks the previous default. 4. Click **Save**. New tracks receive the next available `sort_order`. *** ## Reordering Tracks Use the ▲ / ▼ buttons in the list to change row order on the board. Changes persist immediately. *** ## Editing a Track Click **Edit** on any row to update name, color, associated services, active flag, or default flag. Changing **Associated Services** affects only newly created leads — existing leads keep their assigned track until reassigned manually from the lead detail page. *** ## Deleting a Track Delete is blocked if any active leads still reference the track. The UI shows the lead count and prompts you to reassign first. To reassign leads: 1. Open each affected lead's detail page. 2. Use the **Pipeline Track** selector to move it to another track. 3. Retry the delete. The default track also cannot be deleted while it remains the org default — promote another track to default first. *** ## How Lead Track Assignment Works * **On create:** The lead's `requested_services` are matched against active tracks' `associated_services`. A single match wins; zero or multiple matches fall back to the org's default track. * **Manually:** Use the **Pipeline Track** card on the lead detail page. Changing the track **clears the lead's current stage** because stages belong to tracks. The change is logged to CE-60 audit (identifiers only — no PHI). *** ## Unassigned and Terminal Columns Each track row includes its own **Unassigned** virtual column for active leads that have no stage set. A lead appears only in the Unassigned column of its own track. For example, a Recovery housing lead with no stage shows under the Recovery housing row, not under another track. If a lead's `track_id` is missing or points to an inactive track, the board shows the lead under the org's default track. The board groups org-wide **Converted** and **Lost** virtual columns into a single **Terminal** row pinned below the active track rows. This keeps terminal leads visible without crowding any one track. *** ## Collapse State on the Board Each user may collapse/expand individual track rows. Collapse state is stored in browser `sessionStorage` per organization and does not sync across devices. *** ## Permissions | Permission | Allows | | --------------------------- | ---------------------------------------------------------------------------------------- | | `ce.pipeline_tracks.manage` | Create, edit, reorder, and delete pipeline tracks. Required to access the settings page. | | `ce.leads.update` | Change a lead's pipeline track from the lead detail page. | *** ## References * Spec: [CE-64 Multi-Track Service Line Pipeline](https://github.com/Encore-OS/encoreos/blob/development/specs/ce/specs/CE-64-multi-track-service-line-pipeline.md) * Plan: [CE-64 Implementation Plan](https://github.com/Encore-OS/encoreos/blob/development/specs/ce/plans/CE-64-multi-track-service-line-pipeline-PLAN.md) * Context: [CE-64 Implementation Context](https://github.com/Encore-OS/encoreos/blob/development/specs/ce/specs/CE-64-CONTEXT.md) * Integration: [CE-64 Integration Contract](https://github.com/Encore-OS/encoreos/blob/development/docs/architecture/integrations/CE-64-multi-track-service-line-pipeline-INTEGRATION.md) # Calendar Connections Source: https://docs.encoreos.io/ce/calendar-connections Connect, disconnect, and manage Google Calendar or Microsoft Outlook sync for the CE core at /ce/settings/calendar. The Calendar Connections settings screen lets users link their personal Google Calendar or Microsoft Outlook account so meetings sync with CE activity timelines. It is accessible at `/ce/settings/calendar`. ## Overview The screen loads all calendar connections for the current organization. Each connected calendar appears as a card showing the provider (Google Calendar or Microsoft Outlook), the connected account identifier, sync status badge (Syncing / Paused), last sync timestamp, and an auto-sync toggle. Users with `ce.calendar.connect` permission also see buttons to connect a Google Calendar or Microsoft Outlook account and, if any connections have a pending vault migration, a backfill action. An informational alert describes whether calendar OAuth credentials come from the organization's own Google Cloud project or from the Encore platform default. ## Who it's for Required permission: `ce.calendar.view` (route-level gate). Connecting and running vault backfill requires `ce.calendar.connect`. ## Before you start * You need the `ce.calendar.view` permission. * Connecting a calendar additionally requires `ce.calendar.connect`. * If using Google Calendar, either `VITE_GOOGLE_CALENDAR_CLIENT_ID` must be configured, or the platform default will be used with a warning about HIPAA BAA scope. * If using Microsoft Outlook, `VITE_MICROSOFT_CALENDAR_CLIENT_ID` must be configured. ## Steps Navigate to `/ce/settings/calendar` from CE Settings. Click Connect Google Calendar or Connect Microsoft Outlook. You will be redirected to the provider's OAuth authorization page. After authorizing, you are returned to the platform. Use the Auto-sync toggle on a connection card to pause or resume calendar synchronization. Click Disconnect on a connection card and confirm the action to remove that calendar integration. If the migration banner is shown, click Run vault backfill to migrate legacy calendar tokens into the PF-76 Credential Vault. Progress is displayed while the operation runs. ## Key concepts * **Credential Vault** — calendar OAuth tokens are stored in the platform Credential Vault (not in plaintext). The backfill migrates any connections still using the legacy encrypted column. * **Credential source** — `tenant` if the organization has configured its own Google Cloud OAuth client ID; `platform` if using the Encore shared client. * **Providers supported** — `google` and `microsoft` (Microsoft Outlook). ## Related Community Engagement core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/ce.tsx * src/cores/ce/pages/CalendarConnectionSettingsPage.tsx * src/cores/ce/hooks/useCalendarConnections.ts * src/platform/integrations/hooks/useGoogleWorkspaceConnection.ts # Calendar & Scheduling — Admin Guide Source: https://docs.encoreos.io/ce/calendar-scheduling-admin-guide Calendar integration allows staff to connect Google or Microsoft calendars for two-way event sync and meeting scheduling from within CE. ## Overview Calendar integration allows staff to connect Google or Microsoft calendars for two-way event sync and meeting scheduling from within CE. ## Configuration ### Module Settings Three organization-level settings control calendar behavior (CE Settings): | Setting | Default | Range | Description | | ------------------------ | ------- | ---------- | ------------------------------------------ | | Default meeting duration | 30 min | 15–480 min | Pre-filled duration for new meetings | | Sync poll interval | 15 min | 5–60 min | How often the system checks for new events | | Pre-meeting notification | 15 min | 5–1440 min | Minutes before meeting to send reminder | ### Meeting Follow-up Tasks When a meeting is scheduled from CE, Encore can automatically create a follow-up task in the unified task list and notify the assignee. The **Meeting Follow-up Tasks** card on **CE → Settings** controls the per-organization defaults: | Setting | Default | Range | Description | | --------------------------- | ------- | -------- | -------------------------------------------------------------------------------------------------------------------------------- | | Auto-create follow-up tasks | On | On / Off | When on, each scheduled meeting fail-openly creates a follow-up task. The calendar push is never blocked if task creation fails. | | Default follow-up days | 3 | 1–14 | Days after the meeting end time that the follow-up task is due. | The follow-up task is created with `source_type = calendar_event`, priority `medium`, and status `open`. It is assigned to the person who booked the meeting unless they pick a different assignee in the **Schedule Meeting** dialog. Assignees outside the booking user's organization are rejected — the task falls back to the booking user. Admins need the `ce.admin` permission to see and edit this card. Users without admin access still see the in-dialog follow-up controls; they just cannot change the org defaults. ### Permissions Assign these permissions via the Roles & Permissions settings: | Permission | Purpose | | ---------------------- | ---------------------------------------------------- | | `ce.calendar.connect` | Allow users to connect/disconnect calendar accounts | | `ce.calendar.schedule` | Allow users to schedule meetings from CE | | `ce.calendar.view` | Allow users to view their own synced events | | `ce.calendar.view-all` | Allow users to view all organization calendar events | ### OAuth Provider Setup Calendar OAuth requires provider credentials configured as Supabase secrets: * **Google:** `GOOGLE_CALENDAR_CLIENT_ID`, `GOOGLE_CALENDAR_CLIENT_SECRET` * **Microsoft:** `MICROSOFT_CALENDAR_CLIENT_ID`, `MICROSOFT_CALENDAR_CLIENT_SECRET` ### Sync Architecture * Events sync bi-directionally between external calendars and `ce_calendar_events` * Outbound meetings (scheduled from CE) create activities linked via `activity_id` * Inbound events are stored with `sync_direction = 'inbound'` * Token encryption uses Supabase Vault for `access_token_encrypted` and `refresh_token_encrypted` ## Security * All calendar data is tenant-isolated via `organization_id` RLS * Tokens are encrypted at rest * Connection ownership enforced by `ce_user_owns_calendar_connection()` SECURITY DEFINER function * Cross-user visibility requires `ce.calendar.view-all` permission *** ## BYO Google OAuth (PF-104) By default, calendar OAuth uses the Encore-managed Google client (`GOOGLE_CALENDAR_CLIENT_ID` / `GOOGLE_CALENDAR_CLIENT_SECRET` configured at the platform level). Tenants who require their own Google client (for branding on the consent screen, internal-only OAuth scopes, or workspace admin policies) can register a per-organization Google Workspace connection. ### Setup steps 1. In Google Cloud Console, create an OAuth 2.0 Client ID of type **Web application**. 2. Add the Encore callback URL to **Authorized redirect URIs**: `https:///functions/v1/calendar-oauth-callback`. 3. In Encore, navigate to **CE → Settings → Calendar Connections**. 4. In the **Google credentials** banner, click **Configure organization credentials** to open the Google Workspace integration settings. 5. Paste the `oauth_client_id` and `oauth_client_secret` from Google Cloud Console. They are stored in the **PF-76 Credential Vault** (encrypted at rest, never returned to the browser after save). 6. New calendar connections from this organization will automatically use the BYO client and be linked via `gws_connection_id`. Existing connections continue to use whichever client was active at connect time. ### Status indicator The Calendar Connections page shows which client is active per connection: * **Your organization** — connection used the BYO Google Workspace client. * **Encore platform default** — connection used the platform-managed client. ## Organization Calendar via Google Workspace (PF-101) In addition to per-user OAuth, staff can schedule meetings through your organization's Google Workspace connection using domain-wide delegation. The **Schedule Meeting** dialog exposes an **Organization Calendar** option whenever the safeguard below passes. The event is then created via the platform Google Workspace surface instead of the user's personal calendar grant. ### Prerequisites The Organization Calendar option only appears for a user when all of the following are true (fails closed): * A `pf_google_workspace_connections` row exists for the organization with `status = 'connected'`. * The connection has `capability_calendar_enabled = true` and a non-null `baa_attested_at`. * The signed-in user's email domain exactly matches the connection's `primary_domain`. If any check fails, the option is hidden and users fall back to their personal calendars. See the [Google Workspace integration overview](/integrations/GOOGLE_WORKSPACE_OVERVIEW) for connection setup, BAA attestation, and capability flags. ### Behavior notes * Events scheduled through this path are written via `createGoogleCalendarEvent` and logged as CE activities just like personal-OAuth meetings; the calendar event cache and activity timeline are invalidated on success. * Free/busy overlay in the dialog is currently sourced from the personal-OAuth calendar; users see availability only when they pick a personal connection. A domain-wide-delegation free/busy overlay is planned. * Errors are sanitized before being shown in the toast — no raw Google API payloads are surfaced to end users. ## Vault token migration (PF-101 WS4) Calendar connections created before PF-101 stored access and refresh tokens as plaintext in `ce_calendar_connections.access_token_encrypted` and `refresh_token_encrypted`. Those rows are flagged with `migration_required = true`. ### Running the backfill Org admins (`org_admin` or `platform_admin`) will see a **Vault migration available** banner on the Calendar Connections page when at least one legacy row exists. Click **Run vault migration** to execute the backfill: * The UI calls the `calendar-token-backfill` edge function in batches of 25 connections until none remain. * For each row, the function moves any present plaintext token into the PF-76 Credential Vault, links it via `access_token_credential_id` / `refresh_token_credential_id`, clears the legacy column, and sets `migration_required = false` + `migrated_at = now()`. * The migration is idempotent and safe to re-run. ### Verification After migration: ```sql theme={null} SELECT count(*) FILTER (WHERE migration_required) AS pending, count(*) FILTER (WHERE NOT migration_required) AS migrated FROM ce_calendar_connections WHERE organization_id = ''; ``` `pending` should be `0`. Edge functions (`calendar-freebusy`, `calendar-schedule`, `calendar-sync`) automatically resolve tokens vault-first via `getFreshCalendarAccessToken()` and fall back to legacy columns only for rows the backfill has not yet processed, so service continuity is preserved during the transition. ### Logs & observability * Edge Function logs include a `correlationId` per backfill batch and per token refresh; no token material or attendee email is ever logged. * Token refresh failures are logged with `error_code` (e.g. `invalid_grant`) so admins can prompt the user to reconnect. # Calendar & Scheduling — User Guide Source: https://docs.encoreos.io/ce/calendar-scheduling-user-guide Connect Google or Microsoft calendars for two-way event sync and meeting scheduling inside Community Engagement. ## Connecting Your Calendar 1. Navigate to **CE → Settings → Calendar Connections** 2. Click **Connect Google Calendar** or **Connect Microsoft Calendar** 3. Authorize access in the OAuth popup 4. Select which calendars to sync 5. Toggle **Sync Enabled** to start syncing events ## Scheduling a Meeting 1. Open any contact, lead, or partner detail page 2. Click the **Schedule Meeting** button (requires `ce.calendar.schedule` permission) 3. Fill in: title, date/time, attendees, location, notes 4. Select which calendar connection to use (see [Choosing a Calendar](#choosing-a-calendar)) 5. Click **Schedule** — the meeting is created on the selected calendar and logged as a CE activity ### Choosing a Calendar The calendar picker shows two kinds of options: * **Your personal calendars** — any Google or Microsoft calendars you connected via OAuth on the Calendar Connections page. * **Organization Calendar** — appears only when your organization has connected Google Workspace with calendar enabled and your work email's domain matches the Workspace primary domain. Selecting this option creates the event through the organization's Google Workspace connection instead of your personal OAuth grant. If your admin has not enabled the organization calendar, or you sign in with an email outside the Workspace domain, only your personal calendars appear. Availability overlay (free/busy) is currently shown only for personal calendars; choose a personal calendar first if you need to see existing busy windows before booking. ### Adding a Follow-up Task When you schedule a meeting from a personal calendar, the dialog includes a collapsible **Follow-up task** section so you can create a reminder task in the same step. 1. Expand **Follow-up task** in the Schedule Meeting dialog. 2. Check **Create a follow-up task for this meeting**. If your admin has enabled auto-create, this is on by default. 3. Adjust the **Due date** — it defaults to the meeting date plus the org's default follow-up days (typically 3). 4. Optionally pick an **Assignee** from your organization. Leave it blank to assign the task to yourself. 5. Click **Schedule**. The meeting is created on the calendar and the follow-up task appears in the assignee's task list with a notification. The follow-up task is created with priority **medium** and status **open**, and is linked back to the calendar event so you can trace it on the activity timeline. If the calendar push succeeds but task creation fails, you'll see a warning toast — the meeting itself is still booked. The Follow-up task section is not shown when you choose the **Organization Calendar** option. ## Viewing Calendar Events Synced calendar events appear in: * The activity timeline on contact/lead/partner detail pages * Calendar events are marked with a calendar icon indicator ## Managing Connections * **Disconnect:** Click the disconnect button on any connection card * **Toggle Sync:** Enable/disable syncing without disconnecting * **Refresh:** Connections sync automatically at your organization's configured interval ## Permissions Required | Action | Permission | | ---------------------- | ---------------------- | | Connect a calendar | `ce.calendar.connect` | | Schedule meetings | `ce.calendar.schedule` | | View calendar events | `ce.calendar.view` | | View all users' events | `ce.calendar.view-all` | # Call Analytics Source: https://docs.encoreos.io/ce/call-analytics View call volume trends, disposition breakdown, and recording coverage metrics for the CE core. The Call Analytics screen surfaces call volume trends, disposition breakdown, and recording coverage data. It is accessible at `/ce/analytics/calls`. ## Overview The screen renders a `CallAnalyticsDashboard` component below a page header titled "Call Analytics" with the description "Call volume trends, disposition breakdown, and recording coverage." An Export dropdown in the header is available to users with the `ce.analytics.export` permission. The dashboard content is rendered by `CallAnalyticsDashboard`. ## Who it's for Required permission: `ce.analytics.view` (route-level gate). The export action requires `ce.analytics.export`. ## Before you start * You need the `ce.analytics.view` permission. * Export requires the additional `ce.analytics.export` permission. ## Steps Go to `/ce/analytics/calls` via the Community Engagement analytics menu. The dashboard shows call volume, disposition breakdown, and recording coverage. Apply any available date range or filter controls within the dashboard. Use the Export dropdown in the page header to download a report. Requires `ce.analytics.export` permission. ## Key concepts * **Disposition breakdown** — SME: confirm available disposition categories (not determinable from page wrapper code alone). * **Recording coverage** — SME: confirm how recording coverage is calculated and what it represents. ## Related Community Engagement core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/ce.tsx * src/cores/ce/pages/CallAnalyticsPage.tsx # Campaign Analytics Source: https://docs.encoreos.io/ce/campaign-analytics Track campaign performance, ROI, and conversion metrics across CE marketing campaigns. The Campaign Analytics screen tracks campaign performance, ROI, and conversion metrics. It is accessible at `/ce/analytics/campaigns`. ## Overview The screen renders a `CampaignAnalyticsDashboard` component below a page header titled "Campaign Analytics" with the description "Track campaign performance, ROI, and conversion metrics." An Export dropdown is shown in the header for users with the `ce.analytics.export` permission. The export uses `reportType="pipeline"`. ## Who it's for Required permission: `ce.analytics.view` (route-level gate). The export action requires `ce.analytics.export`. ## Before you start * You need the `ce.analytics.view` permission. * Export requires the additional `ce.analytics.export` permission. ## Steps Go to `/ce/analytics/campaigns` via the Community Engagement analytics menu. The dashboard shows performance, ROI, and conversion data for campaigns. Apply any filter controls within the dashboard. Use the Export dropdown in the page header to download a report. Requires `ce.analytics.export`. ## Related Community Engagement core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/ce.tsx * src/cores/ce/pages/CampaignAnalyticsPage.tsx # Campaigns Source: https://docs.encoreos.io/ce/campaigns View, create, edit, delete, and manage marketing campaigns for outreach, awareness, and engagement tracking. The Campaigns screen displays all marketing campaigns for the current organization and is accessible at `/ce/campaigns`. ## Overview The Campaigns screen renders a grid of campaign cards, each showing campaign name and status badge. Users can filter the list by search text, status, and campaign type using controls at the top of the page. The New Campaign button opens a form dialog to create a campaign. Each card provides Edit and Delete actions; deletion requires confirmation in an alert dialog. Campaigns are fetched scoped to the current organization. ## Who it's for Required permission: `ce.campaigns.view` (route-level gate). Creating a campaign likely requires additional write permissions (SME: confirm exact create permission). ## Before you start * You need the `ce.campaigns.view` permission. * Your organization must be active in the platform. ## Steps Navigate to `/ce/campaigns` via the Community Engagement menu. Use the search input, Status dropdown, or Type dropdown to narrow the campaign list. Click New Campaign to open the campaign form dialog, fill in the required fields, and submit. Click the Edit action on a campaign card to reopen the form dialog pre-populated with existing values. Click Delete on a campaign card, then confirm the deletion in the alert dialog. This action cannot be undone. ## Key concepts * **Campaign status** — determined by `CAMPAIGN_STATUS_LABELS` constants (SME: confirm available statuses). * **Campaign type** — determined by `CAMPAIGN_TYPE_LABELS` constants (SME: confirm available types). ## Viewing a campaign The route `/ce/campaigns/:id` is not registered as a standalone screen in the current CE route configuration. As of the current codebase, `/ce/campaigns/:id` does not map to a registered route in `src/routes/ce.tsx`. Campaign creation and editing are performed through a dialog on the `/ce/campaigns` list screen (`CampaignsPage`). Visiting `/ce/campaigns/:id` currently redirects to the platform's Not Found handler. ## Related Community Engagement core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/ce.tsx * src/cores/ce/pages/CampaignsPage.tsx # Partner Milestone Template Admin — Admin Guide Source: https://docs.encoreos.io/ce/ce-06-en-01-admin-guide Tenant-admin guide to defining and managing partner milestone templates that structure partner progress workflows. ## Overview Partner Milestone Template Admin lets a CE administrator define the milestone templates that structure partner progress workflows. A template is an ordered set of milestones; you control which entries appear, the order they run in, whether the template is active, and — optionally — which partner type it applies to. Templates are managed from the CE partner surfaces at **/ce/contacts** and are scoped to your organization. ## Initial setup Before milestone templates can be configured and used: 1. **Enable the Community Engagement (CE) module** for your organization. 2. **Grant CE administrative access** to the staff who will manage templates. Access to the partner surfaces at **/ce/contacts** is gated by `ce.contacts.view`, and template management requires the CE partner-administration permissions listed under [Permissions](#permissions). 3. **Confirm your partner-type taxonomy** (optional). If you want a template to apply only to certain partner types, confirm the partner types you use so templates can be scoped to them. Templates left unscoped apply to all partners. All template configuration is tenant-scoped — every template is stored against your `organization_id` and is never visible to other organizations. ## Configuration options * Milestone template CRUD in the CE partner surfaces. * Template ordering (`display_order`) and activation / deprecation (`is_active`) controls. * Optional partner-type scoping on templates. ## Permissions Access to the partner surfaces at **/ce/contacts** is gated by `ce.contacts.view`. Milestone-template administration is part of the CE partner-administration surfaces, so staff who manage templates need `ce.contacts.view` plus the partner-management keys below: | Key | What it governs | | -------------------------- | ---------------------------------------------------------------------- | | `ce.contacts.view` | Open the CE partner surfaces where templates are managed (route guard) | | `ce.partners.view` | View partner records and the templates applied to them | | `ce.partners.create` | Create partner records that consume templates | | `ce.partners.edit` | Edit partner records and their milestone/workflow configuration | | `ce.partners.delete` | Remove partner records | | `ce.partner_progress.view` | View partner progress driven by active templates | Grant these via the role editor (**Settings → Roles**). Per constitution §5.2.3, partner-type scoping and template content are tenant-configurable — there are no platform-wide hardcoded templates. ## Auditing & monitoring * Every template mutation includes `organization_id` and is rejected for cross-organization access; row-level security enforces org isolation for each create, edit, reorder, activate, and deprecate operation. * Deprecating a template removes it from new partner-workflow selection paths, while historical partner records that already reference it remain readable. ## Troubleshooting * **Configuration changes don't take effect.** Some settings require a session refresh; users should sign out and back in. * **A deprecated template still shows on existing partners.** That is expected — deprecation only hides a template from new selections; partners already using it keep their history. ## Related * [User guide](./ce-06-en-01-user-guide.md) * Source spec: `specs/ce/specs/CE-06-EN-01-partner-milestone-template-admin.md` # Partner Milestone Template Admin — User Guide Source: https://docs.encoreos.io/ce/ce-06-en-01-user-guide Configure partner milestone templates: build ordered milestone sets and apply them to partner progress workflows. ## Overview Partner Milestone Template Admin is where you build the milestone templates that structure partner progress. A template is an ordered set of milestones; you can create and edit it, reorder its entries, activate it, deprecate it when it is no longer needed, and optionally scope it to a specific partner type. You manage templates from the CE partner surfaces at **/ce/contacts**. ## Prerequisites * Your organization must have the Community Engagement module enabled (contact your admin if unsure). * You need access to the CE partner surfaces (`ce.contacts.view`) plus partner-administration permissions — see the [admin guide](./ce-06-en-01-admin-guide.md). ## What you can do * Create, edit, reorder, activate, and deprecate milestone templates. * Optionally scope a template to a partner type. * Keep historical partner records readable after a template is deprecated. ## Common workflows ### Create and order a milestone template Go to **/ce/contacts** and open the milestone templates configuration. Add a new milestone template and its milestone entries. Reorder the entries so they run in the sequence partners should follow. The order you set is saved as the template's `display_order`. Mark the template active. It becomes available for selection in partner workflows, with its order and active state persisted. ### Scope a template to a partner type Edit the milestone template you want to limit. Set an optional partner-type scope on the template. The partner-type constraint is saved and enforced when templates are selected for partner workflows. Templates left without a partner-type scope remain available for all partners. ### Deprecate a template Edit the template you no longer want offered. Mark the template deprecated. It is removed from new partner-workflow selection paths. Partners that already reference the template keep their records — deprecated templates remain readable on existing partner history. ## Troubleshooting * **The feature isn't available.** Confirm your organization has CE enabled and you have the required permissions. * **A deprecated template still appears on a partner.** That's expected — deprecation hides a template from new selections only; existing partner history is preserved. ## Related * [Admin guide](./ce-06-en-01-admin-guide.md) * Source spec: `specs/ce/specs/CE-06-EN-01-partner-milestone-template-admin.md` # Questionnaire Template and SLA Admin — Admin Guide Source: https://docs.encoreos.io/ce/ce-28-en-01-admin-guide Tenant-admin configuration guide for CE-28-EN-01 (Questionnaire Template and SLA Admin). ## Overview This guide covers tenant-admin configuration for Questionnaire Template and SLA Admin (spec CE-28-EN-01). ## Initial setup Before users can submit screenings, a tenant admin must: 1. **Grant the required permissions.** Assign `ce.screening.create` and `ce.screening.view` to the roles that will submit and view screenings. Use Settings → Roles. 2. **Create and activate a questionnaire template.** Navigate to the questionnaire template admin surface and create a template (v1) for each program type your organization uses. Set it to **active** so runtime screening resolves it. 3. **Configure SLA policies.** Set the SLA window and escalation rules for each org/site/program-type combination you need. The runtime lookup resolves the most-specific policy first: org + site + program type → org + program type → org default. ## Configuration options * Questionnaire template admin: create, version, and activate templates per program type. Activating a new version does not affect existing submissions — those continue to render against the version captured at submission time. * SLA policy admin: configure response windows and escalation profiles at org, org+program-type, or org+site+program-type granularity. * Runtime resolution: the system automatically picks the most-specific active template and SLA policy at the time of each screening. ## Permissions Access to the Contacts module (route `/ce/contacts`) is gated by `ce.contacts.view`. Screening-specific permissions relevant to this feature: | Key | What it allows | | --------------------- | ------------------------------------------------ | | `ce.contacts.view` | Access the Contacts module (page-level gate) | | `ce.screening.create` | Submit a new screening | | `ce.screening.manage` | Manage screening templates and SLA configuration | | `ce.screening.view` | View screening history and submission detail | Grant or revoke these via **Settings → Roles**. All writes to `ce_screening_questionnaires` and `ce_screening_sla_config` are guarded by `organization_id` checks both client-side and via RLS policies, so tenant data cannot cross org boundaries. ## Auditing & monitoring * *Document what events are emitted and where they appear in audit logs.* * *Note any platform integration with `fw_domain_events` or related contracts.* ## Troubleshooting * **Configuration changes don't take effect.** Some settings require a session refresh; users should sign out and back in. * **Audit events missing.** Verify trigger functions are registered (see `npm run validate:specs`). ## Related * [User guide](/ce/ce-28-en-01-user-guide) * Source spec: `specs/ce/specs/CE-28-EN-01*.md` # Questionnaire Template and SLA Admin — User Guide Source: https://docs.encoreos.io/ce/ce-28-en-01-user-guide End-user guide for CE-28-EN-01 (Questionnaire Template and SLA Admin). ## Overview This guide covers the end-user workflow for Questionnaire Template and SLA Admin (spec CE-28-EN-01). ## Prerequisites * Your organization must have this feature enabled (contact your admin if unsure). * You need the `ce.contacts.view` permission or a role that includes it. * Required configuration is in place — see the [admin guide](/ce/ce-28-en-01-admin-guide). ## What you can do * Submit screenings that resolve to the currently active questionnaire template for your program type. * View past submissions rendered against the questionnaire version that was active at submission time. * See SLA windows applied to your screening in line with the policy configured for your org, site, and program type. ## Common workflows ### Submit a screening against the active template Go to **Contacts** (`/ce/contacts`) and open the contact record you want to screen. Click **New Screening** and select the program type. The system resolves the currently active questionnaire template for that program type. Fill in each field in the questionnaire and click **Submit**. The submission is saved with a snapshot of the template version that was active at this moment, so future template changes do not affect this record. ### View a past submission On a contact record, select the **Screenings** tab to see all past submissions. Click any row to open the submission detail. The questionnaire renders using the template version that was active when the screening was submitted — not the current version. ## Troubleshooting * **The feature isn't available.** Confirm your organization has it enabled and you have the required permissions. * **Changes aren't reflected.** Try refreshing the page; if the issue persists, contact your administrator. ## Related * [Admin guide](/ce/ce-28-en-01-admin-guide) * Source spec: `specs/ce/specs/CE-28-EN-01*.md` # Duplicate Matching Settings — Admin Guide Source: https://docs.encoreos.io/ce/ce-74-admin-guide Tune the contact identity-resolution engine per organization: auto-link threshold, review-band floor, and the merge undo window. # Duplicate Matching Settings — Admin Guide The CE identity-resolution engine scores every candidate match between 0 and 1 and routes it by tier: | Tier | When | What happens | | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | | **Auto** | A deterministic key matches (normalized email, E.164 phone, exact name + DOB) or the score is at/above the **auto-link threshold** | Treated as the same person — shown as an exact duplicate on forms; import offers *update* instead of *create* | | **Review** | The score falls between the **review band floor** and the auto-link threshold *and* at least one corroborating field matches (referral source, DOB, or ZIP) | Parked in the duplicate review queue for a human decision — never auto-merged | | **None** | Below the floor, or no corroborating field | Treated as a new person | ## Where to configure Open **Community Engagement → Settings** and find **Duplicate matching & merge** (org-admin only, `ce.admin`): * **Auto-link threshold** — default `0.95`. Raising it makes auto-linking stricter: pairs that scored between the old and new values move to the review queue instead. Lowering it is *not* recommended below `0.9` for patient-adjacent data. * **Review band floor** — default `0.70`. Raising it shrinks the review queue (fewer borderline pairs); lowering it widens the net. The floor must stay below the auto-link threshold (enforced). * **Merge undo window (hours)** — default `72`. How long after a merge the **Undo merge** action stays available. `0` disables undo entirely. Changes take effect immediately — thresholds are read at match time, not cached or baked into a deploy. ## Operational notes * **Probable matches never auto-merge**, at any threshold. The review queue is the only path to a merge, and every merge requires the `ce.contacts.merge` permission (granted to org admins by default — extend via role permissions if intake leads should work the queue). * **Merges are reversible and audited.** Every merge writes a merge-log entry (with a full snapshot for undo) and appears on both contacts' audit timelines. Records are tombstoned, never deleted. * **Dismissals are durable.** A pair dismissed in the review queue will not be re-queued by future scans, imports, or syncs. * **Import and sync use the same engine.** CSV import routes every row through the matcher; exact matches offer *update existing* in the import wizard's duplicate step. The HubSpot sync program (CE-75+) resolves through the same identity map, so external systems cannot create duplicates. ## Monitoring duplicate health Two queries worth keeping an eye on after enabling merge tooling: * **Duplicate rate** — distinct contacts sharing a normalized email or E.164 phone within your org (target: \< 1% after 60 days). * **Queue throughput** — share of review-queue candidates resolved (linked, dismissed, or merged) within 14 days (target: ≥ 80%). # Duplicate Contacts & Merge — User Guide Source: https://docs.encoreos.io/ce/ce-74-user-guide Find and resolve duplicate contacts: the create-form warning, the review queue, field-level merge, and undoing a recent merge. # Duplicate Contacts & Merge — User Guide Encore continuously checks new and imported contacts against your organization's existing records. Exact matches (same email, same phone, or same name + date of birth) are flagged immediately; *probable* matches — similar names backed by a corroborating detail like the same referral source — wait in a review queue. **Nothing is ever merged automatically**: a person with the merge permission reviews every pair. ## The duplicate warning on contact create While you type a new contact's name, email, or phone, a warning appears if a likely match exists: * **Exact match** (red badge) — the email, phone, or name + DOB already belongs to an existing contact. * **Possible match** (gray badge) — the name is similar and a corroborating field matches. * Chips under each match show *why* it matched — for example **Phone exact** and **Name similar (62%)**. Click **Open existing contact** to use the existing record instead of creating a duplicate, or **Dismiss & Continue** if you're sure it's a different person. Phone formatting never hides a duplicate: `(602) 555-0142`, `602.555.0142`, and `+1 602 555 0142` all match each other. Email matching ignores case and stray spaces. ## The duplicate review queue Open **Community Engagement → Contacts → Duplicate Review** (`/ce/contacts/duplicates`). You'll need the `ce.contacts.merge` permission. Duplicate review queue with a pending probabilistic match pair Each pending pair shows its match score, the fields that matched, where the pair was found (form, import, sync, or scan), and how long it has waited. For each pair you can: * **Compare** — side-by-side drawer of both records. * **Merge** — open the merge dialog (below). * **Link** — record that both rows refer to the same person without merging. * **Dismiss** — mark the pair as *not* a duplicate. A dismissed pair never resurfaces in the queue, even if the matching engine sees it again. * **Bulk dismiss** — select multiple pairs with the checkboxes and dismiss them together. ## Merging two contacts Contact merge dialog showing the field-level diff with survivorship defaults The merge dialog shows every field where the two records disagree, side by side. The recommended value is pre-selected (the most recently updated, non-empty value); override any field before confirming. When you confirm: * All related records — activities, calls, documents, tags, leads, relationships, messages, and external links — move to the surviving record. * The duplicate becomes a *tombstone*: old links and bookmarks to it redirect to the survivor, and it disappears from lists, search, and future duplicate checks. * The merge is fully audited on both contacts' history timelines. ## Undoing a merge A merge can be undone within your organization's undo window (72 hours by default). Open the surviving contact — the **Merged record** banner offers **Undo merge**, which restores the duplicate exactly as it was, moves its related records back, and audits the reversal. After the window closes, the undo is rejected. ## Permissions | Action | Permission | | -------------------------------------------------- | ------------------------- | | See the duplicate warning | any contact-create access | | Review queue, merge, link, dismiss, undo | `ce.contacts.merge` | | See dates of birth in matches and the merge dialog | `ce.contacts.view_dob` | # HubSpot Integration — Admin Guide Source: https://docs.encoreos.io/ce/ce-75-admin-guide Connect a HubSpot portal, manage field mappings and the polling interval, run the onboarding backfill, and handle dead letters and re-authorization. # HubSpot Integration — Admin Guide Everything here requires the `ce.hubspot.manage` permission (org admins have it implicitly). The integration lives at **Settings → Integrations → HubSpot** (`/ce/settings/integrations/hubspot`). ## Connecting a portal Click **Connect HubSpot** and approve the consent screen in HubSpot. One portal per organization. On success the page shows the portal id, granted scopes, and the connection status; the default field mappings are seeded automatically. Access and refresh tokens are stored in the platform's encrypted vault — they never appear in the UI, the database rows, or logs. The sync is **inbound only**: outbound writes are disabled platform-wide until the CE-76 release (HubSpot BAA + per-organization attestation). The settings page states this boundary; there is no toggle to bypass it. ## Field mappings Field mappings card showing the default contact set with the direction lock * **Defaults** (seeded on connect): first/last name, email, phone, mobile, address, city, state, ZIP, and `lifecyclestage` → lead source details. * **Add mapping** maps any HubSpot contact property onto a registry of safe Encore fields (demographic and lead-source columns only — clinical and insurance fields are structurally excluded). * **Deactivate** a mapping to stop that property from writing; re-connecting never overwrites your edits. * **Direction is locked to inbound.** Rows with an outbound direction render locked and cannot be activated until CE-76. Unmapped properties are ignored silently (logged at debug level only). ## Polling interval Webhooks deliver changes in seconds; an incremental poll sweeps for anything missed. The interval is org-configurable via `ce_module_settings.hubspot_poll_interval_minutes` (default 15, allowed 5–120). ## The onboarding backfill **Run onboarding backfill** opens the wizard: 1. **Scope** — confirms the portal and the active inbound mappings. 2. **Dry run** — scans the entire HubSpot book and buckets every contact (link automatically / needs review / will be created / in-set duplicates / already linked) **without writing anything**. 3. **Report** — the bucket counts. 4. **Commit** — applies the buckets. Review hits are parked in the duplicate review queue (`source=backfill`); duplicates *within* HubSpot collapse to a single Encore contact with both HubSpot ids linked. The run checkpoints page by page: if it's interrupted, re-running resumes where it stopped and never duplicates contacts. Re-running after completion reports everything as *already linked*. ## Dead letters Inbound events that fail repeatedly (after automatic retries with backoff) land in the dead-letter list on the sync health card with their sanitized error. **Retry** re-queues the event through the standard pipeline — idempotency guarantees a retry of an event that somehow already succeeded is a no-op. **Discard** removes it permanently. The append-only sync log keeps the audit record either way. ## Re-authorization If HubSpot revokes the refresh token (for example the app was uninstalled from the portal), the connection flips to **Needs re-authorization**, inbound sync pauses without dropping anything, and every org admin receives a notification. Click **Reconnect HubSpot** to run the OAuth flow again; queued changes then drain automatically. ## Disconnecting **Disconnect** revokes the refresh token at HubSpot (best effort), deletes the vault credentials, and flips the connection to disconnected. Synced contacts and their history remain in Encore; only the link to HubSpot stops updating. ## Troubleshooting | Symptom | Check | | ---------------------------------------- | --------------------------------------------------------------------------------------- | | Changes not arriving | Sync health → last webhook / last poll timestamps; connection status | | Repeated dead letters for one record | The error column — a deleted HubSpot record or a mapping writing an invalid value | | "Needs re-authorization" keeps returning | The HubSpot app's installed status in the portal; reconnect with a portal admin account | | Backfill stopped midway | Re-run the wizard — it resumes from the checkpoint | # HubSpot Contact Sync — User Guide Source: https://docs.encoreos.io/ce/ce-75-user-guide How HubSpot contacts flow into Encore: what syncs, how duplicates are prevented, where reviews land, and what the sync health panel tells you. # HubSpot Contact Sync — User Guide When your organization connects its HubSpot portal, contact changes made in HubSpot flow into Encore automatically — usually within seconds via webhooks, and at worst within the polling interval (15 minutes by default) if webhook delivery hiccups. The sync is **inbound only**: Encore reads from HubSpot and never writes contact data back (outbound sync arrives with a later release that requires a HubSpot Business Associate Agreement). HubSpot integration settings page showing a connected portal with sync health ## What syncs Only the fields your administrator has mapped (by default: name, email, phones, address, and lifecycle stage → lead source details). Unmapped HubSpot properties are ignored. No clinical or health information is part of the default mappings. ## Duplicates are prevented, not created Every incoming HubSpot contact goes through the same matching engine that guards manual entry and CSV imports (see the [duplicate contacts guide](/ce/ce-74-user-guide)): * **Already linked** — the change updates the linked Encore contact. * **Deterministic match** (same email or phone) — the HubSpot record is linked to the existing contact automatically. * **Probable match** — the pair is parked in the **duplicate review queue** for a human decision. Nothing merges automatically. * **No match** — a new Encore contact is created and linked. HubSpot-side merges follow the survivor; if a merge would collapse two *different* Encore contacts, that pair also goes to the review queue. ## Reviewing sync matches Open **Community Engagement → Contacts → Duplicate Review** and use the **sync** source chip to see pairs raised by HubSpot sync (**backfill** shows pairs from the one-time import). For pairs where the HubSpot record isn't an Encore contact yet, **Compare** shows the incoming HubSpot values side by side with the existing contact so you can decide with full context. ## The sync health panel On the integration settings page (**Settings → Integrations → HubSpot**) the **Sync health** card shows: * **Last webhook received / Last polled** — when Encore last heard from HubSpot through each channel. * **Dead-lettered events** — changes that failed repeatedly and need attention. Each row shows the HubSpot record and the error; a user with the manage permission can **Retry** (run it through the pipeline again) or **Discard** it. If the connection banner says **Needs re-authorization**, HubSpot rejected the stored credentials — sync is paused (nothing is lost) until an administrator reconnects. ## The onboarding backfill The first-time import of your whole HubSpot contact book runs through the **backfill wizard** (administrators only — see the [admin guide](/ce/ce-75-admin-guide)). Its dry run reports what would happen before anything is written. Backfill wizard bucket report showing per-disposition counts # CE Settings Source: https://docs.encoreos.io/ce/ce-settings Configure module-level Community Engagement settings for contacts, leads, and crisis on-call at /ce/settings. The CE Settings screen provides module-level configuration for the Community Engagement core and is accessible at `/ce/settings`. ## Overview The CE Settings screen loads the current module settings via `useCEModuleSettings`. The primary card, titled "Module Configuration," contains a `CESettingsForm` described as customizing lead management, contact handling, and engagement settings. A separate `CrisisOnCallSettingsCard` is rendered below. Users can launch a guided tour of the settings page via a Help button (tour ID `ce-settings-tour`). Settings are persisted via an upsert operation on form submission. ## Who it's for Required permission: `ce.admin` (route-level gate). ## Before you start * You need the `ce.admin` permission. * CE module settings must be loadable; a loading skeleton is shown during fetch and an error state is shown on failure. ## Steps Navigate to `/ce/settings` from the Community Engagement navigation. Adjust fields in the Module Configuration card (lead management, contact handling, and engagement settings) and click Save. Scroll to the Crisis On-Call Settings card and update on-call configuration as needed. Click the Help button to start the `ce-settings-tour` guided tour of the settings page. ## Follow-up task → M365 calendar push When enabled, creating a follow-up task from a CE activity also pushes a one-way, PHI-safe event into a Microsoft 365 (Outlook) calendar. The assigned coordinator then sees the follow-up alongside their other appointments. The original task always remains the source of truth — if the calendar push fails, the task is still created (fail-open). This is configured per organization on the Module Configuration card and is **off by default**. | Setting | Values | Description | | -------------------------------------- | -------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | | `m365_calendar_push_enabled` | `true` / `false` | Master switch. Default `false`. When off, no calendar event is pushed. | | `m365_calendar_push_auth_mode` | `delegated` / `application` | `delegated` writes to the assignee's own connected M365 calendar. `application` uses the org's Entra app to write to any mailbox. | | `m365_calendar_push_recipient_mode` | `assigned_coordinator` / `per_task_override` | `assigned_coordinator` uses the task assignee's email. `per_task_override` accepts an explicit email at task-create time. | | `m365_calendar_push_default_recipient` | email (optional) | Fallback mailbox when no coordinator or override resolves. Leave blank to skip the push instead of falling back. | The pushed event contains only a follow-up identifier and a deep link back into Encore — never contact PHI. Each push is recorded in `ce_calendar_events` with a `source_type` of `pf_task` and the originating task ID so the calendar event can be traced back to the follow-up. Prerequisites for `delegated` mode: the assignee must have an active Microsoft Outlook connection on [Calendar Connections](/ce/calendar-connections). For `application` mode, an Entra application registration with `Calendars.ReadWrite` (application) permission must be configured for the org. ## Key concepts * **Module settings** — stored via `useCEModuleSettings` upsert; changes apply organization-wide. * **Crisis on-call** — managed via `CrisisOnCallSettingsCard`; SME: confirm escalation tiers and contact configuration. * **Guided tour** — triggered via `?tour=ce-settings-tour` URL parameter or the Help button. * **M365 calendar push** — additive, default-off, fail-open; the follow-up task is created regardless of whether the calendar write succeeds. ## Related Community Engagement core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/ce.tsx * src/cores/ce/pages/CESettingsPage.tsx * src/cores/ce/hooks/useCESettings.ts * supabase/migrations/20260614120000\_ce73\_m365\_push\_settings\_and\_calendar\_event\_source.sql # Communications Compliance Source: https://docs.encoreos.io/ce/communications-compliance Monitor consent, suppressions, and audit trail across email and SMS channels in the CE core. The Communications Compliance screen displays consent status, suppression records, and an audit trail across email and SMS channels. It is accessible at `/ce/compliance`. ## Overview The screen displays summary metric cards (`ComplianceSummaryCards`) and an active suppressions table (`SuppressionTable`). Users with `ce.dnc.import` permission see an Import DNC button that opens a dialog for uploading a do-not-contact list. Users with `ce.compliance.export` permission can export the compliance report in CSV or PDF format via the Encore Edge Function `ce-export-compliance-report`. The suppressions table supports removal of individual suppression records for users with the `ce.suppressions.delete` permission. ## Who it's for Required permission: `ce.compliance.view` (route-level gate). Import requires `ce.dnc.import`. Export requires `ce.compliance.export`. Removing suppressions requires `ce.suppressions.delete`. ## Before you start * You need the `ce.compliance.view` permission. * An active organization must be selected for exports to function. ## Steps Navigate to `/ce/compliance` from the Community Engagement menu. View the summary cards showing aggregate counts of consent and suppression records. Scroll to the Active Suppressions table to see all currently suppressed contacts and channels. Click Import DNC (requires `ce.dnc.import`) and follow the dialog prompts to upload a do-not-contact list. Click Export CSV or Export PDF (requires `ce.compliance.export`) to download a compliance report via the platform Edge Function. In the suppressions table, use the remove action for a record (requires `ce.suppressions.delete`). ## Key concepts * **Suppression** — a record indicating a contact or channel should not receive outbound communications. * **DNC (Do Not Contact)** — list of contacts or numbers that must not be contacted; importable in bulk. * **Export formats** — CSV and PDF both generated by the `ce-export-compliance-report` Edge Function. ## Related Community Engagement core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/ce.tsx * src/cores/ce/pages/ComplianceDashboardPage.tsx # Community Engagement Source: https://docs.encoreos.io/ce/community-engagement The /ce root route redirects automatically to the CE Dashboard — it is not a standalone screen. The route `/ce` is a redirect, not a standalone screen. It automatically redirects to `/ce/dashboard`. ## Overview In `src/routes/ce.tsx`, the route `/ce` is configured as ``. Visiting `/ce` immediately redirects to the CE Dashboard without rendering any intermediate UI. The alternate primary entry point is `/ce/dashboard`. ## Who it's for Access follows your organization's role and module configuration. the destination `/ce/dashboard` is gated by `CE_PERMISSIONS.DASHBOARD_VIEW`. ## Related Community Engagement core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/ce.tsx # Contact Tagging — Admin Guide Source: https://docs.encoreos.io/ce/contact-tagging-admin-guide This guide is for org admins responsible for the tag vocabulary in Settings → CE → Contact Tags. Requires ce.settings.tags.manage. # Contact Tagging — Admin Guide This guide is for org admins responsible for the tag vocabulary in **Settings → CE → Contact Tags**. Requires `ce.settings.tags.manage`. ## Tag definition fields | Field | Notes | | --------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Name** | Required, ≤ 60 chars, unique per org (case-insensitive). | | **Color** | Pick from the preset swatch; text contrast is auto-resolved (light/dark foreground) for accessibility. | | **Alert** | When on, the tag renders with a destructive ring on pipeline tiles and profile. Use for safety/policy-relevant tags only (e.g., *Do Not Admit*, *High Acuity*). | | **Description** | Optional internal note shown in the admin list and on hover. | | **Sort order** | Drives ordering in pickers, chips, and filters. | ## Seeded defaults Each organization is seeded with four starter tags. You can rename, recolor, or delete them; new orgs get them automatically. * **High Acuity** (alert, orange) — needs immediate clinical attention. * **Do Not Admit** (alert, red) — policy violation; do not re-admit. * **Justice Referral / JTOP** (purple) — justice-involved intake pathway. * **Peer Support Candidate** (green) — candidate for peer support engagement. ## Deletion guard You cannot delete a tag definition while it is still assigned to one or more contacts. The settings UI surfaces an inline error with the assignment count; remove the tag from contacts first (or reassign to a different tag) and then delete the definition. ## Audit Every add/remove on a contact emits a `tag_added` / `tag_removed` event in the CE-60 audit log (`ce_contact_audit_log`, category `tag`). The event includes `tag_id`, `tag_name`, `tag_color`, `is_alert`, and the actor. The SECURITY DEFINER helper signature is fixed at 12 parameters; CE-61 packs all extended context into the `p_details` JSONB field. ## Permission seeding The migration seeds three permission keys mapped to system roles: | Key | Roles | | ------------------------- | ----------------------------------------------- | | `ce.contacts.tags.view` | platform\_admin, org\_admin, site\_admin, staff | | `ce.contacts.tags.edit` | platform\_admin, org\_admin, site\_admin, staff | | `ce.settings.tags.manage` | platform\_admin, org\_admin | ## Cross-core integration * **CE-60 (history):** tag add/remove events appear in the All History tab. * **CE-65 (pipeline tiles):** tile metadata exposes `tags: TagBadge[]` and `has_alert_tag: boolean`. CE-65 owns visual rendering; CE-61 owns the semantic state. Distinct from CE-58 urgency. * **CE-05 (reporting):** tag-name dimension is planned and will be wired once CE-05 reporting ships. No schema blocker. ## Where the code lives * Tables: `ce_contact_tags`, `ce_contact_tag_assignments` * Hooks: `src/cores/ce/hooks/useContactTags.ts`, `useContactTagMutations.ts`, `useContactTagAssignments.ts` * Audit wiring: `src/cores/ce/lib/contactTagAudit.ts` * Filter logic: `src/cores/ce/lib/contactTagFilter.ts` * Settings UI: `src/cores/ce/components/settings/ContactTagsSettingsCard.tsx` * Tile/profile UI: `src/cores/ce/components/contacts/ContactTagBadge.tsx`, `ContactTagAssignmentField.tsx` * Filter UI: `src/cores/ce/components/pipeline/TagFilterControl.tsx` # Contact Tagging — User Guide Source: https://docs.encoreos.io/ce/contact-tagging-user-guide Tags let your team flag a contact with quick-read labels — for example High Acuity, Do Not Admit, Justice Referral / JTOP, or Peer Support Candidate — so the r… # Contact Tagging — User Guide Tags let your team flag a contact with quick-read labels — for example **High Acuity**, **Do Not Admit**, **Justice Referral / JTOP**, or **Peer Support Candidate** — so the right people see the right context as soon as the contact appears on the pipeline or in search results. ## What you can do * **See tags everywhere a contact appears** — contact profile, lead detail, and pipeline tiles all show the same tag chips with consistent color. * **Add or remove tags** on a contact if you have the `ce.contacts.tags.edit` permission. Search by tag name in the popover, click to apply, and click the chip's × to remove. * **Filter by tags** on the lead pipeline. Pick one or more tags in the "Tags" filter and choose **Any** (OR) to see contacts matching any tag, or **All** (AND) to see only contacts matching every selected tag. Your selection is shareable via the URL (`?tags=...&tagMode=and|or`). * **Spot alerts at a glance.** Tags marked as **Alert** render with a red outline on the contact's pipeline tile and profile, surfacing safety- or policy-relevant context without color alone. ## What tags are *not* * Tags are **not** a substitute for clinical urgency. CE-58 still owns the per-lead urgency field that drives intake SLAs. * Tags are **not** private notes. Every add/remove is audited (see CE-60 "All History" tab) including who, when, and which tag. * Tags do **not** affect billing, scheduling, or document access. ## Tips * Use Alert tags sparingly — if everything is alarming, nothing is. * Prefer your organization's curated tag set over freeform notes so reports and filters stay useful. * If you need a new tag, ask an org admin to add it from **Settings → CE → Contact Tags**. ## Permissions | Permission | What it grants | | ------------------------- | -------------------------------------------- | | `ce.contacts.tags.view` | See tag chips on contacts and pipeline tiles | | `ce.contacts.tags.edit` | Add and remove tags on a contact | | `ce.settings.tags.manage` | Create, edit, and delete tag definitions | # Contacts Source: https://docs.encoreos.io/ce/contacts View, search, filter, import, and create CE contacts — leads, referral contacts, and community members. The Contacts list screen displays all contacts for the current organization and is accessible at `/ce/contacts`. ## Overview The Contacts screen renders a paginated table of contacts with search-as-you-type (300ms debounce), a contact type filter populated from the `ce_contact_type` picklist, and a status filter with options: All Status, Active, Inactive, and Do Not Contact. Users with `ce.contacts.create` see an Import button (opens `ContactImportDialog`) and a New Contact button (opens `ContactDialog`). Visiting `/ce/contacts?action=new` auto-opens the New Contact dialog. On mobile viewports the screen renders a `MobileContactView`. Clicking a contact row navigates to `/ce/contacts/:id`. Contacts are scoped to the current organization. ## Who it's for Required permission: `ce.contacts.view` (route-level gate). Creating contacts requires `ce.contacts.create`. ## Before you start * You need the `ce.contacts.view` permission. * To create or import contacts, you additionally need `ce.contacts.create`. ## Steps Navigate to `/ce/contacts` via the Community Engagement menu. Type in the search box to filter by name or other fields, or use the Type and Status dropdowns to narrow results. Click any row in the table to go to that contact's detail page. Click New Contact (or navigate to `/ce/contacts?action=new`) to open the contact creation dialog. Click Import to open the `ContactImportDialog` and upload a file. Use the row action menu in the contacts table to edit or delete a record. ## Key concepts * **Contact status** — `active`, `inactive`, or `do_not_contact`; the list defaults to showing `active` contacts. * **Contact type** — populated from the `ce_contact_type` picklist; SME: confirm available values. * **Auto-open** — appending `?action=new` to the URL triggers the New Contact dialog to open on load. ## Creating a contact The route `/ce/contacts/new` is a redirect, not a standalone screen. It automatically redirects to `/ce/contacts?action=new`, which auto-opens the New Contact dialog on the Contacts list page. In `src/routes/ce.tsx`, the path `/ce/contacts/new` is configured as ``. Creating a contact is performed within the `ContactDialog`, not on a separate full page. The destination Contacts page requires `ce.contacts.view`; creating a contact requires `ce.contacts.create`. ## Detail view The Contact detail screen displays a single contact record with tabbed sections for all associated data. It is accessible at `/ce/contacts/:id`. ### Overview The Contact detail screen shows a header with the contact's full name, type, and status. Summary cards display contact type, status, number of associated leads, and creation date. The screen provides action buttons for Click-to-Call (requires `ce.calls.create` and a phone number), Send SMS (requires a phone number), Schedule Meeting, and Edit Contact. Seven tabs organize the content: Overview (contact info card), Leads (linked lead records), Calls (recent call list), SMS (conversation panel, shown only if a phone number exists), Emails (email timeline), Relationships, and Activity. Editing opens a `ContactDialog`; SMS compose opens an `SmsComposeDialog`. If the contact is not found or the user lacks access, an error state is shown with a link back to `/ce/contacts`. ### Who it's for Required permission: `ce.contacts.view` (route-level gate). Click-to-call requires `ce.calls.create`. ### Before you start * You need the `ce.contacts.view` permission. * The contact ID must exist and belong to your organization. ### Steps Navigate to `/ce/contacts/:id` by clicking a contact row in the Contacts list. Check the Overview tab for address, email, phone, and other contact fields. Switch to the Leads tab to see all linked lead records and their statuses. Switch to the Calls tab to see recent calls associated with this contact. Click Send SMS to open the SMS compose dialog, or switch to the SMS tab to view the full conversation. Switch to the Emails tab to see all email communications with this contact. Click Edit Contact to update contact fields in the dialog. Click Schedule Meeting to open the meeting scheduling dialog. ### Key concepts * **Contact type** — stored as `contact_type` on the record; displayed in the header sub-heading and in a summary card. * **Contact status** — values include `active`, `inactive`, and `do_not_contact`. * **SMS tab visibility** — the SMS tab and Send SMS button only appear when `contact.phone` or `contact.mobile_phone` is present. ## Related Community Engagement core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/ce.tsx * src/cores/ce/pages/ContactsPage.tsx * src/cores/ce/pages/ContactDetailPage.tsx # Contract Wizard Source: https://docs.encoreos.io/ce/contract-wizard Step-by-step wizard for creating a new partner contract in the CE core at /ce/partners/:partnerId/contracts/wizard. The Contract Wizard is a full-page, step-by-step wizard for creating a new partner contract. It is accessible at `/ce/partners/:partnerId/contracts/wizard`. ## Overview The Contract Wizard hosts a `ModuleWizardRenderer` (PF-41 platform wizard framework) for the `partner_contract` wizard type in the `ce` module. The wizard supports draft persistence, a Cancel button (returns to the partner detail page), and a Save & Exit option. On successful completion the wizard calls `useCreatePartnerContract`, submits the contract payload to the API, and navigates back to `/ce/partners/:partnerId`. If validation fails before submission a toast error is shown listing the validation issues. A loading skeleton is rendered if `partnerId` or `organizationId` is not yet resolved. Contract fields submitted include: `contract_name`, `contract_type`, `start_date`, `end_date`, `value`, `auto_renew`, `renewal_notice_days`, `terms_summary`, `document_id`, `status` (defaulting to `draft`), and `notes`. ## Who it's for Required permission: `ce.contracts.create` (route-level gate). ## Before you start * You need the `ce.contracts.create` permission. * You must have an existing partner record; the wizard is launched from a specific partner's page. * Your organization must be active. ## Steps Navigate to `/ce/partners/:partnerId/contracts/wizard` from the partner detail page or a partner action. Fill in contract name, type, dates, value, auto-renewal settings, terms summary, and any other required fields across the wizard steps. Click Save & Exit to persist a draft and return later. Click Create Contract on the final step. The wizard validates the data and, on success, creates the contract and returns to the partner detail page. Click Cancel or the back arrow at any time to return to the partner detail page without saving. ## Key concepts * **PF-41 wizard framework** — the wizard uses `ModuleWizardRenderer` from the platform wizard layer; step registration is handled by `registerPartnerContractWizardSteps`. * **Draft persistence** — `enableDraftPersistence` is set; incomplete wizard data is saved locally. * **Contract status** — defaults to `draft` on creation; SME: confirm available status transitions. ## Related Community Engagement core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/ce.tsx * src/cores/ce/wizards/partner-contract/PartnerContractWizardPage.tsx * src/cores/ce/wizards/partner-contract/registerPartnerContractWizardSteps.ts * src/cores/ce/wizards/partner-contract/partnerContractWizardValidation.ts * src/cores/ce/wizards/partner-contract/types.ts # Crisis Queue Source: https://docs.encoreos.io/ce/crisis-queue Triage queue for active Tier-1 and Tier-2 crisis detections with acknowledgement and escalation actions. The Crisis Queue screen is a real-time triage queue for active crisis alerts detected in the CE core. It is accessible at `/ce/intake/crisis`. ## Overview The Crisis Queue shows all active crisis alerts. A tab strip filters the queue to All active, Tier 1, or Tier 2. The page header states that Tier-1 alerts also page on-call clinicians. Each tab renders a `CrisisQueueList` for the corresponding tier. On mobile viewports, selecting an alert for escalation opens a `CrisisAlertMobileSheet` bottom sheet. The page uses a destructive (red) icon in its header to indicate urgency. ## Who it's for Required permission: `CE_PERMISSIONS.CRISIS_VIEW` (route-level gate, resolved from `@/platform/permissions/constants`). ## Before you start * You need the `CE_PERMISSIONS.CRISIS_VIEW` permission. * Crisis alerts must have been generated by the platform detection system. ## Steps Navigate to `/ce/intake/crisis` from the Community Engagement navigation or a crisis widget link. Click the Tier 1 or Tier 2 tab to focus on a specific severity level, or stay on All active to see everything. Use the actions available within the `CrisisQueueList` (SME: confirm exact actions — acknowledge, confirm, dismiss, escalate). On a mobile device, tap an alert and use the bottom sheet to take action or escalate. ## Key concepts * **Tier 1** — highest severity; on-call clinicians are paged automatically. * **Tier 2** — lower severity; requires manual review and action. * **Crisis alert** — generated by platform detection; displayed as `DbCrisisAlert` type records. ## Related Community Engagement core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/ce.tsx * src/cores/ce/pages/CrisisQueuePage.tsx # Community Engagement Dashboard Source: https://docs.encoreos.io/ce/dashboard CE core dashboard showing live metrics for contacts, leads, calls, and conversion rate at /ce/dashboard. The CE Dashboard is the primary landing screen for the Community Engagement core, displaying live metrics and quick-access widgets. It is accessible at `/ce/dashboard`. ## Overview The CE Dashboard renders four stat cards: Total Contacts, Active Leads, Calls This Month, and Conversion Rate. Conversion Rate uses a `success`/`default`/`warning` color variant based on whether the value is ≥50%, ≥25%, or below 25%. Below the stat cards, two widgets appear side by side: `CERecentActivityWidget` (recent CE activities) and `CEWizardShortcutsWidget` (quick-launch for common CE wizards including Log Call). Users with `CE_PERMISSIONS.CRISIS_VIEW` see a `CrisisQueueWidget` below. A `QuickActionsSection` for the `ce` module is rendered above the stat cards. Two keyboard shortcuts are active on this page: Cmd/Ctrl+D opens Quick Dial, and Cmd/Ctrl+Shift+L opens Log Call. If a calendar connection with sync enabled exists, a `CalendarActivityIndicator` is shown in the header. On mobile the screen renders a `MobileDashboard`. ## Who it's for Required permission: `CE_PERMISSIONS.DASHBOARD_VIEW` (route-level gate). Quick Dial and Log Call actions require `ce.calls.create`. ## Before you start * You need the `CE_PERMISSIONS.DASHBOARD_VIEW` permission. * Metrics are scoped to your organization; a loading skeleton is shown while data loads. ## Steps Navigate to `/ce/dashboard` or to `/ce` (which redirects here). Check the four stat cards for current contacts, leads, calls, and conversion rate. Press Cmd/Ctrl+Shift+L to open the Log Call dialog, or click Log Call in the header action buttons. Press Cmd/Ctrl+D or click Quick Dial in the header to open the Quick Dial dialog. Check the Recent Activity widget for the latest CE activity records. Users with crisis view permission see a Crisis Queue widget below the activity widgets. ## Key concepts * **Conversion Rate** — percentage of leads converted to clients; color-coded: success (≥50%), default (≥25%), warning (\<25%). * **Quick Dial** — opens `QuickDialDialog` for making outbound calls. * **Log Call** — opens `ManualCallForm` for manually recording a call. * **Calendar sync indicator** — shown in the header when at least one calendar connection has `sync_enabled = true`. ## Related Community Engagement core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/ce.tsx * src/cores/ce/pages/CEOverviewPage.tsx # Email Templates Source: https://docs.encoreos.io/ce/email-templates Create and manage reusable email templates with merge fields for CE outreach at /ce/email-templates. The Email Templates screen provides a management interface for reusable email templates used in CE outreach. It is accessible at `/ce/email-templates`. ## Overview The Email Templates screen renders an `EmailTemplateList` component below a page header titled "Email Templates" with the description "Create and manage reusable email templates with merge fields." The list component handles display, creation, editing, and deletion of templates. ## Who it's for Required permission: `ce.admin` (route-level gate). ## Before you start * You need the `ce.admin` permission. ## Steps Navigate to `/ce/email-templates` via the Community Engagement settings or menu. The `EmailTemplateList` shows all templates for your organization. Use the create action within `EmailTemplateList` to add a new template with a name, subject, body, and merge fields. Use the edit or delete actions on existing templates as needed. ## Key concepts * **Merge fields** — SME: confirm available merge fields and syntax. * **Template usage** — SME: confirm which CE features (sequences, campaigns) consume these templates. ## Related Community Engagement core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/ce.tsx * src/cores/ce/pages/EmailTemplatesPage.tsx # Embed Code Source: https://docs.encoreos.io/ce/embed-code The /ce/web-forms/:id/embed route is not a standalone screen — embed code is accessible as a tab on the web form detail page. The route `/ce/web-forms/:id/embed` is not registered as a standalone screen. Embed code is available as the Embed tab within the web form detail screen at `/ce/web-forms/:id`. ## Overview In `src/routes/ce.tsx`, the path `/ce/web-forms/:id/embed` is not registered. The web form detail page at `/ce/web-forms/:id` renders an Embed tab containing the `WebFormEmbedPanel` component, which provides embed code and configuration. Visiting the unregistered `/ce/web-forms/:id/embed` URL currently falls through to the platform's Not Found handler. ## Who it's for No route registered. Access the Embed tab via the web form detail page (`ce.admin` permission required). ## Related Community Engagement core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/ce.tsx * src/cores/ce/pages/WebFormDetailPage.tsx # RingCentral Embeddable Calling - User Guide Source: https://docs.encoreos.io/ce/embeddable-user-guide The RingCentral Embeddable integration allows you to make and receive phone calls directly in your browser without needing a physical desk phone. This guide co… ## Overview The RingCentral Embeddable integration allows you to make and receive phone calls directly in your browser without needing a physical desk phone. This guide covers everything you need to know to start making calls. ## Requirements ### Browser Compatibility | Browser | Desktop | Mobile | WebRTC Support | | ----------- | ---------- | ---------- | -------------- | | Chrome 90+ | ✅ Full | ✅ Full | Full | | Edge 90+ | ✅ Full | ✅ Full | Full | | Firefox 88+ | ✅ Full | ⚠️ Partial | Full | | Safari 14+ | ⚠️ Partial | ⚠️ Partial | Limited | | Other | ❌ | ❌ | Unsupported | **Note:** If your browser doesn't fully support in-browser calling, the system will automatically fall back to "RingOut" mode, which calls your desk phone first, then connects you to the recipient. ### Hardware Requirements * **Microphone:** Required for making calls * **Headset:** Recommended for best audio quality * **Stable Internet:** Minimum 1 Mbps upload/download ## Getting Started ### Step 1: Enable Embeddable for Your Organization Organization administrators can enable in-browser calling from: 1. Navigate to **Settings** → **CE Module Settings** → **Telephony** tab 2. Toggle **Enable Embeddable Widget** to ON 3. Choose your preferred **Widget Position** (bottom-right is recommended) 4. Click **Save** ### Step 2: First-Time Setup When you first use the calling widget: 1. **Widget Appears:** A phone widget will appear in the corner of your screen 2. **Sign In:** Click "Sign In" to authenticate with RingCentral 3. **OAuth Flow:** A popup window will open for RingCentral login 4. **Allow Microphone:** Grant microphone permission when prompted 5. **Ready to Call:** The widget shows your extension number when ready ### Step 3: Grant Microphone Permission When prompted by your browser: 1. Click **Allow** to grant microphone access 2. If you accidentally denied, click the lock icon in your browser's address bar 3. Find "Microphone" and change to "Allow" 4. Refresh the page ## Making Calls ### Click-to-Call The easiest way to make a call: 1. Find a **contact** or **partner** with a phone number 2. Click the **phone icon** (📞) next to their number 3. The call will initiate automatically **Visual Indicators:** * 📞 **Phone icon** = RingOut mode (desk phone callback) * 🎧 **Headset icon** = WebRTC mode (browser calling) ### Using the Dialer To dial a number manually: 1. Click on the **calling widget** to expand it 2. Use the **number pad** or type the number 3. Click the **green call button** ### Call Controls During a Call | Button | Function | | ----------- | --------------------------- | | 🔇 Mute | Mute/unmute your microphone | | ⏸️ Hold | Place the call on hold | | 🔀 Transfer | Transfer to another number | | ⏹️ End | Hang up the call | ## Receiving Calls ### Screen Pop Notifications When someone calls you: 1. A **notification** appears in your browser 2. It shows the **caller's name** (if known) or phone number 3. Click **Answer** to accept in your browser 4. Click **Decline** to send to voicemail ### Caller Context If the caller matches a contact or partner in your CRM: 1. A **Contact tab** appears in the widget showing: * Contact name and status * Phone and email * Recent activities 2. A **Partner tab** appears if the caller is a partner: * Partner name and type * Recent referral count * Quick link to view full record ## Voicemail ### Accessing Voicemails 1. Click the **calling widget** to expand it 2. Navigate to **Messages** section 3. Click on a voicemail to play it 4. Use playback controls to listen ### Voicemail Notifications * The widget shows a **badge** when you have unread voicemails * Check voicemails regularly for important messages ## Troubleshooting ### "Microphone access denied" **Problem:** Browser is blocking microphone access. **Solution:** 1. Click the lock/info icon in your browser's address bar 2. Find "Microphone" settings 3. Change to "Allow" 4. Refresh the page ### "Widget not loading" **Problem:** The calling widget isn't appearing. **Solution:** 1. Check your internet connection 2. Refresh the page 3. Clear browser cache 4. Try a different browser (Chrome recommended) 5. Contact your administrator to verify settings ### "Using phone callback instead of browser calling" **Problem:** Calls are going through your desk phone instead of browser. **Solution:** This happens when: * Your browser doesn't support WebRTC * Microphone permission is denied * Organization has disabled WebRTC calling If you prefer browser calling: 1. Use Chrome or Edge browser 2. Grant microphone permission 3. Contact your administrator ### "Call quality is poor" **Problem:** Audio is choppy or unclear. **Solution:** 1. Use a wired internet connection instead of WiFi 2. Close other bandwidth-heavy applications 3. Use a headset instead of laptop speakers 4. Move closer to your WiFi router ### "Cannot sign in to RingCentral" **Problem:** OAuth popup doesn't work or errors. **Solution:** 1. Disable popup blockers for this site 2. Try in an incognito/private window 3. Clear cookies for ringcentral.com 4. Contact your administrator for credentials ## Fallback: RingOut Mode If in-browser calling isn't available, the system automatically uses RingOut: 1. Click the **phone icon** to call 2. Your **desk phone** will ring first 3. Answer your desk phone 4. The system then **dials the recipient** 5. You're connected through your desk phone **When RingOut is used:** * Browser doesn't support WebRTC * Microphone permission is denied * Organization prefers desk phones * Network issues prevent WebRTC ## Tips for Best Experience 1. **Use Chrome or Edge** for best browser compatibility 2. **Use a headset** for professional audio quality 3. **Keep the widget visible** to see incoming calls 4. **Enable notifications** in your browser for screen pops 5. **Check voicemail regularly** to stay responsive 6. **Log calls promptly** using the disposition workflow ## Need Help? If you continue to experience issues: 1. Contact your **organization administrator** 2. Include: * Browser name and version * Error messages (if any) * Steps to reproduce the issue 3. Check the **browser console** for errors (F12 → Console) *** *This guide covers CE-14: RingCentral Embeddable Integration. For technical documentation, see the Platform Telephony README.* # Events Source: https://docs.encoreos.io/ce/events View, create, and manage CE marketing events with registration tracking and campaign association. The Events screen lists and manages marketing events for the current organization. It is accessible at `/ce/events`. ## Overview The Events screen renders a card grid of events filtered by a text search and a status dropdown (Scheduled, In Progress, Completed, Cancelled, or All Statuses). Each event card shows the event name, status badge (color-coded), event type, start date/time, location (or "Virtual Event" with a video icon), registered count and optional max attendees, and the linked campaign name if one is associated. Clicking New Event opens `EventFormDialog`. Events are fetched scoped to the current organization. ## Who it's for Required permission: `ce.events.view` (route-level gate). Creating events likely requires additional write permissions (SME: confirm exact create permission from `EventFormDialog`). ## Before you start * You need the `ce.events.view` permission. ## Steps Navigate to `/ce/events` via the Community Engagement menu. Use the search input or the Status dropdown to narrow the event list. Click New Event to open the event form dialog and fill in event details. Each card shows the event status, type, date/time, location or virtual flag, registration count, and linked campaign. ## Key concepts * **Event type** — determined by `EVENT_TYPE_LABELS` constants (SME: confirm available types). * **Event status** — `scheduled`, `in_progress`, `completed`, `cancelled`. * **Virtual events** — indicated by a video icon and "Virtual Event" label rather than a map pin and location name. * **Campaign linkage** — an event card shows the linked campaign name when `event.campaign` is present. ## Viewing an event The route `/ce/events/:id` is not registered as a standalone screen in the current CE route configuration. As of the current codebase, `/ce/events/:id` does not map to a registered route in `src/routes/ce.tsx`. Events are created and managed through the `EventFormDialog` on the `/ce/events` list screen (`EventsPage`). Event cards on the list page show name, type, status, date, location (or virtual indicator), registration count, and linked campaign. No click-through navigation to a detail route is implemented in the list. Visiting `/ce/events/:id` currently falls through to the platform's Not Found handler. ## Related Community Engagement core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/ce.tsx * src/cores/ce/pages/EventsPage.tsx # Intake Screening & Triage — Admin Guide Source: https://docs.encoreos.io/ce/intake-screening-admin-guide This guide helps administrators configure screening questionnaires, SLA thresholds, and permission assignments. > **Purpose:** This guide helps administrators configure screening questionnaires, SLA thresholds, and permission assignments. *** ## Overview CE-28 Intake Screening requires configuration at the organization level. Admins manage questionnaire templates, SLA thresholds, and user permissions. *** ## Configuration ### SLA Thresholds SLA thresholds define the maximum allowed time between lead creation and screening completion. **Table:** `ce_screening_sla_config` | Field | Description | Default | | ------------------ | ------------------------------------------------ | --------------- | | `program_type` | Program type (residential, iop, php, outpatient) | — | | `response_minutes` | Max minutes allowed before SLA is "missed" | 240 (4 hours) | | `site_id` | Optional site-specific override | null (org-wide) | **To configure:** 1. Navigate to CE module settings 2. Locate SLA Configuration section 3. Set thresholds per program type 4. Optionally override per site ### Screening Questionnaires Questionnaire templates define the screening form structure. **Table:** `ce_screening_questionnaires` | Field | Description | | -------------------- | ---------------------------------------------- | | `name` | Template name (e.g., "Standard Intake Screen") | | `version` | Version number for template evolution | | `schema` | JSONB questionnaire field definitions | | `asam_scoring_rules` | Optional ASAM scoring configuration | | `triage_rules` | Optional custom triage rules | ### Permissions | Permission Key | Description | Typical Roles | | --------------------- | ------------------------------------ | ------------------- | | `ce.screening.view` | View screening records | All CE staff | | `ce.screening.create` | Create new screenings | Intake coordinators | | `ce.screening.manage` | Configure SLA, manage questionnaires | Admissions managers | *** ## Security & Compliance ### 42 CFR Part 2 (SUD Consent) For substance use disorder screenings, the system enforces: * `consent_obtained` must be `true` before saving * `consent_method` must be populated * `consent_recorded_at` is auto-set on save Events are only published when consent is verified via the application path. This behavior is enforced by application logic (defense-in-depth). Direct database access with elevated privileges may bypass application-layer controls — database-level controls (RLS, audit logging) provide additional enforcement. ### Data Access * All screening data is scoped by `organization_id` via RLS * Cross-organization access is blocked at the database level * Clinical free-text (chief complaint, notes) is never included in event payloads ### Audit Trail All screening attempts are append-only with `created_by` and `updated_by` audit columns. *** ## Troubleshooting ### SLA Dashboard shows no data **Cause:** No screening attempts exist or date range filter is too narrow. **Solution:** Verify screenings exist; adjust date range. ### Users cannot see Screening tab **Cause:** Missing `ce.screening.view` permission. **Solution:** Assign the permission via the RBAC admin panel. *** ## Related Documentation * **User Guide:** `docs/ce/ce-28-intake-screening-user-guide.md` * **Specification:** `specs/ce/specs/CE-28-intake-screening-triage-workflow.md` * **Integration:** `docs/architecture/integrations/CE-28-INTAKE-SCREENING-INTEGRATION.md` *** **Last Updated:** 2026-03-28\ **Questions?** Contact your organization administrator. # Intake Screening & Triage — User Guide Source: https://docs.encoreos.io/ce/intake-screening-user-guide This guide helps intake coordinators and admissions staff conduct screenings, record triage results, and monitor SLA compliance. > **Purpose:** This guide helps intake coordinators and admissions staff conduct screenings, record triage results, and monitor SLA compliance. *** ## Overview The Intake Screening & Triage system formalizes the process of evaluating leads after initial inquiry. It captures clinical screening data, computes triage urgency, tracks SLA compliance, and routes leads to appropriate downstream workflows (appointment scheduling, waitlist, or referral). ### Key Capabilities * **Screening Form:** Structured questionnaire capture with configurable templates * **Triage Scoring:** ASAM-inspired automated triage (crisis/urgent/priority/standard) * **SLA Monitoring:** Track time-to-screening against configurable thresholds * **History View:** Complete screening history per lead with disposition tracking ### Who Should Use This Guide | Role | Use Case | | ------------------- | ------------------------------------------------ | | Intake Coordinator | Conduct screenings, record dispositions | | Clinical Supervisor | Review clinical escalation flags, triage results | | Admissions Manager | Monitor SLA compliance dashboard | *** ## Prerequisites ### Permissions Required | Permission | Description | | --------------------- | ----------------------------------------------- | | `ce.screening.view` | View screening records | | `ce.screening.create` | Conduct new screenings | | `ce.screening.manage` | Configure SLA thresholds, manage questionnaires | > **Note:** Contact your organization administrator if you don't have the required permissions. *** ## Getting Started ### Accessing Screening 1. Navigate to **Community Engagement** in the main menu 2. Open a lead's detail page 3. Click the **Screening** tab or navigate to the screening sub-route *** ## Common Tasks ### Task 1: Conduct a New Screening **When to use:** After initial lead inquiry, when clinical screening is needed. **Steps:** 1. Navigate to the lead's detail page 2. Click **New Screening** in the screening section 3. Select the screening questionnaire template 4. Complete required fields: * **Disposition:** proceed / waitlist / refer\_out / decline * **Program Type:** residential / IOP / PHP / outpatient * **Chief Complaint:** Brief clinical summary 5. Complete the questionnaire responses 6. If SUD-related: ensure **consent is obtained** (42 CFR Part 2 requirement) 7. Click **Submit Screening** **Result:** Screening is saved, triage score is computed, and downstream events are triggered based on disposition. *** ### Task 2: Review Screening History **When to use:** To review past screening attempts for a lead. **Steps:** 1. Navigate to the lead's detail page 2. View the **Screening History** panel 3. Click any screening row to view full details including triage results *** ### Task 3: Monitor SLA Compliance **When to use:** Admissions managers checking screening timeliness. **Steps:** 1. Navigate to **CE > Screening > SLA Dashboard** 2. View SLA on-time vs missed by program type 3. Use date range filters to analyze trends *** ## Tips and Best Practices ### Do's * ✅ Always record consent before screening SUD-related cases * ✅ Review clinical flags before finalizing disposition * ✅ Complete screenings within the SLA threshold (default: 4 hours) ### Don'ts * ❌ Do not skip consent capture for substance use screenings * ❌ Do not override triage category without clinical justification * ❌ Do not share screening details outside the care team *** ## Troubleshooting ### Issue: "Permission denied" when creating screening **Symptoms:** Error message when clicking Submit Screening **Cause:** Missing `ce.screening.create` permission **Solution:** 1. Contact your organization administrator 2. Request the `ce.screening.create` permission *** ## Glossary | Term | Definition | | --------------- | ------------------------------------------------------------ | | ASAM Score | Addiction severity index (0-4 scale) | | SLA | Service Level Agreement — time-to-screening target | | Disposition | Outcome of screening (proceed, waitlist, refer out, decline) | | Triage Category | Urgency classification (standard, priority, urgent, crisis) | *** **Last Updated:** 2026-03-28\ **Questions?** Contact your organization administrator. # Lead Stages Source: https://docs.encoreos.io/ce/lead-stages Configure and reorder the pipeline stages that leads progress through in the CE core. The Lead Stages screen is an admin interface for creating and reordering lead pipeline stages. The primary route is `/ce/settings/lead-stages`; an alternate route `/ce/lead-stages` also resolves to this screen. ## Overview The Lead Stages screen displays all configured pipeline stages in a draggable list via `LeadStageEditor`. Users can drag and drop rows to reorder stages; the description states "Leads will progress through these stages in order." An Add Stage button opens `LeadStageFormDialog` for creating a new stage. A back arrow navigates to `/ce/settings`. The page shows a loading skeleton while stages are fetched and an error state if the fetch fails. ## Who it's for Required permission: `ce.leads.admin` (route-level gate at `/ce/settings/lead-stages`). ## Before you start * You need the `ce.leads.admin` permission. * Stages are scoped to your organization. ## Steps Navigate to `/ce/settings/lead-stages` from CE Settings, or directly via the alternate route `/ce/lead-stages`. The Pipeline Stages card shows all configured stages in their current order. Drag and drop stage rows to change the pipeline order. Click Add Stage to open the stage form dialog. Enter a stage name and any other required fields, then save. Use the actions available in the `LeadStageEditor` to modify or remove a stage (SME: confirm available row actions). ## Key concepts * **Stage order** — leads progress through stages in the order shown; reordering affects the pipeline progression path. * **Stage color** — displayed on lead records as a badge border color. ## Related Community Engagement core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/ce.tsx * src/cores/ce/pages/LeadStagesPage.tsx # Leads pipeline board Source: https://docs.encoreos.io/ce/leads Manage Community Engagement leads on a kanban board — stage progression, filters, Lead Intake Wizard, and full lead detail view with screening and conversion. The Leads screen provides a kanban-style pipeline board for managing leads through configured stages. It is accessible at `/ce/leads`. ## Overview The Leads screen renders a `LeadPipelineBoard` in kanban format with columns for each configured lead stage. A header shows aggregate stat cards: Active Leads count, Converted count (shown in success color), and Total Leads. Filter dropdowns allow narrowing by assigned user (All Users, Assigned to Me, Unassigned) and by partner (All Partners). An Add Lead button opens the `LeadIntakeWizard` dialog. A guided tour (lead management tour) can be triggered via a Help button. Visiting `/ce/leads?action=add-lead` auto-opens the Add Lead wizard. The page loads up to 1000 lead records for the stat calculation. ## Who it's for Required permission: `CE_PERMISSIONS.LEADS_VIEW` (route-level gate). ## Before you start * You need the `CE_PERMISSIONS.LEADS_VIEW` permission. * Lead stages must be configured; if no stages exist, the board may be empty. ## Steps Navigate to `/ce/leads` via the Community Engagement menu. Use the Assigned to and Partner dropdowns to focus on a subset of leads. Click Add Lead (or navigate to `/ce/leads?action=add-lead`) to open the Lead Intake Wizard. Click on a lead card to navigate to the lead detail page at `/ce/leads/:id`. Click the Help button to start the lead management guided tour. ## Key concepts * **Lead stage** — configurable pipeline stages; each stage is a column on the kanban board. * **Lead status** — active leads appear in the pipeline; converted and lost leads are excluded from the active count. * **Pipeline track** — service-line row on the board (for example, Residential, IOP, Recovery housing). Each lead belongs to one track. See [Pipeline tracks admin guide](/ce/admin-pipeline-tracks). * **Unassigned column** — an active lead with no stage set appears in an **Unassigned** column under its own track row. If the lead's track is inactive or missing, the board shows it under the org's default track. * **Terminal row** — the board groups converted and lost virtual columns into a single org-wide **Terminal** row at the bottom, separate from active track rows. * **Intake wizard** — `LeadIntakeWizard` collects lead details, contact info, source tracking, and assignment. New leads default to **Unassigned** — the intake coordinator is chosen explicitly on the Assignment step (or left unassigned to triage from the board later). Choosing a specific coordinator requires the `ce.leads.assign` permission. * **Lead urgency** — every lead carries an urgency level: **Critical** (crisis / same-day), **High** (immediate need), **Medium** (within 1–2 weeks), or **Low** (exploring options). Urgency drives the on-board accents described in [Urgency on the board](#urgency-on-the-board) and can be edited from the lead profile when you have `ce.leads.edit`. * **Pipeline track on new leads** — both the Lead Intake Wizard (Lead Details step) and the quick **Add Lead** dialog include a **Pipeline Track** picker. Leave it on **Auto (based on services)** to let Encore OS resolve the track from the requested services, or pick a specific track to override. If neither an explicit pick nor the requested services resolve a track, the org's default track is used. * **Inline partner quick-create** — on the Source Tracking step, the Referring Partner search lets you create a new partner without leaving the wizard. Type at least two characters that don't match an existing partner, and a **Create "\"** action appears in the results. Selecting it creates a partner with the typed name, a default type of **Other**, and a relationship status of **Needs completion**. The new partner is auto-selected as the lead's source and appears on the [Partners list](/ce/partners) with a **Needs completion** badge for later follow-up. Creating partners requires `ce.partners.create`. Lead Intake Wizard assignment step defaulting to Unassigned ## Urgency on the board The board surfaces lead urgency in three places so triage and stand-ups can scan it without opening tiles: * **Tile outline + name badge** — leads at **High** or **Critical** urgency get a colored card outline and a small urgency badge next to the contact name. **Low** and **Medium** leads render with the default tile chrome. * **Stage-header leads popover** — hover or keyboard-focus the list icon next to a stage header to open a popover that lists every lead currently in that stage, color-coded by urgency. Each name is a link to the lead's profile. The popover reads from data already on the board, so it adds no extra fetch. * **Lead profile** — the Lead Information card on `/ce/leads/:id` shows the current urgency. Users with `ce.leads.edit` see a dropdown to change it; everyone else sees it read-only. Urgency changes are written to the CE audit log automatically. ## Track picker on new leads When creating a lead — through the **Lead Intake Wizard** (Lead Details step) or the quick **Add Lead** dialog from the board header — a **Pipeline Track** selector controls which track the new lead lands on. Behavior: 1. If you pick a specific track, the lead is created on that track. 2. If you leave the selector on **Auto (based on services)**, Encore OS resolves the track from the lead's requested services against the org's active tracks (see [Pipeline tracks admin guide](/ce/admin-pipeline-tracks)). 3. If neither path resolves a track, the org's default track is applied. Use **Auto** for the common case; use an explicit pick when the requested services span multiple service lines or when triage already knows where the lead belongs. ## Shared terminal row The board's bottom **Terminal** row collects converted and lost leads from every track into a single org-wide row. To preserve where a closed lead came from, each tile in the Terminal row shows a small **source-track badge** with the originating track's name (for example, `IOP` or `Residential`). The badge appears only in the Terminal row — tiles on active track rows continue to render without it. ## Viewing a lead The Lead Details screen displays a single lead record with stage progression, contact details, sequence enrollment status, and screening history. It is accessible at `/ce/leads/:id`. The screen shows a header with the contact name (derived from the linked contact record), lead status badge, and current stage badge. For active leads, action buttons include: Screen (requires `ce.screening.create`, navigates to `/ce/leads/:leadId/screening/wizard`), Mark Lost (opens `LeadLostDialog`), and Convert Lead (requires `ce.lead-conversions.create`, opens `LeadConversionWizard`). For converted leads, a Retry Conversion button (requires `ce.lead-conversions.create`) appears when `converted_to_id` is not set; a Revert to Active button is also available. When the lead is linked to a contact, the header surfaces the contact's documents inline: * **Document count badge** — a clickable badge (for example, `3 Documents`) appears next to the stage badge when you have `ce.contacts.documents.view`. Click it to deep-link to the contact's Documents tab at `/ce/contacts/:contactId?tab=documents`. The badge is hidden — and the count never loads — when you lack the permission, so document existence is never leaked. * **Upload Document** — an Upload Document action appears in the header when you have `ce.contacts.documents.upload`. It opens the upload dialog and writes to the tenant-scoped, private contact documents bucket without leaving the lead. Both affordances are hidden when the lead has no linked contact. The lead stage progression bar is shown for active leads. An enrollment status widget (`LeadSequenceStatus`) appears when the lead has a linked contact and the user has `ce.enrollments.view`. Two detail cards show Lead Information (source type, source details, expected admission date, notes) and Contact Details (name, email, phone with a link to the full contact record). A full-width conversion or lost-details card is shown for closed leads. Screening history and (for converted leads) conversion audit trail are rendered below. **Permissions** — Screening requires `ce.screening.create`. Converting requires `ce.lead-conversions.create`. Enrollment viewing requires `ce.enrollments.view`. The lead ID must exist and belong to your organization. **Steps to work a lead record:** 1. Open a lead record by navigating to `/ce/leads/:id` — click a lead from the Lead Pipeline or a contact's Leads tab. 2. Review lead information — check source type, source details, expected admission date, urgency, and notes in the Lead Information card. Change urgency from the dropdown when you have `ce.leads.edit`; the change is auto-audited. 3. Advance the stage — click a stage in the stage progression bar to move the lead forward. 4. Screen the lead — click Screen (requires `ce.screening.create`) to launch the intake screening wizard. 5. Convert the lead — click Convert Lead (requires `ce.lead-conversions.create`) to start the conversion wizard. 6. Mark the lead as lost — click Mark Lost to open the lost reason dialog. 7. Review screening history — scroll to the Screening History section to see all prior screenings for this lead. 8. Review contact documents — click the document-count badge in the header to jump to the contact's Documents tab (requires `ce.contacts.documents.view`). 9. Upload a document — click Upload Document in the header to attach a file to the linked contact without leaving the lead (requires `ce.contacts.documents.upload`). **Lead status lifecycle** — `active`, `converted`, or `lost`; controls which action buttons are visible. **Stage** — a configurable pipeline stage with name and color; shown in a stage progression bar. **Screening** — a clinical intake screening can be launched for active leads; history is shown below. **Conversion** — converting a lead creates a downstream record (type stored in `converted_to_type`); `converted_to_id` links to it. ## Related Community Engagement core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/ce.tsx * src/cores/ce/pages/LeadPipelinePage.tsx * src/cores/ce/pages/LeadDetailPage.tsx # Community Engagement Overview Source: https://docs.encoreos.io/ce/overview Overview of the Community Engagement core in Encore OS — purpose, scope, and key responsibilities. The Community Engagement core (CE) manages outreach, intake, and relationship management for Encore OS — lead management, intake screening, calendar scheduling, contact relationship mapping, email and SMS communications, embeddable intake widgets, and referral sequencing. **Architecture:** CE integrates with **Platform Foundation** for communications and notification infrastructure, and sequences qualified referrals into **Clinical** and **Practice Management**. ## From lead to referral Leads arrive from widgets, partner referrals, or direct contact, then run through intake screening and eligibility prescreen. Qualified leads are scheduled and sequenced as referrals into Clinical and Practice Management. ```mermaid theme={null} flowchart LR Lead["Lead capture
(widgets · partners ·
direct contact)"] --> Screen["Intake screening
+ eligibility prescreen"] Screen --> Qualify{"Qualified?"} Qualify -->|no| Nurture["Nurture
(email / SMS,
consent-gated)"] Nurture -.-> Screen Qualify -->|yes| Schedule["Schedule
intake appointment"] Schedule --> Referral["Referral sequencing"] Referral --> CL["Clinical"] Referral --> PM["Practice Management"] ``` CRM lead intake and assignment screen ## Key surfaces Day-to-day screener workflow. Configure the intake pipeline. Scheduled outreach automation. ## Get oriented in CE Leads arrive via embeddable widgets, partner referrals, or direct contact. Run the [intake screening](/ce/intake-screening-user-guide) pipeline with eligibility prescreen and document collection. Book the intake appointment and sequence the referral into Clinical / Practice Management. ## By role Daily call triage, [screening](/ce/intake-screening-user-guide), and scheduling. Campaigns and contact relationship mapping. Consent audits and TCPA / CAN-SPAM evidence. ## Scope at a glance * **Lead & contact management** — leads, contacts, relationship mapping, CRM-style pipelines. * **Intake screening** — initial qualification, eligibility prescreen, document collection. * **Calendar & scheduling** — outreach calls, intake appointments, cron-driven webhooks. * **Communications** — email and SMS workflows with consent, TCPA / CAN-SPAM compliance. * **Embeddable widgets** — intake forms hostable on partner websites. * **Referral sequencing** — coordinated handoffs into Clinical and Practice Management. ## Related How qualified intakes flow into Clinical. Consent and messaging compliance evidence. Outreach regulatory crosswalk. # Partner Health Source: https://docs.encoreos.io/ce/partner-health Dashboard showing aggregated partner performance statuses, progress updates, and risk indicators across a configurable date range. The Partner Health dashboard at `/ce/partner-health` provides a high-level view of how referral partners are performing, highlighting partners that are at risk, off track, or exceeding expectations over a selectable date window. ## Overview Navigating to `/ce/partner-health` loads `PartnerHealthDashboardPage`, which fetches summary and recent-progress data via `usePartnerHealthDashboard`. The page shows a date range selector (30 / 60 / 90 days), four stat cards (Total Partners, At Risk, Off Track, Exceeding), two summary cards (On Track count, No Recent Progress count), and a list of recent partner progress updates. Clicking a progress record navigates to that partner's detail page. ## Who it's for Permission required: `ce.partner_progress.view` ## Before you start * An organization context must be present; the page shows a loading skeleton until one is resolved. * Partner progress records must be logged before meaningful data appears. ## Steps Navigate to `/ce/partner-health` from the CE navigation sidebar. Use the dropdown in the top-right to select **Last 30 days**, **Last 60 days**, or **Last 90 days**. The stat cards and recent-progress list update accordingly. Review the four top-level cards: Total Partners, At Risk, Off Track, and Exceeding. The two summary cards show how many partners are On Track and how many have no progress logged within the selected range. Click any row in the **Recent Progress Updates** list to navigate to that partner's detail page at `/ce/partners/{id}`. Click **View All Partners** at the bottom to navigate to the Partners list. ## Key concepts * **Progress Status** — Four values rendered as color-coded badges: `exceeding` (success), `on_track` (info), `at_risk` (warning), `off_track` (destructive). * **No Recent Progress** — Partners without a logged progress record within the selected date range. ## Related Community Engagement core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/ce.tsx * src/cores/ce/pages/PartnerHealthDashboardPage.tsx * src/cores/ce/hooks/usePartnerHealthDashboard.ts * src/cores/ce/types/database.ts # Partner Onboarding Source: https://docs.encoreos.io/ce/partner-onboarding Six-step guided wizard for creating a new referral partner — profile, contacts, contract setup, milestones, and review. The Partner Onboarding wizard at `/ce/partners/onboard` walks users through a structured six-step process to create a new referral partner, collecting profile information, primary and additional contacts, contract setup, and milestones before a final review. ## Overview Navigating to `/ce/partners/onboard` loads `PartnerOnboardingWizard`, which uses `WizardShell` with a timeline layout. The wizard collects data across six steps and, on final submission, creates the partner record. On completion a success screen appears with a **View Partner** link to the new partner's detail page. ## Who it's for Permission required: `ce.partners.create` ## Before you start * You must have `ce.partners.create` permission. * Have the partner organization's legal name, type, primary contact details, and any known contract terms ready before starting. ## Steps Enter the partner organization's name, legal name, partner type, relationship status, address, website, phone, and notes. Enter the primary point of contact's first name, last name, title, email, and phone number. Optionally add further contacts associated with this partner organization. Configure initial contract terms such as type, start date, and key provisions. Set relationship milestones and target dates relevant to this partner type. Review all entered information. Go back to any step to make corrections, then submit to create the partner record. ## Key concepts * **WizardShell (PF-40)** — The wizard is rendered by the platform's `WizardShell` with a timeline sidebar that shows progress across all steps. * **Completion screen** — After creation, the wizard renders a `WizardCompleteStep` with options to view the new partner or return to the Partners list. ## Related Community Engagement core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/ce.tsx * src/cores/ce/wizards/partner-onboarding/PartnerOnboardingWizard.tsx * src/cores/ce/wizards/partner-onboarding/steps/PartnerProfileStep.tsx * src/cores/ce/wizards/partner-onboarding/steps/ReviewStep.tsx * src/cores/ce/wizards/partner-onboarding/hooks/usePartnerOnboardingWizard.ts # Partner Scorecard Source: https://docs.encoreos.io/ce/partner-scorecard Analytics page showing partner performance metrics, referral tracking, and side-by-side partner comparison with export support. The Partner Scorecard page at `/ce/analytics/partners` displays performance metrics and referral data for referral partners, including an export option for reporting. ## Overview Navigating to `/ce/analytics/partners` loads `PartnerScorecardPage`. The page is wrapped in a `RequirePermission` gate for `ce.scorecard.view` and renders a `PageHeader` (title "Partner Scorecard", description "Performance metrics, referral tracking, and partner comparison") with an `ExportDropdown` that requires `ce.scorecard.export`. The `PartnerScorecard` analytics component provides the detailed content. ## Who it's for Permission required: `ce.scorecard.view` (to view). Export requires `ce.scorecard.export`. ## Before you start * At least one partner with referral history should exist for meaningful data. * Export permission (`ce.scorecard.export`) is required to download data. ## Steps Navigate to `/ce/analytics/partners` from the CE analytics navigation. The scorecard displays performance metrics and referral tracking for partners visible to your organization. Use the **Export** dropdown in the page header to download scorecard data. Requires `ce.scorecard.export` permission. ## Related Community Engagement core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/ce.tsx * src/cores/ce/pages/PartnerScorecardPage.tsx * src/cores/ce/components/analytics/PartnerScorecard.tsx * src/cores/ce/components/analytics/ExportDropdown.tsx # Partners Source: https://docs.encoreos.io/ce/partners Manage referral partners — search, filter, create, view details, edit, and track relationship progress and conversion metrics. The Partners page at `/ce/partners` is the primary list view for all referral partner organizations, with search, type and status filtering, and actions to add or edit partners. ## Overview Navigating to `/ce/partners` loads `PartnersPage`, gated by `ce.partners.view`. The page shows a searchable, filterable table of partners. Clicking a row navigates to `/ce/partners/{id}`. The **New Partner** button (also reachable via `/ce/partners?action=new`) opens the `PartnerDialog` create form. On mobile, a dedicated `MobilePartnerView` is rendered instead of the table. Partners list view ## Who it's for Permission required: `ce.partners.view` ## Before you start * You need `ce.partners.view` to access the page. * Creating partners requires `ce.partners.create` (enforced by the Partner Onboarding wizard route). * An organization must be selected; the page shows a loading skeleton until the org context resolves. ## Steps Navigate to `/ce/partners` from the CE sidebar. Use the search field to filter by name. Use the **Type** dropdown (treatment center, hospital, social services, legal, employer, educational, faith based, community, other) and **Status** dropdown (active, inactive, pending, former, needs completion) to narrow results. Default status filter is "active." Select **Needs completion** to find partners created inline from the Add-Lead wizard that still need their full record filled in. Click any partner row to navigate to its detail page at `/ce/partners/{id}`. Click **New Partner** or go to `/ce/partners?action=new` to open the create dialog. For the guided onboarding wizard, use `/ce/partners/onboard`. Use the row action menu to open the edit dialog for an existing partner. Use the row action menu to delete a partner. A confirmation step is shown before deletion. Partners can also be narrowed by accepted insurance/payer, so admissions can quickly find partners that match a lead's coverage. Partners list filtered by insurance ## Key concepts * **Partner types** — `treatment_center`, `hospital`, `social_services`, `legal`, `employer`, `educational`, `faith_based`, `community`, `other`. * **Relationship statuses** — `active`, `pending`, `inactive`, `former`, `needs_completion`. * **Needs completion** — the status applied to a partner quick-created inline from the Add-Lead wizard with only a name. The Partners table shows a warning badge with an alert icon so you can find and complete the full record. To clear the flag, edit the partner and set the relationship status to any other value. * **Guided tour** — A `GuidedTour` component is available for onboarding new users to the Partners workflow; triggered via the help button. ## Creating a partner The route `/ce/partners/new` is a redirect, not a standalone screen. It automatically redirects to `/ce/partners?action=new`. In `src/routes/ce.tsx`, the path `/ce/partners/new` is configured as ``. The Partners list page (`PartnersPage`) handles this parameter to open a new partner creation flow. Note: the full partner onboarding wizard is available at `/ce/partners/onboard` (requires `ce.partners.create`), which is distinct from this redirect target. ## Viewing a partner The Partner Details page at `/ce/partners/:id` shows the full profile of one referral partner, including summary statistics and tabbed sections for contacts, contracts, call history, activity, email timeline, and progress tracking. Accessing `/ce/partners/:id` loads `PartnerDetailPage`, which fetches the partner record via `usePartner` and renders a header, four summary stat cards (Total Referrals, Successful, Conversion Rate, Last Referral), and a scrollable tab set. Clicking **Edit Partner** opens an inline dialog. The **Progress** tab provides a milestone tracker, progress timeline, a quick **Log Progress** dialog, and a multi-step **Guided Review** wizard. Child components check `ce.calls.create` for the click-to-call button. To initiate a call, your account needs the `ce.calls.create` permission and a RingCentral integration configured. **Steps to work a partner detail:** 1. From the Partners list (`/ce/partners`), click the partner's name or row to navigate to `/ce/partners/{id}`. 2. Review summary statistics — the four stat cards show Total Referrals, Successful Admissions, Conversion Rate, and Last Referral date at a glance. 3. Navigate tabs — use the tab bar to switch between **Overview**, **Contacts**, **Contracts**, **Calls**, **Activity**, **Emails**, and **Progress**. 4. Edit partner information — click **Edit Partner** in the header to open the partner edit dialog. Save changes to update the record. 5. Log or review progress — on the **Progress** tab, click **Log Progress** for a quick entry, or **Guided Review** to step through a structured review wizard. **Conversion Rate** — Calculated as `successful_admissions / total_referrals × 100`; displayed as a whole-number percentage. **Relationship Status** — Values include `active`, `inactive`, `pending`, and `former`; shown as a badge next to the partner name. **Milestone Tracker** — Driven by `partner_type` and `relationship_start_date`; tracks predefined milestones for the relationship lifecycle. **Guided Review** — A multi-step wizard (`PartnerProgressReviewWizard`) covering review period, KPI entry, milestone updates, notes, and submit/schedule. ## Related Community Engagement core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/ce.tsx * src/cores/ce/pages/PartnersPage.tsx * src/cores/ce/pages/PartnerDetailPage.tsx * src/cores/ce/hooks/usePartners.ts * src/cores/ce/hooks/usePartnerMutations.ts * src/cores/ce/hooks/usePartner.ts * src/cores/ce/wizards/partner-progress-review/PartnerProgressReviewWizard.tsx * src/cores/ce/components/MilestoneTracker.tsx * src/cores/ce/components/PartnersTable.tsx # Pipeline Dashboard Source: https://docs.encoreos.io/ce/pipeline-dashboard Lead funnel visualization, conversion rates, and pipeline health metrics with export support. The Pipeline Dashboard at `/ce/analytics/pipeline` provides a visual overview of the lead funnel, conversion rates, and overall pipeline health. ## Overview Navigating to `/ce/analytics/pipeline` loads `PipelineDashboardPage`, gated by `ce.pipeline.view`. The page renders a `PageHeader` ("Pipeline Dashboard", description "Lead funnel visualization, conversion rates, and pipeline health metrics") with an `ExportDropdown` requiring `ce.pipeline.export`, and the `PipelineDashboard` analytics component. ## Who it's for Permission required: `ce.pipeline.view`. Export requires `ce.pipeline.export`. ## Before you start * Lead records must exist with stage assignments for funnel data to be meaningful. * Export permission (`ce.pipeline.export`) is required to download data. ## Steps Navigate to `/ce/analytics/pipeline` from the CE analytics navigation. The dashboard shows the lead funnel by stage, conversion rates, and pipeline health indicators. Use the **Export** dropdown in the page header to download pipeline data. Requires `ce.pipeline.export`. ## Related Community Engagement core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/ce.tsx * src/cores/ce/pages/PipelineDashboardPage.tsx * src/cores/ce/components/analytics/PipelineDashboard.tsx * src/cores/ce/components/analytics/ExportDropdown.tsx # Pipeline Metrics Source: https://docs.encoreos.io/ce/pipeline-metrics CE analytics hub — entry point for pipeline, partner scorecard, call analytics, campaign analytics, and activity analytics. The route `/ce/analytics` does not render a dedicated analytics hub page in the current codebase. Individual analytics views are mounted at sub-paths: `/ce/analytics/pipeline`, `/ce/analytics/partners`, `/ce/analytics/calls`, `/ce/analytics/campaigns`, and `/ce/analytics/activities`. ## Overview No component is mounted at the bare `/ce/analytics` path. All CE analytics are accessible via their specific sub-routes listed below. This documentation page serves as a navigational overview until an analytics hub is implemented. Available analytics routes: | Label | Route | Permission | | ------------------ | -------------------------- | ------------------- | | Pipeline Dashboard | `/ce/analytics/pipeline` | `ce.pipeline.view` | | Partner Scorecard | `/ce/analytics/partners` | `ce.scorecard.view` | | Call Analytics | `/ce/analytics/calls` | `ce.analytics.view` | | Campaign Analytics | `/ce/analytics/campaigns` | `ce.analytics.view` | | Activity Analytics | `/ce/analytics/activities` | `ce.analytics.view` | ## Who it's for Access follows your organization's role and module configuration. Each sub-route has its own permission gate. ## Before you start Navigate directly to one of the sub-routes listed in the table above. ## Steps Select the relevant analytics sub-route from the CE sidebar or the table above. ## Related Community Engagement core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/ce.tsx * src/cores/ce/pages/PipelineDashboardPage.tsx * src/cores/ce/pages/PartnerScorecardPage.tsx # CE Pipeline Settings — Admin Guide Source: https://docs.encoreos.io/ce/pipeline-settings-admin-guide /ce/settings → Pipeline Tile Fields card. # CE Pipeline Settings — Admin Guide **Feature:** CE-65\ **Audience:** Org admins and CE configuration owners\ **Last Updated:** 2026-05-16 *** ## Where `/ce/settings` → **Pipeline Tile Fields** card. The card is only rendered for users with the `ce.settings.pipeline.configure` permission (CE-65 FR-1.1). Without that permission, the card is hidden — no error, no empty state. ## What you configure The card lists every metadata row that can appear on a CE pipeline tile (stage, assignee, next action, scheduled appointment, urgency, requested services, source, partner, expected admission, insurance carrier, last activity, days in stage). Toggle the rows your organization wants visible. * Selection is **organization-level** (per `ce_module_settings.tile_field_config`). Per-user preferences are explicitly deferred (see CE-65 CONTEXT §1). * The renderer always caps the visible rows at **4** (FR-1.4) and collapses the remainder into a keyboard-discoverable **"+N more"** chip in the FR-1.5 priority order. This is deterministic — re-ordering the selection does not change which fields are visible vs overflow. * Defaults (when no row has been selected yet): stage, assignee, next action, scheduled appointment. ## Permissions reference (CE-65) | Key | Surface | | ----------------------------------- | -------------------------------------- | | `ce.settings.pipeline.configure` | Tile Field Configuration card | | `ce.pipeline.view_bed_board` | Bed-availability widget on `/ce/leads` | | `ce.contacts.insurance.view_detail` | "Reveal" control for masked Member ID | | `ce.contacts.insurance.edit` | Edit insurance carrier + member ID | Recommended default grants: org admins for the first two; admissions and billing personas for the insurance keys (residual decision — `CE-65-CONTEXT.md` §"Open Product Decisions"). ## Audit & compliance * Successful **unmasked reveals** and **edits** to the insurance fields create rows in `ce_insurance_access_audit` (append-only; UPDATE/DELETE are denied by policy). * Audit rows store: `organization_id`, `contact_id`, `actor_user_id`, `action`, `occurred_at`. They **never** include the cleartext member ID (CAC-006). * The audit table is governed by `pf_has_org_access` (RLS); see [`CE-65 Integration Contract`](https://github.com/Encore-OS/encoreos/blob/development/docs/architecture/integrations/CE-65-pipeline-tile-customization-dashboard-embeds-INTEGRATION.md). ## Bed-availability widget (CE-72) `/ce/settings` → **Bed-availability widget** card. The card is rendered only for users with the `ce.admin` permission. The pipeline bed-availability widget always shows five tiles — **Total beds**, **Filled**, **Available**, **Reserved**, and **Upcoming discharges (14 days)** — to anyone with `ce.pipeline.view_bed_board`. Use the **Show the Auth-risk tile** switch to add a sixth tile counting beds with expiring, expired, or denied authorizations (sourced from the platform bed-board's `beds_with_auth_risk`). The toggle is **off by default** and is stored per organization in `ce_module_settings.bed_board_show_auth_risk`. Changes take effect on next render — no reload needed. The Auth-risk tile is hidden whenever the platform bed-board surface is unavailable, regardless of the toggle state. ## Settings rollout checklist 1. Confirm desired tile rows with admissions team; toggle them in the **Pipeline Tile Fields** card and save. 2. Grant `ce.pipeline.view_bed_board` to the admissions role(s) so the bed-availability widget renders. 3. Decide whether to enable the **Auth-risk** tile in the **Bed-availability widget** card. Leave it off if your admissions team does not track authorization risk on the pipeline view. 4. Decide which roles get `ce.contacts.insurance.view_detail` / `ce.contacts.insurance.edit`. Keep this list short — every reveal is audited. 5. Verify against the [user guide](/ce/pipeline-tile-customization-user-guide). ## Related * User: [Pipeline Tile Customization — User Guide](/ce/pipeline-tile-customization-user-guide) * Compliance sign-off: [`specs/reviews/CE-65-COMPLIANCE-SIGNOFF.md`](https://github.com/Encore-OS/encoreos/blob/development/specs/reviews/CE-65-COMPLIANCE-SIGNOFF.md) * Spec: [`CE-65`](https://github.com/Encore-OS/encoreos/blob/development/specs/ce/specs/CE-65-pipeline-tile-customization-dashboard-embeds.md) # CE Pipeline — Tile Customization & Dashboard Embeds (User Guide) Source: https://docs.encoreos.io/ce/pipeline-tile-customization-user-guide The CE lead pipeline (/ce/leads) now adapts to how your organization works admissions: # CE Pipeline — Tile Customization & Dashboard Embeds (User Guide) **Feature:** CE-65\ **Audience:** CE pipeline users (admissions, intake coordinators, lead owners)\ **Last Updated:** 2026-05-16 *** ## What changed The CE lead pipeline (`/ce/leads`) now adapts to how your organization works admissions: 1. **Configurable tile metadata.** Each lead tile shows up to **4 rows** of metadata. Which rows appear is controlled by your org admin in CE Settings (see the [admin guide](/ce/pipeline-settings-admin-guide)). If more than 4 are configured, the remaining rows collapse into a keyboard-focusable **"+N more"** chip in deterministic priority order (FR-1.5). 2. **Scheduled leads panel.** A collapsible card below the board lists open leads with a future *expected admission date*, ordered by the soonest. You can collapse it for the session; a **Restore** control is always visible so you never end up in a dead-end state (FR-2.3). 3. **Bed-availability widget.** When you have the *View Pipeline Bed Board* permission, a read-only capacity widget sits **above** the pipeline board with five tiles: **Total beds**, **Filled**, **Available**, **Reserved**, and **Upcoming discharges (14 days)**. Bed counts come straight from Recovery Housing; CE never stores them. **Reserved** is derived from CE itself — it counts leads in any pipeline stage whose behavior is *Scheduled*. Moving a lead into a Scheduled stage updates Reserved immediately, even if Recovery Housing data is temporarily unavailable. Org admins can optionally turn on a sixth **Auth risk** tile (see the [admin guide](/ce/pipeline-settings-admin-guide)). If the platform bed surface is unavailable, the bed-sourced tiles are replaced by a *"RH data unavailable"* notice and the Reserved tile still renders. ## Insurance fields on contacts * **Carrier** is always visible to anyone who can see the contact. * **Member ID** is **masked by default** (e.g. `••••6789`). * A **Reveal** button only appears for users with the *View Unmasked Insurance Member ID* permission. Each reveal is recorded in an audit log; the audit row records *who* and *when* — never the cleartext member ID (CAC-006). * Edits require the *Edit Contact Insurance Fields* permission and are audited the same way. ## What you will see if a permission is missing | Surface | Without permission | | ----------------------- | ------------------------------------------ | | Bed-availability widget | Surface is hidden, no error toast | | Reveal Member ID | Button is not rendered; value stays masked | | Edit Insurance | Fields render read-only | ## Tips * The "+N more" chip is fully keyboard accessible — tab into the tile, then `Enter`/`Space` to expand the overflow list. * The Scheduled panel respects `prefers-reduced-motion`; collapse / restore is instant when reduced motion is enabled. * No insurance member identifier ever appears in a toast, error message, telemetry event, or analytics payload (FR-4.5). ## Related * Admin: [Pipeline Settings — Admin Guide](/ce/pipeline-settings-admin-guide) * Integration: [`CE-65 Integration Contract`](https://github.com/Encore-OS/encoreos/blob/development/docs/architecture/integrations/CE-65-pipeline-tile-customization-dashboard-embeds-INTEGRATION.md) * Spec: [`CE-65`](https://github.com/Encore-OS/encoreos/blob/development/specs/ce/specs/CE-65-pipeline-tile-customization-dashboard-embeds.md) # Referral Sources Source: https://docs.encoreos.io/ce/referral-sources Manage the catalog of referral source categories used to track where leads originate. The Referral Sources page at `/ce/referral-sources` provides an interface for managing the referral source taxonomy used to categorize where leads originate. ## Overview Navigating to `/ce/referral-sources` loads `ReferralSourcesPage`, which renders a `PageHeader` ("Referral Sources", description "Manage and track where your leads come from") and the `ReferralSourceManagement` component scoped to the current organization. The page shows a loading skeleton while the organization context resolves. ## Who it's for Access follows your organization's role and module configuration. ## Before you start * An organization context must be selected; the page shows a loading state or a "No organization selected" message until it resolves. ## Steps Navigate to `/ce/referral-sources` from the CE sidebar. The page lists all referral source categories configured for your organization. Use the actions provided by the `ReferralSourceManagement` component to manage the catalog. ## Creating a referral source The route `/ce/referral-sources/new` is not registered as a standalone screen in the current CE route configuration. In `src/routes/ce.tsx`, the path `/ce/referral-sources/new` is not registered. The Referral Sources list page at `/ce/referral-sources` has no explicit route-level permission gate and has no registered sub-route for creating new entries. Visiting `/ce/referral-sources/new` currently falls through to the platform's Not Found handler. Referral source creation is managed directly on the `/ce/referral-sources` list page via the `ReferralSourceManagement` component. ## Related Community Engagement core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/ce.tsx * src/cores/ce/pages/ReferralSourcesPage.tsx * src/cores/ce/components/ReferralSourceManagement.tsx # RingCentral Setup Source: https://docs.encoreos.io/ce/ringcentral-setup Step-through wizard for configuring the RingCentral telephony integration in Community Engagement. The RingCentral Setup page at `/ce/settings/telephony/ringcentral-setup` hosts the RingCentral integration setup wizard, allowing administrators to connect a RingCentral account to the Community Engagement telephony features. Alternate route: `/ce/telephony/setup`. ## Overview Both `/ce/settings/telephony/ringcentral-setup` and `/ce/telephony/setup` mount the same `RingCentralSetupPage`, which wraps `RingCentralSetupWizard` inside a `PageContainer`. The wizard guides administrators through connecting a RingCentral account. Both routes require the `ce.admin` permission. ## Who it's for Permission required: `ce.admin` ## Before you start * You must have `ce.admin` permission. * Have your RingCentral account credentials or API keys ready before starting the wizard. ## Steps Navigate to `/ce/settings/telephony/ringcentral-setup` or `/ce/telephony/setup`. Complete the steps presented by `RingCentralSetupWizard` to authenticate and connect your RingCentral account. After completing the wizard, confirm that click-to-call and inbound call features are functional in CE. ## Related Community Engagement core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/ce.tsx * src/cores/ce/pages/RingCentralSetupPage.tsx * src/cores/ce/components/setup/RingCentralSetupWizard.tsx # Screening Source: https://docs.encoreos.io/ce/screening Conduct intake screening for a lead — complete the screening form and review screening history for the lead record. The Screening page at `/ce/leads/:leadId/screening` is the full-page screening form for a specific lead. It presents a structured screening form and shows the screening history for that lead below it. ## Overview Navigating to `/ce/leads/:leadId/screening` loads `ScreeningPage`. The page resolves the lead via `useLead`, shows the lead's contact name in the header, and renders a `ScreeningForm` inline. On successful submission, the browser navigates back to the lead detail page. Below the form, `ScreeningHistory` displays previous screening records for the same lead. The page is gated by `ce.screening.create`. ## Who it's for Permission required: `ce.screening.create` ## Before you start * Navigate to the lead's detail page (`/ce/leads/{leadId}`) and use the screening action to reach this page. * The lead must exist and be resolvable; otherwise an error message is shown. * For a guided multi-step experience, use the Screening Wizard at `/ce/leads/{leadId}/screening/wizard` instead. ## Steps From the lead detail page, access the screening link to navigate to `/ce/leads/{leadId}/screening`. Fill in the required fields in `ScreeningForm`. The form is scoped to the current lead and organization. Click the submit action. On success, the browser returns to the lead detail page at `/ce/leads/{leadId}`. The `ScreeningHistory` panel below the form shows all previous screening records for this lead. ## Key concepts * **ScreeningForm** — Accepts `leadId`, `leadCreatedAt`, and `siteId` (nullable). The `siteId` is passed as `null` from this page; SME should confirm whether site-specific screening is supported. * **ScreeningHistory** — Displays past screening records for the same lead, enabling reviewers to compare prior assessments. ## Related Community Engagement core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/ce.tsx * src/cores/ce/pages/ScreeningPage.tsx * src/cores/ce/components/screening/ScreeningForm.tsx * src/cores/ce/components/screening/ScreeningHistory.tsx * src/cores/ce/hooks/useLead.ts # Screening Wizard Source: https://docs.encoreos.io/ce/screening-wizard Multi-step intake screening and triage wizard for a lead, covering questionnaire, triage summary, and disposition with SLA tracking. The Screening Wizard at `/ce/leads/:leadId/screening/wizard` provides a structured, step-by-step intake screening experience for a lead, using the platform's `ModuleWizardRenderer` (PF-41) with draft persistence and an SLA countdown indicator. ## Overview Navigating to `/ce/leads/:leadId/screening/wizard` loads `IntakeScreeningWizardPage`. The page resolves the lead via `useLead`, then renders `ModuleWizardRenderer` for the `intake_screening` wizard type. Wizard steps cover questionnaire responses, triage summary (ASAM score, recommended level of care, clinical flags), and disposition (proceed, waitlist, refer out, clinical escalation). An `SlaIndicator` in the header shows elapsed time since lead creation against the configured SLA threshold. On completion, `useCreateScreening` persists the record and the browser returns to the lead detail page. ## Who it's for Permission required: `ce.screening.create` ## Before you start * Navigate to the lead's detail page first (`/ce/leads/{leadId}`), then open screening. * The lead must exist; the wizard shows an error state if it cannot be resolved. * Draft persistence is enabled — an incomplete wizard can be resumed. ## Steps From the lead detail page, click the screening action to navigate to `/ce/leads/{leadId}/screening/wizard`. Answer the screening questionnaire fields for the selected program type (residential, IOP, PHP, outpatient). The triage step shows the computed triage category, ASAM score, recommended level of care, and any clinical flags. Choose the screening disposition: proceed to admission, waitlist, refer out, or flag for clinical escalation. Enter any required follow-up dates or escalation notes. Click **Complete Screening**. The record is saved and the browser returns to the lead detail page. ## Key concepts * **SLA Indicator** — Displays elapsed time from lead creation. The SLA threshold is configured per program type via `ce_screening_sla_config`. * **Draft persistence** — Partial wizard state is preserved so the user can resume an in-progress screening. * **Disposition types** — `proceed`, `waitlist`, `refer_out`; clinical escalation is a flag that can be set alongside any disposition. * **ASAM score** — A numeric score used for level-of-care recommendation; SME must confirm scoring rules. ## Related Community Engagement core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/ce.tsx * src/cores/ce/wizards/screening/IntakeScreeningWizardPage.tsx * src/cores/ce/wizards/screening/steps/ScreeningQuestionnaireStep.tsx * src/cores/ce/wizards/screening/steps/ScreeningTriageSummaryStep.tsx * src/cores/ce/wizards/screening/steps/ScreeningDispositionStep.tsx * src/cores/ce/hooks/useCreateScreening.ts # Segments Source: https://docs.encoreos.io/ce/segments Create and manage contact segments for targeted outreach — search segments, track member counts, and view segment details. The Segments page at `/ce/segments` is the management interface for contact segments, which group contacts by shared criteria for use in campaigns and sequences. ## Overview Navigating to `/ce/segments` loads `SegmentsPage`, gated by `ce.segments.view`. The page shows a search field and a grid of segment cards, each displaying name, active/inactive badge, member count, and last calculated date. The **New Segment** button opens `SegmentFormDialog`. The page is gated by `ce.segments.view`. ## Who it's for Permission required: `ce.segments.view`. Creating segments requires `ce.segments.create` (enforced within `SegmentFormDialog`). ## Before you start * An organization context must be resolved for data to load. * Contact records must exist before segments can have members. ## Steps Navigate to `/ce/segments` from the CE sidebar. Type in the search field to filter segment cards by name. Click **New Segment** to open `SegmentFormDialog`. Define the segment criteria, name, and description, then save. Each card shows the segment name, active/inactive status, member count, and the date the membership was last recalculated. ## Key concepts * **Member count** — The number of contacts currently matching the segment's criteria, shown as `member_count` on each card. * **Last calculated** — The timestamp of the most recent segment membership recalculation (`last_calculated_at`). * **Active / Inactive** — Only active segments are shown as available for campaign or sequence enrollment. ## Viewing a segment The route `/ce/segments/:id` for Segment Details does not exist in the current codebase. No component is mounted at `/ce/segments/:id`. Segment creation and editing is currently handled via the `SegmentFormDialog` on the Segments list page (`/ce/segments`). Each segment card on that page shows the segment name, active status, member count, and last calculated date. To edit a segment, click the edit action on a segment card to open the `SegmentFormDialog` inline. The Segments list requires `ce.segments.view`. ## Related Community Engagement core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/ce.tsx * src/cores/ce/pages/SegmentsPage.tsx * src/cores/ce/hooks/useSegments.ts * src/cores/ce/components/segments/SegmentFormDialog.tsx # Sequence Wizard Source: https://docs.encoreos.io/ce/sequence-wizard Guided wizard for building and publishing an automated follow-up sequence — define enrollment, build steps, configure exits, and publish. The Sequence Wizard at `/ce/sequences/wizard` is a full-page guided builder for creating an automated follow-up sequence using the platform's `ModuleWizardRenderer` (PF-41). ## Overview Navigating to `/ce/sequences/wizard` loads `CeSequenceBuilderWizardPage`. The wizard registers CE-specific step components via `registerCeSequenceWizardSteps`, then renders `ModuleWizardRenderer` for the sequence wizard type. On completion, `usePublishSequence` is called to persist the sequence. At least one step is required before publishing; a validation toast is shown otherwise. The route requires `ce.admin`. Known wizard step modules: **Enrollment** (`CeSequenceEnrollmentStep`), **Step Builder** (`CeSequenceStepBuilderStep`), **Exits** (`CeSequenceExitsStep`). ## Who it's for Permission required: `ce.admin` ## Before you start * You must have `ce.admin` permission. * Decide the sequence name, enrollment criteria, the step types and delays, and exit conditions before starting. ## Steps Navigate to `/ce/sequences/wizard` from the CE sidebar or via the Sequences page. In the Enrollment step, define how leads are enrolled (auto-enroll criteria, business hours setting). In the Step Builder step, add one or more steps. Each step has a type, name, delay (days / hours / minutes), and skip conditions. In the Exits step, set the exit conditions: exit on reply, exit on call, exit on conversion. Complete the wizard. `usePublishSequence` persists the sequence. At least one step is required to publish. ## Key concepts * **ModuleWizardRenderer (PF-41)** — The wizard uses the platform's module wizard renderer, which requires step components to be registered before rendering. * **Publish vs. create** — The wizard publishes a complete sequence in one flow; individual step editing afterward is done via the Sequence Details page. * **Exit conditions** — `exit_on_reply`, `exit_on_call`, `exit_on_conversion` are boolean flags set in the Exits step. ## Related Community Engagement core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/ce.tsx * src/cores/ce/wizards/sequences/CeSequenceBuilderWizardPage.tsx * src/cores/ce/wizards/sequences/steps/CeSequenceEnrollmentStep.tsx * src/cores/ce/wizards/sequences/steps/CeSequenceStepBuilderStep.tsx * src/cores/ce/wizards/sequences/steps/CeSequenceExitsStep.tsx * src/cores/ce/wizards/sequences/hooks/usePublishSequence.ts # Sequences Source: https://docs.encoreos.io/ce/sequences List, create, view, and manage automated follow-up sequence templates — enrollment counts, completion rates, step builder, and analytics. The Sequences page at `/ce/sequences` lists all automated follow-up sequence templates for the organization, showing each sequence's active status, enrollment count, and completion rate. ## Overview Navigating to `/ce/sequences` loads `SequencesPage`, gated by `ce.sequences.view`. The page shows a table of sequences with columns: Name (link to detail page), Status, Enrolled count, and Completion percentage. The **Create Sequence** button (visible with `ce.sequences.create`) navigates to `/ce/sequences/new`. An empty state with a create action is shown when no sequences exist. ## Who it's for Permission required: `ce.sequences.view`. Creating sequences requires `ce.sequences.create`. ## Before you start * An organization context must be selected. * Sequences must be created before they can be enrolled to leads. ## Steps Navigate to `/ce/sequences` from the CE sidebar. The table shows each sequence's name, active/inactive status, number of enrolled leads, and completion percentage. Click the sequence name link to navigate to its detail page at `/ce/sequences/{id}`. Click **Create Sequence** (requires `ce.sequences.create`) to navigate to `/ce/sequences/new` where you define a new sequence. Alternatively, use the Sequence Wizard at `/ce/sequences/wizard` for a guided experience. ## Key concepts * **Completion percentage** — Calculated as `total_completed / total_enrolled × 100`, rounded to the nearest whole number. * **Active / Inactive** — Shown in the Status column; inactive sequences do not enroll new leads. ## Creating a sequence The New Sequence screen renders the `SequenceDetailPage` component in create mode. It is accessible at `/ce/sequences/new`. Required permission: `ce.sequences.create` (route-level gate). In create mode, the screen renders a `SequenceForm` with fields for: name, description, business hours only toggle, auto-enroll toggle, enrollment criteria (JSON), exit on reply, exit on call, and exit on conversion. After submitting, `createSequence` is called and on success the user is navigated to `/ce/sequences/:id` for the new sequence. The sequence is created with `is_active: true` by default. If `enrollment_criteria` cannot be parsed as valid JSON, a toast error is shown and submission is blocked. The full wizard-based alternative for sequence creation is available at `/ce/sequences/wizard` (requires `ce.admin`). **Before you start:** You need the `ce.sequences.create` permission. Your organization must be active. If using enrollment criteria, prepare valid JSON before submitting. **Steps to create a sequence:** 1. Navigate to `/ce/sequences/new` from the Sequences list or click Create Sequence. 2. Enter sequence name and description — provide a descriptive name and optional description for the sequence. 3. Configure behavior settings — toggle business hours only, auto-enroll, exit on reply, exit on call, and exit on conversion as appropriate. 4. Set enrollment criteria (optional) — enter valid JSON in the enrollment criteria field if automatic enrollment rules are needed. 5. Submit — click the submit button. On success you are navigated to the new sequence's detail page to add steps. **Enrollment criteria** — JSON-based rules that determine which leads are automatically enrolled; must be valid JSON. **Auto-enroll** — when enabled, leads matching enrollment criteria are enrolled without manual action. **Exit conditions** — `exit_on_reply`, `exit_on_call`, `exit_on_conversion` determine when a lead is automatically removed from the sequence. ## Viewing a sequence The Sequence Details page at `/ce/sequences/:id` is the full management interface for a single automated follow-up sequence, providing tabs for steps, enrollments, analytics, and settings. The route is gated by `ce.sequences.view`. Navigating to `/ce/sequences/:id` loads `SequenceDetailPage`. For existing sequences, the page shows the sequence name, active/inactive badge, and a tab set: **Steps**, **Enrollments**, **Analytics**, and **Settings**. Header actions include Activate/Deactivate (requires `ce.sequences.edit`), Clone (requires `ce.sequences.create`), and Delete (requires `ce.sequences.delete`). **Steps to work a sequence detail:** 1. From the Sequences list (`/ce/sequences`), click a sequence name link to navigate to `/ce/sequences/{id}`. 2. Edit the sequence form (Steps tab) — in the **Steps** tab, update the sequence name, description, business-hours-only flag, auto-enroll setting, enrollment criteria (JSON), and exit conditions. Save with the form's submit action. 3. Manage sequence steps — use the `SequenceStepBuilder` in the **Steps** tab to add, edit, reorder, or delete individual steps in the sequence. 4. Review enrollments — switch to the **Enrollments** tab to see leads currently enrolled in this sequence and their enrollment status. 5. Analyze performance — switch to the **Analytics** tab to view enrollment and completion metrics via `SequenceAnalyticsTab`. 6. Configure settings — switch to the **Settings** tab for organization-level sequence configuration via `SequenceSettingsTab`. 7. Activate, deactivate, clone, or delete — use the header action buttons to change the sequence's active state, clone it to a new sequence, or permanently delete it. **Active / Inactive** — Only active sequences enroll new leads. Toggling deactivates without deleting. **Business hours only** — When enabled, step sends are gated to business hours only. ## Related Community Engagement core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/ce.tsx * src/cores/ce/pages/SequencesPage.tsx * src/cores/ce/pages/SequenceDetailPage.tsx * src/cores/ce/hooks/useSequenceList.ts * src/cores/ce/hooks/useEnrollmentList.ts * src/cores/ce/hooks/useSequenceDetail.ts * src/cores/ce/hooks/useSequenceMutation.ts * src/cores/ce/components/sequences/SequenceStepBuilder.tsx # Sequences User Guide Source: https://docs.encoreos.io/ce/sequences-user-guide Automated follow-up sequences let CE teams enroll leads into a timed set of email, SMS, and task steps. Sequences can be manually triggered from a lead record… ## Overview Automated follow-up sequences let CE teams enroll leads into a timed set of email, SMS, and task steps. Sequences can be manually triggered from a lead record or automatically enrolled when sequence criteria match. ## Permissions * `ce.sequences.view`: view sequence list and detail pages * `ce.sequences.create`: create and clone sequences * `ce.sequences.edit`: edit sequence settings and steps * `ce.sequences.delete`: archive sequences * `ce.enrollments.view`: view enrollment status and progression * `ce.enrollments.create`: enroll leads and bulk enroll * `ce.enrollments.edit`: pause/resume/exit active enrollments ## Build a Sequence 1. Open `Community Engagement -> Sequences`. 2. Select **Create Sequence**. 3. Configure: * Sequence details (name, description, exit behavior) * Step timeline (email/SMS/task order and delays) * Analytics and enrollment settings 4. Save the sequence, then activate it when ready. ## Enroll Leads * **From a lead detail:** use the **Enroll in Sequence** action in **Sequence Status**. * **Bulk enrollment:** select leads and use the bulk enrollment dialog. * **Auto-enrollment:** set `auto_enroll` and `enrollment_criteria` on the sequence. `sequence_batch_limit` in CE module settings limits bulk enrollment size. ## Runtime Behavior * Executor runs every 15 minutes (`pg_cron`) and processes due active enrollments. * Idempotency is enforced with `ce_sequence_outbound_executions`. * CE-16 suppression checks are mandatory before outbound sends. * If suppression data is unavailable, executor fails closed and logs `compliance_unavailable_stub`. ## Exit Conditions Enrollments can exit automatically or manually: * Reply * Call * Conversion * Opt out * Manual exit * Suppressed * Completed ## Troubleshooting * If steps are skipped with `compliance_unavailable_stub`, verify CE-16 suppression availability. * If bulk enrollment fails, reduce selection to the configured `sequence_batch_limit`. * If no sends occur, confirm: * sequence status is active, * enrollment status is active, * `next_step_at` is due, * required contact channel data exists. # SLA Dashboard Source: https://docs.encoreos.io/ce/sla-dashboard Monitor intake screening SLA compliance — track missed, at-risk, and compliant screenings across program types and sites. The SLA Dashboard at `/ce/screening/sla-dashboard` provides a compliance view of intake screening SLA performance, showing which screenings have missed, are at risk of missing, or are within their SLA threshold. ## Overview Navigating to `/ce/screening/sla-dashboard` loads `SlaComplianceDashboardPage`, which wraps `SlaComplianceDashboard` inside a `PageContainer`. The route requires `ce.screening.manage`. ## Who it's for Permission required: `ce.screening.manage` ## Before you start * SLA thresholds must be configured per program type (via `ce_screening_sla_config`) for the dashboard to display meaningful data. * Screening records must exist for the selected date range. ## Steps Navigate to `/ce/screening/sla-dashboard` from the CE screening navigation. The dashboard shows screening records segmented by SLA status (missed, at risk, compliant) across program types and optionally by site. Use the dashboard's filtering or drill-down capabilities to identify specific leads with missed SLAs and take corrective action. ## Key concepts * **SLA threshold** — The maximum allowed time between lead creation and screening completion, configured per program type in `ce_screening_sla_config`. * **SLA status** — Determined by comparing `created_at` to `screened_at` against the configured threshold. An `SlaIndicator` uses the same logic on the Screening Wizard page. ## Related Community Engagement core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/ce.tsx * src/cores/ce/pages/SlaComplianceDashboardPage.tsx * src/cores/ce/components/screening/SlaComplianceDashboard.tsx * src/cores/ce/wizards/screening/components/SlaIndicator.tsx # SMS Consent Source: https://docs.encoreos.io/ce/sms-consent Admin interface for viewing and managing SMS consent records — filter by status, search by phone number, and export to CSV. The SMS Consent page at `/ce/sms/consent` provides an administrative view of SMS consent records, enabling review and export of opt-in and opt-out status for contacts. ## Overview Navigating to `/ce/sms/consent` loads `SmsConsentPage`, gated by `ce.sms.admin`. The page shows a search field (by phone number), a tab filter (All / Consented / Opted Out / Pending), and a `SmsConsentTable`. Tab counts update with the current filter. An **Export CSV** button downloads all visible consent records to a file with fields: Phone Number, Contact Name, Status, Consent Date, Consent Method, Opt-Out Date, Opt-Out Method. The export button is disabled when no records are loaded. ## Who it's for Permission required: `ce.sms.admin` ## Before you start * SMS consent records are created automatically when contacts opt in or out of messaging — no manual entry is needed for standard flows. * Use this page for audit and compliance review. ## Steps Navigate to `/ce/sms/consent` from the CE SMS navigation. Enter a phone number in the search field to filter consent records. Click a tab — **All**, **Consented**, **Opted Out**, or **Pending** — to filter by consent status. Tab labels include the current count. Click **Export CSV** to download the current filtered consent records. The export is disabled when no records are present. ## Key concepts * **Consent status** — Three values: `consented`, `opted_out`, `pending`. Shown as color-coded tabs. * **CSV export fields** — Phone Number, Contact Name, Status, Consent Date, Consent Method, Opt-Out Date, Opt-Out Method. * **PII note** — Phone numbers and contact names in this view are personally identifiable information. Access is restricted to `ce.sms.admin`. ## Related Community Engagement core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/ce.tsx * src/cores/ce/pages/SmsConsentPage.tsx * src/cores/ce/hooks/useSmsConsent.ts * src/cores/ce/components/sms/SmsConsentTable.tsx # SMS Conversations Source: https://docs.encoreos.io/ce/sms-conversations Monitor real-time SMS threads, review PHI risk before sending, compose and schedule messages, and retry failed sends. The SMS Conversations page at `/ce/sms/conversations` is an operator queue for viewing real-time SMS threads filtered by phone number or contact context, composing outbound messages with PHI guardrails, and managing scheduled and failed sends. ## Overview Navigating to `/ce/sms/conversations` loads `SmsConversationsPage`, gated by `ce.sms.admin`. The page accepts optional `phone`, `contactId`, `leadId`, and `partnerId` URL search params. When a phone number is loaded, the page renders a two-column view: the left shows a live `SmsConversation` thread via `useRealtimeSmsMessages`; the right shows a compose card with PHI warning, scheduled message list, and a retry prompt for the latest failed outbound message. An inbound message toast (`SmsNotificationToast`) fires for new inbound messages. ## Who it's for Permission required: `ce.sms.admin` ## Before you start * A phone number or contact context must be supplied; without it, the page shows an empty state prompting for a phone number. * RingCentral (or equivalent telephony) must be configured for outbound sends to succeed. ## Steps Navigate to `/ce/sms/conversations`. Alternatively, open from a contact or lead context — the relevant `contactId` or `leadId` is appended to the URL automatically. Enter a phone number in the **Conversation Filter** card and click **Load Conversation**, or navigate with a `?phone=` query param. The left column shows the chronological SMS thread. A connection status indicator shows whether the realtime channel is live. In the right compose card, type a message. The PHI warning (`SmsPhiWarning`) will block send if the draft contains flagged content. Click **Send Message** to deliver immediately. Use `SmsSchedulePicker` to queue a message for a future time. Scheduled messages appear in the list below the compose area. If the latest outbound message failed, a retry prompt appears at the bottom of the compose card. Click **Retry Failed Send** to re-queue it. ## Key concepts * **PHI guardrail** — `usePhiBlockCheck` analyzes the draft message and blocks send if PHI patterns are detected. The send button is disabled while a block is active. * **Realtime updates** — `useRealtimeSmsMessages` subscribes to live message updates; a connection indicator shows channel status. * **Scheduled messages** — Up to 5 pending scheduled messages are shown per conversation. Queued messages can be cancelled; failed ones show a status badge. * **Inbound toast** — When a new inbound message arrives after the initial load, `SmsNotificationToast` fires with a link to the contact. ## Related Community Engagement core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/ce.tsx * src/cores/ce/pages/SmsConversationsPage.tsx * src/cores/ce/hooks/useRealtimeSmsMessages.ts * src/cores/ce/hooks/useSmsSend.ts * src/cores/ce/hooks/usePhiBlockCheck.ts * src/cores/ce/components/sms/SmsConversation.tsx # SMS Templates Source: https://docs.encoreos.io/ce/sms-templates Create and manage reusable SMS message templates with merge fields for personalized outreach. The SMS Templates page at `/ce/sms/templates` is an administrative interface for creating and managing reusable SMS message templates that can include merge fields for personalization. ## Overview Navigating to `/ce/sms/templates` loads `SmsTemplatesPage`, gated by `ce.sms.admin`. The page renders a header ("SMS Templates", description "Create and manage reusable SMS templates with merge fields for personalized messaging.") and the `SmsTemplateList` component. ## Who it's for Permission required: `ce.sms.admin` ## Before you start * You must have `ce.sms.admin` permission. * Templates reference merge fields — confirm available merge tokens with your SME before creating templates. ## Steps Navigate to `/ce/sms/templates` from the CE SMS navigation. `SmsTemplateList` displays all templates available for your organization. Use the create action in `SmsTemplateList` to define a new template with a name, body text, and any merge fields. Use the inline actions on each template to update or remove it. ## Related Community Engagement core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/ce.tsx * src/cores/ce/pages/SmsTemplatesPage.tsx * src/cores/ce/components/sms/SmsTemplateList.tsx # Community Engagement Submissions Source: https://docs.encoreos.io/ce/submissions View and manage inbound form submissions for a specific web form — filter by status, review pending entries, and track processing. The route `/ce/web-forms/:id/submissions` for a dedicated Submissions page does not exist in the current codebase. Submission review is available on the Web Form Details page at `/ce/web-forms/:id`, within the **Submissions** tab. ## Overview No component is mounted at `/ce/web-forms/:id/submissions`. Submissions for a form are accessible via the **Submissions** tab on the Web Form Details page (`/ce/web-forms/:id`), which renders `WebFormSubmissionsTable` with a status filter (all, pending, processed, spam). Submission stats (total, pending, processed, spam, today's count) appear as stat cards above the tab set. ## Who it's for Access follows your organization's role and module configuration. The Web Form Details page requires `ce.admin`. ## Before you start Navigate to the form's detail page at `/ce/web-forms/{id}` and switch to the **Submissions** tab. ## Steps Navigate to `/ce/web-forms/{id}` for the relevant form. Click the **Submissions** tab to view and filter submission records. Use the status filter in `WebFormSubmissionsTable` to view all, pending, processed, or spam submissions. ## Related Community Engagement core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/ce.tsx * src/cores/ce/pages/WebFormDetailPage.tsx * src/cores/ce/components/web-forms/WebFormSubmissionsTable.tsx * src/cores/ce/hooks/useWebFormSubmissions.ts # Suppressions Source: https://docs.encoreos.io/ce/suppressions View and manage the communications suppression registry — filter by channel, reason, and source; remove suppressions with audit logging. The Suppressions page at `/ce/suppressions` is a paginated registry of contacts suppressed from email, SMS, and/or phone outreach, with filtering and deletion capability. ## Overview Navigating to `/ce/suppressions` loads `SuppressionsPage`, gated by `ce.suppressions.view`. The page uses `ListPageLayout` with three filter dropdowns (Channel, Reason, Source) and a server-side paginated `DataTable`. Columns include contact name, email, suppressed channels (badges), reason, source, and last-updated date. Users with `ce.suppressions.delete` see a trash icon per row; clicking it opens an `AlertDialog` confirming that removing the suppression is logged in the compliance audit trail. ## Who it's for Permission required: `ce.suppressions.view` (to view). Deletion requires `ce.suppressions.delete`. ## Before you start * Suppressions are created automatically by inbound opt-out keywords, bounce handlers, and the compliance dashboard — this page is for review and management. * Removing a suppression is irreversible from this UI; the action is logged. ## Steps Navigate to `/ce/suppressions` from the CE compliance navigation. Use the **Channel**, **Reason**, and **Source** dropdowns to narrow the list. Changing any filter resets to page 1. Each row shows the contact name, email, suppressed channels, suppression reason, source, and the date last updated. Click the trash icon on a row (requires `ce.suppressions.delete`). Confirm the dialog — the action is logged in the compliance audit trail and the contact may receive communications on previously suppressed channels. ## Key concepts * **Channels** — `email`, `sms`, `phone`, or "All channels" (suppress\_all flag). * **Suppression reasons** — `user_request`, `bounce`, `complaint`, `dnc_registry`, `legal_hold`, `opt_out_keyword`, `admin_override`, `other`. * **Suppression sources** — `manual`, `sms_keyword`, `email_unsubscribe`, `dnc_import`, `bounce_handler`, `api`. * **Pagination** — Page size options: 10, 25, 50, 100 records. Server-side pagination ensures performance at scale. ## Related Community Engagement core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/ce.tsx * src/cores/ce/pages/SuppressionsPage.tsx * src/cores/ce/hooks/useSuppressions.ts * src/platform/table-v2/DataTable.tsx # UHC/Optum prior authorization Source: https://docs.encoreos.io/ce/uhc-optum-prior-auth Submit and track UHC/Optum Arizona IOP prior authorizations from a Community Engagement lead, with guided manual fallback and handoff to Practice Management. Starting June 15, 2026, UnitedHealthcare (Optum Behavioral Health) requires prior authorization (PA) before Intensive Outpatient Program (IOP) services are rendered to adult Arizona Medicaid (AHCCCS) members. Encore lets admissions staff submit and track those authorizations directly from the lead record — pre-filling the Optum AZ Standard PA form from data already captured during intake. Covered codes: **Mental Health IOP (`S9480`)** and **Substance Use Disorder IOP (`H0015`)**. ## Prior authorizations on the lead The **Prior Authorizations** panel on a lead's detail page lists every submission with its billing code, status (Pending / Approved / Denied), submitted date, and Optum confirmation number. Staff with `ce.prior_auth.submit` see **New Authorization** to start a request. CE-69 prior authorizations panel ## The prior authorization wizard **New Authorization** opens a four-step wizard (Submission & Patient, Provider, Services & Clinical, Review & Submit) pre-filled from the lead's contact, insurance, and the org's IOP defaults. Staff review and edit every field before submitting. CE-69 prior authorization wizard When the wizard submits, a server-side job attempts the Optum portal submission and captures the confirmation number. If automation is unavailable (portal outage, login failure, or bot-detection), the request falls back to **guided manual mode**: the authorization is saved as *Manual Pending* and staff can download a pre-filled summary and open the portal directly — so an authorization is never missed because of a portal issue. ## Settings Org admins configure the integration under **Settings → Integrations → UHC/Optum Prior Authorization**: enable the feature, set IOP defaults, and store the One Healthcare ID credentials (encrypted; never displayed again after saving). The feature is Arizona/AHCCCS scoped and off by default. CE-69 prior authorization settings ## Admission handoff When a lead with an approved (or submitted) authorization is converted to a Practice Management patient, the prior-authorization number, authorized dates, and billing code flow to the patient record so billing can include them on claims without re-keying. # Web Forms Source: https://docs.encoreos.io/ce/web-forms Create, view, edit, and manage lead capture web forms — submission stats, active/inactive control, embed code, field builder, and styling. The Web Forms page at `/ce/web-forms` is the list view for all lead capture web forms, showing form cards with submission statistics and actions to create, edit, or delete forms. ## Overview Navigating to `/ce/web-forms` loads `WebFormsListPage`, gated by `ce.admin`. The page shows a search field, a status filter (All Statuses / Active / Inactive), and a grid of `WebFormCard` components. Each card shows form name, active/inactive status, pending and total submission counts, and edit/delete actions. The **New Form** button navigates to `/ce/web-forms/new`. Deleting a form opens an `AlertDialog` confirmation; it notes that existing submissions are preserved. ## Who it's for Permission required: `ce.admin` ## Before you start * An organization context must be resolved. * Creating forms requires `ce.admin`. ## Steps Navigate to `/ce/web-forms` from the CE navigation. Use the search field to filter forms by name. Use the **Status** dropdown to show All, Active, or Inactive forms. Click **New Form** to open the form builder at `/ce/web-forms/new`. Click a form card to navigate to `/ce/web-forms/{id}` for submission review and embed code. Use the edit action on a form card to navigate to `/ce/web-forms/{id}/edit`. Use the delete action on a form card. Confirm in the dialog — existing submissions are preserved. ## Key concepts * **Form card stats** — Each card shows `pendingCount` and `totalCount` from `useAllWebFormStats`. * **Active vs. Inactive** — Inactive forms do not accept new submissions even if the embed code is still deployed on a website. ## Viewing a web form The Web Form Details page at `/ce/web-forms/:id` is the central management view for a single web form, combining submission statistics, status control, submission review, embed code, and settings in a tabbed layout. Permission required: `ce.admin`. Navigating to `/ce/web-forms/:id` loads `WebFormDetailPage`. The page shows the form name, URL slug, active/inactive badge, an **Active** toggle, and an **Edit Form** button. Five stat cards show Total, Pending, Processed, Spam, and Today's submission counts. A three-tab layout provides: **Submissions** (filterable by status), **Embed** (embed code via `WebFormEmbedPanel`), and **Settings** (reCAPTCHA, assignment type, redirect URL, allowed domains, confirmation message, description — read-only). The **Active** toggle calls `updateForm` immediately and shows a success or error toast. **Steps to work a web form detail:** 1. From `/ce/web-forms`, click a form card to navigate to `/ce/web-forms/{id}`. 2. Toggle form active status — use the **Active** switch in the page header to enable or disable submission acceptance. The change is persisted immediately. 3. Review submission statistics — read the five stat cards: Total, Pending, Processed, Spam, and Today count. 4. Review and filter submissions — in the **Submissions** tab, use the status filter in `WebFormSubmissionsTable` to view all, pending, processed, or spam entries. 5. Get embed code — switch to the **Embed** tab for the embed snippet via `WebFormEmbedPanel`. 6. View form settings — switch to the **Settings** tab to review reCAPTCHA status, assignment type, redirect URL, allowed domains, and confirmation message. Edit is done via the builder at `/ce/web-forms/{id}/edit`. 7. Edit the form — click **Edit Form** to navigate to the builder at `/ce/web-forms/{id}/edit`. **Submission statuses** — `pending`, `processed`, `spam`. The status filter in the Submissions tab controls which records are shown. **Slug** — Displayed in monospace below the form name; used in the embedded form's public URL. ## Creating a web form The New Web Form page opens the form builder at `/ce/web-forms/new`, where administrators can configure a lead capture form with custom fields, branding, and spam protection before publishing it to a website. Permission required: `ce.admin`. Navigating to `/ce/web-forms/new` opens `WebFormBuilderPage` in create mode. The builder shows a two-column layout: a settings and field editor on the left, and a live preview on the right. On save, the form is created and the browser redirects to the new form's detail page at `/ce/web-forms/{id}`. **Before you start:** You must belong to an organization — the form is scoped to `currentOrganization`. Have the form's intended name and a URL-friendly slug ready. The slug is auto-generated from the name but can be edited before saving. Decide whether spam protection (reCAPTCHA) should be enabled on submission. **Steps to create a form:** 1. Navigate to **Web Forms** (`/ce/web-forms`) and click **New Form**, or go directly to `/ce/web-forms/new`. 2. Configure form settings — in the **Form Settings** card, enter: **Form Name** (required), **URL Slug** (required; auto-generated from name but editable), **Description** (internal only), **Success Message** (shown after submission), **Active** toggle, and **reCAPTCHA** toggle. 3. Add and configure fields — switch to the **Fields** tab. Click **Add Field** to open the field editor dialog. Configure each field (type, label, required flag) and save. Reorder or remove fields as needed. 4. Apply styling (optional) — switch to the **Styling** tab to adjust branding, colors, and layout for the embedded form preview. 5. Review the live preview — the right column shows a live preview of the form that updates as you edit fields and styling. 6. Save the form — click **Save Form**. On success, you are redirected to the new form's detail page where you can copy embed code and review submissions. **Default fields** — New forms start with a default field set defined in `DEFAULT_FORM_FIELDS` (see `src/cores/ce/types/web-forms.ts`). ## Editing a web form The Edit Web Form screen is the same `WebFormBuilderPage` component used for creating new forms, but loaded in edit mode for an existing form. It is accessible at `/ce/web-forms/:id/edit`. Permission required: `ce.admin` (route-level gate). In edit mode the builder pre-populates all fields from the existing form record: name, slug, description, active status, reCAPTCHA toggle, success message, field definitions, and styling. The form uses a two-column layout: the left column contains a Form Settings card and tabbed editors for Fields and Styling; the right column shows a live `WebFormPreview`. The slug field is read-only in edit mode (auto-generation only applies to new forms). Clicking a field in the field list opens `WebFormFieldEditor` in a dialog. Clicking Save Form calls `useUpdateWebForm` and stays on the same page. If the form ID does not exist or is not found, a "Form not found" message is shown with a link back to `/ce/web-forms`. **Steps to edit a form:** 1. Click Edit Form from the web form detail page or navigate directly to `/ce/web-forms/:id/edit`. 2. Update form settings — adjust the form name, description, success message, Active toggle, or reCAPTCHA toggle in the Form Settings card. 3. Edit form fields — in the Fields tab, click a field to open the `WebFormFieldEditor` dialog. Reorder fields by dragging. Add new fields with the add button. 4. Adjust styling — switch to the Styling tab to update colors, fonts, or other visual settings in `WebFormStylingEditor`. 5. Preview changes — check the right-column preview to see how the form will appear to submitters. 6. Save — click Save Form to persist changes. The page remains on the edit view after saving. **Slug in edit mode** — URL identifier used in the embed code; in edit mode, the slug field is not auto-generated from the name and is read-only. **reCAPTCHA** — spam protection toggle; defaults to enabled on new forms. ## Related Community Engagement core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/ce.tsx * src/cores/ce/pages/WebFormsListPage.tsx * src/cores/ce/pages/WebFormDetailPage.tsx * src/cores/ce/pages/WebFormBuilderPage.tsx * src/cores/ce/hooks/useWebForms.ts * src/cores/ce/hooks/useWebFormSubmissions.ts * src/cores/ce/types/web-forms.ts * src/cores/ce/components/web-forms/WebFormCard.tsx * src/cores/ce/components/web-forms/WebFormSubmissionsTable.tsx * src/cores/ce/components/web-forms/WebFormEmbedPanel.tsx * src/cores/ce/components/web-forms/WebFormFieldEditor.tsx # May 16, 2026: clearinghouse failover and scheduled SMS Source: https://docs.encoreos.io/changelog/2026-05-16 Clearinghouse failover, scheduled SMS with TCPA quiet hours, CE crisis detection, contact management, problem list, and C-CDA export. ## New features **Clearinghouse failover for claims submission** Practice Management can now route claims through a secondary clearinghouse when the primary is unavailable. Failover status surfaces on the dashboard so billers see exactly which transport carried each batch. A Business Associate Agreement check gates routing, and every transport decision is captured in the audit log. See the [Clearinghouse failover admin guide](/pm/clearinghouse-failover-admin-guide). **Scheduled SMS with TCPA quiet hours** You can now schedule outbound SMS for a future send time. The scheduler enforces TCPA quiet hours automatically — messages queued during restricted windows are held until the next allowed slot — and respects per-contact consent and suppression. Review setup in the [SMS notifications guide](/pf/sms-notifications-guide). **CE crisis auto-detection** Community Engagement now flags contacts whose inbound messages contain crisis indicators and routes them to an on-call queue for immediate review. The routing card on the contact record shows the active escalation path. **SMS routing rules manager** A new routing rules manager lets admins define how inbound SMS is dispatched to teams or queues based on keyword, campaign, or contact attributes. Rules can be reordered, enabled or disabled, and previewed before save. **Problem list panel for clinical charts (CL-46)** Clinicians have a dedicated problem list panel on the patient chart with sign-off tracking. The panel supports add, resolve, and history views. **C-CDA document export (CL-48)** Clinical now generates C-CDA documents from the patient chart, including demographics and vitals adapters. Look for the new entry in the document menu on the patient record. ## Updates **Contact management enhancements (CE-57)** Contacts gain additional fields across the create and edit dialogs, a "lost" stage in the pipeline, and drag-to-reorder on the contacts board — including a larger drag handle on mobile. New pipeline hooks let custom workflows react to stage changes. **Sequences hardening (CE-13)** Communication sequences get reliability and UX fixes around step ordering, retry handling, and editor validation. See the [Sequences user guide](/ce/sequences-user-guide). **CE contacts import/export and DNC list (CE-16)** The Community Engagement dashboard now supports contact import and export and a managed Do Not Contact list. Suppression and consent decisions flow through to outbound channels automatically. A new PDF export captures the current dashboard view. **Navigation polish** The platform navigation gets a round of polish. The active state is now consistent across the desktop rail, flyout, and mobile; group breadcrumbs surface where you are inside a module; pinned tabs are available in the side nav; and a dashboard redirect smooths the post-login landing. **Mobile UX improvements** Mobile users get a refined header layout, expanded drag handles, a fix for the floating action button overlapping content, blurred FAB on tap, and resolution of a double-tap issue on certain interactive elements. **Brand and icon refresh** The product icon, favicon, splash screen, and PWA manifest icons now share a single design system. Dark-mode tiles get a contrast boost. **Performance feedback notifications (HR-10)** When a manager requests performance feedback, recipients now receive an in-app notification, a task, and a direct message — making feedback requests harder to miss. ## Bug fixes * **PIP workflow (HR-10):** Resolved create, view, complete, and terminate bugs in the Performance Improvement Plan workflow. The Competencies tab is now available on the competency page. * **Portal form submissions:** Fixed a regression affecting patient portal form submission, text visibility on certain themes, analytics events, worker permissions, and outbound notification URLs. * **Submission export:** Fixed an error that caused some submission exports to fail. * **Transcription:** Fixed a permission issue that blocked transcription vendor management for some admins. * **CE segments:** Deleted contacts no longer appear in segment queries, so segment counts and previews are accurate. * **Clinical breadcrumb:** Hardened the breadcrumb fallback so deep links into clinical pages always render a usable trail. * **CL navigation permissions:** Corrected permission keys on the Clinical nav so menu items appear for users who have access. * **Mobile breadcrumb:** Fixed truncation of breadcrumbs on narrow viewports. # May 18, 2026: URL-synced detail tabs and mobile polish Source: https://docs.encoreos.io/changelog/2026-05-18 URL-synced scrollable tabs on detail pages, HR detail-page navigation upgrades, a searchable mobile org switcher, Community Engagement mobile nav fixes, HR review stability fixes, and removal of the DoseSpot integration. ## New features **URL-synced scrollable tabs on detail pages** Detail pages across HR, Clinical, Practice Management, Governance & Risk, Learning & Org Development, IT, and Finance now use horizontally scrollable tabs. You get fade gradients, iOS momentum scrolling, and auto-scroll to the active tab. The active tab is also synced to the URL, so you can deep-link, refresh, or share a link and land on the same tab. Pages migrated include employee, contractor, position, payroll run, candidate, job posting, performance review, interview, offer, benefit plan, accreditation, risk, audit, policy, QI project, procedure, goal, meeting, issue, ticket, budget, project, and claim detail pages. **Mobile org switcher with search** The mobile organization switcher now includes built-in search and a scrollable list, matching the desktop experience. Search appears automatically when you belong to five or more organizations, so jumping between orgs on a phone is fast even at scale. ## Updates **Community Engagement mobile navigation** The Community Engagement bottom navigation bar now sits cleanly above the platform navigation on mobile, so module nav and platform nav no longer overlap or block taps. Dashboard metric cards (Total Contacts, Active Leads, Calls This Month) are now tappable and route directly into the matching list. **DoseSpot integration removed** The DoseSpot e-prescribing integration has been removed from Clinical. The settings card, embedded tab on the medications section, and related permissions no longer appear. If you relied on DoseSpot, contact your account team about the supported e-prescribing path. ## Bug fixes * **Mobile scroll:** Restored vertical scrolling on mobile pages that were previously blocked by the pull-to-refresh gesture and layout container constraints. Pages scroll normally and pull-to-refresh still works at the top. * **Mobile back arrow (HR):** The back arrow now appears on mobile for employee, position, candidate, and job posting detail pages. * **HR performance review:** Fixed a "Maximum update depth exceeded" loop on detail pages with long breadcrumb labels, and resolved a crash when acknowledging, submitting, or completing a performance review. * **CE and Clinical auth:** Corrected the current-user lookup in contact document extraction confirmation and portal quality measures so both flows reliably resolve the signed-in user. * **Mobile navigation stacking:** Fixed several layering issues so the Community Engagement bottom tab bar and portal navigation sit above the platform mobile nav instead of disappearing behind it. Dashboard cards underneath are now tappable again. # May 19, 2026: Encore OS rebrand and mobile home redesign Source: https://docs.encoreos.io/changelog/2026-05-19 Encore Health OS is now Encore OS, plus a redesigned mobile Home hero, accessible clinical form error summaries, and mobile dock polish. ## New features **Mobile Home redesigned with a focus bento** The mobile Home screen now leads with a glassmorphic hero. It surfaces a greeting, a "needs attention" card with inbox and approval totals, a 2-column metric bento, and a foreground Quick Actions tile that scrolls into the existing Quick Actions section. Desktop Home is unchanged. See the [portal home overview](/pf/portal-home). **Accessible error summaries on clinical forms** Clinical forms now show a consolidated, screen-reader-friendly error summary after a failed validation. Each entry is a focus link, so keyboard users can jump straight to the field that needs attention instead of hunting through the form. ## Updates **Platform rebrand: Encore Health OS is now Encore OS** The product is now called **Encore OS**. The new name appears in places customers see it — generated PDFs and Excel exports (creator and author metadata), benchmarking and consent policy text, and AI assistant prompts. NorthSight Recovery and other tenant organization names are unchanged. No action is required. **Mobile navigation dock polish** Continued refinement of the redesigned mobile nav dock that shipped last week: tuned light-mode contrast and border treatment, an optional dock blur toggle, tighter iOS safe-area handling, and a more consistent home header across modules. ## Bug fixes * **HR route crash:** Fixed a render crash that could occur when navigating into certain HR routes. * **Auth session bounce:** Resolved a session-restore bounce that briefly redirected signed-in users back to the login screen on app start. * **Double splash screen:** Fixed a race where the splash screen could render twice during initial load. * **Home header consistency:** Aligned the Home header treatment so it matches the rest of the platform on both mobile and desktop. # May 26, 2026: HR wizards and episode-based admissions Source: https://docs.encoreos.io/changelog/2026-05-26 Guided Job Posting and Offer Letter wizards, an HR onboarding command center, episode-based admissions, a live Bed Census widget, and navigation polish. ## New features **Job Posting Wizard (HR)** Recruiters can now create job postings through a guided 4-step wizard with inline validation — position and details, requirements, application form, then review and publish. Drafts and publishes flow through the existing job postings list. The wizard is flag-gated; ask your admin to enable it for your tenant. See [job postings](/hr/job-postings). **Offer Letter Wizard (HR)** Extend offers from an application with a guided 5-step wizard: candidate confirmation, compensation (with validation), terms, approval routing, and review. The wizard reuses the existing offer pipeline so approvals and statuses are unchanged. See the [offer letter wizard](/hr/offer-letter-wizard). **HR onboarding command center** HR onboarding now ships a live command center on the [My HR onboarding dashboard](/hr/my-onboarding). Milestone timeline, benefits, and payroll panels are wired into [onboarding details](/hr/onboarding), and admins get template presets on the [onboarding templates](/hr/onboarding-templates) page. **Leadership program catalog (HR)** Organizations can now define reusable leadership programs once and pick from the catalog when enrolling employees in succession plans. See [leadership programs](/hr/leadership-programs) and [succession planning](/hr/succession-planning). **Episode-based residential admissions (RH)** Residential admission is now modeled as an episode. The New Episode flow handles admission end-to-end and lands you on the new episode record after submission. Bed board and episodes filters were updated to match. See [admissions](/rh/admissions), [episodes](/rh/episodes), and the [bed board](/rh/bed-board). **Live Bed Census widget (RH)** The Bed Census dashboard widget now reads live bed-board data — active residences and available beds — instead of cached placeholder values, so the home dashboard matches the [census](/rh/census) view. ## Updates **Oversight relationships (HR)** The [oversight relationships](/hr/oversight-relationships) page now surfaces filters, a relationships table, and summary cards in one view, making it easier to find a specific clinical supervision pairing. **Personnel file tab (HR)** Employee records now include a Personnel File tab consolidating documents, forms, and signed agreements in one place. **Survey discovery on My HR** "My Surveys" is now linked from the My HR dashboard, and the survey form picker surfaces both organization draft and published forms so admins can pick the right template without leaving the page. **Navigation active state polish** Active items in the platform navigation now use an accent-colored outlined icon instead of a dark fill. The result is better light-mode contrast and a consistent active state across the rail, flyout, and mobile nav. **Dashboard and settings page layouts** Dashboards and settings pages across Clinical, Practice Management, Governance & Risk, HR, Finance & Accounting, IT, RH, Forms & Workflows, Community Engagement, and Learning & Org now share a single page layout. Expect consistent headers, breadcrumbs, and section spacing module to module. ## Bug fixes * **Onboarding status grid (HR):** Resolved an error that prevented the onboarding status grid from loading, including a permissions issue that blocked platform admins from viewing onboarding instances. * **Employee credentials (HR):** Platform admins can now add and view credentials directly from an employee record; the credential wizard pre-selects the employee in context. * **Credential downloads and edit (HR):** Fixed credential document downloads and added a credential edit dialog with skill edit mode. * **Investigations list (HR):** [Investigations](/hr/investigations) now load reliably, the investigator field is a searchable admin picker, and create/update payloads (including target completion date) save as expected. * **Geofence sort:** Geofences are now sorted alphabetically by site name, so toggling one no longer reshuffles the list. * **ACA FTE values (HR):** Fractional FTE counts (for example 50.83) now save on [ACA compliance](/hr/aca-compliance) records. * **Home dashboard order (PF):** Custom widget order on the [portal home](/pf/portal-home) is now preserved after customize — saved order updates immediately and view mode renders widgets in that exact order. * **Lead intake review (CE):** Assignee and partner names now display on the lead intake review step, and unstaged leads appear under the correct pipeline track row. * **Forms UX:** Duplicate survey submissions are now blocked, parameterized form routes show proper breadcrumb labels, and the forms list no longer overflows on narrow screens. # May 27, 2026: Pathway templates and direct offers Source: https://docs.encoreos.io/changelog/2026-05-27 AHCCCS qualification pathway templates, direct-offer creation, mobile app lock with PIN and biometric unlock, and a hardened Proliant payroll sync. ## New features **AHCCCS pathway templates (HR)** HR admins can now apply pre-built qualification pathway templates — BHT, BHPP, PRSS, and CFSP — to a position in a single step. Each template seeds the position's skill and competency requirements and records the source framework for audit. Enable **Pathway templates** under **HR → Settings → General** to turn it on for your tenant. See [pathway templates](/hr/pathway-templates). **Direct offer creation (HR)** Recruiters can now create an offer without an ATS application. The Offer Letter Wizard in direct mode supports existing candidates, existing employees (for internal promotions and transfers), and net-new candidates created inline. Open **Offers → Create Offer**, or visit `/hr/ats/offers/new`. Requires the `hr.ats.offers.create` permission. See [new offer](/hr/offers) and [offers](/hr/offers). **Mobile app lock with PIN and biometric unlock (Platform)** Staff can now set an app PIN and enable biometric unlock for the Encore OS mobile experience. The app locks on background and after idle, and unlocks with PIN or biometric where the device supports it. Manage it under **Settings → Security**. See [security settings](/pf/security). ## Updates **Proliant payroll integration hardened (HR)** The Proliant HCM integration now runs against the verified Proliant API contract. Employee pulls paginate correctly and match on the right identifier. Payroll summary, detail, accrual, and pay-rate mappers read real Proliant fields, and timesheets push through the open-calendar `TimeImport` endpoint. Sync runs now surface contract failures clearly and no longer report success when zero records were processed. A new **sandbox base URL** field on the Proliant integration record lets admins point at a sandbox without a code change. See the [Proliant integration admin guide](/hr/hr-44-admin-guide) and [user guide](https://github.com/Encore-OS/encoreos/blob/development/docs/hr/hr-44-user-guide.md). **Tighter offer hiring safeguards (HR)** Offer-to-hire now isolates EEO data and treats the hire step as idempotent, so retries no longer risk duplicate hires or cross-contamination between candidates' EEO responses. ## Bug fixes * **Employee number generation (HR):** Fixed a database upgrade path that could leave the employee-number generator in a bad state after recreation. * **Onboarding status grid (HR):** Onboarding status now reads from the live schema and respects task-template `is_required` values, so required tasks display correctly. * **Onboarding visibility (HR):** Platform admins can now view onboarding instances across organizations. # May 28, 2026: Workspaces, passkeys, and pathway templates Source: https://docs.encoreos.io/changelog/2026-05-28 Workspace-based navigation, WebAuthn passkeys for MFA, AHCCCS pathway templates, a direct offer workflow, Proliant HCM remediation, and FA tab fixes. ## New features **Workspaces, in-workspace sidebar, and a unified module hub** The platform navigation now centers on **workspaces** — cross-module views that compose the cores you actually use. A new Workspaces switcher lives in the all-modules sidebar, and each workspace has its own hub route with a "needs attention" aggregator. Entering a workspace swaps the rail to an in-workspace sidebar that composes nav from every included core. Every module also now lands on a consistent `/{core}/overview` hub with persona-aware section ordering. **WebAuthn passkeys for MFA** You can now register and use **passkeys (WebAuthn)** as a second factor when signing in. Passkeys live alongside existing MFA methods and work with platform authenticators (Touch ID, Windows Hello, security keys). Ask your admin to enable the feature for your tenant. See [security settings](/pf/security-settings). **AHCCCS qualification pathway templates (HR)** HR admins can apply pre-built **AHCCCS pathway templates** (BHT, BHPP, PRSS, CFSP) to a position to seed the required skills and competency checkpoints in a single step. Each generated requirement records its source framework so you can trace the pathway. Templates are jurisdiction-scoped via PF-96 profiles. See [pathway templates](/hr/pathway-templates). **Direct offer workflow (HR)** HR can now extend an offer **without an ATS application**. The Offer Letter Wizard opens in direct mode at `/hr/ats/offers/new` and supports existing candidates, existing employees (internal promotion/transfer), and net-new candidates created inline. See [new offer](/hr/offers). ## Updates **Proliant HCM integration remediation (HR)** The Proliant HCM integration is now hardened end-to-end. Updates include typed payloads with swagger drift detection, real pagination, accurate employee, payroll, accrual, and rate mappers, an open-calendar selector for timesheet pushes, and a configurable sandbox base URL. A new run-outcome classifier surfaces partial and failed syncs instead of silently passing, and push validation and OAuth diagnostics now return clearer errors. See the [Proliant integration user guide](https://github.com/Encore-OS/encoreos/blob/development/docs/hr/hr-44-user-guide.md) and [admin guide](/hr/hr-44-admin-guide). **Finance & Accounting expense workspace tabs** The Expenses, Reports, Reimbursements, and Batch tabs in Finance & Accounting now route to their respective pages instead of rendering placeholders. See the [expense management guide](/fa/expense-management-guide). **Per-module nav grouping** * **Transcription:** admin nav items are grouped under an Administration section. * **Fleet Management:** nav is organized into Operations, Reports, and Fleet groups. * **RH and Governance & Risk:** forms and reports are grouped consistently with the rest of the platform. ## Bug fixes * **IT dashboard:** Restored the IT Dashboard as a reachable nav item; the core-manifest default route now matches. See the [IT dashboard](/it/dashboard). * **Workspace deep links:** Entering a workspace now preserves the organization slug in the URL, so deep links and back-navigation stay scoped to the right tenant. * **Finance & Accounting payables layout:** Restored the payables grid layout after the tabbed-hub migration. * **Picklist defaults:** Repaired a drift where certain picklist default values were dropped out of band; affected fields again pre-select the configured default. # May 29, 2026: telehealth compliance, payroll wizard, and App Lock Source: https://docs.encoreos.io/changelog/2026-05-29 Telehealth consent and safety checks, an embedded payroll run wizard on Proliant ReadyPay, custom navigation workspaces, and App Lock for staff. ## New features **Telehealth documentation & compliance (CL)** A new clinical compliance layer wraps the existing telehealth session flow. It adds per-patient telehealth consent with annual renewal and audit-immutable revocation, a pre-session safety checklist, jurisdiction-mismatch warnings, and mid-session connectivity logging. New **Sessions** and **Compliance** pages live under **Clinical → Telehealth**, and a consent badge surfaces on the patient chart and appointment form. The feature is flag-gated per org with a five-stage rollout — start in surface-only mode for clinician training, then progressively enable consent and safety-checklist blocking. Telehealth billing modifiers continue to flow from the finalized progress note; the compliance layer never publishes modifier data. See the [user guide](/cl/telehealth-documentation-user-guide) and the [admin guide](/cl/telehealth-documentation-admin-guide). **Embedded payroll run wizard (HR)** The new [payroll run wizard](/hr/create-payroll-run) drives a payroll run end-to-end from Encore — start, preprocess, verify, approve, and submit — while **Proliant ReadyPay** handles gross-to-net, direct deposit funding, federal and state tax filing, and pay stubs. Drafts can be edited and resumed, finalized runs export to the GL via Finance & Accounting, and the run list at [Payroll Runs](/hr/payroll-runs) filters by status. The earlier Gusto Embedded direction has been superseded; `/hr/payroll/gusto` redirects to the active payroll workspace. See [Embedded payroll engine (Proliant ReadyPay)](/hr/gusto-payroll). **Workspace admin (PF)** Org admins can now create, edit, reorder, and disable navigation workspaces from **Settings → Navigation & workspaces → Workspace builder**. Built-in workspaces (Clinical, Practice Management, HR, and so on) are now defaults that your org can override per workspace, hide, or extend with net-new custom workspaces. Changes appear in the sidebar workspace switcher for every member of your org on next load. See [Workspace admin](/pf/workspace-admin). **Navigation telemetry (PF)** A new org-admin analytics page surfaces aggregated navigation usage — top routes, active users, top workspaces selected, per-core event volume, cross-core co-navigation pairs, and a daily events time series — over a 7, 30, or 90-day window. The page reads only route templates and event types, never patient or record IDs, so it is PHI-safe by construction. See [Navigation telemetry](/pf/navigation-telemetry). **AI-recommended workspaces (PF)** On the workspace builder, a new **Suggest workspaces** action aggregates the last 30 days of navigation events and returns a structured set of proposed workspaces grounded in real usage. Proposals persist as editable drafts with the AI's rationale; admins review, edit, and either accept (creating a real workspace) or dismiss. Hallucinated cores or group IDs are stripped before persistence, and recommendations are never auto-applied. See [Workspace admin](/pf/workspace-admin). **App Lock: PIN, biometric, and session lock (PF)** Staff can now configure a no-PHI lock screen in front of the authenticated app from **Settings → Security**. Unlock with a 6-digit PIN, a platform biometric (Touch ID, Face ID, Windows Hello, Android biometrics via WebAuthn), or by signing in again. Lock engages on tab background or after your inactivity timeout, preserving session and unsaved work in memory. Org admins can enforce lock-on-mobile and a maximum inactivity timeout that overrides personal preferences. Lock and unlock events are written to the audit log without PHI. See [App Lock](/pf/app-lock). ## Updates **PHI lane enabled for clinical and practice management AI (PF)** The unified AI gateway's PHI lane is now active for clinical (`cl`) and practice management (`pm`) modules. Both modules route to Claude Sonnet 4.6 with a GPT-4o fallback through Vercel AI Gateway under BAA and Zero-Data-Retention. AI calls from these modules that opt into `lane: 'phi'` no longer fail closed. Modules without an explicit BAA-covered model entry (for example `gr`, `hr`, `fa`, `ce`) continue to throw `PhiLaneNotConfiguredError` on the PHI lane and must use the standard lane. See [PF-111 Unified AI Gateway Integration](/architecture/integrations/PF-111-unified-ai-gateway-integration). **In-workspace sidebar route sync** The in-workspace sidebar now stays in sync with the `/workspace/:id` route — direct deep-links open into the correct workspace on first paint, the entry race that briefly flashed the global sidebar is fixed, and exiting a workspace cleanly returns you to the global navigation state. **SMS consolidated on RingCentral** RingCentral is now the only supported SMS provider in Encore OS. The Twilio option has been removed from **CE Settings → SMS**, the Twilio phone-number field is no longer stored, and the Supabase secrets, edge functions, and webhook paths that handled Twilio have been retired. If your organization was previously configured for Twilio, re-provision an SMS-enabled number in RingCentral and finish setup in **CE Settings → SMS**. See [Email & SMS setup](/integrations/EMAIL_SMS_SETUP) and the [SMS notifications guide](/pf/sms-notifications-guide). **Teller bank-feed integration removed** The unused Teller bank-feed integration has been retired from Finance & Accounting. The Teller-related columns on `fa_bank_accounts`, the Teller hosts in the platform CSP, and the Teller fields exposed by `useBankAccounts` are gone. Bank feeds continue to be supported through **Plaid** plus manual statement import — see [Plaid setup](/fa/PLAID_SETUP) and the [Plaid integration architecture](/architecture/integrations/plaid-integration). # May 30, 2026: dual-pane sidebar, guided Entra setup, role-based licensing Source: https://docs.encoreos.io/changelog/2026-05-30 A dual-pane sidebar with a persistent core rail and collapsible contextual panel, plus a four-step guided Entra ID provisioning wizard, role-to-license SKU mapping, and a programmatic admin consent status check. ## New features **Dual-pane sidebar: core rail and contextual panel (PF)** Encore OS replaces the single four-mode sidebar with a persistent **core rail** plus a **contextual panel**. The 56px rail is always visible on the left and lists the cores you have access to, plus Dashboard, Inbox, Settings, theme toggle, and your avatar. The 256px panel to its right shows the active core's nav (sub-modules render as inline accordions) or a Platform Home panel when no core is active. Toggle the panel open and closed with **⌘B** (Ctrl+B on Windows); the rail stays put. Hovering a rail icon shows a flyout peek of that core's nav without leaving your current page. * **Per-module color.** The active core's icon, ring, and panel header pick up that module's color token, so it's clear at a glance which core you're in. * **Workspaces moved to the panel header.** The workspace switcher is now the panel-header dropdown — the old `in-workspace` full-sidebar swap is retired. Pick a workspace and the panel re-composes; the rail stays put. See [Workspaces](/pf/workspaces). * **Slimmer top bar.** The desktop header drops the module switcher and user menu (both now live on the rail) and keeps breadcrumbs, global search, and notifications. * **Deep-link parity.** Routing to `/workspace/:id` opens directly into the right workspace on first paint — no more brief flash of the global sidebar. No action is required. Your existing routes, permissions, and workspaces work unchanged; only the chrome around them has moved. **Guided Entra ID provisioning wizard (PF)** A new **Guided setup** action in the header of **Settings → Integrations → Entra ID** opens a four-step wizard for connecting Microsoft Entra to Office 365 provisioning. The wizard captures your tenant ID and primary domain, opens a tenant-wide admin consent URL and polls until consent is recorded, runs a Microsoft Graph reachability test, then activates provisioning. Because Encore uses a single shared Azure application that each tenant consents to, there is no client secret to paste or rotate. The flat settings card remains available for reconfiguration. See [Entra ID](/pf/entra-id). **Role-based license assignment (PF)** Org admins can now map PF-30 system roles to Microsoft 365 license SKU IDs from a new **Role license mappings** card on the Entra **General** tab. When `entra-provision-user` creates a new mailbox, it resolves the employee's highest-priority active role and assigns the mapped SKU; unmapped roles fall back to the org default. Lookup failures degrade to the default so provisioning is never blocked. Use this to give clinicians, administrators, and house staff different Microsoft 365 plans. See [Entra ID](/pf/entra-id#map-roles-to-license-skus). **Admin consent status check (PF)** A new **Admin Consent Status** card on the Entra **General** tab shows a deterministic diff of granted versus required Microsoft Graph permissions. Select **Check permissions** to inspect every scope with a required or optional badge, and **Grant consent** to open a fresh tenant-wide consent URL when something is missing. Use it to debug provisioning failures or to confirm consent after a Graph permission catalog change. See [Entra ID](/pf/entra-id#verify-admin-consent). # Week of May 30, 2026: HR wizards, workspaces, and Entra Source: https://docs.encoreos.io/changelog/2026-05-30-week Weekly roll-up: HR hiring and onboarding wizards, workspace navigation with passkeys and App Lock, telehealth compliance, and guided Entra ID setup. A consolidated view of what shipped May 26–30, 2026. For full detail, see the daily posts linked under each section. ## New features **HR hiring and onboarding wizards (HR)** A guided **Job Posting Wizard** and **Offer Letter Wizard** replace the long single-page forms with step-by-step flows. A new **HR onboarding command center** gives recruiters and managers a single place to track new hires from offer to day one. You can also create direct offers without a posting for known hires. See [job postings](/hr/job-postings), the [offer letter wizard](/hr/offer-letter-wizard), and [onboarding](/hr/onboarding). **Episode-based residential admissions (RH)** Residential admissions are now organized around clinical **episodes** so readmits and transfers carry context across stays. A live **Bed Census** widget on the Home dashboard shows current occupancy and open beds. See [episodes](/rh/episodes), [new admission](/rh/admissions), and the [bed board](/rh/bed-board). **AHCCCS qualification pathway templates (HR)** Reusable pathway templates let HR build, version, and apply role-specific qualification paths for AHCCCS-funded positions, so candidate eligibility checks stay consistent. See [pathway templates](/hr/pathway-templates). **Workspaces and a unified module hub (PF)** The sidebar moves to a workspace-based model with a persistent core rail and a contextual in-workspace panel. Admins can curate workspaces per role, and an AI-recommended workspace suggestion helps users land in the right context. See [workspaces](/pf/workspaces) and [workspace admin](/pf/workspace-admin). **WebAuthn passkeys for MFA (PF)** You can now enroll **passkeys** (Touch ID, Face ID, Windows Hello, hardware keys) as a second factor. Passkeys are phishing-resistant and replace SMS or TOTP where supported. **App Lock for staff (PF)** A new **App Lock** secures the app with a PIN, biometric unlock, and automatic session lock after inactivity — available on mobile and desktop. See [app lock](/pf/app-lock). **Telehealth documentation and compliance (CL)** Telehealth visits now capture state-specific consent, modality, originating site, and required safety checks directly in the note, with admin-side rules to keep documentation audit-ready. See the [telehealth user guide](/cl/telehealth-documentation-user-guide) and [admin guide](/cl/telehealth-documentation-admin-guide). **Embedded payroll run wizard (HR)** A step-by-step **payroll run wizard** is embedded in Proliant ReadyPay so you can scope, validate, and submit a run without leaving Encore. See [create payroll run](/hr/create-payroll-run) and [proliant payroll run](/hr/proliant-payroll-run). **Guided Entra ID setup, role-based licensing, and consent diff (PF)** A four-step wizard walks org admins through connecting Microsoft Entra for Office 365 provisioning. New **Role license mappings** assign Microsoft 365 SKUs by PF-30 system role. An **Admin Consent Status** card shows granted vs. required Graph permissions with a one-click re-consent link. See [Entra ID](/pf/entra-id). **PHI lane for clinical and practice management AI (PF)** AI features that handle protected health information now route through a dedicated PHI lane with stricter logging, scoped data handling, and per-feature gating. ## Updates **RingCentral consolidates SMS** Outbound and inbound SMS now flow through RingCentral as the single messaging provider, removing the older parallel integration. See [RingCentral](/pf/ringcentral). **Proliant HCM payroll integration hardened (HR)** The Proliant connector now retries safely on transient errors, surfaces sync state in the UI, and adds tighter validation on employee and pay-item mappings. **Navigation polish** The redesigned sidebar gets per-module grouping, improved active-state styling, route sync inside workspaces, and lightweight telemetry to inform future IA work. See [navigation telemetry](/pf/navigation-telemetry). **Tighter offer hiring safeguards (HR)** Offer creation and acceptance add additional guards against duplicate hires, missing pathway steps, and unmapped pay rates. **Leadership program catalog, oversight relationships, and personnel file (HR)** A new leadership program catalog, formal oversight relationships for clinical supervisors, and a consolidated personnel file tab on the employee record. See [leadership programs](/hr/leadership-programs) and [oversight relationships](/hr/oversight-relationships). ## Bug fixes * **Finance & Accounting tabs:** Fixed tab loading and active-state issues on the FA expense workspace. * **Survey discovery:** Surfaced active surveys on the My HR page so employees no longer miss assigned items. * **Dashboard and settings layouts:** Resolved spacing and alignment issues across dashboard and settings pages. * **Teller bank-feed integration removed:** Retired the legacy Teller integration; bank feeds continue through supported providers. ## Daily posts * [May 30, 2026 — Guided Entra setup](/changelog/2026-05-30) * [May 29, 2026 — Telehealth, payroll wizard, App Lock](/changelog/2026-05-29) * [May 28, 2026 — Workspaces and passkeys](/changelog/2026-05-28) * [May 27, 2026 — Pathway templates and direct offers](/changelog/2026-05-27) * [May 26, 2026 — HR wizards and episode admissions](/changelog/2026-05-26) # May 31, 2026: pin and reorder the sidebar core rail Source: https://docs.encoreos.io/changelog/2026-05-31 Personalize the sidebar core rail by pinning and reordering cores, plus a messaging sender-name fix and a WENO e-prescribing protocol fix. ## New features **Pin and reorder the core rail (PF)** You can now personalize the sidebar **core rail** — the 56px icon column on the left edge of Encore OS. Right-click any core icon and choose **Pin to top** or **Unpin from top**, or drag icons to reorder them. Keyboard users can Tab to focus an icon, press Space to pick it up, use arrow keys to move it, and press Space again to drop. Pinned cores sit in a dedicated section directly under Dashboard and Inbox, separated by a thin divider. Order and pin state are per-user preferences that sync across every browser and device where you sign in. Cores you lose access to drop out silently, and new cores appear at the end. See [Workspaces](/pf/workspaces) for the related contextual-panel customization. ## Bug fixes * **Messaging sender names:** Conversation lists and message threads now show the actual sender name instead of falling back to email or "Unknown User." The display chain (full name → first + last → email) is consistent across messaging, org membership, and read receipts. * **WENO e-prescribing (CL):** The WENO EZ launch and directory adapters now match the real vendor wire protocol, so prescriptions render correctly instead of landing on the WENO login screen. Encore injects per-user and org-admin credentials from the credential vault on every launch. # June 11, 2026: HubSpot contact sync Source: https://docs.encoreos.io/changelog/2026-06-11 Connect a HubSpot portal to Encore: inbound contact sync via webhooks and polling, default field mappings, an onboarding backfill, and a sync health panel. ## New features **HubSpot contact sync (CE)** Connect your HubSpot portal under **Settings → Integrations → HubSpot** and Encore keeps contacts in step automatically. Webhooks deliver changes from HubSpot within seconds. An incremental poll then catches anything a webhook misses — every 15 minutes by default, and configurable per organization between 5 and 120 minutes. The integration is **inbound only** in this release — Encore reads from HubSpot but does not write contact data back. Outbound sync arrives in a later release that requires a HubSpot Business Associate Agreement. Highlights: * **One-click OAuth.** Approve the consent screen in HubSpot; tokens are stored in the platform's encrypted vault and never appear in the UI, database rows, or logs. * **Default field mappings, seeded on connect.** Name, email, phones, address, and `lifecyclestage` → lead source details. Add mappings from the registry of safe Encore fields; clinical and insurance fields are structurally excluded. Re-connecting never overwrites your edits. * **Duplicates are prevented, not created.** Every incoming HubSpot contact goes through the same matching engine that guards manual entry and CSV imports. Deterministic matches link automatically; probable matches park in the **duplicate review queue** under the new **sync** and **backfill** source chips for a human decision. * **Onboarding backfill wizard.** Scan your entire HubSpot book in dry-run mode, see exactly what will link, what needs review, and what will be created, then commit. The run checkpoints page by page and resumes from where it stopped if interrupted. * **Sync health and dead letters.** A health card on the integration page shows the last webhook and last poll timestamps, and lists events that failed repeatedly. Admins can **Retry** (idempotent) or **Discard** each dead letter. * **Re-authorization handling.** If HubSpot revokes credentials (for example the app is uninstalled from the portal), sync pauses cleanly, every org admin is notified, and a **Reconnect** banner appears on the settings page. Nothing queued is lost. See the [HubSpot user guide](/ce/ce-75-user-guide) and [HubSpot admin guide](/ce/ce-75-admin-guide) for full walk-throughs. # Week of June 8, 2026: HubSpot sync, contact merge, payroll completion, and prior auth Source: https://docs.encoreos.io/changelog/2026-06-11-week HubSpot inbound sync, contact merge, completed Proliant payroll, an Optum prior-auth pipeline, and regulatory monitoring. A two-week roll-up covering June 1 through June 11, 2026. ## New features **HubSpot inbound sync (CE)** A bi-directional **HubSpot** integration now keeps contacts, companies, and engagements in sync with Community Engagement. Connect with OAuth from **CE Settings → Integrations**, then a backfill wizard imports your existing HubSpot records with field-mapping previews and dry-run counts. Live changes flow in through webhooks, and retries land in a dead-letter queue you can replay or resolve from the admin UI. Outbound activity from Encore writes back to HubSpot as engagements. See the [CE-75 user guide](/ce/ce-75-user-guide) and [admin guide](/ce/ce-75-admin-guide). **Contact identity resolution & merge engine (CE)** A new identity engine continuously scores potential duplicates across emails, phones, and names, then merges contacts deterministically with a full-history audit trail. Confident matches auto-merge on a configurable threshold; lower-confidence pairs surface in a **Review queue**. Every merge has a 24-hour undo window that restores the original records, related activities, and ownership intact. See the [CE-74 user guide](/ce/ce-74-user-guide) and [admin guide](/ce/ce-74-admin-guide). **Optum/UHC IOP prior-authorization pipeline (PM/CE)** A guided workflow handles Optum and UnitedHealthcare intensive-outpatient prior authorizations end-to-end. A clinical wizard collects medical-necessity criteria, attaches the latest assessment and treatment plan, and submits through the carrier connector; status, expirations, and approved-unit counters surface on the patient header and on the **PM → Authorizations** worklist. Configure carrier credentials and default unit windows in **PM Settings → Prior authorizations**. See [UHC / Optum prior auth](/ce/uhc-optum-prior-auth) and the [prior authorization user guide](/pm/prior-authorization-user-guide). **Regulatory monitoring (GR)** The Governance & Regulatory workspace tracks rule changes across the agencies your org subscribes to. Durable source watchers detect updates, AI summarizes the diff with citations, and deadline alerts route to the right owner with escalation. Coverage and source health appear on the monitoring dashboards. See [Regulatory changes](/gr/regulatory-changes) and [Regulatory sources](/gr/regulatory-sources). **Workflow scheduling — Phase 1 (FW)** Workflows can now run on a schedule in addition to event triggers. Define cron-style or interval schedules per workflow, see upcoming and recent runs on a calendar, and resolve conflicts when two schedules would dispatch the same instance. Manual runs and one-off backfills are supported from the workflow detail page. See [Workflow schedules](/fw/workflow-schedules) and [Workflow calendars](/fw/workflow-calendars). **Hiring: public apply + accept-to-hire (HR)** Candidates can now apply through a public-facing [job posting](/hr/job-postings) with branded screening questions and résumé upload. Offers accepted in the candidate portal flow straight into onboarding without re-keying. The recruiter view tracks every stage from application through hire on a single timeline. See the [HR-09 ATS guide](/hr/hr-09-ats-guide). ## Updates **Proliant ReadyPay payroll is feature complete (HR)** The Proliant ReadyPay integration completes its roadmap: scheduled bi-directional sync, GL mapping with code lookups, an AI-assisted code-mapping UI, idempotent push, and audit diffs on every run. The payroll wizard lives in **HR Settings → Payroll** alongside run history, code mappings, and connection health. See [Proliant payroll](/hr/proliant-payroll), [Proliant setup](/hr/proliant-setup), [Proliant AI code mapping](/hr/proliant-ai-code-mapping), and [Proliant payroll run](/hr/proliant-payroll-run). **Gusto Embedded retired (HR)** With Proliant ReadyPay feature complete, the earlier Gusto Embedded path has been decommissioned. Existing Gusto-era settings have been migrated to the Proliant payroll workspace and the old routes redirect there. See [Proliant payroll](/hr/proliant-payroll). **Entra ID setup polish (PF)** Three follow-ups land on the Entra ID setup wizard: live license-SKU validation as you type, consent reconciliation that picks up previously-granted scopes without re-running consent, and module identity colors on the role-mapping screen so each Encore module is easier to scan. **HR compensation and skills (HR)** Compensation history (HR-15) and a skills library (HR-13) are now live on the employee record, with bulk edit and CSV import for both. See [HR-15 compensation](/hr/hr-15-compensation), [HR-13 skills](/hr/hr-13-skills), and the [skills library](/hr/skills-library). **Contact assignee notifications (CE)** Contacts now notify the assignee on assignment changes, with the assignment step captured on the [activities](/ce/activities) timeline. Per-user notification preferences live in **Profile → Notifications**. **Grievance management (RH)** Recovery Housing gains a grievance tracker with templates, due-date escalation, and resident-facing acknowledgements. See [Grievances](/rh/grievances) and [File a grievance](/rh/file-grievance). **Navigation polish** The side navigation got a redesign pass: more consistent settings shells across modules, a fixed mobile drawer that no longer traps focus, and cleaner active-state styling on nested groups. ## Bug fixes * **Messaging sender name** correctly resolves the sending user's display name across SMS and in-app channels instead of falling back to the org name. * **WENO ePrescribing** wire-protocol drift fixed; transmissions that previously bounced for malformed envelopes now succeed. * **PWA installer** prompt no longer reappears after dismissal on iOS and Android. * **FA payment posting** now writes the cash-side GL entry on bill payments; the asymmetric posting that left bank balances stale has been corrected. * **FA bank reconciliation, 3-way match, expense violations, cost allocation, depreciation, 1099 e-file, and intercompany** each received targeted fixes — see the [Finance & Accounting overview](/fa/overview) for details. * **Recovery Housing discharge** regression repaired; discharge summaries again render with the full assessment chain. * **Public form portal** hardening: SSRF guard added on outbound previews, and uploaded attachments are scanned before they reach a clinician's inbox. * **Empty dropdowns** across CE, IT, RH, FM, PM, HR, GR, and FA are populated again. A picklist audit found 38 system-default lists that shipped without seed values; defaults are now sourced from database constraints, code enums, and CMS code sets. Per-tenant customizations are preserved. * **AI workspace suggestions** no longer return an empty list when the model response is truncated or contains a single malformed item. The pipeline now salvages valid recommendations and logs truncated responses separately from schema failures. # June 12, 2026: customizable governance picklists, AI banking, and Proliant map-before-activate Source: https://docs.encoreos.io/changelog/2026-06-12 Org-configurable GR picklists, AI widgets on bank reconciliation, a map-before-activate gate for Proliant, and on-by-default AI in Governance and Clinical. ## New features **Customizable governance picklists (GR)** Accreditation, audit, compliance, contract, incident, policy, procedure, QI, regulatory, risk, and training forms now read their dropdown values from picklists instead of hardcoded lists. The platform ships **36 new `gr.*` picklist definitions** with 186 default items so every form works out of the box. Governance admins can rename, reorder, deactivate, or add values per organization without code changes. Highlights: * **Tailor the lists to your accrediting bodies and terminology.** Customize standard categories, finding severities, survey types, evidence types, risk ratings, CEU sources, course types, and more. * **Duplicate-then-edit for system picklists.** Defaults are read-only; use **Duplicate to Org** in **Settings → Picklists** to create an editable copy for your organization. * **Wired into the accreditation workspace.** Standard, survey, and standard-category dialogs already pull from the new picklists; remaining GR forms migrate in subsequent phases. Browse the full catalog in the [Picklist Reference](/reference/picklists). Step-by-step instructions are in the [Accreditation admin guide](/gr/accreditation-admin-guide#customizing-dropdown-values). **AI on bank reconciliation (FA)** The bank reconciliation workspace now surfaces the platform's AI widgets directly on the page. An **AI Summarizer** narrative panel and a **Generate summary memo** quick action live alongside the reconciliation. The unmatched bank lines table shows an **AI Category** column with a confidence and reasoning tooltip plus accept/reject controls, and an **anomaly badge** on suspicious descriptions. Everything is gated by the FA AI module toggle and uses only plain financial facts — no PHI. See the [AI-powered bank reconciliation guide](/fa/ai-reconciliation-guide). ## Updates **Proliant: map codes before you activate (HR)** The Proliant integration wizard now includes a **Pull & Map Codes** step before **Activate**, with a hard gate on the required code families (earnings, deductions, accruals). The combobox is constrained to valid Encore values, and a clearly labeled **N/A** escape hatch handles families that don't apply to your org. The AI candidate builder uses the same mapping target registry as the UI, so AI suggestions and manual entries stay in lockstep. Activate also now persists the sandbox base URL default, fixing a sandbox-activation regression. See the [Proliant setup guide](/hr/proliant-setup) and [AI-assisted Proliant code mapping](/hr/proliant-ai-code-mapping). **Governance AI is on by default (GR)** AI compliance assistance — advisor, suggestions, and the prompt library — is now enabled by default for the Governance core. New organizations get the AI controls without an explicit toggle; existing organizations keep their current setting. See the [GR AI advisor](/gr/ai-advisor) and [AI compliance user guide](/gr/ai-compliance-user-guide). **Clinical AI documentation is on by default (CL)** AI documentation features — ambient capture and SOAP drafting — ship enabled by default, with published disclosures and the standard fail-closed PHI tripwire. See [Ambient review](/cl/ambient-review). **Offer Letter Wizard available to all HR admins (HR)** The guided Offer Letter Wizard is now turned on for every organization. Draft application-scoped or direct employment offers from the ATS with templated, reviewable content. See the [Offer Letter Wizard](/hr/offer-letter-wizard). **AI errors surface as toasts** When a structured AI response fails to parse or the upstream model errors, you now get an inline toast on the affected screen instead of a silent empty state. The toast names the surface and links to retry. ## Bug fixes * **FA bank accounts permissions** — A permission-gate regression that blocked some admins from viewing bank account rows has been fixed. Affected pages load correctly without a workspace reload. * **Proliant sandbox activation** — Activating a sandbox integration with an untouched URL field no longer persists `null`; the sandbox default URL is applied automatically. See [Proliant setup](/hr/proliant-setup). # June 12, 2026: AI features on by default, offer letter wizard live Source: https://docs.encoreos.io/changelog/2026-06-12-ai-enablement GR compliance AI and CL documentation AI ship enabled for every organization, the HR offer letter wizard is reachable, and AI failures now toast. ## Updates **Governance compliance AI is on by default (GR)** The AI Compliance Advisor — gap analysis, audit preparation, AI suggestions, and the AI prompts workspace — is now enabled for every organization on first load. Previously the master toggle defaulted to OFF and admins had to flip it before any GR AI page would render. Existing organizations have been migrated; new organizations start with the advisor on. The off-switch still lives at **GR → Settings → AI → Enable AI Compliance Advisor**; flipping it off pauses every GR AI surface without deleting prior suggestions. See the [AI Compliance Advisor admin guide](/gr/ai-compliance-admin-guide). **Clinical AI documentation is on by default with published DSI disclosures (CL)** AI-assisted progress-note drafting (CL-65) is now enabled for every existing organization. The platform has also seeded **published** Decision Support Intervention (DSI) disclosures for the two PHI-lane models the feature uses — `anthropic/claude-sonnet-4.6` and `openai/gpt-4o` — so the §170.315(b)(11) interlock is satisfied on day one. The clinician still reviews, edits, and signs every draft. Billing facts (service date, times, duration, diagnosis) remain locked to the encounter and cannot be introduced by the model. The per-org off-switch lives in **CL → Settings → AI Documentation**. Organizations created after this release start dark — an org admin publishes the required DSI disclosures in the CL-65 UI before AI drafting unlocks (fail-closed by design). See the AI Documentation card in [Clinical settings](/cl/clinical-settings). **Offer letter wizard reachable for every org (HR)** The `FEATURE_HR_JOB_OFFER_WIZARDS` platform flag is now seeded enabled, so the guided [Offer Letter Wizard](/hr/offer-letter-wizard) launches from both `/hr/ats/applications/:id/offer` and `/hr/ats/offers/new` without a platform admin first flipping the flag. The `hr.ats.offers.create` permission still gates the route. Admins who want the wizard off can disable the flag through the platform feature-flag admin. ## Bug fixes * **AI structured-output failures now surface a toast.** When an AI generation exhausts its retries (network errors, malformed model output, schema validation failures), the platform now shows a sanitized error toast instead of silently resolving to no result. Affected widgets include AI suggestions, AI-assisted drafting, and structured-extraction utilities across modules. # June 13, 2026: picklist value sets, CE calendar on Google Workspace, candidate offer portal Source: https://docs.encoreos.io/changelog/2026-06-13 Org-wide picklist value sets with aliases and import mapping, the CE calendar cutover to Google Workspace, candidate portal offer accept/decline, Proliant profile import, and configurable E.164 phone defaults. ## New features **Picklist value sets, aliases, and import mapping (PF)** A new platform-wide picklist system ships across Clinical, PM, HR, FA, LO, and RH. Seeded defaults cover the most common categories. Admins can now lock value sets, manage aliases for inbound data, and review unfamiliar values during data import with an **Import value mapping** step that suggests matches automatically. A new vocabulary review step in the data-onboarding wizard helps you align existing terminology before going live. See [Picklists](/pf/picklists), [Data import](/pf/data-import), and [Data onboarding](/pf/data-onboarding). **CE calendar cutover to Google Workspace (CE)** Community Engagement scheduling now runs on the shared Google Workspace surface. The **Schedule Meeting** dialog includes a new **Organization Calendar** option so you can book against shared org calendars in addition to personal ones, and the user guide covers the new flow end-to-end. See the [Calendar scheduling user guide](/ce/calendar-scheduling-user-guide). **Candidate portal: accept or decline offers (HR)** Candidates can now accept or decline an offer directly from the candidate portal. Acceptance flows straight into onboarding without re-keying, and the recruiter view records the candidate's decision on the offer timeline. See the [HR-09 ATS guide](/hr/hr-09-ats-guide). **Inline partner quick-create from Add-Lead (CE)** You can now create a new partner inline from the **Add Lead** wizard without leaving the flow. The lead form also surfaces a **needs completion** status when required partner fields are missing so they can be filled in before save. See [Leads](/ce/leads) and [Partners](/ce/partners). **Lead-header document badge and upload (CE)** The lead header now shows a **document count badge** and a one-click upload action, so you can attach documents from anywhere in the lead workspace without navigating to a separate tab. See [Leads](/ce/leads). **Configurable E.164 default country code (Telephony)** The default country code used to normalize phone numbers into E.164 is now configurable per organization. Numbers that come in without a country code are formatted against the org default instead of a hardcoded value, which improves matching for non-US tenants. ## Updates **Proliant profile import and unmatched profile workflow (HR)** The Proliant integration adds profile import alongside payroll sync, plus a new **Unmatched profiles** review workflow for records that don't auto-match an Encore employee. A new permission gates access. The setup wizard also gains **resume from checkpoint** so a partial run can be picked up where it left off. See the [HR-44 admin guide](/hr/hr-44-admin-guide) and [Proliant setup](/hr/proliant-setup). **HR earning types and Proliant family mapping (HR)** A new **Earning Types** library standardizes how earnings are categorized in HR, with explicit Proliant earning-family mapping in the AI code mapper. This makes payroll posting more consistent across orgs. See [Earning types](/hr/earning-types) and [Proliant AI code mapping](/hr/proliant-ai-code-mapping). **Governance wizards verified end-to-end (GR)** The contract-creation, audit-finding, and risk wizards are now verified end-to-end with template, schema, and database in sync. Save and resume now work without dropped fields on these surfaces. **Wizard stepper on mobile** Horizontal wizard steppers now compact on small screens so the active step and surrounding steps stay visible without horizontal scrolling. **Reliable breadcrumbs across detail pages** Detail pages no longer show duplicate "back" buttons. The breadcrumb trail is now the single, reliable way to navigate up. ## Bug fixes * **CE lead stage stepper** now filters stages by the selected service-line track instead of showing all stages. The stepper reflects only what applies to the lead in front of you. * **RH route permissions** are now gated per route. Users without permission for a specific Recovery Housing page are blocked from loading it rather than seeing an empty shell. * **AI workspace suggestions** render correctly again after a regression that left the recommendation list empty. * **Proliant setup wizard** now opens and resumes a real execution instead of a stub when launched from the integration card. * **Entra ID admin consent** is hardened: live health checks, v2 consent, and SSO gate audits surface real status instead of stale or cached values. # June 14, 2026: pipeline bed-availability widget, lead urgency, and meeting↔task follow-ups Source: https://docs.encoreos.io/changelog/2026-06-14 A 5-tile bed-availability widget above the CE pipeline, lead urgency editing and outlines on the board, automated CAP creation from audit findings, evidence trails on regulatory reports, and Microsoft 365 calendar push for follow-up tasks. ## New features **Bed-availability widget on the CE pipeline (CE)** A 5-tile bed-availability widget now sits above the Community Engagement pipeline board so intake staff can see capacity without leaving the board. Tiles cover **Available**, **Reserved** (derived from active CE leads), **Authorization risk**, **Upcoming discharges (14 days)**, and total **Occupied**. The Authorization-risk tile is org-configurable from CE Settings — toggle it on or off based on whether your team triages by payer risk. See [Leads](/ce/leads). **Edit lead urgency and see it on the pipeline (CE)** Lead urgency is now a first-class signal on the pipeline board. Edit urgency directly from the lead profile, and high or critical leads show a name-adjacent urgency badge plus a colored tile outline so the board scans at a glance. A new stage-header **Leads** popover lists each stage's leads, color-coded by urgency, and click-through opens the lead detail. See [Leads](/ce/leads). **Pick a pipeline track when creating a lead (CE)** The lead intake wizard and the **Add Lead** dialog now include a pipeline-track picker, so a new lead can land on the correct service-line track without an extra hop. The picker honors org-configured tracks and respects existing assignment permissions. See [Leads](/ce/leads). **Auto-create follow-up tasks from scheduled meetings (CE)** When you schedule a meeting from a lead, contact, or partner, Community Engagement can now auto-create a follow-up task assigned to the meeting owner. Toggle the behavior and set a default lead time (1–14 days after the meeting end) in **CE Settings → Calendar follow-ups**. The task shows up in **My Tasks** and notifies the assignee. See the [Calendar scheduling user guide](/ce/calendar-scheduling-user-guide) and [admin guide](/ce/calendar-scheduling-admin-guide). **Push follow-up tasks to Microsoft 365 calendars (CE)** Follow-up tasks can now be pushed to a Microsoft 365 calendar as a PHI-safe event so they show up in Outlook alongside meetings. Configure the push and the recipient resolution order (override → coordinator → default) in CE Settings. Due-date notifications also now sweep on their own schedule so an assignee gets an in-app and email reminder when a task comes due, with idempotency so you don't get repeat pings. **Automated corrective actions from audit findings (GR)** Critical and high-severity audit findings linked to a regulatory requirement now automatically open a Corrective Action Plan (CAP) against the active accreditation. The CAP is created with a derived target date, linked back to the source audit finding, and stays idempotent if the finding is re-emitted. Low-severity and unlinked findings continue to flow through manual remediation. See the [audit admin guide](/gr/audit-admin-guide) and [compliance admin guide](/gr/compliance-admin-guide). **Evidence trails on regulatory reports (GR)** Regulatory reports now carry an evidence trail. When a report is submitted, the platform fans the event out to every mapped accreditation body and records evidence on each linked standard, with a **Source event** badge on the report detail and a click-through to the originating event. A new **Regulation mapping** settings area lets governance admins manage which standards a report satisfies. See the [compliance admin guide](/gr/compliance-admin-guide) and the [compliance dashboard](/gr/compliance-dashboard). ## Updates **Evidence Coverage and Evidence Gaps on the compliance dashboard (GR)** The [Compliance dashboard](/gr/compliance-dashboard) gains two new cards. **Evidence Coverage** shows a per-category breakdown of requirements with at least one linked piece of evidence; **Evidence Gaps** lists the highest-priority requirements with no evidence linked yet, so you can close the most important gaps first. **Type-to-confirm on irreversible actions** Destructive actions across the platform — permanent deletes, voids, revokes, terminates, and irreversible bulk operations — now require you to type a confirmation word (`DELETE`, `VOID`, `REVOKE`, `TERMINATE`) before the action runs. The new affordance is consistent across HR, FA, FW, LO, PM, Clinical, and the platform admin surfaces, replacing inconsistent legacy confirm dialogs. **Built-in security and backend health alerts documented (PF)** Every organization ships with a set of platform-managed alert rules. Security defaults fire on permission violations, account lockouts, session hijack, suspicious activity, IP blocks, bulk operations, config changes, and data exports. Three backend-health alerts watch DLQ depth, domain-event lag, and edge-function errors. See [Alert configuration](/pf/alert-configuration) and [Security alert configuration](/pf/security-alert-configuration) for the full list. **Wizard integrity hardening (FW)** The wizard audit and live-stack checks no longer silently pass when the backing stack is unreachable. Generated and identity columns no longer produce false "required field" findings. The create-wizard submit gate now requires a real read-back of the persisted row before reporting a wizard as proven. Net effect: wizards that look green really are green. ## Bug fixes * **GR-08 evidence fan-out** now correctly emits one evidence record per mapped accreditation body when a regulatory report is submitted, instead of only the first match. * **Consistent destructive-dialog UX** — destructive confirmation dialogs across platform, HR, FA, FW, LO, PM, and Clinical now share a single visual treatment, replacing long-standing inconsistencies. * **Token and opacity consistency** — sporadic color and opacity drift across the app is now aligned to the design-system tokens, so destructive, warning, and muted surfaces render consistently across modules and themes. # Changelog Source: https://docs.encoreos.io/changelog/index Weekly release notes for Encore OS covering clinical, practice management, recovery housing, and platform updates, with newest posts first. Weekly product updates across the Encore OS platform. Newest posts first. Each entry links to the full release note. A 5-tile bed-availability widget above the CE pipeline, lead urgency editing and outlines on the board, automated CAPs from audit findings, evidence trails on regulatory reports, Microsoft 365 calendar push for follow-up tasks, and type-to-confirm on irreversible actions. [Read the full release note →](/changelog/2026-06-14) Platform-wide picklist value sets with aliases and import mapping, the CE calendar cutover to Google Workspace, candidate portal offer accept/decline, Proliant profile import with unmatched-profile review, and a configurable E.164 default country code. [Read the full release note →](/changelog/2026-06-13) 36 org-configurable governance picklists, AI widgets on bank reconciliation, a map-before-activate gate for the Proliant integration, and on-by-default AI in Governance and Clinical. [Read the full release note →](/changelog/2026-06-12) HubSpot inbound sync, a contact identity resolution and merge engine, Proliant ReadyPay completion, an Optum prior-authorization pipeline, Google Workspace, regulatory monitoring, and workflow scheduling. [Read the full release note →](/changelog/2026-06-11-week) HubSpot contact sync: one-click OAuth, default field mappings, an onboarding backfill wizard, a sync health panel with dead-letter retry, and duplicate review for sync matches. [Read the full release note →](/changelog/2026-06-11) Pin and reorder the sidebar core rail per user, a messaging sender-name resolution fix, and a WENO e-prescribing wire-protocol true-up. [Read the full release note →](/changelog/2026-05-31) A roll-up of HR hiring and onboarding wizards, workspace navigation with passkeys and App Lock, telehealth compliance, an embedded payroll wizard, RingCentral SMS, and a guided Entra ID setup. [Read the full release note →](/changelog/2026-05-30-week) A new dual-pane sidebar (persistent core rail plus collapsible contextual panel, per-module color, hover flyout peek, ⌘B panel collapse), a guided Entra ID provisioning wizard, role-to-license SKU mapping, and a programmatic admin consent status check. [Read the full release note →](/changelog/2026-05-30) Telehealth documentation and compliance, an embedded payroll run wizard, workspace admin, navigation telemetry, AI-recommended workspaces, and App Lock for staff. [Read the full release note →](/changelog/2026-05-29) Workspace-based navigation, WebAuthn passkeys for MFA, AHCCCS pathway templates, a direct offer workflow, Proliant HCM remediation, and FA tab fixes. [Read the full release note →](/changelog/2026-05-28) AHCCCS qualification pathway templates, direct-offer creation, mobile app lock with PIN and biometric unlock, and a hardened Proliant payroll sync. [Read the full release note →](/changelog/2026-05-27) HR wizards, episode-based residential admissions, a live Bed Census widget, and navigation polish. [Read the full release note →](/changelog/2026-05-26) Platform rebrand from Encore Health OS to Encore OS, a new mobile Home hero with focus bento, accessible clinical form error summaries, and mobile dock polish. [Read the full release note →](/changelog/2026-05-19) URL-synced scrollable tabs on detail pages, a searchable mobile org switcher, Community Engagement mobile nav fixes, removal of the DoseSpot integration, and HR review stability fixes. [Read the full release note →](/changelog/2026-05-18) Clearinghouse failover, scheduled SMS with TCPA quiet hours, CE crisis detection, contact management, problem list, and C-CDA export. [Read the full release note →](/changelog/2026-05-16) # Alert Fatigue Dashboard Source: https://docs.encoreos.io/cl/alert-fatigue-dashboard Aggregate CDS alert metrics by rule and provider for a selectable time window to monitor override rates and acknowledgement times. The Alert Fatigue Dashboard is an analytics screen at `/cl/cds-analytics` that visualises Clinical Decision Support alert volume, override rates, and acknowledgement times for a selected time window. ## Overview The dashboard loads alert data from `cl_cds_alerts` for the current organisation and aggregates it into four summary cards: Total Alerts, Override Rate, Total Overrides, and Average Acknowledgement Time. A time-window selector (Last 7 days / Last 30 days / Last 90 days) filters the underlying query; the default window is 30 days. An "Override Rate by Rule" bar chart shows the top 10 rules sorted by override rate, and an "Alerts by Rule" table lists all rules with per-rule alert count, override count, override rate badge, and average acknowledgement time. Users with the `cl.cds_rules.manage` permission see an additional "Alerts by Provider" table that shows the same metrics broken down by the provider who acknowledged each alert. ## Who it's for Requires the `cl.cds_rules.manage` permission. ## Before you start * The `cl.cds_rules.manage` permission must be assigned to your role. * The organisation must have CDS rules configured and alerts recorded in `cl_cds_alerts`; if no alerts exist in the selected window the page shows an empty state. ## Steps Use the dropdown in the top-right corner to choose Last 7 days, Last 30 days (default), or Last 90 days. The summary cards and tables reload automatically. Read the four top-level cards: Total Alerts, Override Rate (with a "High" badge when the rate exceeds 50%), Total Overrides, and Avg. Ack Time. Scan the bar chart to identify rules with the highest override rates. Only the top 10 rules by alert count are plotted. Hover a bar to see the exact formatted percentage. Review the full table showing Rule name, Alerts, Overrides, Override Rate badge (destructive when >50%), and Avg. Ack Time for every rule in the window. If your role includes `cl.cds_rules.manage`, scroll to the "Alerts by Provider" table to see the same metrics broken down by the provider who acknowledged each alert. ## Key concepts CDS rules are configured on the [CDS Rules](/cl/cds-rules) screen. Override rate is computed as `override_count / alert_count` for the selected time window. The code marks an alert as overridden via the `overridden` boolean on `cl_cds_alerts`. Average acknowledgement time is the mean elapsed minutes between `triggered_at` and `acknowledged_at` for alerts that have been acknowledged in the selected window. Alerts never acknowledged are excluded from this calculation. When no CDS alerts exist in the selected time window the summary cards show zeros and the rule table displays "No alert data" with a shield icon. If the Supabase query fails, a destructive-bordered card appears with the message "Failed to load analytics data." No partial data is shown. While data is fetching, skeleton placeholders appear for the header, the four summary cards, and the chart area. ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/CdsAnalyticsDashboardPage.tsx * src/cores/cl/hooks/useCdsAlertAnalytics.ts # All Submissions Source: https://docs.encoreos.io/cl/all-submissions Clinician-facing list of patient-reported screening results filterable by status and instrument type, scoped to the current organisation. The All Submissions screen is a clinician-facing list at `/cl/patient-submissions` that surfaces patient-reported outcomes and screening results stored in `cl_patient_submissions`. ## Overview The screen displays all patient-submitted screening results for the current organisation, ordered by submission date descending. Each card shows the instrument type (PHQ-9, GAD-7, AUDIT-C, DAST-10, or C-SSRS Screener), a status badge (Pending Review / Reviewed / Incorporated), a "Crisis" badge if `score_result.crisis_detected` is `true`, the computed score and severity label from `score_result`, the submission timestamp, and a "View" link to the detail page at `/cl/patient-submissions/:id`. Two dropdowns allow filtering by status and by instrument type; selecting "all" in either dropdown removes that filter. ## Who it's for Requires the `cl.patient-submissions.view` permission. ## Before you start * The `cl.patient-submissions.view` permission must be assigned to your role. * Patient-submitted screening results must exist in `cl_patient_submissions` for the current organisation; otherwise the empty state is shown. ## Steps Navigate to `/cl/patient-submissions`. The page loads all submissions for your organisation ordered by most-recent first. Use the "Filter by status" dropdown to narrow results to Pending Review, Reviewed, or Incorporated submissions. Use the "Filter by type" dropdown to show only a specific instrument: PHQ-9, GAD-7, AUDIT-C, DAST-10, or C-SSRS Screener. Look for cards with a destructive "Crisis" badge — these indicate the `crisis_detected` field is `true` on the score result. Click "View" on any card to navigate to the submission detail page at `/cl/patient-submissions/:id`. ## Key concepts The supported submission types and their UI labels, exactly as defined in the component: | Code | Display label | | ---------------- | --------------- | | `phq9` | PHQ-9 | | `gad7` | GAD-7 | | `audit_c` | AUDIT-C | | `dast10` | DAST-10 | | `cssrs_screener` | C-SSRS Screener | Submission statuses are `pending_review`, `reviewed`, and `incorporated`. The `score_result` JSON field contains `total_score`, `severity`, and `crisis_detected` rendered on each card. When no submissions match the current filters the page shows an empty state: "No submissions found — Patient-reported screening results will appear here once submitted." If the query fails a card is shown with "Unable to load submissions. Please try again." While fetching, five skeleton rows are displayed. ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/PatientSubmissionsListPage.tsx * src/cores/cl/hooks/usePatientSubmissionsList.ts * src/cores/cl/types/patient-submissions.ts # Allergies Source: https://docs.encoreos.io/cl/allergies Deep-link into the Allergies tab of a patient chart. This route redirects immediately to the chart detail view with the allergies tab pre-selected. The Allergies deep-link navigates directly to the Allergies tab on a patient chart. Route: `/cl/charts/:chartId/allergies`. ## Overview `/cl/charts/:chartId/allergies` is a **redirect-only route**. Visiting this URL immediately issues a client-side redirect to `/cl/charts/:chartId?tab=allergies` (relative redirect: `../?tab=allergies`). There is no standalone allergies screen; the content is rendered as a tab within `PatientChartPage`. ## Who it's for Permission required: `cl.charts.view` (inherited from the parent `/cl/charts/:chartId` route). The Allergies tab within the chart additionally requires `cl.allergies.manage` per `chartSideNavConstants.ts`. ## Before you start * You must have an active patient chart open or know the `chartId` UUID. * You need the `cl.charts.view` permission and `cl.allergies.manage` permission to interact with the Allergies tab. ## Steps Open the patient chart at `/cl/charts/:chartId`, or follow a direct link to `/cl/charts/:chartId/allergies`. The router redirects to `/cl/charts/:chartId?tab=allergies`, pre-selecting the Allergies tab in the `PatientChartPage` tab state. The `ChartAllergiesSection` component renders inside the chart shell. An allergy-alert strip (`ChartAllergyAlertStrip`) may also appear in the patient banner area. ## Key concepts | Term | Meaning | | ------------------------ | ------------------------------------------------------------------------------------ | | `tab=allergies` | URL query parameter that drives tab state in `PatientChartPage` via `useTabUrlState` | | `ChartAllergiesSection` | Component rendering allergy list within the chart tab panel | | `ChartAllergyAlertStrip` | Banner strip showing active allergy alerts at the top of the chart page | ## Related Clinical core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/PatientChartPage.tsx * src/cores/cl/components/chartSideNavConstants.ts * src/cores/cl/components/ChartAllergiesSection.tsx * src/cores/cl/hooks/useAllergies.ts # Ambient Review Source: https://docs.encoreos.io/cl/ambient-review Queue of ambient recording sessions with processing-status filter; view session SOAP draft, raw transcript, confidence score, and approve or reject. The Ambient Review screen is a queue at `/cl/ambient-review` that lists all ambient recording sessions for the current organisation, with a status filter and row-level navigation to the detail review page. ## Overview The screen renders an "Ambient Review Queue" card with a status-filter dropdown in the header. Each session row shows patient name, provider name, session start date and time, and a processing-status badge. Rows are ordered by `session_start` descending (most recent first). Only sessions where `deleted_at IS NULL` for the current organisation are fetched. Clicking any row navigates to `/cl/ambient-review/:sessionId` for detail review and approval actions. ## Who it's for Requires the `cl.ambient.view` permission. The **Approve & Generate Note** and **Reject** actions additionally require `cl.ambient.approve`. ## Before you start * The `cl.ambient.view` permission must be assigned to your role. * The current organisation must have ambient sessions recorded in `cl_ambient_sessions`; otherwise the empty state is shown. ## Steps Navigate to `/cl/ambient-review`. The queue loads all non-deleted sessions for your organisation, most recent first. Use the status dropdown in the card header to narrow the list. Available statuses are: Recording, Processing, Draft Ready, Approved, Failed, Cancelled. Select "All Statuses" to clear the filter. Each row shows the patient name, provider name, and session start date/time alongside a colour-coded status badge. Click any row to navigate to the session detail page at `/cl/ambient-review/:sessionId` where review and approval actions are available. ## Key concepts Ambient session processing statuses and their display labels, exactly as defined in code: | Status | Display label | | ------------- | ------------- | | `recording` | Recording | | `processing` | Processing | | `draft_ready` | Draft Ready | | `approved` | Approved | | `failed` | Failed | | `cancelled` | Cancelled | The approval mutation (`useApproveAmbientSession`) only succeeds when the session is currently in `draft_ready` status; the DB update is conditional on that state. When no sessions exist (or none match the current filter) the card body shows "No ambient sessions — Ambient recording sessions will appear here for review and approval." If the query fails the card body shows "Failed to load sessions. Please try again." in destructive text. While fetching, five skeleton rows are shown inside the card. ## Viewing a session The Session Detail screen is the ambient review page for a single AI-generated ambient session, accessed at `/cl/ambient-review/:sessionId` (permission: `cl.ambient.view`). The approve and reject actions require `cl.ambient.approve`. The page loads session data via `useAmbientSessionDetail`, transcript via `useAmbientTranscript`, and audit events via `useAmbientSessionEvents`, all scoped to the current organization. The breadcrumb label is set to `Session `. When a transcript is present, `parseSOAPSections` extracts Subjective, Objective, Assessment, and Plan sections displayed in a SOAP Draft card. A Raw Transcript card shows the raw text, confidence score, and word count. For sessions in `draft_ready` status, users with `cl.ambient.approve` see **Approve & Generate Note** and **Reject** action buttons. Approving calls `useApproveAmbientSession`; rejecting calls `useCancelAmbientSession`. A Session Timeline card renders an ordered event list from `cl_ambient_session_events` when events are present. Note: the session must exist in `cl_ambient_sessions` and be accessible to your organization. Navigate to `/cl/ambient-review`, then click a session in the review queue. The detail page loads session metadata, SOAP draft, transcript, and audit timeline. If a transcript exists, the SOAP Draft card shows AI-generated Subjective, Objective, Assessment, and Plan sections from `parseSOAPSections`. The Raw Transcript card shows raw text alongside the `confidence_score` (as a percentage) and `word_count` from the transcript record. If the session is `draft_ready` and you have `cl.ambient.approve`, click **Approve & Generate Note**. A success toast confirms "Session approved and note generated." If the session is `draft_ready` and you have `cl.ambient.approve`, click **Reject** to cancel the session. A success toast confirms "Session rejected." If session events exist in `cl_ambient_session_events`, the Session Timeline card shows each event type, optional reason, and timestamp. The SOAP Draft card shows Subjective, Objective, Assessment, and Plan extracted by `parseSOAPSections` from the transcript record. Empty sections display as "—". `confidence_score` is stored on `cl_ambient_transcripts` as a decimal (0–1) and displayed as a percentage. `word_count` is also shown. * Session not found or access denied: card with centered "Session not found or access denied." * No SOAP sections: the SOAP Draft card is not rendered. * No transcript: the Raw Transcript card is not rendered. * No audit events: the Session Timeline card is not rendered. * Loading: `DetailSkeleton` with header and two grid skeletons. ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/AmbientReviewQueuePage.tsx * src/cores/cl/ai-documentation/hooks/useAmbientSession.ts * src/cores/cl/ai-documentation/types/ambient.ts * src/cores/cl/pages/AmbientReviewDetailPage.tsx * src/cores/cl/ai-documentation/hooks/useAmbientTranscript.ts # Assessment Templates Source: https://docs.encoreos.io/cl/assessment-templates Manage configurable assessment section templates per assessment type: view, create, edit, and review version history. The Assessment Templates screen is the admin page for creating and managing reusable assessment section templates, accessible at `/cl/settings/assessment-templates`. ## Overview The page fetches all assessment templates for the organization via `useAssessmentTemplateList` and displays them in a searchable table. Each row shows the template `name`, `assessment_type` (badged), `version`, and `status` (badged using `TEMPLATE_STATUS_LABELS`/`TEMPLATE_STATUS_VARIANT`). Users with `cl.assessment_template.create` permission see a "New Template" button. Each row has an "Edit" button (gated to `cl.assessment_template.update` via `PermissionGate`) and a version history button that opens `AssessmentTemplateVersionHistory` for that `assessment_type`. Editing or creating opens the `AssessmentTemplateEditor` dialog. ## Who it's for Requires permission: `cl.assessment_template.view` (list); `cl.assessment_template.create` (create new); `cl.assessment_template.update` (edit existing) ## Before you start * You must hold `cl.assessment_template.view` to access the page. * Creating templates requires `cl.assessment_template.create`. * Editing templates requires `cl.assessment_template.update`. ## Steps Go to `/cl/settings/assessment-templates`. The table loads all templates for your organization. Use the search input to filter by template name or `assessment_type`. Click "New Template" (requires `cl.assessment_template.create`). The `AssessmentTemplateEditor` dialog opens with no pre-filled values. Click "Edit" on any row (requires `cl.assessment_template.update`). The `AssessmentTemplateEditor` dialog opens pre-filled with the selected template. Click the history icon button on any row to open `AssessmentTemplateVersionHistory` for that `assessment_type`. ## Key concepts When no templates match the current search (or none exist), an empty state is shown: "No assessment templates" with the message "Create a template to customize assessment sections for your organization." Status values are mapped through `TEMPLATE_STATUS_LABELS` and `TEMPLATE_STATUS_VARIANT` from `src/cores/cl/types/assessment-template`. The exact set of valid statuses is defined in the `TemplateStatus` type. Each template tracks a `version` field (displayed as `v{version}`). The version history dialog is scoped to an `assessment_type` string, not a single template record. ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/AssessmentTemplatesPage.tsx * src/cores/cl/hooks/useAssessmentTemplateList.ts * src/cores/cl/types/assessment-template.ts # In-Basket Source: https://docs.encoreos.io/cl/basket Filterable list of clinical notifications, tasks, and messages; view item detail with status management, escalation, chart deep-link, and activity timeline. The In-Basket screen is a work-queue at `/cl/in-basket` that lists all clinical notifications and tasks for the current organisation, filterable by item type, classification, and status. ## Overview The screen loads all `cl_inbasket_items` for the current organisation ordered by creation date descending. Three filter dropdowns — item type, classification, and status — can be combined in any combination; selecting "all" in a dropdown removes that filter. Items are displayed in a table with columns: Type (linked to the detail page), Classification, Priority (badged), Status (badged), Due date, and Created date. Clicking the linked type value navigates to `/cl/in-basket/:id` for the item detail. When the list is empty the screen shows "You're all caught up!" ## Who it's for Requires the `cl.inbasket.view` permission. ## Before you start * The `cl.inbasket.view` permission must be assigned to your role. * In-basket items must exist in `cl_inbasket_items` for the current organisation; otherwise the empty state is shown. ## Steps Navigate to `/cl/in-basket`. The table loads all items for your organisation, most recently created first. Use the "All Types" dropdown to narrow results to a specific item type: Co-Sign Request, Lab Review, Refill Request, Chart Message, Referral Response, or CDS Alert. Use the "All Classifications" dropdown to show only Action Required or Informational items. Use the "All Statuses" dropdown to show only items in a specific state: New, Read, In Progress, Completed, Deferred, or Escalated. Click the linked item type in the Type column to navigate to the item detail page at `/cl/in-basket/:id`. ## Key concepts In-basket item types and their display labels as defined in code: | Type code | Display label | | ------------------- | ----------------- | | `cosign_request` | Co-Sign Request | | `lab_review` | Lab Review | | `refill_request` | Refill Request | | `chart_message` | Chart Message | | `referral_response` | Referral Response | | `cds_alert` | CDS Alert | Priority levels rendered as badges: `urgent` (destructive), `high` (secondary), `normal` (default), `low` (outline). Status values: `new`, `read`, `in_progress`, `completed`, `deferred`, `escalated` (escalated renders as destructive badge). When no items match the current filters the screen shows "No in-basket items — You're all caught up!" with an inbox icon. If the query fails, a destructive alert is shown with the sanitised error message. While fetching, a header skeleton and five row skeletons are displayed. ## Viewing an item The Item Detail screen shows a single in-basket item with its full metadata and activity history at `/cl/in-basket/:itemId` (permission: `cl.inbasket.view`). Additional actions require: * `cl.inbasket.manage` — update item status * `cl.inbasket.escalate` — escalate item priority and status The page loads a single in-basket item via `useInbasketItemDetail`, which returns both the item record and its activity log. A main detail card (spanning 2 of 3 columns) shows item type (human-readable label from `TYPE_LABELS`), classification, priority badge, status badge, creation date, optional due date, and optional assignee. If the item type is `chart_message` and the payload contains a `conversation_id`, an **Open Message Thread** button deep-links to `/pm/messaging/:conversationId`. If `chart_id` is set, a **View Patient Chart** link navigates to `/cl/charts/:chartId`. Users with `cl.inbasket.manage` see a status select dropdown. Users with `cl.inbasket.escalate` additionally see an **Escalate** button that sets `priority` to `urgent`, records `escalated_at`, and transitions status to `escalated`. An Activity timeline card (1 column) shows each logged `cl_inbasket_item_activity` entry in chronological order. Navigate to `/cl/in-basket`, then click an item row. The detail page loads the item and activity timeline. The main card shows item type, classification, priority badge, status badge, creation date, optional due date, and optional assignee. If `chart_id` is set, click **View Patient Chart** to navigate to `/cl/charts/:chartId`. If the item type is `chart_message` and a `conversation_id` is present in the payload, click **Open Message Thread** to navigate to `/pm/messaging/:conversationId`. Use the status dropdown (requires `cl.inbasket.manage`) to transition the item through `new` → `read` → `in_progress` → `completed` / `deferred` / `escalated`. Setting `completed` also records `completed_at`. Click **Escalate** (visible when `cl.inbasket.escalate` is held and status is not already `escalated`) to set priority to `urgent`, record `escalated_at`, and transition status to `escalated`. `low`, `normal`, `high`, `urgent`, `stat`. Priority `stat` renders a destructive badge; `urgent` renders a secondary badge; others render outline. Each entry in `cl_inbasket_item_activity` is displayed with `activity_type` (formatted: underscores replaced with spaces) and `activity_at` timestamp. Activity is created automatically on status changes and escalations via `useUpdateInbasketItem`. * Load error: destructive `Alert` with sanitized error message and a back link to `/cl/in-basket`. * Item not found: centered `Inbox` icon with "Item not found" heading and back link. * No activity: "No activity recorded yet." * Loading: skeleton for the header and two-column grid. ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/InBasketListPage.tsx * src/cores/cl/hooks/useInbasketItemList.ts * src/cores/cl/types/inbasket.ts * src/cores/cl/pages/InBasketItemDetailPage.tsx * src/cores/cl/hooks/useInbasketItemDetail.ts * src/cores/cl/hooks/useInbasketItemMutation.ts # Billing Override Rules Source: https://docs.encoreos.io/cl/billing-override-rules Configure payer-specific CPT mappings, modifier overrides, and suppression rules for billing suggestions in the Clinical module. The Billing Override Rules screen lets administrators configure payer-specific billing suggestion rules, accessible at `/cl/settings/billing-overrides`. ## Overview The page queries `pm_billing_suggestion_rules` (joined to `pm_payers`) for the current organization, filtered by `deleted_at IS NULL` and ordered by `priority` descending. Rules are split across three URL-synced tabs: "CPT Mappings" (`cpt_mapping`), "Modifier Overrides" (`modifier_override`), and "Never Suggest" (`never_suggest`). Each tab shows an active-rule count badge. Each rule row has an inline `Active` toggle (calls `toggleActive` mutation), and a kebab menu with Edit, Duplicate, and Delete actions. The "Add Rule" button (gated to `cl.billing_overrides.manage`) opens `BillingOverrideRuleFormDialog`. Deleting requires confirmation: "Delete this rule?" / "It will be removed from active suggestions but can be restored by an administrator." ## Who it's for Requires permission: `cl.billing_overrides.view` (read); `cl.billing_overrides.manage` (create/edit/delete) ## Before you start * You must hold `cl.billing_overrides.view` to access the page. * Creating, editing, or deleting rules requires `cl.billing_overrides.manage`. * Rules apply organization-wide; coordinate with billing staff before modifying. ## Steps Go to `/cl/settings/billing-overrides`. Rules load from `pm_billing_suggestion_rules` for your organization. Choose "CPT Mappings," "Modifier Overrides," or "Never Suggest." The active count badge on each tab reflects currently active rules. Use the `Active` switch on any row to enable or disable a rule without deleting it. Click "Add Rule" (requires `cl.billing_overrides.manage`). The `BillingOverrideRuleFormDialog` opens with the current tab's rule type pre-selected. Open the kebab menu on a row and select "Edit" or "Duplicate." Duplicate pre-fills the form as a copy of the selected rule. Select "Delete" from the kebab menu. Confirm in the dialog ("Delete this rule?") to soft-delete the record. ## Key concepts The active tab is synced to the URL via `useTabUrlState` using the `tab` query parameter. Valid values: `cpt-mappings`, `modifier-overrides`, `never-suggest`. Per tab: "No CPT mapping rules yet," "No modifier override rules yet," or "No suppression rules yet" — each with a "Create your first rule to customize billing suggestions." prompt and an "Add Rule" action. If the query fails, a destructive error panel is displayed with a "Retry" button that calls `refetch()`. The `Conditions` column renders badge chips for each non-null key in `condition_config`. The semantic meaning of these keys is not documented in the UI. The `Effective` column displays "Always" when both `effective_date` and `end_date` are null. Otherwise it shows "From " and/or "To ". ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/BillingOverrideRulesPage.tsx * src/cores/cl/hooks/useBillingOverrideRulesMutation.ts # C-CDA Documents Source: https://docs.encoreos.io/cl/c-cda-documents Generate, preview, and manage Consolidated CDA documents for a patient chart; requires the CDA generation feature flag to be enabled. The C-CDA Documents screen at `/cl/charts/:chartId/cda` lets authorized users generate, preview, and review HL7 Consolidated Clinical Document Architecture (C-CDA) records for a single patient chart. ## Overview The page is wrapped in a `PermissionGate` for `cl.cda.view`; users without this permission see an "Access denied" alert. An additional feature flag `cl_module_settings.cda_generation_enabled` must be `true`; otherwise a settings-disabled alert is shown. When enabled, the page displays a two-column layout: a left panel for document generation (type selector, recipient name, purpose of disclosure) and document history; a right panel for previewing the selected document via `CdaDocumentPreview`. A `CdaConsentBanner` is shown when the Part 2 SUD consent check (`useConsentCheck`) returns a result. The most recent document in history is auto-selected on load. ## Who it's for Requires permission: `cl.cda.view` Generating a new document additionally requires: `cl.cda.generate` (the Generate button is wrapped in a `PermissionGate` for this permission). ## Before you start * Must hold `cl.cda.view`. * The `cda_generation_enabled` setting must be enabled in CL module settings (accessible via `cl.admin`). * Navigate here from the Patient Chart page ("Generate C-CDA" button) or directly via `/cl/charts/:chartId/cda`. ## Steps From the Patient Chart for the target patient, click the "Generate C-CDA" button (visible when you hold `cl.cda.view`). The page loads with the patient name in the breadcrumb. If a SUD consent check result is present, the `CdaConsentBanner` is shown. Review any consent warnings before proceeding. Use `CdaDocumentTypeSelector` to choose the C-CDA document type (default: `ccd`). Fill in the Recipient name field (required) and the Purpose of disclosure field (defaults to `Treatment`). Click "Generate document". On success with `validation_status: 'valid'`, a success toast is shown. If validation fails, a warning toast is shown — the document still appears in history. Select any document from the History panel on the left to display it in the Preview panel. The most recent document is auto-selected. ## Key concepts The available document types are defined by `CdaDocumentTypeSelector`. The default is `ccd`. SME: confirm full type list and clinical use cases. After generation, each document has a `validation_status` field. A `valid` status shows a success toast; any other status shows a warning toast indicating the document failed validation. Both states produce a document record visible in history. `useConsentCheck` is called with the chart ID. The result controls the `CdaConsentBanner` display. SME: confirm whether missing consent blocks generation or only provides a warning. If settings or chart data are loading, skeleton placeholders are shown. If the feature flag is disabled, a static alert instructs the admin to enable "C-CDA generation" in CL module settings. If no documents exist and none is selected, the preview panel shows a prompt to select or generate one. ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/CdaGenerationPage.tsx * src/cores/cl/hooks/useChartDetail.ts # Care Gaps Source: https://docs.encoreos.io/cl/care-gaps Paginated work list of open population-health care gaps detected by automated rules, with gap-type, priority, and site filters. The Care Gaps screen is a population-health work list at `/cl/population-health/care-gaps` that displays open care gaps detected by automated rules, with filtering, risk-tier context, and the ability to close individual gaps. ## Overview The screen loads open care gaps from `cl_care_gaps` for the current organisation, paginated at 25 per page. Each row shows patient name (resolved from the linked chart's profile), risk tier badge with composite risk score, gap type label, priority badge, detected date, and due date. The hook enriches each row with the most-recent risk stratification from `cl_risk_stratifications` for that chart. Rows are sorted client-side by composite risk score descending then due date ascending within each page. Clicking any row opens a `GapDetailSheet` side panel. Users with the `cl.care-gaps.close` permission see a "Close" button per row that opens a `CloseGapDialog`. ## Who it's for Requires the `cl.care-gaps.view` permission. The "Close" button additionally requires `cl.care-gaps.close`. ## Before you start * The `cl.care-gaps.view` permission must be assigned to your role. * Open care gaps must exist in `cl_care_gaps` for the current organisation; otherwise the empty state is shown. * If only one site exists for the organisation the site filter is not displayed. ## Steps Navigate to `/cl/population-health/care-gaps`. The table loads the first 25 open care gaps for your organisation. Use the "Gap Type" dropdown to show gaps of a specific type: Overdue PHQ-9, Overdue GAD-7, Plan Not Reviewed, No Recent Contact, Assessment Expired, or Follow-Up Not Scheduled. Use the "Priority" dropdown to show Critical, Urgent, or Routine gaps only. If multiple sites exist, use the "Site" dropdown to scope the list to a specific site. For each row, the Risk Tier column shows a colour-coded badge (low / medium / high / critical) and the numeric composite risk score from the most-recent risk stratification. Click any row to open the GapDetailSheet side panel for full gap details. Click "Close" on a row to open the CloseGapDialog. Provide a closure type and optional override reason, then confirm to record the closure via `useCareGapClose`. Use the "Previous" / "Next" buttons at the bottom of the table to page through results when the total gap count exceeds 25. ## Key concepts Care gap types supported in the filter (labels from component code): | Code | Display label | | ------------------------- | ----------------------- | | `overdue_phq9` | Overdue PHQ-9 | | `overdue_gad7` | Overdue GAD-7 | | `plan_not_reviewed` | Plan Not Reviewed | | `no_contact` | No Recent Contact | | `assessment_expired` | Assessment Expired | | `follow_up_not_scheduled` | Follow-Up Not Scheduled | Priority levels: `critical` (destructive badge), `urgent` (default badge), `routine` (secondary badge). Risk tiers: `low` (outline), `medium` (secondary), `high` (default), `critical` (destructive). When no open gaps match the current filters the screen shows "No care gaps found — No open care gaps match the current filters. Gaps are detected by automated rules running daily." Five skeleton rows are shown while the query is in flight. ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/population-health/CareGapWorkListPage.tsx * src/cores/cl/hooks/useCareGapList.ts * src/cores/cl/types/care-gaps.ts * src/cores/cl/types/risk-stratifications.ts # Clinical Decision Support — Admin Guide Source: https://docs.encoreos.io/cl/cds-admin-guide Clinical Decision Support (CDS) provides automated, configurable alerts when clinicians perform actions that may affect patient safety. CDS rules trigger point… ## Overview Clinical Decision Support (CDS) provides automated, configurable alerts when clinicians perform actions that may affect patient safety. CDS rules trigger point-of-care alerts for drug interactions, drug allergies, medication monitoring gaps, and documentation gaps. *** ## Getting Started ### Accessing CDS Rules 1. Navigate to **Clinical** → **CDS Rules** (`/cl/cds-rules`) 2. You must have the `cl.cds_rules.view` permission to see the list 3. You must have the `cl.cds_rules.manage` permission to create, edit, or delete rules ### Who Can Manage Rules? By default, only **Organization Administrators** have the `cl.cds_rules.manage` permission. Staff members can view rules but cannot modify them. This can be adjusted through the Permissions administration panel. *** ## Creating a CDS Rule 1. Click **"Add Rule"** on the CDS Rules page 2. Fill in the required fields: ### General Settings | Field | Description | Required | | ------------- | ------------------------------------------------------------ | -------- | | Rule Name | Descriptive name (e.g., "Opioid-Benzodiazepine Interaction") | ✅ | | Rule Type | Category of the rule (see below) | ✅ | | Trigger Event | When the rule should be evaluated | ✅ | | Severity | Alert priority level | ✅ | | Hard Stop | If enabled, blocks the action until acknowledged | ❌ | | Active | Whether the rule is currently enforced | ✅ | ### Rule Types | Type | Description | Condition Fields | | ------------------------- | ------------------------------------------ | ------------------------------ | | **Drug Interaction** | Detects concurrent use of two drug classes | Drug Class A, Drug Class B | | **Drug Allergy** | Flags medications matching a known allergy | Drug Class | | **Medication Monitoring** | Alerts when lab monitoring is overdue | Lab Test (LOINC), Days Overdue | | **Documentation Gap** | Flags missing or overdue documentation | Note Type, Hours Overdue | | **Quality Measure** | HEDIS/CMS quality measure gaps | Measure ID (future) | ### Condition Parameters Parameters change based on the selected rule type: * **Drug Interaction:** Enter two drug class names (e.g., "Opioid" and "Benzodiazepine"). The engine checks if the patient has active medications matching both classes. * **Drug Allergy:** Enter one drug class name. The engine checks if the patient has both an active allergy AND an active medication matching that class. * **Medication Monitoring:** Enter the LOINC code for the lab test and the number of days after which it's considered overdue. * **Documentation Gap:** Enter the note type and maximum hours before it's flagged as overdue. ### Action Settings | Field | Description | | -------------- | ----------------------------------------------------------------------- | | Action Type | `alert` (show warning), `block` (hard stop), `suggest` (recommendation) | | Title | Short alert title shown to clinicians | | Message | Detailed alert message | | Recommendation | Optional guidance for the clinician | *** ## Severity Levels | Severity | Color | Description | Recommended Use | | ------------ | ------------------ | ---------------------------- | --------------------------------------- | | **Critical** | Red (destructive) | Life-threatening risk | Contraindicated drug combinations | | **Major** | Orange (warning) | Significant clinical concern | Known interactions with serious effects | | **Moderate** | Yellow (secondary) | Important but manageable | Monitoring reminders, dose adjustments | | **Minor** | Gray (muted) | Low-priority awareness | Documentation reminders | | **Info** | Blue (muted) | Informational only | Best practice suggestions | *** ## Hard Stop Rules When a rule has **Hard Stop** enabled: 1. The clinician sees a **blocking modal** that cannot be dismissed 2. They must either: * **Acknowledge** the alert (for non-hard-stop alerts) * **Override with reason** — a clinical justification is required 3. The override reason is permanently recorded in the audit trail **Best Practice:** Reserve hard stops for critical safety rules (e.g., contraindicated drug combinations). Excessive hard stops lead to "alert fatigue" and reduced clinical effectiveness. *** ## Alert Lifecycle ``` Rule Triggered → Alert Created → Clinician Sees Alert ↓ ┌─────────┴─────────┐ ↓ ↓ Acknowledge Override (dismiss) (with reason) ↓ ↓ Alert Closed Alert Closed + Audit Record ``` ### Alert Actions | Action | Who Can Do It | What Happens | | --------------- | ------------------------------- | ---------------------------------------------------- | | **Acknowledge** | Any clinician with chart access | Alert marked as acknowledged with timestamp | | **Override** | Any clinician with chart access | Alert marked as overridden with reason and timestamp | Both actions are **immutable** — once acknowledged or overridden, the action cannot be undone. This ensures a complete audit trail for compliance. *** ## Audit & Compliance ### What Is Tracked * Every alert trigger (rule ID, chart ID, severity, timestamp) * Every acknowledgment (who, when) * Every override (who, when, reason) * Domain events published: `cds_alert_triggered`, `cds_rule_overridden` ### Reviewing Overrides Overridden alerts can be reviewed by: 1. Viewing the **CDS Alerts Panel** on any patient chart 2. Filtering alerts to show overridden items 3. Reviewing the override reason and clinician who overrode ### Regulatory Compliance CDS alerts support compliance with: * **Joint Commission** medication safety standards * **CMS Conditions of Participation** for medication management * **AHCCCS AMPM** behavioral health documentation requirements * **42 CFR Part 2** — alert payloads contain IDs only, no PHI *** ## Managing Alert Fatigue ### Recommended Practices 1. **Start conservative** — begin with a small number of critical rules 2. **Monitor override rates** — high override rates indicate rules may be too aggressive 3. **Use appropriate severity** — not every alert needs to be "critical" 4. **Limit hard stops** — reserve for truly dangerous situations 5. **Review and adjust** — regularly review active rules and deactivate those with low clinical value 6. **Site-specific rules** — use the optional site\_id field to scope rules to specific locations ### Deactivating a Rule 1. Navigate to **CDS Rules** → find the rule 2. Click **Edit** 3. Uncheck **Active** 4. Save — the rule will no longer trigger new alerts Existing alerts from the rule remain in the system for audit purposes. *** ## Permissions Reference | Permission Key | Description | Default Roles | | --------------------- | --------------------------------- | -------------------------- | | `cl.cds_rules.view` | View CDS rules list | org\_admin, manager, staff | | `cl.cds_rules.manage` | Create, edit, delete CDS rules | org\_admin | | `cl.cds_alerts.view` | View CDS alerts on patient charts | org\_admin, manager, staff | *** ## Troubleshooting | Issue | Solution | | ----------------------------- | ----------------------------------------------------------------------- | | Rules not firing | Verify the rule is **Active** and matches the correct **Trigger Event** | | Too many alerts | Reduce rule sensitivity or deactivate low-value rules | | Cannot create rules | Verify you have the `cl.cds_rules.manage` permission | | Alerts not appearing on chart | Verify you have the `cl.cds_alerts.view` permission | | Override reason not saving | Ensure the reason field is not empty — it's required for overrides | *** ## Technical Notes * CDS evaluation runs **client-side** in Phase 1 (simple text matching) * Future phases will add **server-side evaluation** via edge functions for external API calls (RxNav, FDB) * Alert data is stored in `cl_cds_alerts` with no DELETE policy (audit retention) * Domain events integrate with the Forms & Workflow (FW) automation engine # CDS Rules Source: https://docs.encoreos.io/cl/cds-rules Admin list and editor for Clinical Decision Support rules, showing rule type, trigger event, severity, and hard-stop status for each rule. The CDS Rules screen is an admin management page at `/cl/cds-rules` that lists all configured Clinical Decision Support rules for the current organisation and allows users with the `cl.cds_rules.manage` permission to create, edit, and delete rules. ## Overview The screen displays a card titled "Active Rules (N)" listing all non-deleted rules from `cl_cds_rules` for the current organisation, ordered alphabetically by rule name. Each row shows the rule name, rule type and trigger event labels, severity badge, optional "Hard Stop" badge, and active/inactive badge. Users with `cl.cds_rules.manage` see "Edit" and delete (trash icon) buttons per row, plus a "New Rule" button in the page header. Creating or editing a rule opens a modal dialog with a structured form covering: rule name, rule type, trigger event, severity, hard-stop toggle, active toggle, dynamic condition parameters (vary by rule type), and alert action fields (type, title, message, optional recommendation). Deleting a rule opens a confirmation dialog. ## Who it's for * Viewing the rule list: requires the `cl.cds_rules.view` permission. * Creating, editing, and deleting rules: additionally requires `cl.cds_rules.manage`. ## Before you start * The `cl.cds_rules.view` permission must be assigned to your role to access this page. * The `cl.cds_rules.manage` permission is required to create, edit, or delete rules. ## Steps Navigate to `/cl/cds-rules`. The page loads all active (non-deleted) rules for your organisation. Each row in the "Active Rules" card shows the rule name, type/trigger sub-line, severity badge, Hard Stop badge (if applicable), and Active/Inactive status. Click "New Rule" to open the rule form dialog. Fill in Rule Name, Rule Type, Trigger Event, Severity, and optionally Hard Stop and Active flags. The Condition Parameters section is dynamic. For Drug Interaction or Drug Allergy rules enter Drug/Class A (and Drug/Class B for interactions). For Medication Monitoring rules enter a Lab Test LOINC code and Days Overdue. For Documentation Gap rules enter Note Type and Max Hours Overdue. Quality Measure rules have no configurable parameters in the current build. Choose action type (Alert, Block, or Suggest), enter a Display Title, a Message shown to clinicians, and an optional Recommendation. Then click "Create Rule" (or "Update Rule" when editing). Click "Edit" on any rule row to re-open the form pre-populated with that rule's values. Change fields as needed and click "Update Rule". Click the trash icon on a rule row. A confirmation dialog shows the rule name and asks you to confirm; click "Delete" to permanently remove the rule. ## Key concepts CDS rule types and trigger events as defined in code: **Rule types:** | Code | Display label | | ----------------------- | --------------------- | | `drug_interaction` | Drug Interaction | | `drug_allergy` | Drug Allergy | | `medication_monitoring` | Medication Monitoring | | `documentation_gap` | Documentation Gap | | `quality_measure` | Quality Measure | **Trigger events:** | Code | Display label | | --------------------- | ------------------- | | `medication_add` | Medication Add | | `prescription_submit` | Prescription Submit | | `chart_open` | Chart Open | | `assessment_complete` | Assessment Complete | **Severity levels:** `critical`, `major`, `moderate`, `minor`, `info`. Critical and major render as destructive badges; moderate as default; minor as secondary; info as outline. **Action types:** `alert`, `block`, `suggest`. When no rules exist the card body shows a warning icon with "No CDS rules configured — Create rules to enable drug interaction, allergy, and monitoring alerts." If the query fails, a destructive text message is shown with the sanitised error. Three skeleton rows are displayed while the rule list loads. ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/CdsRulesListPage.tsx * src/cores/cl/hooks/useCdsRules.ts * src/cores/cl/types/cds.ts # Clinical Reporting & Quality Measures Expansion — Admin Guide Source: https://docs.encoreos.io/cl/cl-15-p2-3-admin-guide Configure Phase 2 & 3: dual-track incident deadlines, clinical audit and quality-measure reports, portal QM consent, and audit logging. ## Overview This admin guide covers the configuration, governance, and operational steps for the CL-15 Phase 2 & 3 expansion. For end-user behavior, see the [CL-15-P2-3 user guide](/cl/cl-15-p2-3-user-guide). Configuring incident tracks and report definitions requires org-admin rights; the report actions use the `cl.report_definitions.*` permission keys. ## Deployment & configuration Incident deadline behavior is driven by `cl_module_settings`, edited from **CL Settings → Incident reporting** (`/cl/settings`, surfaced by `CLSettingsForm`). | Setting | Purpose | | ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `incident_deadline_track` | Regulatory track: `azdhs` (default), `ahcccs`, or `dual`. Controls which deadline rules apply. | | `incident_business_day_config` | Business-day rules for AHCCCS, e.g. `{ "excludeWeekends": true }`. Weekday-only exclusion is supported this release; holiday calendars are deferred. | | `incident_sentinel_options` | Sentinel-event classification, e.g. `{ "sentinelTypes": [...], "reportingWindow": "..." }`. Sentinel events inherit the parent deadline and can be escalated via PF-10 alerts. | Defaults preserve Phase 1 behavior: a new org is `azdhs` with empty business-day and sentinel config. Changing the track is **not retroactive** — only incidents created after the change use the new rules. Verify the track with Compliance before go-live. ## Legal verification before enabling AHCCCS or dual track The default `azdhs` track preserves licensed-facility behavior. **Do not** switch to `ahcccs` or `dual` until Legal/Compliance has verified the applicable timeframes: 1. Confirm the facility's AHCCCS contract scope and which Policy 961 timelines apply. 2. Record the verification (signer, date, attached memo) in `docs/compliance/REGULATORY_COMPLIANCE_TRACKER.md` under **CL-15 Open Question Q4**. 3. Only then change `incident_deadline_track`. The change is captured in the audit log (see below). ## Report definitions (clinical audit, HEDIS, CARF) Report definitions live in `cl_report_definitions`; runs are recorded in `cl_report_runs`. Creating a definition requires `cl.report_definitions.create`; deleting requires `cl.report_definitions.delete`. * **Clinical audit** — set `report_type = 'clinical_audit'` and select dimensions (break-glass, disclosures, documentation timeliness, consent, risk screening) via the dialog checkboxes. Dimension selections persist on the definition's `filters` JSONB. * **HEDIS / CARF** — set `report_type = 'hedis'` or `'carf'`. Each run computes a lightweight aggregate from CL-10 outcome data (`cl_outcome_measures`) over the trailing 12 months. Full per-dimension audit drill-down (T5 / T-COMP-3) and full NCQA HEDIS conformance with PF-70 value sets (T-COMP-2) are pending. Today's runs produce aggregate summaries in `cl_report_runs.result_summary`. ## Patient-portal QM & consent The portal QM view is read-only and patient-scoped. Administratively, the key behavior to understand is **42 CFR Part 2 (SUD) consent gating**: measures derived from SUD data are only shown to a portal user when the patient's consent status permits it. No additional per-org switch is required to enforce this — it follows the patient's consent record. Confirm consent capture (CL-11) is configured for SUD programs so portal measures display correctly. ## CARF survey readiness The CARF readiness surface reads accreditation data from Governance (GR-08) through the read-only `@/platform/governance` contract. There is no CL-side data store to configure; ensure CARF accreditations are entered in **Governance**, otherwise the readiness view shows its empty state. The dedicated readiness page/route (T10) is pending. ## Audit & compliance logging Changes to the dual-track settings are recorded in `pf_audit_logs` (action `cl_module_settings.incident_track.update`), capturing who changed the track and when. Use this trail when demonstrating change control during AZDHS/AHCCCS or CARF reviews. Report runs are independently logged in `cl_report_runs`. ## Troubleshooting | Symptom | Likely cause / resolution | | --------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | | Existing incident deadlines didn't change after switching track | By design — track changes are not retroactive. Only new incidents use the new track. | | CARF readiness shows the empty state | No accreditation data in Governance; add accreditations in GR-08. | | A user can't view or run reports | Missing `cl.report_definitions.view` (view/run) or `cl.report_definitions.create` (create). | | Portal QM omits some measures | Expected when SUD-derived measures lack the required 42 CFR Part 2 consent for that patient. | | Holiday handling not applied to AHCCCS deadlines | Holiday calendars are deferred this release; only weekday exclusion is supported. | This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. # Clinical Reporting & Quality Measures Expansion — User Guide Source: https://docs.encoreos.io/cl/cl-15-p2-3-user-guide Phase 2 & 3: dual-track incident deadlines, clinical audit report, quality measures, patient-portal QM, and CARF survey readiness. ## Overview This guide covers the Phase 2 and Phase 3 expansion of **CL-15: Clinical Reporting & Quality Measures**. It builds on the Phase 1 base (report definitions, report runs, AZDHS incident reporting, compliance dashboards) and adds: * **Dual-track incident deadlines** — align incident reporting timelines with AZDHS licensing and/or AHCCCS Policy 961. * **Clinical audit report** — a single report that aggregates compliance signals across several CL modules. * **Quality measure reports (HEDIS / CARF)** — lightweight automated aggregation from CL-10 outcomes. * **Patient-portal quality measures** — a read-only view of a patient's measure status and follow-up deadlines. * **CARF survey readiness** — a pre-survey checklist and readiness score sourced from Governance (GR-08). Some items in this expansion are shipped today and some are pending; each section below states its status so you know what to expect in the UI. ## Incident reporting deadline tracks CL-15 supports a configurable **incident deadline track** (`cl_module_settings.incident_deadline_track`) so each facility can follow the regulator that governs its contract. | Track | When to use | Reference | | ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------ | | `azdhs` *(default)* | Arizona behavioral-health facilities licensed by AZDHS without an AHCCCS contract. Preserves CL-15 Phase 1 behavior. | AZDHS R9-10 / R9-20 incident reporting timelines | | `ahcccs` | Facilities operating under an AHCCCS (Medicaid) contract. | AHCCCS Medical Policy Manual (AMPM) Policy 961 | | `dual` | Facilities subject to both AZDHS licensure and an AHCCCS contract. The system computes **both** deadlines and surfaces the **earliest** for each incident. | Policy 961 + AZDHS rules | **How deadlines are calculated (dual example):** for a `serious_injury` incident discovered Friday 4 pm, a dual-track org computes both an AZDHS deadline (e.g. 6 hours → Friday 10 pm) and an AHCCCS deadline (next business day → Monday), and alerts you against each. Operational notes: * The track is configured by an org admin at **CL Settings → Incident reporting** (`/cl/settings`). See the admin guide for the configuration and legal-verification steps. * Switching tracks is **not retroactive** — only incidents created after the change use the new track. * Business-day handling currently supports weekday-only exclusion; holiday calendars are deferred. The `azdhs` / `ahcccs` / `dual` values are Arizona-specific for this release. When platform multi-state support (PF-96) lands, deadline logic resolves the regulator from the jurisdiction profile rather than these literal values. ## Clinical audit report The `clinical_audit` report type aggregates compliance signals across CL modules into one report for survey preparation and ongoing monitoring. * **Dimensions:** break-glass access (CL-01), accounting of disclosures (CL-11), documentation timeliness (CL-04), consent status, and risk screening (CL-07). * **Selecting dimensions:** choose the dimensions per definition via checkboxes in the Report Definition dialog; selections are stored on the report definition (`cl_report_definitions.filters`). * **Running it:** trigger a run from **CL → Report History**; summary counts per dimension are written to `cl_report_runs.result_summary`. Status: the report type, dimension selection, and aggregated summary counts are available. Full per-dimension drill-down rendering is **pending** (tracked under T5 / T-COMP-3). ## Quality measure reports (HEDIS / CARF) * `hedis` and `carf` report types compute a lightweight aggregate from `cl_outcome_measures` (CL-10) over the trailing 12 months on each run. * The aggregate exposes fields such as `denominator`, `significant_change_count`, `by_instrument`, and `by_severity` in `result_summary`. Status: lightweight automated aggregation is available. Full NCQA HEDIS conformance (per-measure numerator/denominator/exclusions and PF-70 value sets) is **pending** (T-COMP-2). ## Patient portal — quality measures Portal users can see a read-only summary of their own quality-measure status and upcoming follow-up deadlines. * The view is **scoped to the current patient** and shows latest scores, trend direction, and upcoming follow-up dates — not raw clinical data. * Example: a patient with PHQ-9 and GAD-7 scores in CL-10 and a follow-up appointment sees their latest values, trend, and the next follow-up date. * **SUD privacy:** measures derived from 42 CFR Part 2 (SUD) data are gated by the patient's consent status; without the required consent, those measures are withheld. * When no measure data exists, the page shows an empty state rather than an error. ## CARF survey readiness * **Route:** `/cl/carf-readiness` (permission `cl.report_definitions.view`). * **Data source:** Governance (GR-08), consumed through the read-only `@/platform/governance` contract — the Clinical core does not read Governance tables directly. * **Empty state:** "No CARF accreditation data. Add accreditations in Governance." Status: the Governance data contract is available. The dedicated CARF readiness page and route are **pending** (T10). ## Permissions | Action | Permission key | | ------------------------------------------------------------------- | --------------------------------- | | View / run clinical audit, HEDIS, CARF reports; view CARF readiness | `cl.report_definitions.view` | | Create report definitions | `cl.report_definitions.create` | | Delete report definitions | `cl.report_definitions.delete` | | Configure incident deadline tracks | org admin on `cl_module_settings` | This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. # Arizona CSPMP/PDMP Integration — Admin Guide Source: https://docs.encoreos.io/cl/cl-17-admin-guide Configuring the Arizona PDMP integration: gateway provider, go-live gate, vault credentials, permissions, and the Bamboo Health onboarding path. ## Overview CL-17 connects Encore to the Arizona CSPMP through a **vendor-agnostic adapter** (CL-17-EN-01): the production vendor is a configuration choice, not a code change. Until a gateway vendor is contracted, the electronic path stays **off** and prescribers use the built-in manual portal flow — which fully satisfies the prescriber duty under A.R.S. § 36-2606(F). Two distinct obligations matter: | Obligation | Who | Status | | ------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------- | --------------------------------------------------- | | Prescriber must review the CSPMP report before prescribing (§ 36-2606(F); becomes (E) on 2026-09-12 and tightens to every prescription **and refill**) | Each prescriber | Satisfied today via portal check + attestation | | EMR vendor must integrate with the CSPMP by **Dec 31, 2026** (§ 36-2606(I); becomes (H)) | Encore (platform) | Adapter shipped; go-live gated on vendor onboarding | ## Configuration (`cl_pdmp_configuration`, one row per organization) | Field | Meaning | | -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `gateway_provider` | `pmp_gateway` / `bamboo_health` (same product — Bamboo Health PMP Gateway) or `arizona_hie` (Contexture; reserved, unverified in 2026) | | `pdmp_adapter_enabled` | **Go-live gate, default false.** The edge function fails closed (HTTP 412) while false. Enable only after the vendor contract + BAA + credentials are in place. | | `credentials_vault_ref` | Platform-vault reference for gateway credentials. Never store secrets in this table or in `adapter_options`. | | `adapter_options` | Vendor-specific, non-secret options (populated during onboarding). | | `auto_query_enabled` | Auto-query on controlled-substance prescribing. Strongly recommended once live — from 2026-09-12 the check is required for every prescription and refill. | | `interstate_query_enabled` | Adds border states to gateway queries (PMP InterConnect). | | `delegate_access_enabled` | Delegate workflows. Note: gateway integrations do not carry delegate queries — delegates use the AWARxE portal with their own accounts. | ## Go-live path (Bamboo Health PMP Gateway — recommended) 1. **File the Integration Interest Form** via Bamboo Customer Connect (connect.bamboohealth.com, linked from pharmacypmp.az.gov/pmp-integration). Arizona **state-funds** Gateway for non-federal healthcare entities — no license charge. New-vendor onboarding takes weeks to months: start early. 2. Sign the state Terms & Conditions; the AZ Board of Pharmacy approves the organization (\~1 week) and Bamboo schedules the technical engagement. 3. Platform team implements the Bamboo XML call behind the existing adapter and stores credentials in the vault (`credentials_vault_ref`). 4. Set `pdmp_adapter_enabled = true` for the organization. Prescribers gain the **Query PDMP** button; the portal flow remains as fallback. Note: Arizona's funded tier returns the **basic PMP report — NarxCare risk scores are not included** — so risk indicators may be absent from results. ## Permissions (PF-30) | Key | Grants | | ------------------------ | ----------------------------------------------------------- | | `cl.pdmp.queries.view` | View PDMP history on a chart | | `cl.pdmp.queries.create` | Run queries (electronic or manual portal record) and attest | ## Compliance notes * Every check writes an immutable `cl_pdmp_queries` audit row (PHI table, org-scoped RLS). Manual portal checks record "checked + reviewed" in one action; gateway outages are recorded automatically (`exception_type`) as safe-harbor evidence. * AHCCCS (AMPM 940) requires the medical record to show CSPMP use before prescribing controlled substances — the chart's PDMP history is that evidence. * Do **not** attempt to embed or scrape the AWARxE portal: embedding is blocked by the state (X-Frame-Options), and automated portal access is legally restricted (A.R.S. § 36-2604(C), § 36-2610(D)). * Full connectivity research and citations: `specs/cl/research/CL-17-EN-01-RESEARCH.md`. ## Related * [User guide](./cl-17-user-guide.md) — prescriber/delegate workflows. # Arizona CSPMP/PDMP Checks — User Guide Source: https://docs.encoreos.io/cl/cl-17-user-guide How prescribers run and document Arizona CSPMP (PDMP) checks from the chart — electronic gateway query or manual portal check, with attestation. ## Overview Arizona law (A.R.S. § 36-2606) requires prescribers to review a patient's Controlled Substances Prescription Monitoring Program (CSPMP) report before prescribing Schedule II–IV opioid analgesics or benzodiazepines. Encore documents every check on the patient chart — the **PDMP Query History** card — so your medical record carries the required evidence (who checked, when, and that the results were reviewed). There are two ways to run a check. Both end with the same chart evidence. ## Prerequisites * You need the `cl.pdmp.queries.view` permission to see PDMP history, and `cl.pdmp.queries.create` to run checks and attest. * For the **manual portal check** you need your own Arizona AWARxE account (register at arizona.pmpaware.net — individual credentials are required by the state; accounts cannot be shared). * The **electronic query** additionally requires your organization's PDMP gateway integration to be enabled by an administrator (see the [admin guide](./cl-17-admin-guide.md)). Until then, the button returns a notice directing you to the portal flow — you are still fully compliant using it. ## Common workflows ### Manual portal check (always available) Click **Portal Check**. The dialog's **Open AZ CSPMP Portal** button opens arizona.pmpaware.net in a new tab. Log in with your individual AWARxE credentials and review the patient's 12-month utilization report. (The portal cannot be embedded inside Encore — this is a state-side security restriction.) Back in Encore, click **I Checked and Reviewed**. One click writes both facts to the chart: the CSPMP was checked (a query record marked "AZ portal (manual)") and you reviewed the results (your attestation, timestamped). ### Electronic gateway query (when enabled) 1. On the PDMP Query History card, click **Query PDMP**. Encore queries the state gateway and saves the normalized results to the chart automatically — the "checked" evidence needs no extra step. 2. Open the result and review it (prescription count, providers, risk flags when available — note Arizona's state gateway returns the basic report, so risk scores may be absent). 3. Click **Attest** and confirm. Reviewing is a deliberate, separate action for electronic results: attesting confirms you personally looked at them. ## What the chart shows Each check appears with its date/time, source badge (gateway name or "AZ portal (manual)"), an **Attested** badge once reviewed, and any risk flags. Compliance staff can report on this history — it is the AMPM 940 medical-record evidence of CSPMP use prior to prescribing. ## Troubleshooting * **"PDMP electronic integration is not enabled…"** — expected until your organization completes gateway onboarding. Use **Portal Check**; it is fully compliant. * **"PDMP gateway unavailable — the outage has been documented…"** — the failed attempt was recorded on the chart automatically (that record is your outage evidence). Complete a **Portal Check** per policy. * **Portal login problems** — AWARxE accounts are individual and state-managed; reset at arizona.pmpaware.net or contact the AZ Board of Pharmacy CSPMP team. ## Related * [Admin guide](./cl-17-admin-guide.md) — configuration, go-live, permissions. # FUA/FUI Follow-Up Measures — Admin Guide Source: https://docs.encoreos.io/cl/cl-29-en-66-fua-fui-admin-guide Configure the NCQA HEDIS substance-use follow-up measures — Measurement Year toggle, mid-period integrity guarantee, and high-intensity scope toggle. ## Overview CL-29-EN-66 computes two NCQA HEDIS substance-use follow-up quality measures — **FUA** (Follow-Up After ED Visit for Substance Use) and **FUI** (Follow-Up After High-Intensity SUD Care) — each as a 7-day and a 30-day rate, surfaced as columns on the existing CL measure dashboard. The measures extend the EN-65 FUH/FUM substrate and emit an at-risk cohort to CL-35; they own no outreach and add no new route. This guide covers the two operator-facing controls, both resolved through **PF-96 jurisdiction profiles** (`ComplianceRules`), never hardcoded in code: * the **active Measurement Year** toggle (MY2025 ↔ MY2026) and its mid-period integrity guarantee; * the **FUI high-intensity scope** toggle and the external-benchmarkability trade-off it carries. > Architecture and the upstream/downstream contract (PF-108 ADT ingest, CL-51 registration, > CL-35 care-gap emit, the DS4P leg, and the T4.3 hardening audit) are in the > [FUA/FUI integration doc](../architecture/integrations/CL-29-EN-66-FUA-FUI-INTEGRATION.md). > Regulatory status and the four human-verify-open gates are in the > [Regulatory Compliance Tracker](../compliance/REGULATORY_COMPLIANCE_TRACKER.md). *** ## 1. Setting the active Measurement Year (MY2025 ↔ MY2026) NCQA publishes the FUA/FUI ruleset by **Measurement Year**. The two versions differ in the denominator and numerator rules: | | MY2025 | MY2026 | | ------------------------------------ | ----------------------- | --------------------------------------------- | | SUD diagnosis position (denominator) | Principal position only | Any position | | FUI qualifying follow-up (numerator) | Standard follow-up set | Adds peer support + residential as qualifying | The active version is set per org via the **PF-96 `ComplianceRules` field `active_measurement_year_version`** (`'MY2025'` or `'MY2026'`). The engine reads it **at evaluation time** — it never infers the year from the system clock — so the rate you see always reflects the configured ruleset, not the calendar. **To change the active Measurement Year:** update the org's PF-96 jurisdiction-profile `compliance.active_measurement_year_version` value. The next measure run computes under the new ruleset. No code deploy is required; the value flows through the PF-96 profile. > **No hardcoded value sets.** Selecting a Measurement Year selects a *ruleset shape*. The NCQA > value-set OIDs themselves are loaded into the CL-51 measure-spec registry from the licensed NCQA > portal (a human-verify-open gate). Do not expect FUA/FUI prod rates to be conformant until those > per-MY OIDs are loaded — see the integration doc §7, gate 6. ## 2. Mid-period integrity guarantee (NFR-integrity-1) Toggling the Measurement Year **mid-period does not overwrite or restate already-computed results.** Each computed snapshot is written to `cl_quality_measure_periods` keyed (uniquely) on **(org, measure, period, Measurement Year version)** via a `NULLS NOT DISTINCT` unique index. So: * the **prior-MY snapshot is preserved** exactly as computed; * the **new-MY computation starts on the next run** and lands as a *new* row; * there is **no silent overwrite** — both rows coexist, distinguished by their MY stamp. This means an admin can move from MY2025 to MY2026 partway through a reporting period without destroying the historical MY2025 figures that may already have been reported. (Illustrative only — no real patient data: a synthetic org's `FUA-7` row for period `2026-Q1` under `MY2025` remains intact after the org switches to `MY2026`; the `MY2026` `FUA-7` row for the same period is added alongside it.) ## 3. FUI high-intensity scope toggle — and the benchmarkability trade-off NCQA defines FUI's high-intensity denominator as **residential treatment + acute-inpatient SUD** (with withdrawal management). That is the **default scope**, and it is what makes a facility's FUI rate **comparable against NCQA-published benchmark rates.** PF-96 exposes an **opt-in expansion** — `ComplianceRules.fui_high_intensity_expansion` — that adds **PHP/IOP** episodes to the FUI high-intensity denominator. | Setting | FUI denominator scope | Benchmarkability | | ------------------ | ---------------------------------------------- | ----------------------------------------------------------------------------- | | **Default (off)** | Residential + acute-inpatient SUD (NCQA scope) | **Benchmarkable** against NCQA-published rates | | **Expansion (on)** | Adds PHP/IOP episodes | **Not benchmarkable** — denominator no longer matches NCQA's published cohort | **Trade-off to weigh before enabling.** Turning the expansion **on** gives a broader internal view of high-intensity follow-up (useful for programs that treat PHP/IOP as high-intensity), but the resulting FUI rate **can no longer be compared to NCQA benchmark rates** because the denominator no longer matches the published cohort. Leave it **off** for any FUI rate that will be reported externally or benchmarked; turn it **on** only for internal quality analysis where you understand the rate is non-comparable. The default-off / opt-in behavior is verified by acceptance criteria AC-4.1 (default) and AC-4.2 (opt-in). ## 4. Payer-facing export — disabled by default (42 CFR Part 2) FUA/FUI denominators are SUD-triggered, so any **payer-facing or AHCCCS-facing export** that identifies SUD treatment episodes is gated. Internal, org-scoped computation and dashboards are permitted under the existing HIPAA TPO exception; **payer-facing export is disabled by default** and fail-closed at the DB until: * the org explicitly enables payer export (`cl_fua_payer_export_settings.payer_export_enabled`), and * active 42 CFR Part 2 consent exists for the chart and disclosure purpose (`cl_check_sud_consent()`), with every permitted redisclosure written to the CL-11 redisclosure log. Do not enable payer export until your compliance officer has confirmed the Part 2 consent basis (TPO consent, individual authorization, or QSOA) and the AHCCCS DAP measure-weighting question for the relevant payment year (see the integration doc §7, gates 8 and 10a-b). *** ## Reference * Integration & architecture: [CL-29-EN-66 FUA/FUI Integration](../architecture/integrations/CL-29-EN-66-FUA-FUI-INTEGRATION.md) * DS4P label propagation: [CL-29-EN-66 DS4P Propagation](../architecture/integrations/CL-29-EN-66-DS4P-PROPAGATION.md) * Regulatory status & gates: [Regulatory Compliance Tracker](../compliance/REGULATORY_COMPLIANCE_TRACKER.md) * Compliance sign-off: `specs/cl/reviews/CL-29-EN-66-COMPLIANCE-SIGNOFF.md` # GPRA→SUPRT Client-Outcome Capture — User Guide Source: https://docs.encoreos.io/cl/cl-69-gpra-suprt-user-guide Step-by-step guide for clinicians administering SUPRT-A and SUPRT-C outcome assessments for SAMHSA grant-funded clients. ## Overview The **SUPRT** (Unified Performance Reporting Tools) instrument replaces GPRA effective October 2025 for SAMHSA discretionary grants (SOR, CCBHC-E, and similar). It is split into two parts: * **SUPRT-A** — Administrative items completed by the clinician using information already on the client's record (demographics, employment, housing, criminal-justice involvement). Most fields auto-populate from the chart. * **SUPRT-C** — Client self-report items that the clinician presents to the client during the session (perceived care quality, social connectedness, and similar domains). SUPRT is collected at four standard timepoints: **intake**, **6-month follow-up**, **annual follow-up**, and **discharge**. *** ## Step 1: Open a New Outcome Episode 1. Open the client's chart and click the **Outcomes** tab. 2. Click **Start SUPRT** (or **New Outcome Episode**) to begin an intake assessment. 3. In the dialog that opens, confirm the grant type (SOR, CCBHC-E, etc.) if a selector is shown. The system reads the active grant profile from your org's PF-96 settings. > Only one open episode per client per grant is allowed. If an episode is already open for this grant, the system will show an **Active Episode** notice instead of opening a second one. *** ## Step 2: Review SUPRT-A (Administrative Items) The SUPRT-A section appears first. Fields that can be derived from the chart record are **pre-populated** and shown as read-only. Review each value and correct any that are out of date: * Education level, employment status, housing type * Criminal-justice involvement flags * Other administrative items required for your grant's item set If a field is blank, the source data was not found on the chart — enter it directly in the dialog. The value will be saved to the assessment record (not back-written to the source field). *** ## Step 3: Complete SUPRT-C (Client Self-Report Items) After reviewing SUPRT-A, the dialog advances to the **SUPRT-C** section. These items must be presented to the client: * Read each item aloud or display it to the client. * Enter the client's response in the corresponding field. * SUPRT-C items are distinct from SUPRT-A; no items are duplicated between the two sections. *** ## Step 4: Save and Submit Click **Save** (or **Submit / Record**) to finalize the assessment. The system: 1. Persists the episode (`cl_outcome_episodes`) and the assessment + responses (`cl_outcome_assessments`, `cl_outcome_responses`). 2. Labels any SUD-derived response rows with a DS4P confidentiality code at insert. 3. Updates the **Follow-Up Rate Card** on the Outcomes tab to reflect the current grant follow-up percentage. A confirmation message confirms the assessment was recorded. *** ## Reassessment: 6-Month and Annual Follow-Ups When a client's 6-month or annual reassessment window opens, the **CL-35 Care Gaps worklist** surfaces an `outcome_reassessment_due` alert for that client. Open the client's chart and repeat Steps 1–4; the dialog pre-selects the appropriate timepoint (6-month or annual) based on the episode start date and the cadence configured in your org's PF-96 grant profile. At discharge, use **Discharge / Close Episode** on the Outcomes tab to record discharge-timepoint items and close the episode. *** ## Important Notes * **Part 2 consent required before any SPARS disclosure.** SUD-derived outcome data cannot be disclosed to SAMHSA SPARS (GR-28) without a valid 42 CFR Part 2 per-entity consent on file in CL-11. The system blocks the SPARS package for any row where consent is missing. * **SUD-derived items are DS4P-labeled.** Items flagged as SUD-derived carry a DS4P privacy-segmentation label. These items are excluded from AI prompts and are never logged in plain text. * **Item sets are grant-driven.** The items shown in the dialog come from the PF-96 grant profile configured for your organization. If the item set looks wrong, contact your administrator to verify the grant profile settings (see the [Admin Guide](cl-69-grant-profile-admin-guide.md)). # GPRA→SUPRT Grant Profile Configuration — Admin Guide Source: https://docs.encoreos.io/cl/cl-69-grant-profile-admin-guide No-code path for configuring a SUPRT grant profile (SOR, CCBHC-E) via jurisdiction settings. ## Overview A **grant profile** is a PF-96 jurisdiction configuration record that tells the SUPRT capture engine which instrument item set to use, how frequently to reassess clients, and the minimum client age for the SUPRT-C self-report instrument. Each grant type (SOR, CCBHC-E, etc.) has its own profile; switching profiles is a configuration change with **zero schema migrations**. Grant profiles are managed in the Jurisdiction section of your organization's admin settings. > **AHCCCS cadence note (C3 gate):** The Arizona-specific PF-96 profile for AHCCCS AMPM 320-O cadence values has not yet been activated. Before enabling the AZ profile, your clinical compliance officer must extract the verbatim cadence requirements from the official AHCCCS AMPM 320-O PDF and verify they do not conflict with SUPRT collection windows. See [CL-69 Compliance Sign-Off](../../specs/cl/reviews/CL-69-COMPLIANCE-SIGNOFF.md) Condition C3. *** ## Step 1: Navigate to Admin > Settings > Jurisdiction 1. Log in with an account that has the **Admin** or **Platform Admin** role. 2. From the main navigation, go to **Admin → Settings → Jurisdiction**. 3. The Jurisdiction settings page shows the current active profile and any configured grant profiles. *** ## Step 2: Select or Create a Grant Profile * To **configure an existing profile**, click the profile name (SOR or CCBHC-E) in the list. * To **create a new profile**, click **Add Grant Profile** and enter the grant type and a display name. *** ## Step 3: Configure the `clinical.suprt` Rule Pack Each grant profile has a `clinical.suprt` rule pack with three configurable values: | Setting | Description | Example | | ----------------------------------- | --------------------------------------------------------------------------------------- | -------------- | | **Instrument Set ID** | References a row in `cl_assessment_instruments` — the SUPRT-A/C item set for this grant | `suprt-sor-v1` | | **Reassessment Cadence** | Number of months between required follow-up assessments (6-month and annual timepoints) | `[6, 12]` | | **Client Instrument Age Threshold** | Minimum client age (in years) for the SUPRT-C self-report instrument | `11` | Enter or update the values for each setting. The instrument set ID must match a row that is already loaded in `cl_assessment_instruments` (seeded via `supabase/seeds/system-defaults/cl69_suprt_instruments.sql` during database initialization). *** ## Step 4: Save Click **Save** to apply the profile. Changes take effect for the **next intake session** — active open episodes are not retroactively changed. No database migration is required; the values are read at runtime from the PF-96 profile. To verify the change, open a client chart, click the **Outcomes** tab, and confirm that the SUPRT dialog shows the expected item set when you click **Start SUPRT**. *** ## Notes and Caveats * **Instrument set must be seeded.** If the instrument set ID you enter does not exist in `cl_assessment_instruments`, the SUPRT dialog will open with an empty item list and show a warning. Coordinate with your implementation team to run the system-defaults seed. * **SUPRT codebook validation (C1/C2).** Before publishing SUPRT-A/C instrument definitions to production, your grant manager must validate the item set against the SAMHSA published codebook (available from SPARS). The NOMs domain list in the seed must also be reconciled against the official SAMHSA NOMs PDF. These are human-gate conditions tracked in the compliance sign-off. * **AHCCCS AMPM 320-O (C3).** The AZ jurisdiction PF-96 profile for AHCCCS cadence coexistence must NOT be activated until clinical compliance has extracted and verified the verbatim cadence values from the official PDF. Using incorrect cadence values could result in AHCCCS non-compliance. * **Profile isolation.** SUPRT cadences and item sets for one grant type (e.g., SOR) never affect another grant type (e.g., CCBHC-E). Each profile is independently configured. # Clinical Audit & Compliance Source: https://docs.encoreos.io/cl/clinical-audit-compliance Monitor PHI access events, break-glass reviews, consent compliance, documentation quality, and 42 CFR Part 2 compliance for your organization. This screen provides a multi-tab compliance dashboard at route `/cl/audit-dashboard`. ## Overview The Clinical Audit & Compliance dashboard aggregates six compliance data domains into a tabbed layout. A summary row at the top shows four metric cards: total audit events in the last 7 days, unreviewed break-glass events (with an SLA-breached count badge), active consent count (with expiring-in-7-days badge), and total anomaly flags. The dashboard logs a `dashboard_open` action and an `audit_viewer_query` action to `logAuditDashboardAction` when the audit log loads. The default date range for all data queries is the past 7 days. The page renders inside a `PermissionGate` that displays an "Access Denied" empty state for users without the required permission. ## Who it's for Requires the `cl.audit_dashboard.view` permission. The **Review** button on individual break-glass events additionally requires `cl.audit_dashboard.break_glass_review`. ## Before you start * You must hold the `cl.audit_dashboard.view` permission. * Break-glass event review requires the additional `cl.audit_dashboard.break_glass_review` permission. ## Steps Navigate to `/cl/audit-dashboard`. The four summary metric cards load for the last 7 days. Select the **Break-Glass Review** tab. Events show a user ID, timestamp, affected table name, and badges for SLA-breached or already-reviewed status. Click **Review** on an unreviewed event (requires `cl.audit_dashboard.break_glass_review`) to open the `BreakGlassReviewDialog`. Select the **Audit Log** tab. The table shows up to 50 events with columns: Time, Action, Table, and User (user ID in monospace). Select the **Consent Compliance** tab. Four counters display: Active, Expiring (7d), Expired, and Revoked consent counts. Select the **Documentation Quality** tab. A per-provider table shows Total notes, Finalized, Draft, and Completion rate. A completion rate below 70% renders a destructive badge; below 90% renders secondary; 90% and above renders default. Select the **Part 2 Compliance** tab. Three counters display: SUD Access Events, Consent Coverage (%), and Break-Glass Events. Select the **Regulatory Calendar** tab. Configured deadlines appear with a title, description, category badge, and a recurring-interval badge if `isRecurring` is true. ## Key concepts A break-glass event represents an emergency PHI access recorded in the audit log. Events surface in the Break-Glass Review queue with `isReviewed` and `slaBreached` flags. Reviewing an event opens the `BreakGlassReviewDialog` with the `auditLogId`, `userId`, `createdAt`, and `tableName`. Anomaly flags are computed from `useAnomalyFlags` and count three signal types: `highVolumeUsers`, `samePatientRepeat`, and `afterHoursCount`. The total is shown in the summary card. "No Break-Glass Events" appears when no events exist in the date range. "No Audit Events", "No Consent Data", "No Documentation Data", "No Part 2 Data", and "No Deadlines Configured" appear for their respective tabs when data is absent. ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/ClinicalAuditDashboardPage.tsx * src/cores/cl/hooks/useAuditViewerQuery.ts * src/cores/cl/hooks/useBreakGlassQueue.ts * src/cores/cl/hooks/useConsentComplianceData.ts * src/cores/cl/hooks/useDocumentationMetricsData.ts * src/cores/cl/hooks/usePart2DashboardData.ts * src/cores/cl/hooks/useAnomalyFlags.ts * src/cores/cl/hooks/useRegulatoryCalendar.ts # Clinical Audit & Compliance Dashboard — Admin Guide (Planned) Source: https://docs.encoreos.io/cl/clinical-audit-compliance-dashboard-admin-guide ⚠️ Draft: This guide describes the planned implementation. Settings and table names (e.g., cl_audit_dashboard_configs, cl_module_settings) are subject to… **⚠️ Draft:** This guide describes the planned CL-25 implementation. Settings and table names (e.g., `cl_audit_dashboard_configs`, `cl_module_settings`) are subject to change. **Module:** Clinical & EHR (CL)\ **Spec:** [CL-25 Clinical Audit & Compliance Dashboard](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-25-clinical-audit-compliance-dashboard.md)\ **Version:** current: see docs/VERSIONS.md\ **Last Updated:** 2026-02-24 *** ## Overview This guide covers administrative setup for the Clinical Audit & Compliance Dashboard: dashboard configuration, SLA settings, regulatory calendar, and permissions. The dashboard reads from `pf_audit_logs` and CL tables; every viewer action (dashboard open, query/filter, break-glass review) is written to `pf_audit_logs` per NFR-1. ## Table of Contents * [Quick Reference](#quick-reference) * [Permissions](#permissions) * [Dashboard configuration](#dashboard-configuration) * [SLA settings (break-glass)](#sla-settings-break-glass) * [Regulatory calendar](#regulatory-calendar) * [Settings summary](#settings-summary) * [Known limitations](#known-limitations) * [Common Mistakes](#common-mistakes) * [Pre-Flight Checklist](#pre-flight-checklist) * [Troubleshooting](#troubleshooting) ## Quick Reference | I need to… | Pattern | Location | | ----------------------------- | --------------------------------------------- | ------------------------------------------------------- | | Configure access to dashboard | Role mapping with finalized PF-30 permissions | [Permissions](#permissions) | | Set break-glass review SLA | Org-level SLA hours in settings | [SLA settings (break-glass)](#sla-settings-break-glass) | | Manage compliance deadlines | Regulatory calendar entries and reminders | [Regulatory calendar](#regulatory-calendar) | *** ## Permissions * Assign dashboard access to Compliance Officer, Privacy Officer, or designated audit viewer roles. * Use finalized permission keys from [PF-30 permissions mapping](https://github.com/Encore-OS/encoreos/blob/development/specs/pf/specs/PF-30-permissions-system-v2.md) and [CL-25](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-25-clinical-audit-compliance-dashboard.md) before seeding roles. * Restrict export (if implemented) to appropriate roles. *** ## Dashboard configuration * **Widgets:** Configure which widgets appear (audit viewer, break-glass queue, consent monitor, documentation metrics, Part 2 dashboard, regulatory calendar, anomaly flags). * **Default date range:** Set org-level default (e.g. last 7 days, last 30 days) for the audit viewer. * Configuration is stored in `cl_module_settings` by key until a dedicated `cl_audit_dashboard_configs` table is formally introduced and migrated. *** ## SLA settings (break-glass) * **Default SLA:** e.g. 24 hours for break-glass review (configurable per org). * **SLA hours:** Stored in dashboard config or `cl_module_settings`; used to compute due date when a break-glass event is created. * Ensure break-glass events are written to the audit log with the correct action type so the queue can query them. *** ## Regulatory calendar * Configure regulatory deadlines (e.g. AZDHS, Joint Commission, CARF) with due dates and reminders. * Add or edit entries via Compliance > Regulatory Calendar (admin) or settings. * Reminders can be tied to [PF-10 notifications](https://github.com/Encore-OS/encoreos/blob/development/specs/pf/specs/PF-10-notifications-system.md) or internal reminders. *** ## Settings summary | Setting | Purpose | | --------------------------- | ------------------------------------------ | | Dashboard widgets | Which views are visible to the org. | | Default date range | Audit viewer initial filter. | | Break-glass SLA hours | Due date for break-glass review (e.g. 24). | | Regulatory calendar entries | Deadlines and reminder dates. | *** ## Known limitations * Automated remediation actions are out of scope; review and follow-up are manual. * Real-time alerting is a future enhancement. * Retention and forwarding of audit log entries follow existing audit log policy; do not change from the dashboard. ## Common Mistakes | Mistake | Impact | Fix | | ------------------------------------------ | -------------------------------------- | ---------------------------------------------------------- | | Seeding permissions before PF-30 alignment | Access drift in PHI-adjacent workflows | Seed roles only after final PF-30/CL-25 validation | | Using broad default date windows | Slow dashboard queries | Keep narrow defaults (7–30 days) and index query paths | | Missing break-glass action type mapping | Empty review queue | Verify standardized action type logging in `pf_audit_logs` | ## Pre-Flight Checklist * [ ] Permission mappings verified against CL-25 and PF-30. * [ ] Dashboard settings keys configured in `cl_module_settings`. * [ ] Break-glass SLA hours configured and tested. * [ ] Regulatory reminder schedule validated. * [ ] Audit logs confirm viewer and review actions are captured. *** ## Troubleshooting | Issue | What to check | | ------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Viewer actions not in audit log | Verify that dashboard and break-glass flows write to `pf_audit_logs` with requesting\_user, timestamp, action\_type, and serialized filter/query parameters (NFR-1). | | Break-glass queue empty | Confirm break-glass events are recorded with the expected action type and that RLS allows the viewer to see them. | | Part 2 or consent data missing | Ensure CL-11 and consent/disclosure tables are populated and RLS allows the compliance role to read. | | Performance (load > 3s) | Add indexes or materialized views on audit log and CL tables per NFR-2; limit default date range. | *** ## References * [CL-25 Spec](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-25-clinical-audit-compliance-dashboard.md) * [REGULATORY\_COMPLIANCE\_TRACKER](/compliance/REGULATORY_COMPLIANCE_TRACKER) * [CL-11 Consent Management](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-11-consent-management-42cfr-part2.md) # Clinical Audit & Compliance Dashboard — User Guide (Planned) Source: https://docs.encoreos.io/cl/clinical-audit-compliance-dashboard-user-guide The Clinical Audit & Compliance Dashboard gives compliance officers and designated staff a single place to monitor PHI access, break-glass events, consent stat… ## Table of Contents * [Overview](#overview) * [Permissions](#permissions) * [Quick Reference](#quick-reference) * [Pre-Flight Checklist](#pre-flight-checklist) * [Workflows](#workflows) * [Known limitations](#known-limitations) * [Common Mistakes](#common-mistakes) * [Troubleshooting](#troubleshooting) * [Related Documentation](#related-documentation) * [References](#references) *** ## Overview The Clinical Audit & Compliance Dashboard gives compliance officers and designated staff a single place to monitor PHI access, break-glass events, consent status, documentation quality, and Part 2 compliance. All viewer actions (dashboard open, filters, break-glass review) are logged to the audit log per policy. *** ## Permissions Access to the dashboard is restricted to roles such as: * Compliance Officer * Privacy Officer * Designated audit viewers (per-org) If you do not see the dashboard menu, your role may not have access. Contact your administrator. *** ## Quick Reference | I need to… | Pattern | Location | | ----------------------------- | ---------------------------------- | ----------------------------------------------------------------- | | Query PHI access logs | Filtered audit viewer query | [PHI access audit (Audit viewer)](#phi-access-audit-audit-viewer) | | Review emergency access | SLA-based break-glass queue review | [Break-glass review queue](#break-glass-review-queue) | | Monitor consent risk | Consent status monitor by cohort | [Consent compliance monitor](#consent-compliance-monitor) | | Investigate suspicious access | Threshold-based anomaly review | [Anomaly flags](#anomaly-flags) | ## Pre-Flight Checklist * [ ] Confirm your role includes dashboard access. * [ ] Set minimum-necessary date range and filters before running audit queries. * [ ] Verify recipient authorization before exporting any audit data. * [ ] Confirm escalation/contact path for confirmed anomalies. *** ## Workflows ### PHI access audit (Audit viewer) 1. Navigate to **Compliance > Audit Dashboard** (or equivalent). 2. Use filters: * **Date range:** Start and end date for access events. * **User:** Filter by user who performed the action. * **Patient:** Filter by patient (chart) accessed. * **Action type:** e.g. chart open, note view, export. 3. Run the query. Results show access events from `pf_audit_logs` and CL sources. 4. Export (if enabled) for external review or reporting. > ⚠️ **PHI Notice:** Exported audit data may contain protected health information. Limit exports to minimum-necessary scope, send only to authorized recipients, use approved formats/channels, and follow organizational retention/destruction policy. ### Break-glass review queue 1. Open **Compliance > Break-Glass Queue**. 2. List shows break-glass access events with due date based on your organization’s configured SLA. 3. For each event, open the record and review justification. 4. Mark as **Reviewed** and complete any required fields (e.g. reviewer note, outcome). 5. Overdue items are highlighted; track completion for SLA compliance. ### Consent compliance monitor 1. Open **Compliance > Consent Monitor** (or Consent Compliance view). 2. View aggregated consent status across the population: * Expired consents * Expiring in 30 / 14 / 7 days * Missing consent by type 3. Use this view to prioritize outreach or renewal workflows. ### Documentation quality metrics 1. Open **Compliance > Documentation Quality** (or per-provider metrics). 2. View completeness scores from progress notes: * Required fields present * Actual begin/end times (not templated) * Goal linkage * Member response 3. Use to identify documentation gaps and target training. ### Part 2 compliance dashboard 1. Open **Compliance > Part 2** (SUD). 2. View SUD record access patterns, consent verification rates, and redisclosure notice tracking. 3. Align with 42 CFR Part 2 and organizational policy. ### Regulatory calendar 1. Open **Compliance > Regulatory Calendar**. 2. View configurable deadlines (e.g. AZDHS, Joint Commission, CARF). 3. Use reminders to prepare for surveys and submissions. ### Anomaly flags 1. The dashboard may highlight **Anomaly** flags for unusual access (e.g. high volume, after-hours, same-patient repeated access). 2. Default trigger examples (organization-configurable) include: * after-hours access (10pm–6am local time) * high-volume access (>10 distinct patient records by same user in 1 hour) * same-patient repeated access (>3 accesses by same user in 24 hours) 3. Review flagged events, document findings, and follow your organization’s Privacy Incident Response procedure for confirmed violations. *** ## Known limitations * Dashboard is read-only; no PHI is modified from this module. * Real-time alerting is out of scope in the initial release; use scheduled reports or manual review. * Export format and retention follow existing audit log policy. *** ## Common Mistakes | Mistake | Impact | Fix | | -------------------------------------------- | ------------------------------- | -------------------------------------------------------- | | Running broad unfiltered queries | Slow/noisy review output | Start narrow, then expand scope incrementally | | Exporting without recipient validation | Potential disclosure violations | Validate recipient authorization before export | | Assuming missing anomaly flags means no risk | Missed compliance issues | Confirm threshold config and investigate related signals | *** ## Troubleshooting | Issue | What to check | | --------------------------------------- | --------------------------------------------------------------------------------------- | | No data in date range | Confirm date range and that audit logging is enabled for the relevant actions. | | Missing break-glass events | Verify break-glass events are written to `pf_audit_logs` with the expected action type. | | Consent view doesn’t match expectations | Ensure CL-11 consent data is live; check filters (org, site). | | Slow dashboard load | Contact admin; NFR-2 target is p95 \< 3s; indexes or materialized views may be needed. | *** ## Related Documentation * **Specification:** [specs/cl/specs/CL-25-clinical-audit-compliance-dashboard.md](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-25-clinical-audit-compliance-dashboard.md) *** ## References * [CL-25 Spec](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-25-clinical-audit-compliance-dashboard.md) * [REGULATORY\_COMPLIANCE\_TRACKER](/compliance/REGULATORY_COMPLIANCE_TRACKER) * [CL-11 Consent Management](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-11-consent-management-42cfr-part2.md) # Clinical Dashboard Source: https://docs.encoreos.io/cl/clinical-dashboard Overview landing page for the Clinical core, showing patient chart counts, medication stats, pending co-signs, and expiring assessments with quick navigation. The Clinical Dashboard is the landing page for the Clinical core, accessible at `/cl/overview`. It surfaces summary statistics, a patient search widget, configurable quick actions, and area navigation cards linking to key clinical workflows. ## Overview `/cl/overview` renders `CLOverview`, the main entry screen for the Clinical core. The route was previously also accessible via `/cl/dashboard`, which now redirects here. The page includes: * A patient search widget (debounced, 2-character minimum, results capped at 5 in the popover) * Quick actions panel (module-scoped, editable by users) * Five summary stat cards: Active Charts, Active Medications, Active Prescriptions, Plans Due Review, Pending Co-Signs * Six area navigation cards linking to Patient Charts, Medications, Pharmacy Directory, Treatment Plans, Expiring Assessments, and Co-Sign Queue ## Who it's for Access follows your organization's role and module configuration. Individual data hooks and navigation cards enforce permissions at their respective destinations. ## Before you start * You must be authenticated and assigned to an organization. * Data is scoped to `currentOrganization.id` via `useOrganization()`. ## Steps Navigate to `/cl` or `/cl/overview`. The dashboard loads and begins fetching summary data in parallel. Type at least 2 characters in the "Search patients" field. Up to 5 matching charts appear in a popover. Select a result to navigate to that chart, or choose "View all results" to go to the full chart list with the search pre-applied. The five stat cards show current counts for active charts, medications, prescriptions, plans due for review, and notes awaiting co-signature. Cards with non-zero warning values display in a warning variant. Use the area navigation cards to jump to Patient Charts, Treatment Plans, Expiring Assessments, the Co-Sign Queue, Medications, or the Pharmacy Directory. ## Key concepts | Term | Meaning | | ---------------------------- | ----------------------------------------------------------------------------------------- | | `useChartList` | Hook fetching active patient charts scoped to the current organization | | `useProgressNoteCosignQueue` | Hook returning notes with status requiring supervisory co-signature | | `useTreatmentPlanList` | Hook fetching treatment plans; called with `30` to filter for plans due within 30 days | | `QuickActionsSection` | Platform component rendering user-configurable quick-action shortcuts for the `cl` module | | `AreaNavigationCard` | Shared component linking to a sub-area with inline metric badges | | `staleTime: 5min` | Medication and prescription counts cache for 5 minutes before re-fetching | ## Related Clinical core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/CLOverview\.tsx * src/cores/cl/hooks/useChartList.ts * src/cores/cl/hooks/useAssessmentList.ts * src/cores/cl/hooks/useTreatmentPlanList.ts * src/cores/cl/hooks/useProgressNoteCosignQueue.ts # Clinical Reporting & Quality Measures User Guide Source: https://docs.encoreos.io/cl/clinical-reporting-quality-measures-user-guide Run clinical audit and quality-measure reports, configure incident deadline tracks, and prepare for CARF surveys. ## Incident reporting deadline source CL-15 supports a configurable **incident deadline track** (`cl_module_settings.incident_deadline_track`) so each facility can align with the regulator that governs its contract. | Track | When to use | Reference | | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------- | | `azdhs` *(default)* | Arizona behavioral-health facilities licensed by AZDHS without an AHCCCS contract. Preserves CL-15 Phase 1 behavior. | AZDHS R9-10 / R9-20 incident reporting timelines | | `ahcccs` | Facilities operating under an AHCCCS contract (Medicaid). | AHCCCS Medical Policy Manual (AMPM) Policy 961 — Quality Management / Incident Reporting | | `dual` | Facilities subject to both AZDHS licensure and AHCCCS contracts. The system uses the **earliest** of the two deadlines per incident. | Policy 961 + AZDHS rules | ### Activation checklist 1. **Default is `azdhs`.** Do not change unless the org-admin has confirmed scope with Legal/Compliance. 2. **AHCCCS or dual track requires legal verification of timeframes.** Record the verification (signer, date, attached memo) in `docs/compliance/REGULATORY_COMPLIANCE_TRACKER.md` under CL-15 Open Question Q4 before flipping the switch. 3. **Business-day config** (`incident_business_day_config`) supports weekday-only exclusion in this release. Holiday calendars are deferred per CONTEXT.md. 4. **Sentinel events** (`incident_sentinel_options`) inherit the parent deadline but can be configured for immediate alerting through PF-10. 5. **Audit logging.** All changes to the dual-track fields are recorded in `pf_audit_logs` (action `cl_module_settings.incident_track.update`). ### Operational notes * Switching tracks does **not** retroactively recalculate existing incident deadlines; only incidents created after the change use the new track. * PF-10 alert thresholds (`incident_deadline_alert_minutes`) are shared across tracks. * The setting UI lives at **CL Settings → Incident reporting** (`/cl/settings`). ## Clinical audit report * Report type `clinical_audit` aggregates break-glass access, accounting of disclosures, documentation timeliness, consent, and risk screening dimensions over a rolling 30-day window. * Dimensions are selected per-definition via checkboxes in the Report Definition dialog and stored in `cl_report_definitions.filters.audit_dimensions`. * Report runs are visible in **CL → Report History** and write summary counts to `cl_report_runs.result_summary`. Full per-dimension drill-down ships with T-COMP-3. ## Quality measure reports (HEDIS / CARF) * `hedis` and `carf` report types now compute a lightweight aggregate from `cl_outcome_measures` over the previous 12 months on each run. * The aggregate exposes `denominator`, `significant_change_count`, `by_instrument`, and `by_severity` in `result_summary`. * Full NCQA HEDIS conformance (denominator/numerator/exclusions per measure, PF-70 value sets) is tracked under **T-COMP-2** and remains pending. ## CARF readiness dashboard * Route: `/cl/carf-readiness` (permission `cl.report_definitions.view`). * Data source: GR-08 via the read-only `@/platform/governance` contract (`useCarfReadiness`). The CL core does not import from `@/cores/gr`. * Empty state: "No CARF accreditation data. Add accreditations in Governance." # Clinical Settings Source: https://docs.encoreos.io/cl/clinical-settings Admin configuration page for the Clinical module: assessments, treatment plans, security, AI documentation, and ambient settings. The Clinical Settings screen is the admin configuration hub for the Clinical (CL) module, accessible at `/cl/settings`. ## Overview The page loads settings from the `cl_module_settings` table for the current organization via the `useClModuleSettings` hook and renders a tabbed form (`CLSettingsForm`). The tabs cover assessment windows (`assessment_completion_hours`, `suicide_screening_min_age`, `assessment_expiry_alert_days`), treatment plan review cycles (`treatment_plan_review_days`, `cosignature_deadline_days`), security settings (`break_glass_duration_minutes`, `part2_consent_required`), outcomes/NOMs configuration, population health and care gap engine settings, and reporting/incidents thresholds. Additional card sections below the main form provide AI Documentation settings, ambient recording settings, Policy 940 settings, and DDI alert suppression settings — each permission-gated internally. A guided tour is available via the `HelpButton` (or by appending `?tour=cl-settings-tour` to the URL). ## Who it's for Requires permission: `cl.admin` ## Before you start * You must hold the `cl.admin` permission. * Changes apply organization-wide; coordinate with clinical and compliance staff before modifying assessment windows, security timeouts, or care gap thresholds. ## Steps Go to `/cl/settings`. The page loads current settings from the `cl_module_settings` table. Use the tabbed `CLSettingsForm` to update assessment windows, treatment plan review cycles, security settings (including break-glass duration), outcomes/NOMs dimensions, population health parameters, and reporting thresholds. Scroll below the main form to review the AI Documentation Settings card, Ambient Settings section, Policy 940 Settings card, and DDI Alert Suppression Settings — each is permission-gated independently. Submit the form. On error, a toast notification is shown: "Failed to save Clinical settings" with a sanitized error description. On success the form reflects the saved values. ## Key concepts While settings load, a `SettingsLoadingSkeleton` (4 rows) is shown. If the query fails, a `SettingsErrorState` component is displayed with a "Failed to load Clinical settings" title and a retry button. Appending `?tour=cl-settings-tour` to the URL auto-starts the `clSettingsTour`. The `HelpButton` also triggers it manually. Several form fields (e.g., most assessment and treatment plan fields) are noted in code as "forward-compatible — columns planned." They are no-ops until database migrations add the corresponding columns. ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/CLSettingsPage.tsx * src/cores/cl/components/CLSettingsForm.tsx * src/cores/cl/hooks/useClModuleSettings.ts * src/cores/cl/hooks/useClModuleSettingsUpsert.ts # Clinician Panels Source: https://docs.encoreos.io/cl/clinician-panels Supervisor view of all clinician panel assignments showing panel size, average risk score, open care gaps, and unattributed patients. The Clinician Panels screen provides a supervisor-level overview of all clinician panel assignments and population health metrics at route `/cl/population-health/panels`. ## Overview The page displays a table of all clinicians who have active patient panels, drawn from `cl_patient_charts.assigned_clinician_id`. For each clinician the table shows panel size (number of assigned charts), average risk score (mean of `composite_risk_score` from `cl_risk_stratifications`), open gap count (count of `cl_care_gaps` with `status = 'open'`), and the date of the last risk stratification refresh. Clicking a clinician row navigates to that clinician's individual panel at `/cl/population-health/my-panel?clinicianId=`. A collapsible section below the main table lists patients whose charts have no assigned clinician (`assigned_clinician_id` is null); each row links to the patient chart at `/cl/charts/`. The table is sorted by open gap count descending. If no clinicians have active panels, an empty state is shown with guidance that panel attribution runs daily. ## Who it's for Requires permission `cl.population-dashboard.view`. ## Before you start * You must hold the `cl.population-dashboard.view` permission. * Clinician panels are populated from `cl_patient_charts`. If no data appears, verify that charts have `assigned_clinician_id` values set and that risk stratifications have been run. ## Steps Navigate to `/cl/population-health/panels`. The table loads with a skeleton state while data is fetched. Each row shows a clinician's name, panel size, average risk score, open gap count, and last refresh date. Rows are sorted by open gap count (highest first). Click any clinician row to navigate to that clinician's individual panel view at `/cl/population-health/my-panel?clinicianId=`. Click the "Unattributed Patients (N)" button to expand the collapsible section. Use "Open Chart" on any row to navigate to that patient's chart. ## Key concepts * **No clinicians with active panels** — shown when `clinicians` array is empty. The empty state message reads: "Panel attribution runs daily. Ensure patients have recent encounters or explicit clinician assignments." * **No unattributed patients** — shown inside the collapsible when `unattributedPatients` array is empty. Query results are cached with a 5-minute stale time (`staleTime: 5 * 60 * 1000`). The "Last Refresh" column reflects the most recent `stratification_date` from `cl_risk_stratifications` for that clinician's charts. ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/population-health/SupervisorPanelsPage.tsx * src/cores/cl/hooks/useClinicianPanelSummary.ts # Co-Sign Queue Source: https://docs.encoreos.io/cl/co-sign-queue Queue of signed progress notes awaiting supervisory co-signature, with deadline tracking, bulk co-sign, and overlap alerts. The Co-Sign Queue screen lists progress notes in `signed` or `pending_cosign` status that are awaiting supervisory co-signature, accessible at route `/cl/notes/cosign-queue`. ## Overview The page queries `cl_progress_notes` for the current organization where `status` is `signed` or `pending_cosign` and `deleted_at` is null, ordered by `service_date` ascending. Notes are displayed in a card with a count of pending co-signatures. For each note the display shows note type (from a label map: progress, addendum, outpatient, residential, iop\_php), service date, duration in minutes, days since signing, an AI draft badge, a quality score badge, and a deadline badge computed from `cosignature_deadline_days` (read from `cl_module_settings`, defaulting to 14 days). Clicking the note row navigates to `/cl/charts//notes/`. A co-sign button opens `ProgressNoteSignDialog` for the selected note. Notes with `ai_draft_indicator = true` have the co-sign button disabled and are excluded from bulk selection. If overlapping service times are detected across the organization's notes, a warning card shows up to 5 overlap details (service date, begin/end times, overlap minutes). Bulk co-sign is available via `BulkCosignDialog` when one or more eligible notes are selected. ## Who it's for Requires permission `cl.progress_note.cosign` (enforced by both `RequirePermission` in the route and inside the component). ## Before you start * You must hold the `cl.progress_note.cosign` permission. * Notes must be in `signed` or `pending_cosign` status to appear in the queue. ## Steps Navigate to `/cl/notes/cosign-queue`. The page loads with skeleton placeholders while data is fetched. Any overlapping service time alerts appear at the top. Each note row shows note type, service date, duration, days since signing, AI draft badge, quality score badge, and a deadline countdown badge (green outline, yellow warning at ≤3 days remaining, red destructive when overdue). Click "Co-sign" on any eligible note row (not blocked by `ai_draft_indicator`). The `ProgressNoteSignDialog` opens. Complete the dialog to co-sign. Check the checkbox next to one or more eligible notes (notes with `ai_draft_indicator = true` cannot be selected). Use "Select all eligible" to select all non-AI-draft notes. Click "Co-sign Selected (N)" to open `BulkCosignDialog`. Click the note row (not the co-sign button) to open the note detail at `/cl/charts//notes/`. ## Key concepts When no notes are pending, the card shows "All caught up — No notes are awaiting co-signature." Notes with `ai_draft_indicator = true` have the co-sign button disabled and are excluded from bulk selection. The `AiDraftBadge` component renders a visible indicator on each such note. * **Outline badge**: more than 3 days remaining * **Secondary badge with alert icon**: 1–3 days remaining * **Destructive badge with alert icon**: overdue (past deadline) `useOverlappingServiceTimes` runs client-side overlap detection across all non-deleted progress notes for the organization. Up to 5 overlap pairs are shown; a count is displayed if more exist. Overlap detection does not block co-sign. ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/ProgressNoteCosignQueuePage.tsx * src/cores/cl/hooks/useProgressNoteCosignQueue.ts * src/cores/cl/hooks/useClModuleSettings.ts * src/cores/cl/hooks/useOverlappingServiceTimes.ts # COD Source: https://docs.encoreos.io/cl/cod The /cl/cod route does not exist as a standalone screen. The active COD route is /cl/cod/caseload, which lists charts flagged as Co-Occurring Disorder. The `/cl/cod` path is **not a registered route** in the Clinical core router. The active route for Co-Occurring Disorder (COD) work is `/cl/cod/caseload`, which renders the COD Caseload page. ## Overview `/cl/cod` is **not a registered route**. Navigating to it renders the `NotFound` component. The operational screen lives at `/cl/cod/caseload`, which renders `CODCaseloadPage`. `CODCaseloadPage` displays charts where `cod_indicator = true` in `cl_patient_charts`. Each row shows: * Patient name and MRN * A COD badge * A "Plan Extension" badge if a `cl_cod_treatment_plan_extension` record exists for the chart * Total assessment count and last assessment date/type (from `cl_cod_assessments`) Clicking a row navigates to `/cl/charts/:chartId?tab=cod-assessments`. ## Who it's for Permission required: `cl.cod_assessments.view` (on the `/cl/cod/caseload` route). ## Before you start * You need the `cl.cod_assessments.view` permission. * Charts must have `cod_indicator = true` to appear in this list. ## Steps Go to `/cl/cod/caseload`. The page loads charts flagged as Co-Occurring Disorder for your organization. Use the search field to filter by patient name or MRN. Filtering is performed client-side on the loaded dataset. Each row shows the total number of assessments and the date and type of the most recent assessment. A "Plan Extension" badge indicates a treatment plan extension record is present. Click any row to navigate to the patient's chart with the `cod-assessments` tab pre-selected. ## Key concepts | Term | Meaning | | --------------------------------- | -------------------------------------------------------------------------------------------------- | | `cod_indicator` | Boolean field on `cl_patient_charts` marking a chart as Co-Occurring Disorder | | `cl_cod_assessments` | Table storing COD assessment records linked to a chart | | `cl_cod_treatment_plan_extension` | Table storing treatment plan extension records for COD charts | | `useCODCaseload` | Hook fetching up to 500 COD-flagged charts with assessment aggregates for the current organization | ## Related Clinical core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/CODCaseloadPage.tsx * src/cores/cl/hooks/useCODCaseload.ts # COD Caseload Source: https://docs.encoreos.io/cl/cod-caseload List of patient charts flagged as Co-Occurring Disorder with assessment count, last assessment metadata, and treatment plan extension status. The COD Caseload screen lists patient charts that have `cod_indicator = true` in `cl_patient_charts`, accessible at route `/cl/cod/caseload`. ## Overview The page queries `cl_patient_charts` for the current organization filtered to `cod_indicator = true`, limited to 500 rows ordered by `updated_at` descending. Patient name and MRN are resolved from `pm_patients`. Assessment metadata (last assessment date, last assessment type, total count) is aggregated from `cl_cod_assessments`. A boolean `has_treatment_plan_extension` is derived from the presence of non-archived rows in `cl_cod_treatment_plan_extension`. The results are displayed as a list of cards. A live search field filters by patient name or MRN client-side. Each card shows patient name, MRN, a "COD" badge, an optional "Plan Extension" badge, assessment count, and last assessment date and type. Clicking a card navigates to `/cl/charts/?tab=cod-assessments`. A count of filtered vs. total flagged charts is shown alongside the search field. ## Who it's for Requires permission `cl.cod_assessments.view` (enforced by `RequirePermission` in the route at `/cl/cod/caseload`). ## Before you start * You must hold the `cl.cod_assessments.view` permission. * Charts must be flagged with `cod_indicator = true` in `cl_patient_charts` to appear in this list. ## Steps Navigate to `/cl/cod/caseload`. Skeleton rows are shown while data loads. Any data error is displayed in a destructive card. Type in the search field to filter by patient name or MRN. The count of matching vs. total flagged charts updates in real time. Each row shows the patient name, MRN (if present), a COD badge, an optional Plan Extension badge, total assessment count, and the last assessment date and type. Click a patient row to navigate to `/cl/charts/?tab=cod-assessments`. ## Key concepts When no COD-flagged charts exist (or none match the current search), an empty state is shown: "No COD-flagged charts — Charts marked as Co-Occurring Disorder will appear here." The "Plan Extension" badge is shown when the chart has at least one non-archived row in `cl_cod_treatment_plan_extension` (`archived_at` is null). The hook fetches a maximum of 500 COD-flagged charts per query (`limit(500)`). Charts beyond this limit are not shown in the current view. The component note states that SUD content is gated at the chart detail layer. This caseload view displays only assessment counts, dates, and types — no SUD clinical content is shown on this screen. ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/CODCaseloadPage.tsx * src/cores/cl/hooks/useCODCaseload.ts # Co-Occurring Disorder (COD) Integrated Documentation — Admin Guide Source: https://docs.encoreos.io/cl/cod-documentation-admin-guide The seed migration assigns: **Compliance:** AHCCCS AMPM Policy 320-O, CARF Behavioral Health Standards §§4.A–4.C, 42 CFR Part 2. **Last Updated:** 2026-05-12 *** ## 1. Permission setup CL-31 introduces five permission keys (registered in `src/platform/permissions/constants.ts` and seeded into `pf_module_permissions`): | Key | Purpose | | -------------------------------- | ---------------------------------------------------------------------- | | `cl.cod_assessments.create` | Create new COD assessments (ASI-6, BASIS-32, GAIN-SS) | | `cl.cod_assessments.view` | Read COD assessment list and individual rows | | `cl.cod_assessments.edit` | Edit drafts and amend complete assessments | | `cl.cod_treatment_plan.manage` | Edit the COD extension on a CL-03 treatment plan | | `cl.cod_progress_notes.view_sud` | Read SUD section content in a dual-diagnosis note (subject to consent) | ### Default role assignments The seed migration assigns: * **`licensed_clinician`** — all five permissions. * **`clinical_admin`** — all five permissions. * **`platform_admin`** — inherits via the platform admin override. Custom roles must be granted these keys via `pf_role_permissions` per your tenant's role model. ## 2. Org-level configuration There are no tenant-level COD settings in Phase 1+2. Phase 3 may add a "COD documentation enabled" feature flag in `cl_module_settings.custom_fields`. ## 3. Audit and oversight * All access to `cl_cod_assessments` is governed by RLS (`pf_has_org_access`); cross-org reads return empty. * Mutations are timestamped via `created_by` / `updated_by`. The `prevent_org_id_change` trigger blocks any attempt to move a row between organizations. * SUD-content access is checked at every read via the `cl_check_sud_consent` RPC; default-deny applies on any failure or missing consent. * Consent grants are recorded in CL-11 (`cl_consents`); redisclosure events are logged in `cl_consent_redisclosure_log` (CL-11-EN-22). ## 4. Compliance crosswalk | Requirement | CL-31 Implementation | | -------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | | AHCCCS AMPM 320-O — Integrated assessment & care for COD | `cl_cod_assessments` (ASI-6) + COD treatment plan extension | | CARF BH §4.A — Person-centered planning | Goal tagging (MH/SUD/Both) on CL-03 plans | | CARF BH §4.B — Individualized service planning | ASAM level + dimensions 5/6 capture | | CARF BH §4.C — Service delivery and integration | Dual-diagnosis progress note with linked MOUD episode | | 42 CFR Part 2 §2.13 / §2.31 | Consent-gated SUD content via `redactSUDFields()` (default-deny) | | 42 CFR Part 2 §2.32 — Redisclosure notice | Phase 3 export paths required to render the redisclosure notice (open condition from compliance review) | ## 5. Troubleshooting **Consent gate stays in amber-banner state for an authorized clinician.** * Verify the patient has an active `sud_counseling_notes` consent in CL-11. * Check that the clinician's role has `cl.cod_progress_notes.view_sud`. * Confirm `cl_check_sud_consent` RPC is deployed (one of the CL-11 conditions for go-live). **COD indicator prompt never appears.** * The prompt fires once per browser session per chart. Clear localStorage or use the manual toggle in the chart header. **Assessment row missing from the COD tab.** * Confirm RLS — the row's `organization_id` must match the user's active org. * Filter chips may be applied; reset filters at the top of the tab. **Migration failures referencing `cl_moud_enrollments`.** * The `moud_episode_id` FK is nullable. If CL-21 is not deployed, the column remains unset; UI hides the MOUD callout. ## 6. Operational checklist before go-live * [ ] CL-11 consent service deployed (RPC + tables) — required by compliance condition #1. * [ ] Permission seed migration applied; verify with `SELECT * FROM pf_module_permissions WHERE permission_key LIKE 'cl.cod_%';`. * [ ] RLS smoke tests pass: `npm run test:rls -- cl-31-cod`. * [ ] Integration tests pass: `npm run test:integration -- cl-31-cod-workflow`. * [ ] Legal review of `sud_counseling_notes` consent type completed (compliance condition #3). * [ ] Tenant-specific COD documentation policy attached in GR. ## 7. Related references * [Consent compliance admin guide](/cl/consent-compliance-admin-guide) (CL-11) * [Electronic consent admin guide](/cl/electronic-consent-admin-guide) * [Clinical audit & compliance dashboard admin guide](/cl/clinical-audit-compliance-dashboard-admin-guide) * Spec: `specs/cl/specs/CL-31-co-occurring-disorder-integrated-documentation.md` * Compliance sign-off: `specs/cl/reviews/CL-31-COMPLIANCE-SIGNOFF.md` # Co-Occurring Disorder (COD) Integrated Documentation — User Guide Source: https://docs.encoreos.io/cl/cod-documentation-user-guide The COD indicator unlocks the integrated treatment plan and dual-diagnosis progress note. You can set it two ways: **Compliance:** AHCCCS AMPM Policy 320-O, CARF Behavioral Health Standards §§4.A–4.C, 42 CFR Part 2. **Last Updated:** 2026-05-12 *** ## 1. What COD documentation does CL-31 lets you document an integrated assessment, treatment plan, and progress notes for clients with both a mental-health (MH) and a substance-use (SUD) diagnosis ("co-occurring disorder"). It adds three things on top of the standard chart: * A **COD assessment tab** with ASI-6, BASIS-32, and GAIN-SS instruments. * A **COD treatment plan extension** with ASAM level of care and dimensions 5/6 notes. * A **dual-diagnosis progress note section** that records SUD content under 42 CFR Part 2 consent. ## 2. Marking a chart as COD The COD indicator unlocks the integrated treatment plan and dual-diagnosis progress note. You can set it two ways: 1. **Automatic prompt** — After you save your first COD assessment for a chart, the platform asks "Set COD Indicator?". Click **Set COD Indicator** to mark the chart. 2. **Manual toggle** — Use the COD badge near the patient name in the chart header at any time. The badge displays "COD" as a muted tag once set. Removing the indicator does not delete COD assessments — it only hides the integrated plan/progress-note sections. ## 3. Creating an ASI-6 assessment 1. Open the patient's chart and select the **COD Assessments** tab. 2. Click **New Assessment**. The assessment dialog opens. 3. Choose **ASI-6** as the instrument type at the top. 4. Expand each of the seven domains (Medical, Employment, Alcohol, Drug, Legal, Family/Social, Psychiatric) and enter a composite score 0–9. The severity badge is computed automatically (0–1 None, 2–3 Low, 4–5 Moderate, 6–9 Severe). 5. Add interviewer notes per domain. Notes are optional for **Save Draft** and required for **Complete Assessment**. 6. Click **Save Draft** to keep working, or **Complete Assessment** to finalize. 7. The dialog header shows "X of 7 domains scored" so you can track progress. > **About SUD domains (Alcohol, Drug):** You can always enter assessment scores. Read access for other users is gated by 42 CFR Part 2 consent — see §7. ## 4. BASIS-32 and GAIN-SS (Phase 2 generic form) The Phase 2 release captures BASIS-32 and GAIN-SS as a single total-score plus summary notes. The full subscale UI ships in the Phase 3 release. The instrument header shows: "Full subscale breakdown coming in a future release." ## 5. Amending a complete assessment On any assessment with status **Complete**, click **Amend** in the row's actions. The form reopens. Save your changes; the status moves to **Amended** and the original is preserved in the audit log. ## 6. COD treatment plan extension When a chart has the COD indicator set, the standard CL-03 treatment plan adds a collapsible **Co-Occurring Disorder (COD) Level of Care** section between the Goals section and the signatures. * **ASAM level** — Pick from 0.5 through 4.0. Leave blank for "Not yet determined." * **Dimension 5 / Dimension 6 notes** — Optional free-text fields for relapse potential and recovery environment. * **Goal tagging** — Each treatment goal gets a Domain chip: MH, SUD, or Both. Defaults to Both when COD is set. Keep goal descriptions general; document SUD-specific details in the progress note SUD section. * **MOUD link** — When CL-21 (MOUD) is enabled and a MOUD episode is linked, a read-only callout shows medication, current phase, and start date. ## 7. Writing a dual-diagnosis progress note 1. Create a progress note as usual (CL-04). When the chart's COD indicator is set, a **COD Session Type** selector appears with options **Standard (MH only)** and **Dual Diagnosis (COD)**. 2. Pick **Dual Diagnosis (COD)** and save the note. 3. Re-open the saved note. If the patient has an active 42 CFR Part 2 consent on file, the SUD section renders four fields: * SUD symptom summary * Substance use since last session * Cravings and urges * Treatment response 4. If consent is missing, the SUD section is replaced with an amber banner: "SUD documentation requires 42 CFR Part 2 consent." Click **Manage Consent →** to open the CL-11 consent workflow. 5. The consent check runs on every form load — you cannot bypass it. ## 8. Managing consent Consent is captured in CL-11. Open the **Consent** section of the chart, add a `sud_counseling_notes` consent for the disclosure recipient, and have the patient sign. Once active, the SUD section unlocks for any clinician with `cl.cod_progress_notes.view_sud`. ## 9. FAQs **Why can I enter SUD scores but not always read them later?** Entering data is gated by your role permissions; reading SUD content (notes, redisclosure exports) is gated by patient consent under 42 CFR Part 2. Default-deny applies on any consent-check failure. **Can I edit the auto-derived severity badge?** No. Severity is a deterministic function of the composite score in Phase 2. **The COD prompt did not appear after my first assessment.** The prompt fires once per browser session per chart. If you dismissed it, set the COD indicator manually from the chart header. **Where do I see all my COD patients?** The COD Caseload view ships in Phase 3 (see CL-31 spec §US-5). ## 10. Related guides * [Consent management user guide](/cl/consent-management-user-guide) (CL-11) * [Clinical reporting and quality measures user guide](/cl/clinical-reporting-quality-measures-user-guide) (CL-15) # Cohort Detail Source: https://docs.encoreos.io/cl/cohort View and manage a single patient cohort's definition, version history, membership snapshots, and audit trail. This screen displays the detail of a single patient cohort at route `/cl/cohorts/:cohortId`. ## Overview The Cohort detail page loads a cohort record by `cohortId` from `useCohortDetail`. The page header shows the cohort name, a status badge (`draft`, `active`, or `archived`), the current version number (`v{current_version}`), an optional description, and the last-updated date. Three tabs organize the content: **Versions** (renders `CohortVersionsTab`), **Membership** (renders `CohortMembershipTab`), and **Audit** (renders `CohortAuditTab`). The active tab is synchronized to the URL via `useTabUrlState`. A toolbar of action buttons adapts to the current status: Export is always available; Snapshot and Edit are visible for active cohorts; Publish is visible for draft cohorts; Return to draft is visible for active cohorts; Archive is available for non-archived cohorts. The Archive action triggers a `ConfirmationDialog` before committing. ## Who it's for Requires the `cl.cohort.view` permission to access this route. Additional permissions gate specific actions: `cl.cohort.edit_definition` for Snapshot, Edit, Publish, and Return to draft; `cl.cohort.archive` for Archive. ## Before you start * You must hold the `cl.cohort.view` permission. * The cohort must exist in the system; an unknown `cohortId` renders "Cohort not found." with a link back to `/cl/cohorts`. * To edit, snapshot, publish, or archive, you must also hold `cl.cohort.edit_definition` or `cl.cohort.archive` respectively. ## Steps Navigate to `/cl/cohorts` and select a cohort, or follow a direct link to `/cl/cohorts/:cohortId`. The page loads the name, status badge, version, and description. The **Versions** tab (default) shows the version history via `CohortVersionsTab`. Select the **Membership** tab to view the current membership snapshot via `CohortMembershipTab`. Select the **Audit** tab to view cohort change history via `CohortAuditTab`. Click **Edit** (requires `cl.cohort.edit_definition`) to open `CohortFormSheet` with the current definition pre-populated. Click **Snapshot** (requires `cl.cohort.edit_definition`) to open `CohortSnapshotDialog` and record a point-in-time membership snapshot. Use **Publish** to transition from `draft` to `active`, **Return to draft** to revert an `active` cohort, or **Archive** to archive a non-archived cohort. Archive requires confirmation via dialog. All three require `cl.cohort.edit_definition` (or `cl.cohort.archive` for archive). Click the **Export** button (`CohortExportButton`) to export cohort data. ## Key concepts A cohort starts as `draft`, transitions to `active` on publish, can be returned to `draft`, and is permanently moved to `archived`. Archived cohorts cannot be edited or snapshotted, but existing snapshots remain available for reporting. Each edit to a cohort increments `current_version`. The Versions tab displays the full version history loaded from `useCohortDetail`. If the cohort is not found or the current user lacks access, the page renders "Cohort not found. This cohort may have been removed or you may not have access." with a back link. ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/CohortDetailPage.tsx * src/cores/cl/hooks/cohorts/useCohortDetail.ts * src/cores/cl/hooks/cohorts/useCohortMutation.ts * src/cores/cl/types/cohorts.ts # Clinical Compliance Dashboard Source: https://docs.encoreos.io/cl/compliance-dashboard Summary dashboard of clinical report definitions, report run history, and incident counts with drill-down navigation to detail screens. The Compliance Dashboard provides a summary of clinical reporting and incident data for the current organization, accessible at route `/cl/compliance-dashboard`. ## Overview The page fetches data from three hooks in parallel: `useReportDefinitionList` (queries `cl_report_definitions`), `useReportRunList` (queries `cl_report_runs`), and `useIncidentList` (queries `cl_incidents`). Four summary metric cards are computed client-side: Report Definitions (total count from `cl_report_definitions`), Report Runs (count where `status = 'completed'` and count where `status = 'failed'`), Total Incidents (total count from `cl_incidents`), and Pending State Reports (count of incidents where `reported_to_state_at` is null). Each metric card is clickable and navigates to the corresponding detail screen (`/cl/report-definitions`, `/cl/report-runs`, or `/cl/incidents`). Below the metric cards, two informational text cards describe the Compliance Reports and AZDHS Incident Reporting sections. A loading skeleton of four cards is shown while data loads. ## Who it's for Requires permission `cl.report_definitions.view` (enforced by `RequirePermission` in the route at `/cl/compliance-dashboard`). ## Before you start * You must hold the `cl.report_definitions.view` permission. * Report definitions, runs, and incidents are all scoped to the current organization. ## Steps Navigate to `/cl/compliance-dashboard`. A 4-card skeleton loads while data is fetched from `cl_report_definitions`, `cl_report_runs`, and `cl_incidents`. The four cards show: total report definitions configured, completed and failed report runs, total incidents, and incidents pending state reporting (no `reported_to_state_at` date). Click the "Report Definitions" card to navigate to `/cl/report-definitions`. Click the "Report Runs" card to navigate to `/cl/report-runs`. Click either the "Total Incidents" or "Pending State Reports" card to navigate to `/cl/incidents`. ## Key concepts All four metric values are computed from data already loaded by the three hooks — no additional queries are made. The "completed" and "failed" counts are derived from `cl_report_runs.status`. "Critical/high" incidents are filtered by `severity === 'critical' || severity === 'high'`. The Compliance Reports card text states HEDIS/CARF reports require CL-10 (Outcomes Tracking) data (currently a stub) and PDF/CSV/Excel generation requires PF-12 (Report Engine) (currently placeholder data). The AZDHS card text states: "Once reported to the state, incidents become immutable for audit integrity." This is stated in the component's rendered text. ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/ComplianceDashboardPage.tsx * src/cores/cl/hooks/useReportDefinitions.ts * src/cores/cl/hooks/useReportRuns.ts * src/cores/cl/hooks/useIncidents.ts # Compliance Report Source: https://docs.encoreos.io/cl/compliance-report Aggregate-only 42 CFR Part 2 consent compliance statistics: SUD chart count, active consent count, coverage percentage, disclosures, and redisclosures. The Compliance Report screen displays aggregate consent compliance statistics for Substance Use Disorder (SUD) records under 42 CFR Part 2, accessible at route `/cl/compliance-report`. ## Overview The page uses `PermissionGate` with `cl.compliance_report.view` to control access, rendering a fallback message "You do not have permission to view compliance reports." when the permission is absent. The main content is rendered by `DashboardContent`, which calls `useComplianceStats`. That hook invokes the `cl_part2_compliance_stats` Supabase RPC function with `p_org_id` set to the current organization's ID. The RPC returns aggregate counts only; no patient identifiers are returned or displayed. Five metric cards are rendered: SUD Charts, Active Consents, Consent Coverage (as a percentage with one decimal place), Disclosures, and Redisclosures. An "About This Report" card beneath the metrics states that no patient identifiers are shown, consistent with 42 CFR Part 2 requirements, and that all data is scoped to the organization. A loading skeleton of five cards is shown while data loads. If the RPC returns an error, an error card is shown. ## Who it's for Requires permission `cl.compliance_report.view` (enforced by `PermissionGate` in the component and by `RequirePermission` in the route at `/cl/compliance-report`). ## Before you start * You must hold the `cl.compliance_report.view` permission. * Data is returned by the `cl_part2_compliance_stats` database RPC; if the RPC is unavailable or returns an error, an error card is displayed. ## Steps Navigate to `/cl/compliance-report`. A skeleton of five metric cards is shown while the `cl_part2_compliance_stats` RPC is called. The five cards display: SUD Charts, Active Consents, Consent Coverage (%), Disclosures, and Redisclosures. All values are organization-scoped aggregate counts — no patient identifiers are shown. A text card below the metrics describes the aggregate-only nature of the data and the organization scoping of the results. ## Key concepts The component comment and the "About This Report" card both state that no patient identifiers are displayed. The RPC `cl_part2_compliance_stats` returns only aggregate counts. This design is described as consistent with 42 CFR Part 2 requirements — SME should confirm. If `useComplianceStats` returns an error, the metric cards are replaced with a single card showing "Unable to load compliance statistics. Please try again later." If the RPC returns no rows, all five metrics default to zero (`sudChartCount: 0, activeConsentCount: 0, consentCoveragePct: 0, disclosureCount: 0, redisclosureCount: 0`). ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/Part2ComplianceDashboardPage.tsx * src/cores/cl/hooks/useComplianceStats.ts # Concurrent Review Source: https://docs.encoreos.io/cl/concurrent-review Work surface for a single concurrent review: record clinical criteria responses, capture a determination, and manage appeals. This screen is the detail and work surface for a single concurrent review at route `/cl/utilization-management/reviews/:reviewId`. ## Overview The Concurrent Review detail page loads a single review from `cl_concurrent_reviews` by `reviewId` and subscribes to real-time updates via `useConcurrentReviewsRealtime`. The page header shows the `review_type` (formatted by replacing underscores with spaces) and a `ReviewStatusBadge`. Three summary info cards display: Due date, Payer reference (falling back to `useAuthorizationContext`), and Approved through date (falling back to authorization context). The page body uses three tabs: **Criteria** (renders `CriteriaResponseForm`, edit-gated by `cl.reviews.manage`), **Determination** (renders `DeterminationRecording`, edit-gated by `cl.reviews.manage`), and **Appeals** (renders `AppealsSection`). View-only users see a "View-only access." message on the Criteria and Determination tabs. ## Who it's for Requires the `cl.reviews.view` permission to access this route. The **Criteria** and **Determination** tabs additionally require `cl.reviews.manage` to edit content; users without `cl.reviews.manage` see a read-only message on those tabs. ## Before you start * You must hold the `cl.reviews.view` permission. * The review record must exist in `cl_concurrent_reviews`; a missing record renders "Review not found." * To record criteria responses or a determination, you must also hold `cl.reviews.manage`. ## Steps Navigate from the UM Dashboard worklist or follow a direct link to `/cl/utilization-management/reviews/:reviewId`. The page loads the review header and summary cards. Inspect the three summary cards: Due date, Payer reference, and Approved through date. Select the **Criteria** tab. With `cl.reviews.manage`, use `CriteriaResponseForm` to document responses. Without the permission, a "View-only access." message is shown. Select the **Determination** tab. With `cl.reviews.manage`, use `DeterminationRecording` to capture the outcome. Without the permission, a "View-only access." message is shown. Select the **Appeals** tab. Use `AppealsSection` to view or manage appeals associated with this review. ## Key concepts The `ReviewStatusBadge` reflects the `status` field on the review record. Real-time updates via `useConcurrentReviewsRealtime` keep the status current without a page refresh. The page loads authorization context via `useAuthorizationContext(review.authorization_id)` to fill in payer reference and approved-through date when those fields are not directly set on the review record. A load error renders a sanitized error message. A missing review renders "Review not found." ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/ConcurrentReviewDetailPage.tsx * src/cores/cl/hooks/useConcurrentReviews.ts * src/cores/cl/hooks/useAuthorizationContext.ts # Consent Management — Admin Guide Source: https://docs.encoreos.io/cl/consent-compliance-admin-guide This guide covers two administrative features for consent management: ## Overview This guide covers two administrative features for consent management: 1. **Consent Expiration Reminders (EN-33)** — Configure automated notifications for expiring consents. 2. **Part 2 Compliance Dashboard (EN-34)** — View aggregate compliance metrics for 42 CFR Part 2. *** ## 1. Consent Expiration Reminders ### Configuration The reminder window is configured via **Clinical Settings** (`cl_module_settings`). * **Setting:** `consent_expiration_reminder_days` * **Default:** `[30, 14, 7]` — notifications are sent at 30, 14, and 7 days before expiration. * **Format:** Array of integers representing days before expiration. ### How It Works 1. A scheduled edge function (`consent-expiration-reminders`) runs daily (configured via Supabase Dashboard cron). 2. For each organization, it reads the configured reminder windows. 3. For each window, it queries consents expiring on that exact day. 4. Notifications are sent to: * The user who created the consent (`created_by`) * All organization administrators 5. **No PHI** is included in notification payloads — only counts (e.g., "3 consent(s) expiring in 7 days"). ### Cron Setup (Required) The edge function must be scheduled in the **Supabase Dashboard**: 1. Navigate to **SQL Editor** in your Supabase project. 2. Enable `pg_cron` and `pg_net` extensions if not already enabled. 3. Create a cron job to invoke the function daily (e.g., 06:00 UTC). ### Troubleshooting | Issue | Resolution | | ------------------------- | -------------------------------------------------------------- | | No notifications received | Verify cron job is active in Supabase Dashboard | | Wrong reminder windows | Check `consent_expiration_reminder_days` in Clinical Settings | | Duplicate notifications | The function uses `createNotificationIfNew` with 24-hour dedup | *** ## 2. Part 2 Compliance Dashboard ### Access * **Route:** `/cl/compliance-report` * **Permission required:** `cl.compliance_report.view` * By default, this permission is assigned to the `org_admin` role. ### Metrics Displayed | Metric | Description | | -------------------- | -------------------------------------------- | | **SUD Charts** | Total patient charts with SUD indicators | | **Active Consents** | Number of active Part 2 consents | | **Consent Coverage** | Percentage of SUD charts with active consent | | **Disclosures** | Total entries in the disclosure log | | **Redisclosures** | Count of disclosures marked as redisclosure | ### Security * All metrics are **aggregate counts only** — no patient identifiers are displayed or transmitted. * Dashboard access is logged for audit purposes (user ID, timestamp, action only). * The underlying `cl_part2_compliance_stats` function is `SECURITY DEFINER` with permission verification. ### Granting Access To grant compliance dashboard access to additional users: 1. Navigate to **Admin > Permissions**. 2. Assign `cl.compliance_report.view` to the desired role or user. *** ## Related Documentation * [Patient Portal Consent Guide](/cl/consent-portal-user-guide) — EN-35 patient-facing guide * [CL-11 Spec](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-11-consent-management-42cfr-part2.md) — Base consent management specification * [CL-11 Enhancements Catalog](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-11-ENHANCEMENTS.md) — All enhancement specifications # Consent Management & 42 CFR Part 2 — User Guide Source: https://docs.encoreos.io/cl/consent-management-user-guide The Consent Management module enables your organization to capture, track, and enforce patient consents in compliance with 42 CFR Part 2 (Substance Use Disorde… ## Overview The Consent Management module enables your organization to capture, track, and enforce patient consents in compliance with **42 CFR Part 2** (Substance Use Disorder confidentiality) and general HIPAA requirements. It provides: * **Consent capture** for multiple consent types (TPO, SUD counseling notes, legal proceedings, etc.) * **Consent lifecycle management** (active, expired, revoked) * **Disclosure logging** to track every instance of PHI sharing * **Accounting of Disclosures** export for patient requests and audits * **SUD detection** — charts flagged as SUD-indicated require Part 2 consent before access *** ## Permissions Required | Action | Permission Key | | -------------------------------- | -------------------------- | | View consents | `cl.consents.view` | | Create consents | `cl.consents.create` | | Revoke consents | `cl.consents.revoke` | | View disclosure log | `cl.disclosure_log.view` | | Create disclosure entries | `cl.disclosure_log.create` | | Export accounting of disclosures | `cl.disclosure_log.export` | Contact your organization administrator if you need access. *** ## Accessing Consent Management 1. Navigate to a **Patient Chart** (Clinical > Patient Charts > select patient). 2. Click the **"Consents"** tab to view and manage consents. 3. Click the **"Disclosures"** tab to view and log disclosures. *** ## Capturing a New Consent 1. On the **Consents** tab, click **"Add Consent"**. 2. Fill in the required fields: * **Consent Type**: Select the type (e.g., TPO, SUD Counseling Notes, Treatment). * **Category**: Select the category: * **Standard** — General HIPAA consent * **42 CFR Part 2** — SUD-specific consent (required for SUD records) * **Minor** — Consent involving a minor * **Guardian** — Guardian-provided consent * **Purpose**: Describe the purpose of the consent. * **Effective Date**: When the consent takes effect. * **Expiration Date** (optional): When the consent expires. 3. Click **"Create Consent"** to save. ### Key Rules * **SUD records** require a separate consent with category **"42 CFR Part 2"** before staff can access SUD-related documentation. * Consents without an expiration date remain active indefinitely until revoked. * The **"Legal Proceedings"** consent type should be used only for court-ordered or subpoena-related disclosures. *** ## Viewing Consent Status Each consent displays a status badge: | Status | Meaning | | -------------- | ----------------------------------------------- | | 🟢 **Active** | Consent is in effect (not expired, not revoked) | | 🟡 **Expired** | Consent expiration date has passed | | 🔴 **Revoked** | Consent was explicitly revoked | *** ## Revoking a Consent 1. On the **Consents** tab, find the consent to revoke. 2. Click the **"Revoke"** button (requires `cl.consents.revoke` permission). 3. Enter a **Revocation Reason** (required). 4. Click **"Revoke Consent"** to confirm. ### Important * Revocation is **permanent** — a revoked consent cannot be reactivated. * Revocation does **not** retroactively invalidate disclosures made while the consent was active. * After revocation, new disclosures for the covered scope will require a new consent. *** ## Logging a Disclosure Every time PHI is shared externally, a disclosure entry must be created: 1. Go to the **Disclosures** tab on the patient chart. 2. Click **"Log Disclosure"**. 3. Fill in the required fields: * **Disclosed To**: Name/organization receiving the information. * **Purpose**: Reason for the disclosure (e.g., "Continuity of care referral"). * **Record Types Disclosed**: What information was shared. * **Consent Reference**: Select the active consent that authorizes this disclosure. * **Redisclosure Notice Included**: Check this box to confirm the redisclosure prohibition notice was included (required for Part 2 records). 4. Click **"Log Disclosure"** to save. ### 42 CFR Part 2 Redisclosure Notice For SUD-related disclosures, you **must** include the following notice (or equivalent) with the disclosed information: > *"This information has been disclosed to you from records protected by federal confidentiality rules (42 CFR Part 2). The federal rules prohibit you from making any further disclosure of this information unless further disclosure is expressly permitted by the written consent of the person to whom it pertains or as otherwise permitted by 42 CFR Part 2."* *** ## Accounting of Disclosures Export Patients have the right to request an accounting of all disclosures of their PHI: 1. Go to the **Disclosures** tab. 2. Click **"Export Accounting"** (requires `cl.disclosure_log.export` permission). 3. Optionally set a **date range** to filter disclosures. 4. A CSV file will download containing: * Disclosure date * Recipient * Purpose * Record types disclosed * Consent reference * Redisclosure notice status *** ## SUD Detection & Consent Enforcement Charts flagged with **SUD Indicated** in the patient chart flags require a valid **42 CFR Part 2** consent before clinical staff can access SUD-related records. The system automatically: 1. Checks the chart's `sud_indicated` flag. 2. Verifies an active Part 2 consent exists for the chart. 3. Blocks access if no valid consent is found (via database-level enforcement). *** ## Frequently Asked Questions **Q: Can I edit a consent after creating it?**\ A: You can update purpose, scope, and named parties. You cannot change the consent type or category after creation. To change these, revoke the existing consent and create a new one. **Q: What happens when a consent expires?**\ A: The consent status changes to "Expired" automatically. No new disclosures can reference an expired consent. A new consent must be captured if continued disclosure is needed. **Q: Who can hard-delete a consent?**\ A: Only organization administrators can hard-delete consent records. Standard users should use revocation instead. *** ## References * [42 CFR Part 2 Final Rule](https://www.hhs.gov/hipaa/part-2/index.html) * [CL-11 Specification](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-11-consent-management-42cfr-part2.md) # Patient Portal — Consent Self-Service User Guide Source: https://docs.encoreos.io/cl/consent-portal-user-guide The Consent Self-Service feature allows you to view your active, expired, and revoked consents directly from the patient portal. You can also submit requests t… ## Overview The Consent Self-Service feature allows you to view your active, expired, and revoked consents directly from the patient portal. You can also submit requests to revoke or modify existing consents. *** ## Viewing Your Consents 1. Log in to the **Patient Portal**. 2. Navigate to **My Consents** from the portal menu. 3. You will see a list of all consents associated with your care, including: * **Consent type** (e.g., Treatment/Payment/Operations, SUD Counseling Notes) * **Category** (Standard, 42 CFR Part 2, Minor, Guardian) * **Status** — Active (green), Expired (amber), or Revoked (red) * **Effective and expiration dates** ### Status Definitions | Status | Meaning | | ----------- | -------------------------------------------- | | **Active** | Consent is currently in effect | | **Expired** | Consent has passed its expiration date | | **Revoked** | Consent was revoked by you or your care team | *** ## Requesting a Consent Change If you wish to revoke a consent or request a scope change: 1. Find the consent in **My Consents**. 2. Click **Request Change** on the consent row. 3. In the dialog that appears: * Select the **Request Type**: Revocation or Scope Change. * Provide **Details** explaining your request. 4. Click **Submit Request**. 5. A confirmation toast will appear. Your request is now pending staff review. ### What Happens Next * Your request is recorded and sent to your care team for review. * A staff member will process the request per organizational policy. * **Important:** Submitting a request does not immediately revoke or change your consent. A staff member must approve and execute the change. *** ## Frequently Asked Questions **Q: Can I revoke a consent immediately?**\ A: No. For your safety and regulatory compliance, consent changes are reviewed by your care team before taking effect. **Q: Will I be notified when my request is processed?**\ A: Your care team will follow up with you regarding the status of your request. **Q: Can I see consents from a different facility?**\ A: You can only view consents associated with your current care organization. *** ## Need Help? Contact your care team or the front desk if you have questions about your consents or need assistance using the portal. # Content Marketplace Source: https://docs.encoreos.io/cl/content-marketplace Browse and filter platform-curated clinical content bundles; view bundle items, tags, and version; and import bundles into your organization. The Content Marketplace screen lets users browse and preview platform-curated clinical content bundles at route `/cl/marketplace`. ## Overview The Content Marketplace displays all non-deprecated bundles from the `cl_marketplace_bundles` table, ordered by `published_at` descending. Bundles are global records with no `organization_id` — any authenticated user with the `cl.marketplace.browse` permission can browse them. The catalogue is displayed as a responsive card grid (`sm:grid-cols-2`, `xl:grid-cols-3`). A filter sidebar (`MarketplaceFilterSidebar`) allows narrowing by accreditation tag, clinical area tag, and free-text search. Import status — indicating whether your organization already has a version of a bundle — is surfaced on each `MarketplaceBundleCard` via the `useImportedBundleKeys` hook. Selecting a card navigates to the bundle detail page at `/cl/marketplace/:bundleId`. ## Who it's for Requires permission `cl.marketplace.browse`. The **Import** button is additionally gated on `cl.marketplace.import`. ## Before you start You must hold the `cl.marketplace.browse` permission. The marketplace catalogue is read-only for browse users; importing a bundle requires the separate `cl.marketplace.import` permission (handled at `/cl/marketplace/imports`). ## Steps Navigate to `/cl/marketplace`. The catalogue loads all non-deprecated bundles, ordered by most recently published. Use the filter sidebar on the left to narrow by accreditation tags (Joint Commission, CARF, SAMHSA, NCQA), clinical area tags (SUD, MH, Co-Occurring, Crisis, Residential, Outpatient, IOP/PHP, MAT/MOUD), or enter a search term to match against bundle name and description. Each `MarketplaceBundleCard` shows the bundle name, description, and accreditation/clinical-area tags. If your organization has already imported a version, the imported version number is shown. Click a card to navigate to `/cl/marketplace/:bundleId` for the full bundle detail, including its items list. If no bundles match the current filters, an empty state appears with a "Clear filters" action that resets all filters to `{}`. ## Key concepts Each bundle has a `bundle_key` (stable identifier) and an integer `version`. Subsequent bundle versions reuse the same `bundle_key` with a higher `version` number. The catalogue displays only the non-deprecated entries. The `useImportedBundleKeys` hook returns a `Map` of `bundle_key` to the currently imported record for your organization. A badge on the card reflects the imported version so you can tell if a newer version is available. If the bundles query or the imported-keys query errors, an "Error Loading Marketplace" empty state appears with a Retry action. If filters match nothing, a "No bundles match these filters" state appears with a Clear filters action. ## Viewing a bundle The Bundle Details page displays the detail of a single marketplace bundle at route `/cl/marketplace/:bundleId` (permission: `cl.marketplace.browse`). The **Import** button requires `cl.marketplace.import`. The page loads a marketplace bundle from `cl_marketplace_bundles` by `bundleId` and its items from `cl_marketplace_bundle_items` via separate hooks. The page header shows the bundle name, optional description, `accreditation_tags` (outline badges), `clinical_area_tags` (secondary badges), version number, and published timestamp. If a prior version of this bundle has already been imported (tracked by `bundle_key` in `cl_marketplace_imports`), and the catalogue version is higher, an `UpdateBanner` is shown prompting the user to view the update. Clicking **Import** or **View Update** opens the `ImportPreviewSheet`, which shows the bundle contents and confirms the import via `useImportMarketplaceBundle`. A `BundleItemList` below the header lists all items with their count. 1. Navigate from `/cl/marketplace` and select a bundle, or follow a direct link to `/cl/marketplace/:bundleId`. The page loads bundle metadata and items. 2. Inspect the bundle name, description, accreditation tags, clinical area tags, version, and published date. 3. The **Bundle Contents** section lists all items via `BundleItemList`, showing the total item count. 4. If an `UpdateBanner` appears, a newer version of this bundle is available compared to the version already imported. Click **View Update** to preview changes. 5. Click **Import** (requires `cl.marketplace.import`) to open the `ImportPreviewSheet`. Review items and confirm the import. On success, the sheet closes and the import is recorded in `cl_marketplace_imports` for the organization. Bundles can contain items of the following types: `assessment_template`, `note_template`, `cds_rule`, `pathway_definition`, `treatment_plan_template`, `goal_bank_entry`, `order_set`, `locus_instrument`, `group_curriculum`, `screening_instrument`. Accreditation tags include `Joint Commission`, `CARF`, `SAMHSA`, and `NCQA`. Clinical area tags include `SUD`, `MH`, `Co-Occurring`, `Crisis`, `Residential`, `Outpatient`, `IOP/PHP`, and `MAT/MOUD`. The page compares the imported version (from `useImportedBundleKeys`) against the current catalogue version. If `bundle.version > importedVersion`, the `UpdateBanner` is shown. A bundle load error renders "Error Loading Bundle" with a sanitized message and a back button. A missing bundle renders "Bundle not found." with a back button. ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/MarketplaceCataloguePage.tsx * src/cores/cl/hooks/useMarketplaceBundles.ts * src/cores/cl/types/marketplace.ts * src/cores/cl/pages/MarketplaceBundleDetailPage.tsx * src/cores/cl/hooks/useMarketplaceBundleItems.ts * src/cores/cl/hooks/useMarketplaceImports.ts # Controlled Substance Inventory Source: https://docs.encoreos.io/cl/controlled-substance-inventory Track controlled substance receipts, dispensing, adjustments, counts, returns, and destructions per organization. The Controlled Substance Inventory screen provides a transaction log for controlled substance activity at route `/cl/controlled-substances`. ## Overview The page renders a list of inventory transactions from the `cl_controlled_substance_inventory` table, scoped to the current organization via `organization_id`. Transactions are ordered by `created_at` descending and soft-deleted records (`deleted_at IS NOT NULL`) are excluded. The `InventoryList` component accepts filter props (`siteId`, `ndcCode`, `schedule`, `transactionType`, `dateFrom`, `dateTo`) that are applied server-side in the query. Users with `cl.inventory.create` see a "Record Transaction" button that opens `InventoryTransactionFormDialog`. Users with `cl.inventory.admin` additionally see an `ArcosExportButton`. A running-balance reconciliation is available per NDC code and optional site via the `useInventoryReconciliation` hook (not surfaced on this list page itself). ## Who it's for Requires permission `cl.inventory.view`. ## Before you start You must hold the `cl.inventory.view` permission to access this page. Recording new transactions additionally requires `cl.inventory.create`. The ARCOS export action requires `cl.inventory.admin`. ## Steps Navigate to `/cl/controlled-substances`. The page loads all non-deleted transactions for your organization, ordered by most recent first. Use the filter controls in `InventoryList` to narrow by site, NDC code, schedule, transaction type, or date range. Filters are applied server-side. Click "Record Transaction" (requires `cl.inventory.create`). The `InventoryTransactionFormDialog` opens. Fill in the required fields. If recording a Schedule II dispense, a witness must be provided — the system enforces this in the mutation and will return an error if `witness_id` is absent. Click the ARCOS export button (requires `cl.inventory.admin`) to initiate the export action. ## Key concepts The `transaction_type` column accepts: `receive`, `dispense`, `adjust`, `count`, `return`, `destroy`. The reconciliation logic in code treats `receive`, `return`, and `adjust` as additive to the running balance, and `dispense` and `destroy` as subtractive. A `count` transaction records a physical count but does not change the computed running balance. The `useCreateInventoryTransaction` mutation checks: if `schedule === 'II'` and `transaction_type === 'dispense'`, it throws if `witness_id` is absent. This check runs client-side in the mutation function before the database insert. Transactions are never hard-deleted. The `useDeleteInventoryTransaction` mutation sets `deleted_at` to the current timestamp. Deleted records are excluded from all list and reconciliation queries. When the query returns no transactions (or loading is in progress), the `InventoryList` shows either skeleton placeholders or an empty state. ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/ControlledSubstanceInventoryPage.tsx * src/cores/cl/hooks/useControlledSubstanceInventory.ts # Create Bundle Version Source: https://docs.encoreos.io/cl/create-bundle-version Publish a new marketplace bundle version with metadata fields and a JSON items array via the curator editor form. The Create Bundle Version screen is the curator editor form for publishing a new marketplace bundle at route `/cl/marketplace/curator/new`. ## Overview The page renders a form for curators to publish a new bundle row to `cl_marketplace_bundles` along with its `cl_marketplace_bundle_items` entries. The form collects `bundle_key`, `version` (integer), `name`, `description`, `accreditation_tags` (comma-separated), `clinical_area_tags` (comma-separated), and an `items` JSON textarea. The items JSON must be an array of objects each containing `item_type`, `item_key`, and `payload`. Supported `item_type` values are enumerated in `MARKETPLACE_ITEM_TYPES`: `assessment_template`, `note_template`, `cds_rule`, `pathway_definition`, `treatment_plan_template`, `goal_bank_entry`, `order_set`, `locus_instrument`, `group_curriculum`, `screening_instrument`. On submission, `usePublishMarketplaceBundleVersion` inserts the bundle row then the items in sequence — if the items insert fails after a successful bundle insert, an orphaned empty bundle row is left visible. On success, the user is navigated back to `/cl/marketplace/curator`. Authorization is enforced at the database layer via the `cl_can_curate_marketplace` SECURITY DEFINER helper. ## Who it's for Requires permission `cl.marketplace.publish`. ## Before you start You must hold the `cl.marketplace.publish` permission. A `bundle_key` identifies the bundle across versions — subsequent versions of the same bundle reuse the same `bundle_key` with a higher `version` integer. Prepare the items JSON array before submitting; a sample structure is pre-populated in the textarea. ## Steps Go to `/cl/marketplace/curator/new`, or click the create action from the curator list at `/cl/marketplace/curator`. Fill in the required fields: Bundle key (e.g., `carf-sud-core`), Version (integer starting at 1), and Name (e.g., `CARF SUD Core Bundle`). Optionally add a Description, accreditation tags (comma-separated), and clinical area tags (comma-separated). Edit the Items textarea. Each element must be a JSON object with `item_type` (one of the supported types listed below the field), `item_key` (non-empty string), and `payload` (object). An optional `ordering` integer can be provided; items default to their array index order. Click "Publish". The form validates the items JSON client-side. If the JSON is invalid or any item fails validation, a destructive alert displays the parse error and submission is blocked. On success a toast confirms the published bundle name and version, and the page navigates back to the curator list. Click Cancel or the "Back to curator" ghost button to discard and return to `/cl/marketplace/curator` without publishing. ## Key concepts `MARKETPLACE_ITEM_TYPES` (from `src/cores/cl/types/marketplace.ts`): `assessment_template`, `note_template`, `cds_rule`, `pathway_definition`, `treatment_plan_template`, `goal_bank_entry`, `order_set`, `locus_instrument`, `group_curriculum`, `screening_instrument`. Any other value will cause a client-side parse error. The publish mutation inserts the bundle row first, then inserts the items in a second call. These are not wrapped in a database transaction. An items insert failure after a successful bundle insert leaves an empty bundle visible in the catalogue. A future iteration is noted in the code comment to move publish to an Edge Function. If the items textarea contains invalid JSON or a validation error (wrong type, missing key, etc.), an alert with variant `destructive` appears below the form describing the error. Submission is blocked until the error is resolved. ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/MarketplaceCuratorEditorPage.tsx * src/cores/cl/hooks/useMarketplaceCurator.ts * src/cores/cl/types/marketplace.ts # Curriculum Library Source: https://docs.encoreos.io/cl/curriculum-library Manage group therapy curricula — create, edit, and soft-delete curriculum records with topics and program type for your organization. The Curriculum Library screen displays and manages group therapy curriculum records for the current organization at route `/cl/group-sessions/curricula`. ## Overview The Curriculum Library renders a card grid of curriculum records from the `cl_group_curricula` table, scoped to the current organization and ordered alphabetically by name. Soft-deleted records (`deleted_at IS NOT NULL`) are excluded. Each card displays the curriculum name, program type label (from `PROGRAM_TYPE_OPTIONS`), an optional language badge, and a topics count. Users with the `cl.group_curricula.manage` permission see Edit (pencil) and Delete (trash) icon buttons on each card, and a "New Curriculum" button in the page header. The `CurriculumFormDialog` handles both create and edit; the `AlertDialog` confirms deletions. The wrapper component `CurriculumListPageWrapper` re-exports `CurriculumListPage` without additional logic. ## Who it's for Requires permission `cl.group_curricula.view`. ## Before you start You must hold the `cl.group_curricula.view` permission to access this screen. Creating, editing, or deleting curricula requires the additional `cl.group_curricula.manage` permission. ## Steps Navigate to `/cl/group-sessions/curricula`. The page loads all active (non-deleted) curricula for your organization, sorted alphabetically by name. Each card shows the curriculum name, program type, language badge (if set), and the number of topics defined. Click "New Curriculum" (requires `cl.group_curricula.manage`). The `CurriculumFormDialog` opens with blank fields. Fill in the required fields and save. Click the pencil icon on any card (requires `cl.group_curricula.manage`). The `CurriculumFormDialog` opens pre-populated with the existing values. Update and save. Click the trash icon on any card (requires `cl.group_curricula.manage`). A confirmation dialog appears. Confirming performs a soft delete (sets `deleted_at`). The curriculum is removed from the list on success. ## Key concepts Each curriculum has an optional `program_type` field. The display label is resolved from `PROGRAM_TYPE_OPTIONS` (from `src/cores/cl/types/group-therapy.ts`). If no match is found, the raw value is shown; if null, a dash is rendered. The `topics` field is an array. The card shows the count (e.g., "3 topics") or "No topics defined" if the array is empty. Topic content is not displayed on this list view. Deletion sets `deleted_at` on the `cl_group_curricula` row. The list query filters `deleted_at IS NULL` so the record disappears from the list immediately after confirmation. The code comment in the delete dialog states that linked sessions are not affected. If no active curricula exist, a centered empty state shows a `BookOpen` icon, the text "No curricula yet", and a "Create Curriculum" button (gated by `cl.group_curricula.manage`). ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/CurriculumListPageWrapper.tsx * src/cores/cl/components/group-therapy/CurriculumListPage.tsx * src/cores/cl/hooks/useGroupCurricula.ts * src/cores/cl/types/group-therapy.ts # Discharge Source: https://docs.encoreos.io/cl/discharge Manage discharge planning, aftercare follow-ups, and HEDIS FUH/FUM compliance tracking via a tabbed hub screen. The Discharge screen is a tabbed hub for discharge and aftercare planning at route `/cl/discharge`. ## Overview The Discharge Hub is a tabbed page with two tabs: **Overview** and **HEDIS Follow-Up**. The tab selection is persisted in the URL via `useTabUrlState` (query param `tab`). The HEDIS Follow-Up tab badge displays a count of open (non-met) denominator events from `useHedisOpenCount`, which queries `cl_aftercare_plans` for records where `hedis_fuh_denominator` or `hedis_fum_denominator` is true and the derived overall status is not `met`. The Overview tab currently shows three summary cards — Aftercare Plans, Warm Handoffs, and Follow-Up Contacts (7-day and 30-day) — all displaying a placeholder `—` value; the code comments direct users to the HEDIS Follow-Up tab for compliance details. The HEDIS Follow-Up tab is rendered by `HedisFollowUpTab`, which uses `useHedisWorklist` to fetch aftercare plans with follow-up contact records from `cl_aftercare_plans` and `cl_follow_up_contacts`. ## Who it's for Requires permission `cl.hedis-tracking.view`. ## Before you start You must hold the `cl.hedis-tracking.view` permission. The entire page, including the Overview tab, is wrapped in a `PermissionGate` for this permission. ## Steps Navigate to `/cl/discharge`. The page defaults to the Overview tab. A badge on the HEDIS Follow-Up tab indicates the count of open denominator events, if any. The Overview tab displays three summary cards: Aftercare Plans, Warm Handoffs, and Follow-Up Contacts. These cards currently show `—` as placeholder values. For compliance details, proceed to the HEDIS Follow-Up tab. Click the "HEDIS Follow-Up" tab (or navigate to `/cl/discharge?tab=hedis-follow-up`). The `HedisFollowUpTab` renders the worklist of aftercare plans that are in a HEDIS denominator. Use the measure filter (`all`, `fuh`, `fum`) and status filter (`all`, `met`, `pending`, `overdue`) available in `useHedisWorklist` to narrow the displayed plans. The status filter is applied client-side after the server query. ## Key concepts The `cl_aftercare_plans` table stores boolean flags: `hedis_fuh_denominator`, `hedis_fum_denominator`, `hedis_fuh_numerator_7`, `hedis_fuh_numerator_30`, `hedis_fum_numerator_7`, `hedis_fum_numerator_30`. The `getNumeratorStatus` utility derives a status of `met`, `pending`, or `overdue` based on whether the numerator flag is true and the time elapsed since `plan_date` relative to `HEDIS_FOLLOW_UP_WINDOWS` (7-day and 30-day). The active tab is stored in the `tab` URL query parameter via `useTabUrlState`. Valid values are `overview` and `hedis-follow-up`. Navigating directly to `/cl/discharge?tab=hedis-follow-up` opens the HEDIS worklist tab directly. The HEDIS Follow-Up tab badge is driven by `useHedisOpenCount`, which counts aftercare plans in any denominator whose derived status is not `met`. This count is fetched independently of the worklist to keep the badge lightweight. The worklist fetches `cl_follow_up_contacts` records (soft-delete filtered) grouped by `aftercare_plan_id` and joined in memory with their parent aftercare plans. ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/DischargeHubPage.tsx * src/cores/cl/hooks/useHedisWorklist.ts # Discharge & Aftercare Planning — Admin Guide Source: https://docs.encoreos.io/cl/discharge-aftercare-admin-guide This guide covers administrative configuration for the Discharge & Aftercare Planning feature, including permission setup, compliance alignment, and data gover… ## Overview This guide covers administrative configuration for the Discharge & Aftercare Planning feature, including permission setup, compliance alignment, and data governance. *** ## Permission Configuration CL-29 uses 9 permission keys. Assign these via **Settings > Permissions** based on clinical role. | Permission Key | Description | Recommended Roles | | ------------------------------ | ------------------------- | -------------------------------------- | | `cl.aftercare-plans.view` | View aftercare plans | All clinical staff | | `cl.aftercare-plans.create` | Create aftercare plans | Licensed clinicians, supervisors | | `cl.aftercare-plans.update` | Edit aftercare plans | Licensed clinicians, supervisors | | `cl.follow-up-contacts.view` | View follow-up contacts | All clinical staff | | `cl.follow-up-contacts.create` | Record follow-up contacts | Clinical staff, care coordinators | | `cl.readmission-risk.view` | View risk assessments | All clinical staff | | `cl.readmission-risk.create` | Create risk assessments | Licensed clinicians, supervisors | | `cl.warm-handoffs.view` | View warm handoffs | All clinical staff | | `cl.warm-handoffs.create` | Document warm handoffs | Licensed clinicians, care coordinators | ### Role Mapping | Role | Recommended Permissions | | -------------------------- | ------------------------------------------------------- | | **Licensed Clinician** | All 9 permissions | | **Provisionally Licensed** | All view + create (plans require co-sign per HR-19) | | **Care Coordinator** | All view + follow-up create + handoff create | | **Nurse** | All view permissions | | **Peer Support** | `cl.aftercare-plans.view`, `cl.follow-up-contacts.view` | *** ## Compliance Standards ### HEDIS FUH (Follow-Up After Hospitalization) The follow-up contacts feature supports HEDIS FUH measure tracking: * **7-Day Follow-Up**: Mental health follow-up within 7 days of discharge * **30-Day Follow-Up**: Mental health follow-up within 30 days of discharge Contact types map directly to HEDIS reporting periods. Outcomes track whether patients were reached and their clinical status. ### Joint Commission (CAMBHC) Aftercare plans align with Joint Commission standards for discharge planning: * Documented housing arrangements * Medication continuation plans * Recovery goals in patient's own words * Community resource linkage * Family/caregiver involvement ### AHCCCS Requirements Arizona Medicaid (AHCCCS) requires: * Discharge planning initiated at admission * Aftercare plans with measurable goals * Follow-up contact documentation * Warm handoff documentation for care transitions *** ## Data Model ### Tables | Table | Purpose | Soft Delete | | ---------------------------- | ------------------------------- | ------------------ | | `cl_aftercare_plans` | Discharge planning documents | Yes (`deleted_at`) | | `cl_follow_up_contacts` | Post-discharge outreach records | Yes | | `cl_readmission_risk_scores` | Risk assessment scores | Yes | | `cl_warm_handoffs` | Provider handoff documentation | Yes | ### Custom Fields The `custom_fields` JSONB column on `cl_aftercare_plans` stores: * `step_down_plan` — Level of care step-down pathway * `family_contact_name` — Primary family/caregiver name * `family_contact_phone` — Family/caregiver phone * `family_involvement_notes` — Family involvement in aftercare Organizations can extend `custom_fields` via the Custom Fields platform feature (PF-16). *** ## Data Retention All discharge-related records follow the organization's standard clinical data retention policy. Records use soft delete (`deleted_at` timestamp) — data is hidden from queries but preserved in the database. Only `org_admin` role can perform hard deletes via RLS policy. *** ## Row-Level Security All four tables enforce multi-tenant isolation: * **SELECT**: Users can only view records within their organization * **INSERT**: `organization_id` is enforced on all inserts * **UPDATE**: Scoped to organization; `WITH CHECK` prevents cross-tenant data movement * **DELETE**: Restricted to `org_admin` role *** ## Audit Considerations * All tables include `created_by`, `updated_by`, `created_at`, `updated_at` columns * The `update_updated_at_column()` trigger automatically maintains `updated_at` * Aftercare plan finalization publishes the `Discharge.AftercarePlan.Finalized` domain event * Warm handoff documentation creates an auditable record of care transfer responsibility *** ## Integration Points | Integration | Description | | -------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | | **CL-18 SDOH** | SDOH screening data surfaces in the Discharge tab; aftercare plans can auto-populate community resources from SDOH referrals | | **CL-12 Care Transitions** | Warm handoffs reference care transitions (when available) | | **HR Employees** | Warm handoff caller/receiver fields use the platform Employee Selector | | **PF Permissions** | All UI elements are gated by permission keys | *** ## Monitoring Track these metrics for quality assurance: * **Aftercare plan completion rate** — % of discharged patients with aftercare plans * **7-day follow-up rate** — HEDIS FUH compliance metric * **30-day follow-up rate** — HEDIS FUH compliance metric * **Average readmission risk score** — Population health indicator * **Warm handoff documentation rate** — Care transition quality metric # Discharge & Aftercare Planning — User Guide Source: https://docs.encoreos.io/cl/discharge-aftercare-user-guide The Discharge & Aftercare Planning feature helps clinical staff prepare patients for successful transitions from active treatment to community-based recovery.… ## Overview The Discharge & Aftercare Planning feature helps clinical staff prepare patients for successful transitions from active treatment to community-based recovery. It provides tools for creating comprehensive aftercare plans, tracking post-discharge follow-up contacts, assessing readmission risk, and documenting provider-to-provider warm handoffs. Access the Discharge tab from any patient chart: **Clinical > Patient Chart > Discharge**. *** ## Navigating to the Discharge Tab 1. Go to **Clinical** from the main navigation. 2. Open a patient chart. 3. Select the **Discharge** tab. The Discharge section displays four cards: * **Aftercare Plans** — Comprehensive discharge planning documents * **Follow-Up Contacts** — Post-discharge outreach tracking (HEDIS FUH) * **Readmission Risk** — Risk assessment scores (0–100 scale) * **Warm Handoffs** — Provider-to-provider handoff documentation If the patient has SDOH screening data (CL-18), summary badges appear at the top showing identified social needs and active referrals. *** ## Creating an Aftercare Plan 1. Click **New Plan** in the Aftercare Plans card. 2. Fill in the required **Plan Date**. 3. Complete any relevant sections: * **Housing Plan** — Post-discharge living arrangements * **Medication Continuation** — Ongoing medication regimen * **Recovery Goals** — Patient's personal recovery objectives * **Employment Plan** — Vocational or employment support * **Follow-Up Appointments** — Scheduled post-discharge visits * **Community Resources** — Local support services and referrals 4. **Optional sections** (expand by clicking): * **Step-Down Plan** — Level of care pathway (e.g., Residential → IOP → OP) * **Family/Caregiver Involvement** — Contact name, phone, and involvement notes 5. Click **Create Plan**. ### Linking SDOH Data If the patient has SDOH screening results (CL-18), a **Link from SDOH** button appears next to the Community Resources field. Clicking it auto-populates the field with identified social needs and active referrals. *** ## Recording Follow-Up Contacts Follow-up contacts track post-discharge outreach per HEDIS Follow-Up After Hospitalization (FUH) standards. 1. Click **Record Follow-Up** in the Follow-Up Contacts card. 2. Select the **Contact Type**: * **7-Day Follow-Up** — Required within 7 days of discharge * **30-Day Follow-Up** — Required within 30 days of discharge * **Other** — Additional follow-up contacts 3. Enter the **Contact Date**. 4. Select the **Outcome**: * Reached — Stable * Reached — Needs Support * Reached — In Crisis * Unable to Reach * Declined 5. Add any **Notes** about the contact. 6. Click **Record Contact**. *** ## Assessing Readmission Risk Risk assessments help identify patients who may need enhanced aftercare support. 1. Click **Assess Risk** in the Readmission Risk card. 2. Enter the **Assessment Date**. 3. Set the **Risk Score** (0–100): * **0–39** (Low) — Standard aftercare * **40–69** (Moderate) — Enhanced follow-up recommended * **70–100** (High) — Intensive aftercare planning required 4. Document **Risk Factors** contributing to the score. 5. Add any **Notes**. 6. Click **Record Assessment**. Risk scores display with color-coded badges: green (low), yellow (moderate), red (high). *** ## Documenting Warm Handoffs Warm handoffs document the direct provider-to-provider transfer of care responsibility. 1. Click **Document Handoff** in the Warm Handoffs card. 2. Optionally enter a **Care Transition Reference** (links to a specific care transition if applicable). 3. Select the **Calling Provider** from the employee dropdown. 4. Select the **Receiving Provider** from the employee dropdown. 5. Add **Acceptance Notes** documenting what was communicated. 6. Click **Document Handoff**. The handoffs table displays the caller and receiver names, acceptance status, and notes. *** ## Interpreting Risk Scores | Score Range | Level | Badge Color | Recommended Action | | ----------- | -------- | ----------- | ----------------------------------------------------------- | | 0–39 | Low | Green | Standard aftercare plan | | 40–69 | Moderate | Yellow | Enhanced follow-up, additional resources | | 70–100 | High | Red | Intensive aftercare, frequent follow-up, consider step-down | *** ## Troubleshooting | Issue | Resolution | | --------------------------------------- | ------------------------------------------------------------------------------------ | | "New Plan" button not visible | You may lack the `cl.aftercare-plans.create` permission. Contact your administrator. | | Follow-Up Contacts card not showing | Requires `cl.follow-up-contacts.view` permission. | | Employee dropdown empty in warm handoff | Ensure employees are configured in the HR module with active employment status. | | SDOH badges not appearing | Patient must have at least one SDOH screening (CL-18) on file. | | "Link from SDOH" button missing | No SDOH screening or social referral data exists for this patient. | # Documentation Blocks Source: https://docs.encoreos.io/cl/documentation-blocks Compose clinical documentation from the resolved block set — jurisdiction-required, accreditation-overlay, and org-optional blocks with a completeness score. The Clinical Block Library (CL-75) composes documentation surfaces — intake, progress note, crisis, and more — from reusable **clinical blocks** (Mental Status Exam, suicide/violence screening, ROS, physical exam, safety plan, …). Each block is defined once with an immutable, versioned field schema, and every surface that needs it renders the same block by reference instead of re-implementing the datum. ## The Documentation Blocks chart tab On a patient chart, the **Documentation Blocks** tab (`/cl/charts/:chartId?tab=documentation-blocks`) resolves the required block set for a selected encounter + surface and renders each block, required-first and source-tagged: * **Jurisdiction** blocks come from the organization's PF-96 jurisdiction profile (for Arizona/AHCCCS orgs, e.g. the MSE on progress notes). * **Accreditation** blocks appear when a CARF/TJC overlay is active for the organization. * **Organization** blocks are the org's own optional additions, composed in the Surface Templates admin. Typed blocks persist to their owning clinical table (the MSE to `cl_mse_exams`, the suicide/violence screen to `cl_risk_screenings`) — captured once, reused across surfaces. The **Completeness** panel (CL-59-EN-01) scores the same resolved required set the renderer draws, showing the completion percentage and the source-tagged list of still-missing required blocks. Documentation Blocks chart tab rendering resolved clinical blocks with the completeness panel ## Who it's for Requires permission: `cl.progress_note.view` (the tab); saving a block writes through the same clinical permissions as the owning record. ## Composing surfaces: Surface Templates admin Org admins compose each surface's blocks at **Settings → Surface Templates** (`/cl/settings/surface-templates`): * **Required blocks are locked.** Blocks required by the jurisdiction profile or an active accreditation overlay display with their source and cannot be removed — an organization can never drop a required block. * **Org-optional blocks** can be added from the block catalog and removed at any time; the resolver feeds them to the renderer and the completeness engine alongside the required set. Surface template builder showing locked required blocks and the org-optional add/remove channel Requires permission: `cl.assessment_template.manage` ## Notes * Field-level requiredness can vary by active accreditation overlay (e.g. TJC NPSG.15.01.01 elements on the suicide-risk blocks) — overlay-tagged fields activate only when the overlay applies to the organization. * Blocks flagged for 42 CFR Part 2 contexts carry a Part 2 badge; segmentation follows the chart's SUD indicators and CL-11 consent gating. # DoseSpot ePrescribing — Admin Guide Source: https://docs.encoreos.io/cl/dosespot-eprescribing-admin-guide Enable DoseSpot ePrescribing for your organization, enroll prescribers, configure the webhook, and assign the right permissions. ## Overview This guide covers the administrative setup for the DoseSpot ePrescribing integration: turning the feature on for your organization, connecting your DoseSpot clinic credentials, enrolling individual prescribers, configuring the inbound webhook, and assigning the relevant permissions. When enabled, prescribers see an **ePrescribing** sub-tab inside each patient chart's **Medications** tab. End-user workflows are documented in the [DoseSpot ePrescribing — User Guide](/cl/dosespot-eprescribing-user-guide). *** ## Prerequisites Before you begin: * An active DoseSpot clinic account with API credentials issued by DoseSpot. * Your organization has at least one user with the `cl.dosespot.configure` permission (typically the org admin role). * The Encore Health OS edge function `cl-dosespot-webhook` is deployed (this is part of the platform release; you do not deploy it manually). *** ## Enable DoseSpot for your organization **Route:** Clinical → Settings → ePrescribing (DoseSpot) **Permission:** `cl.dosespot.configure` 1. Navigate to **Clinical → Settings**. 2. Locate the **DoseSpot ePrescribing** card. The card is permission-gated; it is only visible to users with `cl.dosespot.configure`. 3. Toggle **Enable DoseSpot ePrescribing** to **On**. 4. Enter your DoseSpot connection details: * **Clinic ID** — your DoseSpot clinic identifier. * **Clinic Key** — the secret key paired with the Clinic ID. Treat this like a password; it is stored encrypted at rest. * **Environment** — `production` or `staging`. Use `staging` for testing before go-live. 5. Select **Save**. After saving, the **ePrescribing** sub-tab becomes available in the **Medications** tab for any user with `cl.dosespot.view`. To disable the integration, toggle **Enable DoseSpot ePrescribing** to **Off**. Existing prescription records are retained; only new sends and the embedded panel are blocked. *** ## Configure the webhook DoseSpot sends asynchronous events (prescription status updates, refill requests, EPCS confirmations) to Encore Health OS through a signed webhook. **Endpoint:** `POST /functions/v1/cl-dosespot-webhook` **Authentication:** HMAC-SHA256 signature in the `X-DoseSpot-Signature` header. The endpoint does not require a JWT (`verify_jwt = false`); every request is rejected unless the HMAC matches the configured signing secret. To configure: 1. In the **DoseSpot ePrescribing** settings card, copy the **Webhook URL** shown in the configuration panel. 2. Generate a signing secret by selecting **Rotate signing secret**. Copy the value — it is only displayed once. 3. In the DoseSpot vendor portal, register the webhook URL and paste the signing secret. 4. Send a test event from the vendor portal and verify it appears in **Clinical → Settings → ePrescribing → Webhook Log** with status **Delivered (200)**. ### Rotating the signing secret Rotate the secret if you suspect it has been exposed: 1. Select **Rotate signing secret**. The new secret is shown once. 2. Update the secret in the DoseSpot vendor portal. 3. The previous secret remains valid for 24 hours to allow for in-flight requests. *** ## Enroll prescribers Each prescriber who will send prescriptions must complete a one-time enrollment that links their Encore user to a DoseSpot clinician profile. **Permission required to start enrollment:** `cl.dosespot.enroll` There are two ways prescribers can enroll: * **Self-enrollment** — On their first visit to the **ePrescribing** sub-tab, prescribers are walked through DoseSpot identity proofing in a guided wizard. * **Admin-initiated enrollment** — From **Clinical → Settings → ePrescribing → Prescribers**, select **Invite prescriber**, choose a user, and send the enrollment link. EPCS enrollment is a separate step inside the DoseSpot wizard and requires: * Valid DEA registration for the prescribing user. * A registered two-factor device (hardware token or supported mobile authenticator). You can review enrollment status at any time in the **Prescribers** table. Status values are `Not enrolled`, `Pending`, `Enrolled (Rx only)`, and `Enrolled (Rx + EPCS)`. *** ## Permissions Three permissions are added with this integration. Assign them through your standard role configuration. | Permission | Purpose | Typical assignment | | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------ | --------------------------------- | | `cl.dosespot.view` | Open the embedded **ePrescribing** sub-tab on a chart; view DoseSpot-sourced prescriptions and refill activity. | Prescribers, Clinical Pharmacists | | `cl.dosespot.enroll` | Complete or update a prescriber's DoseSpot enrollment, including EPCS identity proofing. | Prescribers | | `cl.dosespot.configure` | View and edit the org-level DoseSpot configuration card, rotate the webhook signing secret, and manage prescriber enrollments. | Organization Administrators only | Example role wiring in a permission preset: ```ts theme={null} const PRESCRIBER_PERMISSIONS = [ // …existing CL permissions 'cl.dosespot.view', 'cl.dosespot.enroll', ]; const ORG_ADMIN_PERMISSIONS = [ // …existing admin permissions 'cl.dosespot.configure', ]; ``` *** ## Verify the integration After configuration, run through this checklist: 1. **Settings visible** — A user with `cl.dosespot.configure` can see and save the DoseSpot card. 2. **Tab visible** — A user with `cl.dosespot.view` sees the **ePrescribing** sub-tab inside a patient chart's **Medications** tab. 3. **Webhook test event** — A test event from the DoseSpot portal returns `200` and appears in the webhook log. 4. **Test prescription (staging only)** — Send a non-controlled prescription to a test pharmacy and confirm it appears in the **Prescriptions** sub-tab with status **Sent**. 5. **EPCS enrollment** — At least one prescriber completes EPCS enrollment and can sign a Schedule II test prescription. *** ## Compliance notes * **EPCS audit trail** — Every controlled-substance signing event is written to the immutable audit log with the two-factor method, signing timestamp, and user ID. Audit entries cannot be edited or deleted. * **HIPAA** — DoseSpot is a HIPAA Business Associate. The signed BAA between your organization and DoseSpot must be in place before enabling production credentials. * **42 CFR Part 2** — For SUD-related prescriptions, the standard Part 2 consent gating applies; DoseSpot does not bypass Encore's consent enforcement. * **PDMP** — Use of DoseSpot's medication history feed does not replace state PDMP queries where required by law. *** ## Troubleshooting | Symptom | Likely cause | Resolution | | ------------------------------------------------------------------- | ---------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | | **DoseSpot ePrescribing** card does not appear in Clinical Settings | Current user is missing `cl.dosespot.configure` | Assign the permission via the org admin role. | | Save fails with *Invalid DoseSpot credentials* | Wrong Clinic ID/Clinic Key, or environment mismatch | Re-copy credentials from the DoseSpot portal and confirm `production` vs. `staging`. | | Webhook log shows `401 Invalid signature` | Vendor portal is sending events signed with the previous secret | Re-paste the current signing secret in the DoseSpot vendor portal, or wait out the 24-hour grace window. | | Prescriber sees the tab but gets *Enrollment required* | Prescriber has `cl.dosespot.view` but is not enrolled with DoseSpot | Have them complete the enrollment wizard, or send an invite from **Prescribers**. | | Refill requests not arriving | Webhook endpoint unreachable or signing secret rotated without portal update | Verify the webhook URL in DoseSpot matches the one shown in the settings card, and confirm the signing secret. | *** ## Related guides * [DoseSpot ePrescribing — User Guide](/cl/dosespot-eprescribing-user-guide) * [Clinical (CL) Overview](/cl/overview) * [MAT/MOUD Tracking — Admin Guide](/cl/mat-moud-admin-guide) # DoseSpot ePrescribing — User Guide Source: https://docs.encoreos.io/cl/dosespot-eprescribing-user-guide Send prescriptions, manage refills, and complete EPCS workflows from the patient chart using the embedded DoseSpot ePrescribing tab. ## Overview DoseSpot ePrescribing lets prescribers send new prescriptions, manage refills, and complete EPCS (electronic prescribing for controlled substances) workflows without leaving the patient chart. The DoseSpot interface is embedded directly in the **Medications** tab so prescriptions stay tied to the same chart you use for clinical documentation. Use DoseSpot when you need to: * Send a new prescription to a pharmacy * Approve or deny pharmacy refill requests * Send a Schedule II–V controlled substance with two-factor EPCS signing * View a patient's external prescription history (PDMP / Surescripts medication history) ## Quick reference | I need to… | Where | | -------------------------------------- | -------------------------------------------------------------- | | Open ePrescribing for a patient | Patient chart → **Medications** tab → **ePrescribing** sub-tab | | Send a new prescription | DoseSpot panel → **New Rx** | | Approve a refill request | DoseSpot panel → **Pending** queue | | Send a controlled substance | DoseSpot panel → **New Rx** → complete EPCS two-factor prompt | | Confirm a prescription was transmitted | Chart **Medications** tab → **Prescriptions** sub-tab | *** ## Prerequisites Before you can use the ePrescribing tab: * Your organization administrator has enabled DoseSpot in **Clinical Settings**. See the [DoseSpot ePrescribing — Admin Guide](/cl/dosespot-eprescribing-admin-guide). * You have the `cl.dosespot.view` permission (assigned to prescriber roles by default). * Your prescriber profile has been enrolled with DoseSpot (`cl.dosespot.enroll` is required to complete enrollment). New users see a one-time identity-proofing prompt the first time they open the tab. * For controlled substances: your DEA registration and two-factor token are active. If the **ePrescribing** sub-tab does not appear in a chart, DoseSpot is not enabled for your organization or your account does not have `cl.dosespot.view`. *** ## Open the ePrescribing tab 1. Navigate to **Clinical → Charts** and open a patient chart. 2. Select the **Medications** tab. 3. Select the **ePrescribing** sub-tab. The DoseSpot interface loads in an embedded panel scoped to the current patient and your clinician profile. You stay inside Encore Health OS — there is no separate login. While the patient record is loading you see a *Loading patient information…* placeholder. If the placeholder persists, refresh the chart; the panel needs both a patient ID and your clinician ID before it can render. *** ## Send a new prescription 1. In the **ePrescribing** sub-tab, select **New Rx**. 2. Search for the medication by name. The medication picker uses DoseSpot's drug database, so it includes brand and generic names, strengths, and dose forms. 3. Set: * **Sig** (directions for use) * **Quantity** and **Days supply** * **Refills** * **Pharmacy** — search by name, NPI, or ZIP. Mail-order, retail, and specialty pharmacies are all supported. 4. Review the alerts panel for any drug–drug or drug–allergy warnings. 5. Select **Send**. DoseSpot transmits the prescription through Surescripts. Once acknowledged, the prescription appears in the **Prescriptions** sub-tab of the same Medications tab with a status of **Sent**. ### Sending controlled substances (EPCS) Schedule II–V medications require EPCS two-factor signing: 1. Build the prescription as above. The form displays an **EPCS** badge when a controlled medication is selected. 2. Select **Sign & Send**. 3. Complete the EPCS prompt: * Enter your DoseSpot password. * Approve the push notification or enter the one-time code from your hardware/soft token. 4. The prescription is signed, transmitted, and an immutable EPCS audit entry is written. If two-factor fails or your token has expired, the prescription is held as a draft. Contact your administrator to refresh your EPCS credentials. *** ## Manage refill requests Pharmacy refill requests route to the **Pending** queue inside the DoseSpot panel. 1. Open any patient chart → **Medications** → **ePrescribing**. 2. Select **Pending**. Requests for the active patient appear at the top. 3. For each request, select: * **Approve** — sends the refill authorization. * **Approve with changes** — adjust quantity, days supply, or sig before approving. * **Deny** — pick a reason (e.g., *Patient should contact provider*). Approved refills show as new prescription records in the **Prescriptions** sub-tab. *** ## View external medication history DoseSpot can return a patient's medication fill history from Surescripts (pharmacies and PBMs). To view it: 1. In the **ePrescribing** sub-tab, select **Rx History**. 2. The history list shows medication, prescriber, pharmacy, fill date, and days supply. Use this view to reconcile what the patient is actually filling against what is documented in their chart. *** ## How DoseSpot interacts with the rest of the chart | Encore feature | Behavior | | ----------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Medications list** (Medications tab → Active) | DoseSpot prescriptions are also recorded as `cl_prescriptions` rows and appear in the Active list and reconciliation flows. | | **Drug–drug interactions** | Encore's interaction checker (CL-05) runs alongside DoseSpot's clinical screening. Both sets of alerts are surfaced. | | **Medication reconciliation** | DoseSpot-sourced prescriptions are eligible for the standard reconciliation workflow. | | **MAT/MOUD tracking** | Buprenorphine and naltrexone prescriptions sent through DoseSpot automatically create a linked medication event on the patient's active MAT enrollment. | | **Audit log** | Every send, sign, approve, and deny action is logged with your user ID and timestamp. EPCS signings include the two-factor method used. | *** ## Troubleshooting | Symptom | Likely cause | What to do | | ---------------------------------------------------------- | ------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------- | | **ePrescribing** sub-tab is missing | DoseSpot disabled for org, or missing `cl.dosespot.view` | Ask your administrator to enable DoseSpot and assign the permission. | | Panel shows *Loading patient information…* indefinitely | Chart record has not finished loading, or patient has no record ID | Refresh the chart. If it persists, the patient may need a chart record created first. | | *Enrollment required* prompt on first open | Your prescriber profile is not yet enrolled with DoseSpot | Complete the enrollment wizard. You need `cl.dosespot.enroll`; ask your administrator if the option is unavailable. | | Controlled substance send fails with *EPCS not authorized* | Two-factor token expired or DEA registration not synced | Re-pair your token in DoseSpot, then retry. Contact your administrator if the failure repeats. | | Refill requests are not appearing | DoseSpot webhook is not delivering events to Encore | Administrator must verify the `cl-dosespot-webhook` endpoint is reachable and the signing secret is current. | *** ## Permissions | Permission | Purpose | Typical role | | ----------------------- | ------------------------------------------------- | --------------------------------- | | `cl.dosespot.view` | Open the ePrescribing tab and view prescriptions | Prescribers, Clinical Pharmacists | | `cl.dosespot.enroll` | Complete or update DoseSpot prescriber enrollment | Prescribers | | `cl.dosespot.configure` | Configure org-wide DoseSpot settings | Administrators only | *** ## Related guides * [DoseSpot ePrescribing — Admin Guide](/cl/dosespot-eprescribing-admin-guide) * [MAT/MOUD Tracking — User Guide](/cl/mat-moud-user-guide) * [Lab & Diagnostic Orders — User Guide](/cl/lab-orders-user-guide) # Electronic Consent & Redisclosure Tracking — Admin Guide Source: https://docs.encoreos.io/cl/electronic-consent-admin-guide The Electronic Consent module enables your organization to capture, manage, and track patient consents for sharing substance use disorder (SUD) treatment recor… ## Overview The Electronic Consent module enables your organization to capture, manage, and track patient consents for sharing substance use disorder (SUD) treatment records under 42 CFR Part 2. It provides: * **Electronic consent capture** with typed e-signature * **Granular consent categories** (treatment, payment, operations, providers, research) * **Consent lifecycle management** (active, expired, revoked) * **Expiration alerts** at 30, 14, and 7 days before expiration * **Redisclosure audit trail** — immutable log of all record disclosures * **Compliance dashboard** with aggregate statistics *** ## Accessing the Feature Navigate to **Clinical → Electronic Consents** (`/cl/electronic-consents`). **Required permission:** `cl.electronic-consent.view` *** ## Permissions | Action | Permission Key | Default Roles | | ------------------------- | ------------------------------ | -------------------------- | | View consents | `cl.electronic-consent.view` | org\_admin, manager, staff | | Create consents | `cl.electronic-consent.create` | org\_admin, manager, staff | | Revoke consents | `cl.electronic-consent.revoke` | org\_admin | | View redisclosure log | `cl.redisclosure-log.view` | org\_admin, manager, staff | | Record disclosures | `cl.redisclosure-log.create` | org\_admin, manager, staff | | View compliance dashboard | `cl.compliance_report.view` | org\_admin | To modify role assignments, go to **Settings → Permissions**. *** ## Creating a Consent 1. Click **New Consent** on the Consents tab 2. Enter the patient ID 3. Select consent categories (at least one required): * **Treatment** — sharing for treatment purposes * **Payment** — sharing for payment/billing * **Operations** — sharing for healthcare operations * **Providers** — sharing with specific providers * **Research** — sharing for research purposes 4. Set the effective date and optional expiration date 5. Complete the e-signature: * Type the signer's full legal name * Review and confirm the attestation statement 6. Click **Sign and Activate** to create an active consent, or **Save Draft** to save without signing *** ## Revoking a Consent 1. Find the consent in the Consents tab 2. Click the revoke action (requires `cl.electronic-consent.revoke` permission) 3. Review the irreversibility warning 4. Confirm revocation Revocation is permanent and cannot be undone. Once revoked, no new disclosures can be recorded against this consent. *** ## Recording a Disclosure 1. Navigate to the **Redisclosure Audit** tab 2. Click **Record Disclosure** 3. Select the active consent authorizing the disclosure 4. Enter: * **Recipient** — who is receiving the records * **Purpose** — why records are being shared * **Records disclosed** — types of records shared 5. Review the 42 CFR Part 2 prohibition-on-redisclosure notice preview 6. Click **Record Disclosure** The disclosure is permanently logged and cannot be edited or deleted. *** ## Expiration Alerts The system tracks consent expiration dates and provides visual alerts: | Days Until Expiration | Status | Indicator | | --------------------- | ------- | ---------------- | | > 30 days | OK | No alert | | 14–30 days | Warning | Yellow indicator | | 7–14 days | Urgent | Orange indicator | | ≤ 7 days or past | Expired | Red indicator | Use the **Expiring Soon** filter on the Consents tab to view consents approaching expiration. *** ## Compliance Dashboard The Part 2 Compliance Dashboard (`/cl/compliance/part2`) shows aggregate statistics: * **SUD Charts** — total charts with SUD-flagged records * **Active Consents** — current Part 2 consents on file * **Consent Coverage** — percentage of SUD charts with active consent * **Disclosures** — total disclosure log entries * **Redisclosures** — disclosures with redisclosure flag **No patient identifiers are displayed** on this dashboard, consistent with 42 CFR Part 2 requirements. *** ## Audit Trail All consent and disclosure actions are tracked: * Consent creation (who, when, categories, signature) * Consent revocation (who, when) * Disclosure recording (who, when, to whom, what, why) The redisclosure log is **append-only** — entries cannot be modified or deleted by any user, including administrators. This ensures chain-of-custody integrity for regulatory compliance. *** ## Troubleshooting | Issue | Resolution | | -------------------------- | ---------------------------------------------------------------------------------- | | Cannot create consent | Verify `cl.electronic-consent.create` permission is assigned | | Cannot revoke consent | Only `org_admin` role has revoke permission by default | | Cannot record disclosure | Ensure consent is in `active` status; expired/revoked consents cannot be used | | Compliance dashboard empty | Verify `cl.compliance_report.view` permission; data is scoped to your organization | *** ## References * [42 CFR Part 2 Final Rule](https://www.hhs.gov/hipaa/part-2/index.html) * [42 CFR Part 2 Fact Sheet](https://www.hhs.gov/hipaa/for-professionals/regulatory-initiatives/fact-sheet-42-cfr-part-2-final-rule/index.html) # Electronic Consents Source: https://docs.encoreos.io/cl/electronic-consents Capture, view, and revoke electronic patient consents and audit redisclosures at route /cl/electronic-consents. The Electronic Consents screen (`/cl/electronic-consents`) provides a two-tab interface for managing patient consent records and auditing redisclosure events within the organization. ## Overview The page has two tabs controlled by URL state (`?tab=`): **Consents** and **Redisclosure Audit**. The Consents tab displays a filterable table of records from the `cl_electronic_consents` table, showing patient ID, status badge, effective date, expiration date with proximity badges (`≤7 days`, `≤14 days`), and granted consent categories. The Redisclosure Audit tab shows records from the redisclosure log, filtered by recipient or purpose text. Users with `cl.electronic-consent.create` permission see a **Capture Consent** button that opens a `ConsentCaptureSheet`; users with `cl.electronic-consent.revoke` can revoke active consents via a `RevokeConsentDialog`. Users with `cl.redisclosure-log.create` can record new disclosures via a `RecordDisclosureSheet`. ## Who it's for Requires permission `cl.electronic-consent.view` (to see the Consents tab) or `cl.redisclosure-log.view` (to see the Redisclosure Audit tab). Additional actions gate on `cl.electronic-consent.create`, `cl.electronic-consent.revoke`, and `cl.redisclosure-log.create`. ## Before you start * You must hold at minimum `cl.electronic-consent.view` or `cl.redisclosure-log.view`. * An organization must be selected; the hook will not fetch without a current `organization_id`. ## Steps Open `/cl/electronic-consents`. The **Consents** tab loads by default; switch to **Redisclosure Audit** via the tab bar or by appending `?tab=redisclosure` to the URL. Use the **All statuses** dropdown (options: Draft, Active, Expired, Revoked) and the **Expiration window** dropdown (Within 7, 14, or 30 days) to narrow the list. The expiration-window filter is applied client-side after the Supabase query returns. Click **Capture Consent** to open the `ConsentCaptureSheet`. Complete the sheet and submit; the list refreshes automatically. Locate an **Active** row and click the revoke icon (XCircle). Confirm in the `RevokeConsentDialog`. Only rows with `status = active` show the revoke button. Switch to the **Redisclosure Audit** tab. Click **Record Disclosure** to open the `RecordDisclosureSheet`. Entries appear in the table with recipient, purpose, timestamp, and linked consent ID (first 8 characters shown). ## Key concepts The `status` field on `cl_electronic_consents` takes one of four values visible in the filter: `draft`, `active`, `expired`, `revoked`. Badge variants differ: active = default, revoked = destructive, expired = secondary, draft = outline. An `ExpirationBadge` appears beside the expiration date when `getExpirationStatus()` returns `urgent` (≤7 days, destructive) or `warning` (≤14 days, secondary). No badge renders when status is `ok` or the date is null. When no records match the current filters, the table shows "No electronic consents yet." Users with `cl.electronic-consent.create` see an inline **Capture Consent** action in the empty state. When the redisclosure log is empty for the current filters, the table shows "No redisclosures recorded for this filter." ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/ElectronicConsentPage.tsx * src/cores/cl/hooks/useElectronicConsentList.ts # Encounter Review Source: https://docs.encoreos.io/cl/encounter-review Review, approve, edit, and reject generated encounter records in batch at route /cl/group-encounter-review. The Encounter Review screen (`/cl/group-encounter-review`) lists generated encounter records from the `cl_group_encounter_generations` table and allows reviewers to approve or reject them individually or in bulk. ## Overview The page uses `useGroupEncounterGenerationList` to fetch records scoped to the current organization, defaulting to `pending_review` status. A status filter dropdown allows switching to any `GenerationStatus` or `All Statuses`. Users with `cl.group-encounter-generation.approve` permission see checkboxes and individual Approve/Reject buttons per pending row, plus a **Approve Selected (n)** bulk action that opens `BulkApproveConfirmDialog`. Users with `cl.group-encounter-generation.edit` can edit the `proposed_cpt_code` and `duration_minutes` of a pending record via `EditEncounterGenerationDialog`. Rejected records show a truncated rejection reason in the Actions column. A `ReconciliationSummary` component renders above the table. ## Who it's for Requires permission `cl.group-encounter-generation.view`. Approval actions additionally require `cl.group-encounter-generation.approve`; edit actions require `cl.group-encounter-generation.edit`. ## Before you start * You must hold `cl.group-encounter-generation.view`. * An organization must be selected; the hook will not fetch without `organization_id`. * Encounter generation records are created upstream (outside this screen); this screen is for review only. ## Steps Navigate to `/cl/group-encounter-review`. The list loads filtered to `pending_review` by default. Use the **Filter by status** dropdown to select All Statuses or any specific `GenerationStatus` value. Changing the filter clears the current selection. The `ReconciliationSummary` card above the table displays aggregate counts for the loaded records. Check individual rows or use the header checkbox to select all pending records. The **Approve Selected (n)** button appears in the filter bar when at least one record is selected. Click the green Approve (CheckCircle2) button on a `pending_review` row. The row is removed from the selection set on success. Click the Edit (pencil) button to open `EditEncounterGenerationDialog`. Update `proposed_cpt_code` or `duration_minutes` and confirm. Click the red Reject (XCircle) button to open `RejectEncounterGenerationDialog`. Enter a rejection reason and confirm. The reason (up to 30 characters) is shown in the Actions column of the rejected row. With records selected, click **Approve Selected (n)** and confirm in `BulkApproveConfirmDialog`. All selected IDs are approved in a single mutation. ## Key concepts The filter exposes values from `GENERATION_STATUS_OPTIONS` (imported from `src/cores/cl/types/group-encounter-generation`). The default view is `pending_review`. Only `pending_review` rows display action buttons and checkboxes. Each row shows an `attendance_status` badge (outline variant, capitalized, underscores replaced with spaces) pulled from the generation record. When no records match the current filter, the page shows "No encounter generations" with a contextual description distinguishing between an empty `all` filter and an empty status-specific filter. ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/GroupEncounterGenerationBatchReviewPage.tsx * src/cores/cl/hooks/useGroupEncounterGenerations.ts # Expiring Assessments Source: https://docs.encoreos.io/cl/expiring-assessments Dashboard showing assessments expiring within 30, 60, or 90 days, grouped by time window at route /cl/assessments/expiring. The Expiring Assessments screen (`/cl/assessments/expiring`) shows clinical assessments from the `cl_assessments` table whose `expires_at` date falls within a selected future window. ## Overview The page renders three tabs — **30 Days**, **60 Days**, and **90 Days** — each backed by `useAssessmentList({ expiresInDays: n })`. Within each tab, a card contains an `ExpiringTable` showing chart number (from the joined `cl_patient_charts` record), assessment type (capitalized, underscores replaced with spaces), current status badge (outline variant), and the formatted expiration date. Records are ordered by `expires_at` ascending so the most-urgent appear first. The hook filters server-side by date range: `expires_at >= now AND expires_at <= now + n days`, and excludes soft-deleted records (`deleted_at IS NULL`). ## Who it's for Requires permission `cl.assessment.manage`. ## Before you start * You must hold `cl.assessment.manage`. * An organization must be selected; the hook returns an empty array without `organization_id`. ## Steps Navigate to `/cl/assessments/expiring`. The **30 Days** tab is active by default. Click **30 Days**, **60 Days**, or **90 Days** to switch the expiration window. Each tab queries independently. Each row shows the chart number, assessment type, status, and expiration date. Records are sorted with the soonest expiration first. Navigate to the patient chart to initiate a reassessment or renewal. This dashboard is read-only; no actions are available directly on this screen. ## Key concepts When no assessments are expiring within the selected window, the table shows a Clock icon and the message "No assessments expiring within days." If the query fails, a sanitized error message is displayed in destructive text color. No retry button is provided on this page. The `assessment_type` field value is displayed with underscores replaced by spaces and first letter capitalized (via CSS `capitalize`). ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/AssessmentExpirationDashboardPage.tsx * src/cores/cl/hooks/useAssessmentList.ts # Follow-Up Dashboard Source: https://docs.encoreos.io/cl/follow-up-dashboard Tracks HEDIS Follow-Up After Hospitalization 7-day and 30-day rates for FUH-eligible discharges at route /cl/fuh-dashboard. The Follow-Up Dashboard screen (`/cl/fuh-dashboard`) displays FUH-eligible discharge records from `cl_transitions` and computes 7-day and 30-day follow-up rates as labeled in the page header as "HEDIS Follow-Up After Hospitalization (7 & 30 day)." ## Overview The page uses `useFuhEligibleTransitions` (from `useTransitions.ts`) to query `cl_transitions` filtered by `organization_id` and `fuh_eligible = true`, ordered newest-first. Two metric cards display the 7-day and 30-day follow-up rates as percentages calculated client-side (met count / total × 100, rounded). Below the cards, an **Eligible Discharges** table shows chart number, discharge date, follow-up date, and status badges for each time window. Each row's status is derived by `getFuhStatus()`: `met` (green accent badge) if the corresponding flag is true, `overdue` (destructive) if days elapsed exceeds the window without being met, or `pending` (outline) otherwise. Skeleton rows appear during loading; a Retry button is shown on error. ## Who it's for Requires permission `cl.transitions.view`. ## Before you start * You must hold `cl.transitions.view`. * An organization must be selected; `useFuhEligibleTransitions` returns an empty array without `organization_id`. * Transition records must have `fuh_eligible = true` to appear; see the SME note above regarding how that flag is assigned. ## Steps Navigate to `/cl/fuh-dashboard`. The page loads FUH-eligible transitions for the current organization. The two summary cards display the **7-Day Follow-Up Rate** (met7 / total) and **30-Day Follow-Up Rate** (met30 / total) as percentages with raw counts in parentheses. Each row shows the patient chart number, discharge date (`transition_date`), follow-up date (`followup_date`), and status badges for the 7-day and 30-day windows. **Met** (green) — the follow-up flag is true. **Overdue** (destructive) — the window has elapsed without the flag being met. **Pending** (outline) — still within the window and flag not yet met. ## Key concepts `getFuhStatus(transitionDate, daysMet, daysWindow)` returns `met` if `daysMet` is true; `overdue` if `differenceInDays(now, transitionDate) > daysWindow`; otherwise `pending`. This is a pure client-side calculation using `date-fns`. When no FUH-eligible transitions exist, the table shows "No FUH-eligible discharges" with the hint "Mark discharges as FUH-eligible when recording transitions." On query failure, a sanitized error message and a **Retry** button are displayed inside a destructive-bordered card. ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/FuhDashboardPage.tsx * src/cores/cl/hooks/useTransitions.ts # Group Outcomes Source: https://docs.encoreos.io/cl/group-outcomes Dashboard showing attendance and completion rate metrics across group therapy sessions at route /cl/group-sessions/outcomes. The Group Outcomes screen (`/cl/group-sessions/outcomes`) displays aggregated metrics for group therapy sessions including completion rates, attendance rates, and a breakdown by group type. ## Overview The page renders via `GroupOutcomeDashboard` (re-exported by `GroupOutcomeDashboardPage.tsx`) using the `useGroupOutcomeMetrics` hook. The hook queries `cl_group_sessions` and `cl_group_attendance` for the current organization, with optional date range filters. Four summary stat cards display: Total Sessions, Completion Rate (%), Attendance Rate (%), and Average Participants. When a **By Group Type** breakdown is available, a table lists each `group_type` with session count, completed sessions, total attendance records, present count, and calculated rate. Date range inputs (`From` / `To`) are rendered above the stat cards; changing either value re-runs the query with updated filters. ## Who it's for Requires permission `cl.group_sessions.view`. ## Before you start * You must hold `cl.group_sessions.view`. * An organization must be selected; `useGroupOutcomeMetrics` returns empty metrics without `organization_id`. ## Steps Navigate to `/cl/group-sessions/outcomes`. All-time metrics for the organization load immediately. Enter a **From** date, a **To** date, or both using the date inputs above the stat cards. The hook re-fetches automatically when either value changes. The four cards show: **Total Sessions** (count from `cl_group_sessions`), **Completion Rate** (completed sessions / total × 100), **Attendance Rate** (present-equivalent records / total attendance records × 100), and **Avg Participants** (total attendance records / total sessions, rounded). When `byGroupType` has entries, a breakdown table appears showing each group type with columns: Type, Sessions, Completed, Attendance, Present, Rate. Types are capitalized and underscores replaced with spaces. ## Key concepts The hook counts `attendance_status` values of `present`, `late`, and `early_departure` as present when computing attendance rate and the group-type present count. When no sessions exist for the selected date range, the hook returns zero values for all metrics and an empty `byGroupType` object. The stat cards render `0` and `0%`; the By Group Type table is hidden. On query failure, a sanitized error message is displayed with an AlertCircle icon and a **Retry** link (page reload). Four skeleton cards replace the stat cards while the query is in flight. ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/GroupOutcomeDashboardPage.tsx * src/cores/cl/components/group-therapy/GroupOutcomeDashboard.tsx * src/cores/cl/hooks/useGroupOutcomeMetrics.ts # Clinical Group Sessions Source: https://docs.encoreos.io/cl/group-sessions Manage group therapy sessions and attendance; filter by date range and track status across the organization. This screen lists group therapy sessions for the current organization and is available at `/cl/group-sessions`. ## Overview The Group Sessions list page displays sessions stored in `cl_group_sessions`, filtered by a configurable date range (default: last 30 days to today). Summary stat cards show total, completed, and scheduled session counts for the selected window. Each row in the table shows date, topic, group type, time, location, and status. Users with the `cl.group_sessions.create` permission see a **New Session** button that opens the `CreateEditGroupSessionDialog`. Completing a session transitions its status to `completed` and publishes domain events for downstream processing (including billing encounter generation). ## Who it's for Requires permission: `cl.group_sessions.view` Creating sessions additionally requires: `cl.group_sessions.create` ## Before you start You must hold the `cl.group_sessions.view` permission to access this page. Sessions are scoped to your current organization; switching organizations changes the data shown. ## Steps Navigate to `/cl/group-sessions`. The page loads sessions from the past 30 days by default. Use the **From** and **To** date inputs to change the window. The list and stat cards update automatically. The table shows columns: Date, Topic, Type, Time, Location, Status. Click any row to open the session detail page at `/cl/group-sessions/:sessionId`. Click **New Session** (visible when you have `cl.group_sessions.create`) to open the creation dialog. Fill in the required fields and save. ## Key concepts The code maps statuses to badge variants: `completed` → default, `in_progress` → secondary, `cancelled` → destructive, all others → outline. The `scheduled` status is tracked in stat card counts. When no sessions match the date filter, an empty state with a **Create Session** action (if permitted) is shown. If the data fetch fails, an inline error card with the message "Unable to load group sessions. Please try again." is displayed. ## Detail view The Group Session detail screen shows session metadata, attendance roster, and per-participant documentation for a single group session at `/cl/group-sessions/:sessionId`. ### Overview The page loads session metadata from `cl_group_sessions` via `useGroupSessionDetail` and the attendance list via `useGroupAttendanceBySession`. The header shows the session topic, date, and current status badge (`scheduled`, `in_progress`, `completed`, `cancelled`). A Session Details card displays start and end times, location, group type, and attendee count. An Attendance card lists every enrolled participant with their chart ID, attendance status, sign-in/sign-out times, participation level, and a per-row documentation action. Users with `cl.group_sessions.edit` and status not `completed` can edit session metadata via a dialog; users with `cl.group_sessions.edit` and status `in_progress` can mark the session complete, which transitions status to `completed` and publishes a domain event with the present-participant count. ### Who it's for Requires permission `cl.group_sessions.view`. Additional actions require: * `cl.group_sessions.edit` — edit session metadata, mark complete * `cl.group_sessions.delete` — delete session (soft delete) * `cl.group_attendance.edit` — add attendees * `cl.group_attendance.document` — write per-participant documentation ### Before you start * You must have `cl.group_sessions.view`. * The session must exist and not be soft-deleted. * To complete a session, it must be in `in_progress` status. ### Steps Navigate to `/cl/group-sessions`, then click a session row. The detail page loads session metadata and the attendance roster. The Session Details card shows scheduled time window (`actual_start_time`–`actual_end_time`), location, group type, and attendance count relative to `max_capacity` (if set). If the session is not completed, click **Add Attendee** (requires `cl.group_attendance.edit`) to open the `RecordAttendanceDialog` and enroll a participant. In the Attendance table, click **Document** (or **Edit**) in the Documentation column for a participant row (requires `cl.group_attendance.document`). This opens `IndividualDocumentationDialog` scoped to that attendance record. When the session is `in_progress` and documentation is sufficient, click **Complete Session** (requires `cl.group_sessions.edit`). The mutation counts `present` and `late` attendees and transitions status to `completed`. Click **Edit** (requires `cl.group_sessions.edit`, session not `completed`) to open `CreateEditGroupSessionDialog`. Click **Delete** (requires `cl.group_sessions.delete`, session not `completed`) and confirm the destructive action. The session is soft-deleted and the user is redirected to `/cl/group-sessions`. ### Key concepts `scheduled` → `in_progress` → `completed`. A session can also be `cancelled`. Only `in_progress` sessions display the **Complete Session** button. Edit and delete are blocked once a session is `completed`. Each row in `cl_group_attendance` carries an `attendance_status` of `present`, `absent`, `excused`, `late`, or `early_departure`. Only `present` and `late` records count toward the participant count passed to `completeSession`. * No attendees: "No attendees recorded yet." with an **Add Attendee** button for permitted users. * Session not found: "Session not found." with a back link to `/cl/group-sessions`. * Loading: skeleton placeholders for both the header and attendance table. ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/GroupSessionsListPage.tsx * src/cores/cl/hooks/useGroupSessions.ts * src/cores/cl/pages/GroupSessionDetailPage.tsx * src/cores/cl/hooks/useGroupAttendance.ts * src/cores/cl/types/group-therapy.ts # HEDIS Measure Conformance Specifications Source: https://docs.encoreos.io/cl/hedis-measure-specifications Lightweight aggregates surfaced by useReportRuns / computeQmSummary are not NCQA-conformant numerators; they exist only to populate the CL-15 portal QM dashboa… # HEDIS Measure Conformance Specifications **Status:** Draft (2026-05-18) — aligns with NCQA HEDIS MY 2026 Technical Specifications. **Owners:** CL core (clinical reporting), PF-70 (terminology / value sets). **Scope:** Documents how Encore implements the four HEDIS measures surfaced by CL-15 / CL-35: | Measure | Code | Owner | Calc location | | -------------------------------------------------- | ------- | ----------- | ---------------------------------------- | | Follow-Up After Hospitalization for Mental Illness | **FUH** | CL-29-EN-65 | `cl-fuh-calculator` edge function | | Follow-Up After ED Visit for Mental Illness | **FUM** | CL-29-EN-65 | `cl-fum-calculator` edge function | | Initiation and Engagement of SUD Treatment | **IET** | CL-35 | `src/cores/cl/utils/hedisCalculation.ts` | | Antidepressant Medication Management | **AMM** | CL-35 | `src/cores/cl/utils/hedisCalculation.ts` | Lightweight aggregates surfaced by `useReportRuns` / `computeQmSummary` are **not** NCQA-conformant numerators; they exist only to populate the CL-15 portal QM dashboard. Conformant numerators MUST come from the calculators referenced above. *** ## Value-set sourcing (PF-70) All HEDIS code lists are sourced from the PF-70 terminology library — never hardcoded: | Value set | PF-70 table | Notes | | ----------------------------------- | --------------------------------------------------------------------------------- | ----------------------------- | | Depression diagnoses | `pf_icd10_codes` filtered by `pf_value_sets.code = 'HEDIS_DEPRESSION'` | F32.x, F33.x families | | Antidepressant medications | `pf_rxnorm_codes` ↔ `pf_value_sets.code = 'HEDIS_ANTIDEPRESSANT'` | Refreshed via PF-70 ingest | | SUD diagnoses | `pf_icd10_codes` ↔ `pf_value_sets.code = 'HEDIS_SUD'` | F10–F19 families | | Mental-illness diagnoses | `pf_icd10_codes` ↔ `pf_value_sets.code = 'HEDIS_MH_PRINCIPAL'` | FUH/FUM denominator gate | | Follow-up visit CPT/HCPCS | `pf_cpt_codes` + `pf_hcpcs_codes` ↔ `pf_value_sets.code = 'HEDIS_FOLLOWUP_VISIT'` | Includes telehealth modifiers | | Initiation / engagement visit codes | `pf_cpt_codes` ↔ `pf_value_sets.code = 'HEDIS_SUD_VISIT'` | Per NCQA MY 2026 | Value-set refresh cadence and provenance live in `docs/pf/pf-70-terminology-admin-guide.md`. Tenants MUST NOT override these value sets — overrides go through PF-15 picklists in non-HEDIS contexts only. *** ## FUH — Follow-Up After Hospitalization for Mental Illness **Owner:** CL-29-EN-65 (`cl-fuh-calculator` edge function). Documented here for cross-reference only — no recomputation in this codebase. * **Eligible population:** Members ≥ 6 years discharged from an acute inpatient stay with a principal mental-illness diagnosis (`HEDIS_MH_PRINCIPAL`). * **Denominator:** Eligible discharges in the measurement year. Multiple discharges per member counted separately per NCQA spec. * **Numerator (30-day):** Follow-up visit with a mental-health practitioner within 30 days of discharge (`HEDIS_FOLLOWUP_VISIT`). * **Numerator (7-day):** Same but within 7 days. * **Exclusions:** Death during measurement period; discharges followed by readmission ≤ 30 days; member with non-acute inpatient stay during the follow-up window. * **Reporting stratification:** Total, 6–17, 18–64, 65+. ## FUM — Follow-Up After ED Visit for Mental Illness **Owner:** CL-29-EN-65. * **Eligible population:** Members ≥ 6 years with ED visits where the principal diagnosis is a mental-illness condition. * **Denominator:** Eligible ED visits in measurement year (no follow-up admission within ≤ 24 hours). * **Numerator (30-day / 7-day):** Follow-up encounter with a mental-health provider within the window. * **Exclusions:** ED visits resulting in inpatient admission; death during measurement period. ## IET — Initiation and Engagement of SUD Treatment **Owner:** CL-35, `src/cores/cl/utils/hedisCalculation.ts`. * **Denominator** (`isInIetDenominator`): Members with a new SUD episode (`HEDIS_SUD`) — no SUD claim in the 60 days prior (negative-history window). * **Initiation numerator:** Initiation visit (`HEDIS_SUD_VISIT`) within **14 days** of the index event. Constant: `IET_INITIATION_WINDOW_DAYS = 14`. * **Engagement numerator** (`isInIetNumerator`): Initiation met AND ≥ 2 additional SUD visits within **34 days** of the initiation visit. Constants: `IET_ENGAGEMENT_WINDOW_DAYS = 34`, `IET_ENGAGEMENT_MIN_VISITS = 2`. * **Exclusions:** Hospice; death; SUD claim in the 60-day negative-history window. ## AMM — Antidepressant Medication Management **Owner:** CL-35, `src/cores/cl/utils/hedisCalculation.ts`. * **Denominator** (`isInAmmDenominator`): Members ≥ 18 with major depression dx + at least one antidepressant dispensing event in the measurement period. * **Acute-phase numerator** (`isInAmmNumerator(_, 'acute')`): ≥ **84 days** of antidepressant medication coverage (`AMM_ACUTE_MIN_DAYS`). * **Continuation-phase numerator** (`isInAmmNumerator(_, 'continuation')`): ≥ **180 days** of antidepressant coverage (`AMM_CONTINUATION_MIN_DAYS`). * **Exclusions:** Bipolar / psychosis diagnoses; hospice; death; pharmacotherapy gaps > 30 days within the measurement window (handled in calculator query — not in the pure function). *** ## Rate calculation All rates use `calculateMeasureRate(denominator, numerator)` which returns a `NUMERIC(5,4)` value in `[0.0000, 1.0000]`. Zero-denominator measures return `0.0000` and are flagged in the UI as "insufficient data" — never as 0% performance. ## Verification & conformance * Unit-test coverage: `src/cores/cl/utils/__tests__/hedisCalculation.test.ts` (AMM, IET denominator/numerator + rate clamping). * Cross-reference: NCQA HEDIS MY 2026 Volume 2 (Technical Specifications). Each measure section above maps 1:1 to NCQA chapter headings; deviations require an ADR. * Audit trail: every HEDIS report run is logged to `pf_audit_logs` via `logClinicalAudit({action: 'cl_clinical_audit_report_run'})` per CL-15 T-COMP-3. ## Known gaps (tracked) 1. FUH/FUM 30-day exclusion for non-acute inpatient overlap is implemented in the edge function only — no pure-function port yet (CL-29 follow-up). 2. AMM continuous-enrollment gap rule (≤ 45-day gap) is enforced in the SQL query, not in `isInAmmNumerator`. Refactor planned with CL-15-EN-NN. 3. PF-70 value-set version pinning per measurement year is pending PF-70-EN-04. *** **Last Updated:** 2026-05-18 (CL-15 T-COMP-2). # Host Session Source: https://docs.encoreos.io/cl/host-session Pre-session host waiting room for virtual and hybrid group sessions: technology check, recording consent, and session lifecycle controls. The Host Session screen is the clinician-facing waiting room for a virtual or hybrid group session, accessed at `/cl/virtual-groups/:sessionId/host`. ## Overview The page loads session metadata via `useGroupSessionDetail`, the attendance list via `useGroupAttendanceBySession`, and telehealth metadata via `useTelehealthMetadata`. Two controls, **Start session** and **End session**, manage the session lifecycle. Start is blocked unless a technology contingency plan is present on the session record and, if recording is enabled, all attendees have recording consent captured. A Vendor card shows the `vendor_session_ref` from telehealth metadata. A Recording Consent summary card indicates whether all participant consents have been captured (`All captured`) or are still pending. The Waiting Room table lists each enrolled participant with their attendance status, consent status, a **Capture**/**View** consent button, and a **Tech check** button per row. `TechnologyCheckSheet` and `RecordingConsentDialog` are opened inline. ## Who it's for Requires permission `cl.group.virtual.host`. ## Before you start * You must have `cl.group.virtual.host`. * The session must exist and its `modality` must be `virtual` or `hybrid`. * A technology contingency plan must be documented on the session before **Start session** becomes active. * If `recording_enabled` is true, all attendees must have `recording_consent_captured_at` set before **Start session** becomes active. ## Steps Navigate to `/cl/virtual-groups/:sessionId/host`. The waiting room loads session metadata, the participant table, and telehealth vendor information. Click **Run Tech Check** in the Technology card to open `TechnologyCheckSheet` for a general host-level check without a specific participant. In the Waiting Room table, click **Tech check** next to a participant row to open `TechnologyCheckSheet` scoped to that attendance record. If `recording_enabled` is true, click **Capture** (or **View** if already captured) in the Consent column to open `RecordingConsentDialog` for that participant. The dialog captures `recording_consent_captured_at` and `recording_consent_modality`. Once the contingency plan is present and all required consents are captured, click **Start session**. This calls `useUpdateGroupSession` to transition status to `in_progress`. When the session is `in_progress`, click **End session** to call `completeSession`, which transitions status to `completed` and records the count of participants with `present` attendance status. ## Key concepts Two conditions block **Start session**: (1) no technology contingency plan text on the session, and (2) `recording_enabled` is true but one or more attendees lack `recording_consent_captured_at`. The card description shows the blocking reason when present. Consent can be captured as `written`, `verbal_recorded`, or `verbal_attested`. The consent modality is stored on the attendance record alongside a timestamp. The Vendor card displays `vendor_session_ref` from `cl_group_session_telehealth_metadata`. When the table migration is pending, this field shows "Not yet linked". * No participants: "No participants enrolled." in the Waiting Room card. * Session not found: `EmptyState` with title "Session Not Found". * Loading: skeleton placeholders for the header, stat cards, and table. ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/VirtualGroupHostPage.tsx * src/cores/cl/hooks/useGroupSessions.ts * src/cores/cl/hooks/useGroupAttendance.ts * src/cores/cl/hooks/useVirtualGroupSessions.ts * src/cores/cl/types/virtual-group.ts # Clinical Import History Source: https://docs.encoreos.io/cl/import-history View content bundles imported into your organization from the Clinical Marketplace, with rollback capability. This screen lists all marketplace bundle imports for the current organization and is available at `/cl/marketplace/imports`. ## Overview The Import History page lists records from `cl_marketplace_imports`, ordered most-recent-first, scoped to the current organization. Each entry displays the bundle key, version, number of imported items, import timestamp, and a status badge (`Completed`, `In Progress`, or `Rolled Back`). Users with the `cl.marketplace.import` permission see a **Roll back** button on `completed` imports. Initiating a rollback opens a confirmation dialog that names the item count and import date; confirming calls the rollback mutation, which deletes the rows captured in the import's `rollback_snapshot` and marks the record as `rolled_back`. The action is described as irreversible in the confirmation dialog. ## Who it's for Requires permission: `cl.marketplace.import` ## Before you start You must hold the `cl.marketplace.import` permission to access this page and to initiate rollbacks. Import records are scoped to the current organization. ## Steps Navigate to `/cl/marketplace/imports`. The page loads all import records for your organization. Each card shows bundle key, version, item count, import date/time, and status badge. Click **Roll back** on a `Completed` import. This is only available when you hold `cl.marketplace.import`. Review the confirmation dialog showing the item count and import date. Click **Roll back** to confirm or **Cancel** to abort. The dialog warns that the action cannot be undone. ## Key concepts The code maps statuses to badge variants: `completed` → default, `in_progress` → secondary, `rolled_back` → destructive. When no imports exist, an empty state is shown: "No imports yet — Browse the marketplace to find and import accreditation-aligned content bundles." If the list fails to load, a destructive alert titled "Error Loading Import History" is displayed with a sanitized error message. ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/MarketplaceImportsPage.tsx * src/cores/cl/hooks/useMarketplaceImports.ts # Clinical In-Basket User Guide Source: https://docs.encoreos.io/cl/in-basket-user-guide This guide helps clinicians and clinical staff use the In-Basket to manage actionable clinical items such as lab results, prescription renewals, co-sign reques… > **Purpose:** This guide helps clinicians and clinical staff use the In-Basket to manage actionable clinical items such as lab results, prescription renewals, co-sign requests, and chart messages. *** ## Overview The Clinical In-Basket is a centralized inbox for clinical action items. It consolidates tasks from multiple sources — lab results, prescription renewal requests, referral responses, co-sign requests, CDS alerts, and chart messages — into a single, filterable list so providers can prioritize and act efficiently. ### Key Capabilities * **Unified clinical inbox:** All actionable items in one place, sorted by priority and due date * **Filtering and classification:** Filter by item type, classification (clinical/administrative/billing/regulatory), and status * **Status management:** Track items from new → in progress → completed with a full activity audit trail * **Escalation:** Escalate items to `stat` priority when urgent attention is needed * **PM-14 deep-links:** Chart messages link directly to the secure messaging conversation ### Who Should Use This Guide | Role | Use Case | | --------------------- | ----------------------------------------------------------- | | Licensed Clinician | Review lab results, co-sign requests, prescription renewals | | Clinical Supervisor | Monitor team in-basket items, co-sign pending documents | | Nurse | Triage incoming lab results and system alerts | | Prescriber (MD/NP/PA) | Handle prescription renewals, PDMP alerts | *** ## Prerequisites ### Permissions Required To use the Clinical In-Basket, you need: | Permission | Description | | ---------------------- | --------------------------------- | | `cl.inbasket.view` | View in-basket items | | `cl.inbasket.manage` | Update status and manage items | | `cl.inbasket.assign` | Reassign items to other providers | | `cl.inbasket.escalate` | Escalate item priority to stat | > **Note:** Contact your organization administrator if you don't have the required permissions. *** ## Getting Started ### Accessing the In-Basket 1. Navigate to **Clinical** in the main menu 2. Click **In-Basket** 3. The list page displays all items assigned to you or your team ### Understanding the Interface | Element | Description | | --------------- | ---------------------------------------------------------- | | Filter bar | Filter by item type, classification, and status | | Item list | Table of in-basket items with priority badges | | Priority badges | **Stat** (red), **Urgent** (yellow), **Routine** (default) | | Status badges | New, Read, In Progress, Pending, Completed, Cancelled | *** ## Common Tasks ### Task 1: Review and Triage Items **When to use:** At the start of your shift or when new items arrive. **Steps:** 1. Open the **In-Basket** page 2. Items are sorted by priority (stat first) and due date 3. Use the **Type** filter to focus on specific categories (e.g., Lab Results only) 4. Click on an item row to open the detail view **Tips:** * Use the **Status** filter set to "New" to see unreviewed items * Stat items appear with a red badge — address these first *** ### Task 2: Update Item Status **When to use:** After reviewing or acting on an in-basket item. **Steps:** 1. Open the item detail page 2. Click the **Status** dropdown 3. Select the appropriate status: * **In Progress** — You are actively working on this * **Pending** — Waiting on external information * **Completed** — Action fully resolved * **Cancelled** — Item no longer relevant 4. The status change is saved automatically and logged in the activity timeline > **Note:** All status changes are recorded with your name and timestamp in the activity log. *** ### Task 3: Escalate an Item **When to use:** When an item requires immediate attention beyond its current priority. **Steps:** 1. Open the item detail page 2. Click the **Escalate** button (requires `cl.inbasket.escalate` permission) 3. The item priority is changed to **Stat** and an escalation activity is logged > **Warning:** Escalation should be reserved for genuinely urgent situations. All escalations are audited. *** ### Task 4: View Activity History **When to use:** To understand what actions have been taken on an item. **Steps:** 1. Open the item detail page 2. Scroll to the **Activity Timeline** section 3. Activities are shown chronologically with actor, type, and timestamp *** ### Task 5: Access a Chart Message Conversation **When to use:** When a `chart_message` item links to a PM-14 secure messaging conversation. **Steps:** 1. Open the chart message item detail 2. If a linked conversation exists, a **View Conversation** link appears 3. Click the link to navigate to the secure messaging thread *** ## Tips and Best Practices ### Do's * ✅ Review your in-basket at the start and end of each clinical shift * ✅ Use filters to focus on high-priority or specific item types * ✅ Update item status promptly to keep your team informed * ✅ Escalate genuinely urgent items — the audit trail protects appropriate use ### Don'ts * ❌ Don't leave stat items unaddressed for extended periods * ❌ Don't use escalation for routine items * ❌ Don't mark items as completed without taking the required action *** ## Troubleshooting ### Common Issues #### Issue: No items appearing in the In-Basket **Symptoms:** The In-Basket list shows an empty state. **Cause:** No items are assigned to you, or filters are too restrictive. **Solution:** 1. Clear all filters to see all items 2. Confirm your user account has the `cl.inbasket.view` permission 3. Contact your administrator if items should be present *** #### Issue: Cannot change item status **Symptoms:** Status dropdown is disabled or changes fail. **Cause:** You may lack the `cl.inbasket.manage` permission. **Solution:** 1. Confirm you have the `cl.inbasket.manage` permission 2. Contact your organization administrator to request access *** ### Getting Help If you can't resolve an issue: 1. Check with your clinical supervisor 2. Contact your organization administrator 3. Review the specification for technical details *** ## Related Documentation * **Specification:** `specs/cl/specs/CL-23-clinical-in-basket-provider-messaging.md` * **Integration:** `docs/architecture/integrations/CL-23-clinical-in-basket-provider-messaging-INTEGRATION.md` * **Related Features:** CL-04 (Progress Notes), CL-09 (Lab Orders), PM-14 (Secure Messaging) *** ## Glossary | Term | Definition | | ----------------- | -------------------------------------------------------------------------- | | In-Basket | A centralized inbox for clinical action items requiring provider attention | | Stat | Highest priority level indicating immediate action required | | Escalation | The act of raising an item's priority to stat | | Co-sign | Supervisory review and signature on a clinical document | | Activity Timeline | Chronological audit log of all actions taken on an item | *** **Last Updated:** 2026-02-25\ **Questions?** Contact your organization administrator. # Clinical Incidents Source: https://docs.encoreos.io/cl/incidents Report and track organizational incidents with severity classification, reporting deadlines, and state-report status. This screen lists and manages incident records for the current organization and is available at `/cl/incidents`. ## Overview The Incidents page lists records from `cl_incidents`, ordered by `discovered_at` descending, scoped to the current organization. Soft-deleted records are excluded. Each row shows incident type (display label from `INCIDENT_TYPE_OPTIONS`), severity badge, discovered date/time, reporting deadline, and state-report status (`Reported` or `Pending`). The reporting deadline cell renders in destructive styling when the deadline has passed and the incident has not yet been reported to the state. Users with `cl.incidents.create` see a **Report Incident** button that opens `IncidentFormDialog`. Users with `cl.incidents.delete` may soft-delete incidents that have not yet been reported to the state. Once an incident is marked as reported (`reported_to_state_at` is set), only a **View** action is available (no editing or deletion). ## Who it's for Requires permission: `cl.incidents.view` Creating incidents additionally requires: `cl.incidents.create` Deleting incidents additionally requires: `cl.incidents.delete` ## Before you start You must hold `cl.incidents.view` to access this page. Incidents are scoped to your current organization. ## Steps Navigate to `/cl/incidents`. All non-deleted incidents for your organization load in discovery-date order. Columns: Type, Severity, Discovered, Deadline, State Report, Actions. Deadlines past due without a state report are highlighted in destructive color. Click **Report Incident** (requires `cl.incidents.create`) to open the incident form dialog. Fill in required fields and save. Click **Edit** on a row that has not been reported to the state. The same form dialog opens in edit mode. Click **View** on a row where `reported_to_state_at` is set. The form opens in read-only mode. Click **Delete** (requires `cl.incidents.delete`; only visible on unreported incidents) to soft-delete the record. ## Key concepts `critical` and `high` map to destructive badge; `medium` maps to secondary; all others map to outline. Once `reported_to_state_at` is non-null, the row becomes read-only in the UI — Edit and Delete actions are hidden; only View is shown. When no incidents exist, an empty state is shown: "No incidents reported — Report an incident to begin tracking and compliance documentation." Loading state shows skeleton rows. ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/IncidentListPage.tsx * src/cores/cl/hooks/useIncidents.ts # Intake Assessments Source: https://docs.encoreos.io/cl/intake-assessments Work queue for clinical intake assessments; filter by status and track AHCCCS completion; create new assessments via patient search and tabbed form. This screen is the intake assessment work queue for the current organization and is available at `/cl/intake-assessments`. ## Overview The Intake Assessments page renders a table of records from `cl_intake_assessments`, joined to `pm_patients` for patient name display. Records are sorted by `created_at` descending and filtered to the current organization. A collapsible filter row (toggled by the **Filters** button) allows narrowing by status. The table shows five columns: Patient (last, first name), Type (assessment type), Status (badge), AHCCCS (a checkmark or X icon driven by the `intake_element_complete` boolean), and Updated date. Clicking any row navigates to the detail page at `/cl/intake-assessments/:assessmentId`. Users with `clinical.intake.create` permission see a **New Intake** button that links to `/cl/intake-assessments/new`. ## Who it's for Requires permission: `clinical.intake.read` Creating new intake assessments additionally requires: `clinical.intake.create` ## Before you start You must hold `clinical.intake.read` to access this page. Assessments are scoped to your current organization. ## Steps Navigate to `/cl/intake-assessments`. The work queue loads all non-deleted assessments for your organization, newest first. Click **Filters** to expand the filter row. Use the status dropdown to select a specific status or "All statuses." Click **Clear filters** to reset. Columns: Patient, Type, Status, AHCCCS (intake elements complete flag), Updated. The AHCCCS column shows a checkmark icon when `intake_element_complete` is true. Click any table row to navigate to the assessment detail at `/cl/intake-assessments/:assessmentId`. Click **New Intake** (requires `clinical.intake.create`) to navigate to `/cl/intake-assessments/new`. ## Key concepts `draft` → secondary, `pending_cosign` → outline, `finalized` → default, `amended` → outline, `addended` → outline. Labels come from the `INTAKE_STATUS_LABELS` constant. When no assessments exist, the empty state reads: "No intake assessments yet — Assessments appear when appointments are scheduled and screening is complete." If data fails to load, an inline error card shows a sanitized message with a **Retry** button. ## Creating an intake assessment The New Intake Assessment page at `/cl/intake-assessments/new` operates in two modes. When accessed with no `assessmentId` URL param, it renders a patient search form (`IntakeCreateMode`): the clinician searches for a patient by name (minimum 2 characters, searches `pm_patients`), selects the patient, and clicks "Create Intake Assessment". On success, the page redirects to the detail view at `/cl/intake-assessments/:assessmentId`. The detail view (`IntakeAssessmentDetailView`) shows a sticky subheader with the patient name, status badge, and intake completion badge, followed by a tabbed form on desktop or accordion on mobile. Tabs are: Demographics & Chief Complaint, Clinical History, SDOH, Diagnoses, and Review & Sign. A destructive banner appears when the linked appointment is fewer than 120 minutes away and the assessment is not finalized. The form supports Save Draft and Finalize actions; finalized assessments become read-only. **Before you start:** you must hold `clinical.intake.create` to access `/cl/intake-assessments/new`. The patient must already exist in `pm_patients` for the current organization. If the patient has a SUD indication, a 42 CFR Part 2 consent check (`useConsentCheck`) gates access to the substance use history section in the Clinical History tab. Go to `/cl/intake-assessments/new`. The patient search form is displayed. Type at least 2 characters of the patient's first or last name in the Search Patient field. A list of up to 10 matching patients appears showing name and date of birth. Click the patient row to select them. A confirmation banner shows the selected patient's name. Click "Create Intake Assessment". The page redirects to the full intake form at `/cl/intake-assessments/:assessmentId`. On desktop, use the tab bar to navigate between Demographics & Chief Complaint, Clinical History, SDOH, Diagnoses, and Review & Sign. On mobile, sections are presented as an accordion. Fill in required fields in each section. Click "Save Draft" on the Review & Sign tab to persist the current form values without finalizing. Click "Finalize" on the Review & Sign tab. The assessment status changes to finalized and the form becomes read-only. The status badge uses values from `INTAKE_STATUS_LABELS`. Statuses `finalized`, `amended`, and `addended` set the form to read-only. Other statuses allow editing. When `isSudIndicated` is true and `hasConsent` is not `true` (via `useConsentCheck` for context `intake_assessment`), the `hasSudConsent` flag is false and the Clinical History section passes `hasSudConsent={false}` to `IntakeClinicalHistorySection`. The clinical effect on the rendered fields is implemented in that child component. A dismissible destructive `Alert` appears when `minutesUntilAppt` is between 0 and 120 and the assessment is not finalized. The dismissed state is stored in `sessionStorage` keyed to the assessment ID, so it resets on each browser session. If the query errors, a destructive card with the sanitized error message is shown. If no assessment is found, a card with "Assessment not found." is displayed. ## Detail view The Intake Assessment screen at `/cl/intake-assessments/:assessmentId` is a full-page form for viewing and completing a clinical intake assessment for a patient. ### Overview When `assessmentId` is absent (create mode via `/cl/intake-assessments/new`), the page shows a patient-search form (minimum 2 characters, searches `pm_patients` by first/last name) and a "Create Intake Assessment" button that calls `useCreateIntakeAssessment` then redirects to the new assessment's detail URL. When `assessmentId` is present, the page loads the assessment via `useIntakeAssessmentDetail` and resolves the linked chart ID for a 42 CFR Part 2 consent check. The form has five sections rendered as tabs on desktop and as an accordion on mobile: Demographics & Chief Complaint, Clinical History, SDOH, Diagnoses, and Review & Sign. A sticky subheader shows the patient name, status badge, and an Intake Complete / Incomplete badge. An urgent banner appears when the assessment is not finalized and the linked appointment starts within 120 minutes. The form auto-saves sections via `useUpdateIntakeAssessment`; `useFinalizeIntakeAssessment` handles finalization. When `status` is `finalized`, `amended`, or `addended`, the form is read-only. ### Who it's for Requires permission: `clinical.intake.read` (view existing assessment) Creating a new assessment requires: `clinical.intake.create` ### Before you start * Must hold `clinical.intake.read` to view an existing assessment. * Must hold `clinical.intake.create` to start a new assessment. * Navigate here from the Intake Assessments list at `/cl/intake-assessments` or via a direct link. ### Steps Navigate to `/cl/intake-assessments` and click an assessment row, or follow a direct link to `/cl/intake-assessments/:assessmentId`. The sticky subheader shows the patient name and current status. If the assessment is not finalized and the linked appointment is within 120 minutes, an urgent destructive banner is shown. Click "I understand" to dismiss it for the session. Enter or review chief complaint and demographic fields. Patient name and DOB are pre-populated from `pm_patients`. Fill in history of present illness, medical history, mental health history, social history, and (when SUD consent is confirmed or not indicated) substance-use history. Record SDOH screening details. The `IntakeSdohSection` shows an SDOH screening-completed indicator when `sdoh_screening_id` is set. Enter preliminary diagnoses via `IntakeDiagnosesSection`. Open the Review & Sign tab. Click "Save Draft" to persist without finalizing, or "Finalize" to call `useFinalizeIntakeAssessment` and move the assessment to a finalized state. ### Key concepts Statuses in code: `draft`, `finalized`, `amended`, `addended`. The form is read-only (`readOnly = isFinalized`) when status is `finalized`, `amended`, or `addended`. `INTAKE_STATUS_LABELS` maps each status to a human-readable label. `useConsentCheck` is called with the resolved chart ID and context `intake_assessment`. When `isSudIndicated === true` and `hasConsent !== true`, `hasSudConsent` is false and the substance-use history section inside `IntakeClinicalHistorySection` is conditionally hidden or restricted. The banner fires when: assessment is not finalized, `pm_appointments.start_datetime` is in the future, and the appointment starts within 120 minutes. Dismissal is persisted in `sessionStorage` under a key scoped to the `assessmentId`. When the route is `/cl/intake-assessments/new`, a patient-search form is shown. After selecting a patient and clicking "Create Intake Assessment", a new assessment record is created and the user is redirected to its detail URL. `appointment_id` is set to a placeholder UUID in the current implementation. Load error: destructive card with sanitized message. Assessment not found: "Assessment not found." message. Loading state: `DetailSkeleton` with stacked skeletons. ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/IntakeAssessmentListPage.tsx * src/cores/cl/hooks/useIntakeAssessments.ts * src/cores/cl/pages/IntakeAssessmentDetailPage.tsx * src/cores/cl/hooks/useIntakeAssessmentDetail.ts # Intake Compliance Source: https://docs.encoreos.io/cl/intake-compliance Dashboard showing the percentage of intake assessments that have all 8 tracked AHCCCS elements completed, with an element-level breakdown table and CSV export. The Intake Compliance screen at `/cl/intake-compliance` provides a compliance overview of intake assessments, showing overall completion rates for the tracked intake elements and an element-by-element breakdown table. ## Overview The page loads all intake assessments via `useIntakeAssessments` and computes three summary cards: Total Intakes, percentage with all elements complete (`intake_element_complete === true`), and count of incomplete assessments (with a "View" button that navigates to `/cl/intake?ahcccs_incomplete=1`). An element-level breakdown table displays each of the 8 tracked elements with a completed-count fraction, percentage, and a check/cross icon for 100% vs. under-100% completion. A CSV Export button downloads the element-breakdown data as a `.csv` file named `intake-compliance-.csv`. The page header description reads "18-element assessment compliance overview." **Elements tracked in code:** 1. Chief Complaint 2. History of Present Illness 3. Medical History 4. Mental Health History 5. Substance Use History 6. Social History 7. Preliminary Diagnoses 8. SDOH Screening Completed ## Who it's for Requires permission: `clinical.intake.compliance_dashboard` ## Before you start * Must hold `clinical.intake.compliance_dashboard`. * Intake assessments must exist to see compliance data; an empty-state is shown otherwise. ## Steps Navigate to `/cl/intake-compliance`. The dashboard loads summary cards and the element breakdown table. Read the three summary cards: Total Intakes (count of all assessments), All 18 Elements Complete (percentage and fraction), and Incomplete (count with a "View" shortcut to the filtered intake list). Scroll down to the Element Breakdown table. Each row shows an element name, the completed/total fraction, the completion percentage, and a check icon (green) or cross icon (muted) for 100% vs. under-100%. Click "Export CSV" to download the element-breakdown data as a CSV file. The button is disabled when no assessments are loaded. A success toast confirms the download. ## Key concepts The percentage is computed as `(assessments where intake_element_complete === true) / total * 100`, rounded. The card header reads "All 18 Elements Complete". SME: confirm the relationship between the 8 code-tracked elements and the 18-element description. For each element, the code checks: string fields must be non-empty after trim; object fields must have at least one key; `preliminary_diagnoses` must be a non-empty array; `sdoh_screening` checks for a non-null `sdoh_screening_id`. The exported CSV has columns: Element, Completed, Total, % Complete. It is generated client-side using `Blob` and an anchor tag, not via a server endpoint. When `stats.incomplete > 0`, a "View" button is shown on the Incomplete card. It navigates to `/cl/intake?ahcccs_incomplete=1`. Load error: destructive card with a Retry button. No assessments: empty-state component with "No intake assessments to analyze." ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/IntakeComplianceDashboardPage.tsx # Join Session Source: https://docs.encoreos.io/cl/join-session Participant pre-session preparation checklist for virtual group sessions: technology check and recording consent before launching the telehealth room. The Join Session screen is the participant-facing preparation view for a virtual or hybrid group session, accessed at `/cl/virtual-groups/:sessionId/join`. ## Overview The page reads the session from `useGroupSessionDetail`, attendance from `useGroupAttendanceBySession`, and telehealth metadata from `useTelehealthMetadata`. The attendee record is resolved by matching an optional `?attendanceId=` query parameter; if absent, the first attendance record is used. Two pre-join steps are displayed in a checklist card: (1) Technology Check — tracked by `technology_check_completed_at` on the attendance record; (2) Recording Consent — only shown when `recording_enabled` is true on the session, tracked by `recording_consent_captured_at`. The **Open telehealth room** button is enabled only when both required steps are complete and the session status is `in_progress` or `scheduled`. The join URL is sourced from `telehealth.vendor_session_ref`. ## Who it's for Requires permission `cl.group.virtual.attend`. ## Before you start * You must have `cl.group.virtual.attend`. * An attendance record for your chart must exist for this session (matched via `?attendanceId=` query parameter or as the first enrollment record). * The session status must be `in_progress` or `scheduled` to enable joining. ## Steps Navigate to `/cl/virtual-groups/:sessionId/join` (optionally with `?attendanceId=`). The page loads session details and your attendance record. In the "Get Ready to Join" card, click **Start** next to Technology Check to open `TechnologyCheckSheet`. Verify camera, microphone, and connection. Once complete, the step shows a green check and the button changes to **Re-run**. If the session has `recording_enabled`, click **Capture** next to Recording Consent to open `RecordingConsentDialog`. Once captured, the step shows a green check and the label "Captured — consent is locked for this session." When all required steps are complete, click **Open telehealth room** in the Join Session card. The button opens `vendor_session_ref` in a new tab. If the vendor URL is not yet available, the button displays "Awaiting host to start" in a disabled state. ## Key concepts The **Open telehealth room** button is disabled when: no attendance record is found; technology check is not complete; recording consent is required but not captured; or session status is `completed` or `cancelled`. The card description shows the specific blocking reason. Once `recording_consent_captured_at` is set, consent cannot be re-captured from this page (the button changes to **View** and the description reads "Captured — consent is locked for this session"). The page resolves the participant's attendance record using `?attendanceId=` if provided; otherwise it falls back to the first record in the attendance list. If no record is found, a blocking error is shown. * Session not found: `EmptyState` with title "Session Not Found". * No attendance record: blocking reason "No attendance record found for this session. Contact your provider." * Session ended or cancelled: blocking reason "This session is no longer active." * No vendor URL: "Awaiting host to start" disabled button. * Loading: skeleton placeholders. ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/VirtualGroupJoinPage.tsx * src/cores/cl/hooks/useGroupSessions.ts * src/cores/cl/hooks/useGroupAttendance.ts * src/cores/cl/hooks/useVirtualGroupSessions.ts * src/cores/cl/types/virtual-group.ts # Lab & Diagnostic Orders — Admin Guide Source: https://docs.encoreos.io/cl/lab-orders-admin-guide This guide covers administrative configuration for the Lab & Diagnostic Orders feature, including order template management, reference lab directory setup, and… ## Overview This guide covers administrative configuration for the Lab & Diagnostic Orders feature, including order template management, reference lab directory setup, and integration configuration. *** ## Order Template Management **Route:** Clinical > Settings > Order Templates\ **Permission:** `cl.order_templates.manage` ### Creating a Template 1. Navigate to **Clinical > Settings > Order Templates**. 2. Click **Add Template**. 3. Fill in: * **Template Name**: Descriptive name (e.g., "Basic Metabolic Panel"). * **Template Type**: `lab`, `imaging`, `procedure`, or `referral`. * **Description**: Purpose and use case. * **Order Items**: Add LOINC codes using the typeahead search. For each item, specify: * LOINC Code & Component (auto-populated from search) * Specimen Type (e.g., Serum, Plasma) * Priority (Routine, Urgent, Stat) 4. Toggle **Active** to make available to clinicians. 5. Click **Save**. ### Managing Templates * **Edit**: Click Edit on any template row to modify. * **Deactivate**: Toggle the Active switch to hide from clinician order forms without deleting. * **Delete**: Click Delete to permanently remove (admin only). *** ## Reference Lab Directory **Route:** Clinical > Settings > Lab Directory\ **Permission:** `cl.reference_labs.manage` ### Adding a Reference Lab 1. Navigate to **Clinical > Settings > Lab Directory**. 2. Click **Add Lab**. 3. Fill in: * **Lab Name** (required): Display name. * **CLIA Number**: Clinical Laboratory Improvement Amendments number. * **NPI**: National Provider Identifier. * **Phone / Fax / Contact Name**: Lab contact information. * **Address fields**: Street, city, state, ZIP. * **Integration Type**: `none` (manual), `hl7v2`, or `fhir`. 4. Click **Save**. ### Integration Configuration For labs that send results electronically: | Integration Type | Protocol | Configuration | | ------------------- | ---------------- | ----------------------------------------------------- | | **Manual** (`none`) | N/A | Results entered manually by staff | | **HL7v2** | ORU^R01 | Lab sends HL7v2 messages to the ingestion endpoint | | **FHIR** | DiagnosticReport | Lab sends FHIR R4 resources to the ingestion endpoint | The ingestion endpoint is: `POST /functions/v1/cl-lab-result-ingestion` Labs must authenticate with an API key provided during setup. Contact your system administrator for endpoint credentials. ### Managing Labs * **Edit**: Click Edit to update lab details or integration settings. * **Deactivate**: Toggle the Active switch to prevent new orders from being routed. * **Delete**: Click Delete to permanently remove (admin only). *** ## LOINC Code Reference The system ships with pre-seeded LOINC codes for common behavioral health lab panels: | Panel | Codes Included | | --------------------------- | ------------------------------------------------------------------- | | Basic Metabolic Panel (BMP) | Glucose, BUN, Creatinine, Sodium, Potassium, Chloride, CO2, Calcium | | Complete Blood Count (CBC) | WBC, RBC, Hemoglobin, Hematocrit, MCV, MCH, MCHC, Platelets | | Hepatic Function (LFT) | ALT, AST, ALP, Total Bilirubin, Albumin, Total Protein | | Thyroid Panel | TSH, Free T4 | | Drug Monitoring | Lithium, Valproic Acid | | Urine Drug Screen | Multi-substance panel | Additional LOINC codes can be added by system administrators directly to the `cl_loinc_codes` table. *** ## Permissions Reference | Permission Key | Description | | --------------------------- | ---------------------------------- | | `cl.orders.view` | View lab orders and results | | `cl.orders.create` | Create new lab orders | | `cl.orders.update` | Update order status | | `cl.orders.cancel` | Cancel pending orders | | `cl.results.view` | View lab results | | `cl.results.review` | Review and sign off on results | | `cl.order_templates.view` | View order templates | | `cl.order_templates.manage` | Create/edit/delete order templates | | `cl.reference_labs.manage` | Manage reference lab directory | All permissions are granted to the `org_admin` role by default. Use the Roles & Permissions settings to grant these to other roles as needed. *** ## Security & Compliance * All lab data is protected by Row Level Security (RLS) with tenant isolation. * Lab results containing PHI are never logged to console or external services. * The result ingestion endpoint uses API key authentication with timing-safe comparison. * Rate limiting is enforced per lab to prevent abuse. * Audit trails track all order creation, status changes, and result reviews. # Lab & Diagnostic Orders — User Guide Source: https://docs.encoreos.io/cl/lab-orders-user-guide The Lab & Diagnostic Orders feature allows clinicians to create, track, and review laboratory orders and results within the patient chart. Results can be enter… ## Overview The Lab & Diagnostic Orders feature allows clinicians to create, track, and review laboratory orders and results within the patient chart. Results can be entered manually or received automatically from reference labs via HL7v2 or FHIR interfaces. *** ## Creating a Lab Order 1. Navigate to **Clinical > Charts** and open a patient chart. 2. Click the **Labs** tab in the chart view. 3. Click **New Order**. 4. Fill in the order form: * **LOINC Code**: Start typing to search (e.g., "Potassium", "CBC"). The typeahead searches by component name, short name, or LOINC code. * **Reference Lab**: Select the lab that will process the order. * **Priority**: Choose **Routine**, **Urgent**, or **Stat**. * **Specimen Type**: Specify the specimen (e.g., Serum, Urine). * **Clinical Notes**: Add relevant clinical context. 5. Click **Save as Draft** or **Submit Order**. ### Using Order Templates For common panels (e.g., CMP, CBC, Lithium monitoring): 1. Click **Use Template** in the order form. 2. Select a template from the dropdown. 3. The form auto-populates with the template's LOINC codes, specimen types, and priorities. 4. Modify individual fields as needed before submitting. *** ## Order Status Workflow | Status | Description | | -------------- | ------------------------------------- | | **Draft** | Order created but not yet submitted | | **Ordered** | Submitted to the reference lab | | **Collected** | Specimen has been collected | | **In Process** | Lab is processing the specimen | | **Resulted** | Results are available | | **Cancelled** | Order was cancelled (reason required) | *** ## Reviewing Lab Results When results arrive (via interface or manual entry), they appear in the **Labs** tab: 1. Open the patient chart → **Labs** tab. 2. Results with abnormal flags are highlighted: * 🔴 **Critical High/Low** — Red background, immediate attention required * 🟡 **High/Low** — Yellow/warning background * 🟠 **Abnormal** — Muted warning * ✅ **Normal** — Default display 3. Click a result row to view details. 4. Click **Review & Sign** to acknowledge the result: * Add review notes if needed. * Confirm to set your signature and timestamp. *** ## Result Trending To view trends for a specific lab value: 1. In the Labs tab, click the **trend icon** (📈) next to a result. 2. The trend chart shows all numeric values for that LOINC code over time. 3. Reference range lines are displayed when available. 4. Hover over data points to see exact values and dates. *** ## Clinical Decision Support (CDS) Alerts The system automatically generates alerts for: * **Overdue monitoring labs**: When a medication's monitoring protocol indicates labs are due (e.g., Lithium levels every 90 days). * **Abnormal results**: When results arrive with abnormal flags, a CDS alert is created for the treating clinician. Alerts appear in the patient chart's alert banner and can be acknowledged after review. *** ## Permissions | Action | Permission Required | | ------------------- | ------------------- | | View orders/results | `cl.orders.view` | | Create orders | `cl.orders.create` | | Update order status | `cl.orders.update` | | Cancel orders | `cl.orders.cancel` | | Review/sign results | `cl.results.review` | Contact your organization admin if you need additional permissions. # LoC Assessments Source: https://docs.encoreos.io/cl/loc-assessments List and filter Level-of-Care assessments (ASAM and LOCUS instruments); create new assessments with prior-assessment delta and dimensional scoring. This screen lists Level-of-Care (LoC) assessments for the current organization and is available at `/cl/loc-assessments`. ## Overview The LoC Assessments list page renders all records from `cl_loc_assessments` scoped to the current organization, using the `LocAssessmentListTable` component. Records are filtered to non-deleted rows and ordered by `assessed_at` descending. An instrument filter dropdown allows narrowing the list to `ASAM` or `LOCUS` assessments, or showing all instruments. Users see a **New Assessment** button that navigates to `/cl/loc-assessments/new`. Clicking a row in the table navigates to the detail page at `/cl/loc-assessments/:assessmentId`. The signing flow requires a `final_loc_code`; when this differs from `recommended_loc_code`, an `override_reason_code` and a rationale of at least 20 characters are required (enforced client-side and by a DB trigger). ## Who it's for Requires permission: `cl.loc_assessment.view` Creating new assessments additionally requires: `cl.loc_assessment.create` ## Before you start You must hold `cl.loc_assessment.view` to access this page. Assessments are scoped to your current organization. ## Steps Navigate to `/cl/loc-assessments`. All non-deleted assessments for your organization load, ordered most recent first. Use the instrument dropdown (All Instruments / ASAM / LOCUS) to narrow the list. The table is rendered by `LocAssessmentListTable`. Click any row to open the detail page at `/cl/loc-assessments/:assessmentId`. Click **New Assessment** (requires `cl.loc_assessment.create`) to navigate to `/cl/loc-assessments/new`. ## Key concepts The dropdown maps to `instrument_type` column values: `asam` and `locus`. Selecting "All Instruments" removes the filter. The `status` field progresses to `signed` upon finalization. The signing mutation sets `signed_at` and `signed_by`. An override (where `final_loc_code !== recommended_loc_code`) requires a reason code and rationale. The list table component (`LocAssessmentListTable`) receives an `isLoading` prop and handles the skeleton/loading state internally. ## Creating a LoC assessment The New LoC Assessment page at `/cl/loc-assessments/new` allows a clinician to create a new level-of-care assessment. Requires `cl.loc_assessment.create`. The page accepts optional `patientId` and `priorId` URL search params for pre-population. The user selects an instrument type (`asam` or `locus`) and enters (or confirms) a patient ID. When a prior assessment ID is supplied via `priorId`, a `LocTransitionRecommendationCard` and a `LocReassessmentDeltaTable` are displayed above the form, showing the prior recommended LoC code, the current preview recommendation, and a dimensional delta table. The `LocAssessmentForm` component captures dimensional scores and emits a `recommended_loc_code` on change. On save, `useCreateLocAssessment` creates the record in `cl_loc_assessments` with `status: 'draft'` and navigates to the detail page at `/cl/loc-assessments/:id`. The new record links to the prior assessment via `supersedes_id` when reassessing. **Before you start:** have the patient's chart ID available (the page accepts a `patientId` query param, or you can type it into the Patient ID field). To reassess from a prior assessment, include a `priorId` query param with the prior assessment's ID. Go to `/cl/loc-assessments/new`. Optional: append `?patientId=` and/or `?priorId=` to pre-populate the form. Type the patient chart ID in the Patient ID field, or confirm the pre-populated value from the URL param. Choose "ASAM Criteria (Substance Use)" or "LOCUS (Mental Health)" from the Instrument dropdown. The default is `asam`. If a prior assessment was loaded via `priorId`, the LocTransitionRecommendationCard shows the prior final LoC code vs. the current preview recommendation. The LocReassessmentDeltaTable shows per-dimension score changes. Fill in the dimensional scores in the LocAssessmentForm. The form emits a `recommended_loc_code` preview as scores change. Click Save in the LocAssessmentForm. The assessment is created with `status: 'draft'` and you are redirected to the detail page at `/cl/loc-assessments/:id` to review and sign. The `instrument_type` field accepts `asam` or `locus`. Labels rendered in the UI are "ASAM Criteria (Substance Use)" and "LOCUS (Mental Health)". Clinical scoring rules for each instrument are not implemented in this component. When `priorId` is provided, `useLocAssessmentReassess` loads the prior record and seeds the form with its `dimension_scores`. `computeDirection` compares the new total score to the prior total: `step_up` (new > prior), `step_down` (new \< prior), or `lateral` (equal). The new record is linked via `supersedes_id`. New assessments are created with `status: 'draft'`. Signing (via `useSignLocAssessment` on the detail page) sets `status: 'signed'` and records `signed_at` and `signed_by`. If `final_loc_code !== recommended_loc_code`, an `override_reason_code` and `override_rationale` (minimum 20 characters) are required. ## Detail view This screen displays the detail of a single Level-of-Care assessment record at route `/cl/loc-assessments/:assessmentId`. ### Overview The LoC Assessment detail page loads a single assessment from the `cl_loc_assessments` table using the `assessmentId` URL parameter. It displays the instrument type (ASAM or LOCUS), the date and time of the assessment, and a status badge (`draft`, `finalized`, or `amended`). The **Summary** tab shows a dimensional profile radar chart and a recommendation card. When a prior assessment exists for the same patient and instrument type, a **Comparison** tab appears showing side-by-side dimension scores. For `draft` assessments, action buttons allow the clinician to accept the computed recommendation or open an override dialog to record a different Level-of-Care with a reason category and rationale. ### Who it's for Requires the `cl.loc_assessment.view` permission. The **Override** button additionally requires `cl.loc_assessment.override`. The **Accept Recommendation** button additionally requires `cl.loc_assessment.sign`. ### Before you start * You must hold the `cl.loc_assessment.view` permission for your organization. * The assessment must exist in the system; navigating to an unknown `assessmentId` renders an "Assessment not found" message with a link back to the list. * To finalize with an override, you must also hold `cl.loc_assessment.override` and `cl.loc_assessment.sign`. ### Steps Navigate to `/cl/loc-assessments` and select a record, or follow a direct link to `/cl/loc-assessments/:assessmentId`. On the **Summary** tab, inspect the radar chart showing per-dimension scores. If a prior assessment exists, a previous-score overlay is rendered for comparison. The **Recommendation** card displays the system-computed `recommended_loc` value derived from `computeLocRecommendation`. If a final LoC has been set and differs from the recommendation, the card indicates the assessment is overridden. If a prior assessment exists for the same patient and instrument type, select the **Comparison** tab to view the `LocAssessmentComparisonView` side-by-side display. For `draft` assessments, either click **Accept Recommendation** to finalize with the computed LoC, or click **Override** (requires `cl.loc_assessment.override`) to open the `LocOverrideDialog`. In the dialog, select a `reason category` and enter a rationale of at least 20 characters, then confirm. ### Key concepts The `instrument_type` field is either `asam` or `locus`. ASAM assessments use six dimensions (`acute_intoxication`, `biomedical_conditions`, `emotional_behavioral_cognitive`, `readiness_to_change`, `relapse_continued_use`, `recovery_environment`). LOCUS assessments use six dimensions (`risk_of_harm`, `functional_status`, `medical_comorbidity`, `recovery_environment`, `treatment_history`, `engagement`). The `status` field follows the values `draft`, `finalized`, and `amended`. Action buttons for accepting a recommendation or overriding are only visible when `status === 'draft'`. An override occurs when the `final_loc` set on the assessment differs from `recommended_loc`. An override requires a `OverrideReasonCategory` selection and a rationale string; the database enforces a minimum rationale length of 20 characters. If the assessment record is not found or does not belong to the current organization, the page renders: "Assessment not found." with a **Back to List** button. ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/LocAssessmentListPage.tsx * src/cores/cl/hooks/useLocAssessments.ts * src/cores/cl/pages/LocAssessmentNewPage.tsx * src/cores/cl/pages/LocAssessmentDetailPage.tsx * src/cores/cl/types/loc-assessment.ts # LoC History Source: https://docs.encoreos.io/cl/loc-history Read-only chronological list of all ASAM and LOCUS level-of-care assessments for a patient chart with step-up/step-down indicators. The LoC History screen at `/cl/charts/:chartId/loc-history` lists every level-of-care (ASAM/LOCUS) assessment recorded for a patient chart, ordered newest-first, with trend indicators comparing each assessment to the prior one. ## Overview The page calls `useLocAssessmentsByChart` which queries `cl_loc_assessments` ordered by `assessed_at` descending. For each row a `delta` is computed as `total_score` of the current row minus `total_score` of the next-older row in the sorted list. A `DirectionBadge` renders: "Step-up (+N)" in destructive style when delta > 0, "Step-down (N)" in success style when delta \< 0, or "Lateral" in outline style when delta = 0. The first row in the list always shows a dash (no prior to compare). Each card links to the assessment detail at `/cl/loc-assessments/:id` and shows recommended LoC code, final LoC code, total score, and status. Human-readable level labels are resolved from `ASAM_LOC_LABELS` or `LOCUS_LOC_LABELS` depending on `instrument_type`. ## Who it's for Requires permission: `cl.loc_assessment.view` ## Before you start * Must hold `cl.loc_assessment.view`. * Navigate here from within a Patient Chart context via the chart's `/cl/charts/:chartId/loc-history` route. ## Steps Navigate to `/cl/charts/:chartId/loc-history` from within a patient chart context. The page loads all ASAM/LOCUS assessments for the chart, newest first. Each card displays a `DirectionBadge` comparing its `total_score` to the next-older assessment: Step-up (higher score), Step-down (lower score), or Lateral (equal score). The most recent row shows a dash. Each card shows: instrument type (ASAM or LOCUS), assessment datetime, recommended LoC code with label, final LoC code with label, total score, and status badge. Click the card title link to navigate to the full assessment detail at `/cl/loc-assessments/:id`. ## Key concepts Assessments use `instrument_type` of either `asam` or `locus`. The page resolves human-readable level labels from `ASAM_LOC_LABELS` for ASAM rows and `LOCUS_LOC_LABELS` for LOCUS rows. Each row exposes `recommended_loc_code` and `final_loc_code`. The page displays both; the preview card shows `final_loc_code ?? recommended_loc_code` as the "Final" value. SME: confirm clinical/regulatory distinction. The badge compares `total_score` between consecutive rows (newest-first ordering). Positive delta = step-up (higher intensity); negative delta = step-down; zero = lateral. The first row has no prior to compare and displays "—". When no assessments exist for the chart, an empty-state component is shown with the message "No assessments yet — No level-of-care assessments have been recorded for this chart." ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/LocAssessmentHistoryPage.tsx * src/cores/cl/hooks/useLocAssessments.ts * src/cores/cl/types/loc-assessment.ts # Marketplace Curator Source: https://docs.encoreos.io/cl/marketplace-curator Publish new Clinical Marketplace bundle versions and deprecate or reinstate existing bundles. This screen is the platform curator console for managing Clinical Marketplace bundles and is available at `/cl/marketplace/curator`. ## Overview The Marketplace Curator page lists all bundles from `cl_marketplace_bundles` (including deprecated ones, unlike the public catalogue). Each bundle card shows name, version badge, bundle key, publish date/time, and a deprecated badge when applicable. Curators can toggle a bundle's deprecated state using the **Deprecate** / **Reinstate** button, which calls `useDeprecateMarketplaceBundle` and toggles `is_deprecated` on the row. A **Publish version** button navigates to `/cl/marketplace/curator/new` where a new bundle version can be authored and published via `usePublishMarketplaceBundleVersion`. Publishing inserts a row into `cl_marketplace_bundles` and then inserts the associated items into `cl_marketplace_bundle_items`; this is a client-side sequence and is not transactional. ## Who it's for Requires permission: `cl.marketplace.publish` Access is additionally enforced at the database level by the `cl_can_curate_marketplace` SECURITY DEFINER helper. ## Before you start You must hold `cl.marketplace.publish` to access this page. The `cl_can_curate_marketplace` DB function is the authoritative access gate. ## Steps Navigate to `/cl/marketplace/curator`. All marketplace bundles (including deprecated ones) load for review. Each card shows the bundle name, version, bundle key, publish timestamp. Deprecated bundles show a destructive badge labeled "Deprecated." Click **Deprecate** to set `is_deprecated = true` on a bundle. Click **Reinstate** to reverse this. A success toast confirms the action. Click **Publish version** to navigate to `/cl/marketplace/curator/new`. Fill in the bundle details and items, then submit to insert the new bundle row and its items. ## Key concepts Deprecating a bundle sets `is_deprecated` to true. The bundle remains in the table but is excluded from the public catalogue (`useMarketplaceBundles` filters to `is_deprecated = false`). Organizations with existing imports are unaffected. When no bundles exist, an empty state is shown: "No bundles yet — Publish the first marketplace bundle for your platform." with a **Publish version** action. If the bundle list fails to load, a destructive alert titled "Error Loading Bundles" is displayed with a sanitized error message. ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/MarketplaceCuratorListPage.tsx * src/cores/cl/hooks/useMarketplaceBundles.ts * src/cores/cl/hooks/useMarketplaceCurator.ts # MAT Enrollment Source: https://docs.encoreos.io/cl/mat-enrollment View and manage a single medication-assisted treatment enrollment record, including medication events and monitoring events. The MAT Enrollment detail screen shows a single MOUD (medications for opioid use disorder) enrollment record at the in-app route `/cl/mat/:enrollmentId`. ## Overview The page loads a single enrollment from the `cl_moud_enrollments` table via `useMoudEnrollmentDetail`, scoped to the current organization. Four summary cards display the primary medication, treatment phase, enrollment status (`active`, `paused`, `completed`, `discontinued`), and the enrollment start date. Below the summary, two tables show medication events and monitoring events for the enrollment. Medication events track type, medication name, dose, and adherence status (`on_time`, `late`, `missed`). Monitoring events track type, due date, completion date, and result status (`pending`, `normal`, `abnormal`, `critical`); overdue items are highlighted. Users with the appropriate sub-permissions can record new medication events or add and complete monitoring events via modal dialogs. ## Who it's for Requires permission `cl.moud.view`. Additional sub-permissions control write actions: * `cl.moud.medication-event.create` — enables "Record Event" for medication events. * `cl.moud.monitoring.manage` — enables "Add Monitoring" and "Mark Complete" for monitoring events. ## Before you start * Permission `cl.moud.view` must be granted. * An enrollment record must exist (`enrollmentId` in the URL must resolve to a row in `cl_moud_enrollments` for the current organization). ## Steps Open the MAT enrollment list at `/cl/mat` and click an enrollment row, or follow a deep link to `/cl/mat/:enrollmentId`. The four header cards show the primary medication, treatment phase, status badge, and start date. The Medication Events table lists each recorded event with date, event type, medication name, dose, and adherence status. If no events exist, an empty state is shown. Click "Record Event" (requires `cl.moud.medication-event.create`) to open the medication event form dialog. The dialog pre-populates with the enrollment's primary medication. The Monitoring Events table lists scheduled monitoring items with type, due date, completion date, and result status. Overdue items are highlighted with a destructive row style and an "Overdue" badge. Click "Add Monitoring" to schedule a new event, or "Mark Complete" on an existing event (requires `cl.moud.monitoring.manage`). Marking complete sets `completed_at` to the current time and `result_status` to `pending`. ## Key concepts `active`, `paused`, `completed`, `discontinued` — sourced from `src/cores/cl/types/moud.ts`. `induction`, `stabilization`, `maintenance`, `taper` — sourced from `src/cores/cl/types/moud.ts`. `pending`, `normal`, `abnormal`, `critical` — sourced from `src/cores/cl/types/moud.ts`. If the enrollment is not found (e.g., wrong ID or cross-tenant), the page renders "Enrollment not found." A loading skeleton is shown while the data fetches. Missing `organizationId` or `enrollmentId` context blocks mutations with a toast error. ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/MoudEnrollmentDetailPage.tsx * src/cores/cl/hooks/useMoudEnrollments.ts * src/cores/cl/types/moud.ts # MAT/MOUD Tracking — Admin Guide Source: https://docs.encoreos.io/cl/mat-moud-admin-guide This guide covers administrative configuration for the MAT/MOUD Tracking module. ## Overview This guide covers administrative configuration for the MAT/MOUD Tracking module (CL-21). ## Quick Reference | I need to... | Pattern | Location | | ----------------------------------------- | --------------------------------- | ------------------------------------------- | | Configure MAT access | Permission keys + role assignment | [Permission Keys](#permission-keys) | | Validate consent-based access behavior | CL-11 consent + RLS enforcement | [Consent Enforcement](#consent-enforcement) | | Check planned operational tuning controls | `cl_module_settings` roadmap | [Future Settings](#future-settings) | | Verify integration readiness | CL/PM/PF integration status | [Integration Points](#integration-points) | *** ## Permission Keys Assign these permissions via **Settings > Roles & Permissions**: | Permission Key | Category | Description | | --------------------------------- | -------- | ---------------------------------------- | | `cl.moud.view` | view | View MAT enrollments and related events | | `cl.moud.enroll` | create | Create and edit MAT enrollments | | `cl.moud.medication-event.create` | create | Record medication dose events | | `cl.moud.monitoring.manage` | edit | Manage monitoring schedules and results | | `cl.moud.report.view` | view | Access MAT outcome and adherence reports | **Note:** The `org_admin` role is automatically granted all permissions via the `pf_auto_grant_org_admin` trigger. *** ## Default Role Assignments | Role | Permissions Granted | | ----------- | ----------------------------------------------------------------------------------------------------------------------- | | `org_admin` | All 5 permissions (auto-granted) | | `manager` | `cl.moud.view`, `cl.moud.enroll`, `cl.moud.medication-event.create`, `cl.moud.monitoring.manage`, `cl.moud.report.view` | | `staff` | `cl.moud.view`, `cl.moud.medication-event.create`, `cl.moud.monitoring.manage` | *** ## Data Retention MAT/MOUD records do **not** support soft delete (`deleted_at`). This is intentional: * **42 CFR Part 2** requires retention of SUD treatment records * DELETE operations are restricted to `org_admin` role only (via RLS) * Enrollments can be set to "Discontinued" or "Completed" status instead of deletion *** ## Consent Enforcement The system enforces 42 CFR Part 2 consent at the RLS (database) level: * If a `consent_id` is linked to an enrollment, that specific consent must be active * If no `consent_id` is set, chart-level SUD consent flags are checked * Without valid consent, MAT records are inaccessible (queries return empty) *** ## Future Settings The following settings are planned for future releases and will be configurable in `cl_module_settings`: * **Monitoring cadence defaults** — default intervals for UDS, hepatic panels * **Adherence risk thresholds** — missed-dose count triggering alerts * **Overdue monitoring alert rules** — notification timing for overdue items *** ## Database Tables | Table | Purpose | | --------------------------- | ---------------------------------------- | | `cl_moud_enrollments` | MAT enrollment records per patient chart | | `cl_moud_medication_events` | Individual medication dose/event records | | `cl_moud_monitoring_events` | Lab and screening monitoring schedules | All tables enforce RLS with `FORCE ROW LEVEL SECURITY` and multi-tenant isolation via `organization_id`. *** ## Integration Points | Integration | Status | Description | | ---------------- | ---------- | ---------------------------------- | | CL-11 (Consent) | ✅ Active | 42 CFR Part 2 consent enforcement | | CL-10 (Outcomes) | 📋 Planned | CBE #3400 pharmacotherapy metrics | | PM-07 (Billing) | 📋 Planned | Charge triggers for MAT encounters | | PF-10 (Alerts) | 📋 Planned | Overdue monitoring notifications | *** ## Troubleshooting | Issue | Likely Cause | Resolution | | ----------------------------------------------- | --------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | | MAT enrollment inaccessible despite valid login | Consent requirements not satisfied (`consent_id` inactive or chart-level SUD consent missing) | Verify consent status in CL-11 and re-check linked enrollment/chart consent context | | Monitoring alerts not firing | PF-10 integration is still planned/not active | Confirm current integration status and verify planned cadence settings in `cl_module_settings` | | Unable to enroll patient | Missing `cl.moud.enroll` permission | Update role mapping in Settings → Roles & Permissions and retry | # MAT/MOUD Tracking — User Guide Source: https://docs.encoreos.io/cl/mat-moud-user-guide The MAT/MOUD Tracking module supports medication-assisted treatment workflows for opioid use disorder and other substance use disorders. It provides enrollment… ## Overview The MAT/MOUD Tracking module supports medication-assisted treatment workflows for opioid use disorder and other substance use disorders. It provides enrollment management, medication event recording, and monitoring protocol tracking integrated with patient charts. ## Quick Reference | I need to… | Pattern | Location | | ----------------------- | ------------------------------------------------------ | -------------------------------------------------------------------------------------- | | Create a new enrollment | Enrollment workflow with consent linkage | [Workflows → 1. Create a New Enrollment](#1-create-a-new-enrollment) | | Record a dose/event | Medication event logging with adherence | [Workflows → 2. Record a Medication Event](#2-record-a-medication-event) | | Add/complete monitoring | Monitoring events with due dates and completion | [Workflows → 3. Schedule and Complete Monitoring](#3-schedule-and-complete-monitoring) | | End MAT treatment | Enrollment status transition to completed/discontinued | [Workflows → 5. End an Enrollment](#5-end-an-enrollment) | *** ## Permissions | Permission Key | Description | Typical Roles | | --------------------------------- | ------------------------------------ | -------------------------------- | | `cl.moud.view` | View MAT enrollments and events | All clinical staff | | `cl.moud.enroll` | Create and edit enrollments | Licensed Clinicians, Prescribers | | `cl.moud.medication-event.create` | Record medication events (doses) | Prescribers, Nurses | | `cl.moud.monitoring.manage` | Manage monitoring events (UDS, labs) | Licensed Clinicians, Nurses | | `cl.moud.report.view` | View MAT outcome reports | Clinical Supervisors, Quality | *** ## Workflows ### 1. Create a New Enrollment 1. Navigate to **Clinical > MAT/MOUD Enrollments** (`/cl/mat`) 2. Click **New Enrollment** 3. Fill in required fields: * **Patient Chart** — select the patient * **Primary Medication** — e.g., Buprenorphine/Naloxone, Methadone, Naltrexone * **Start Date** — enrollment start * **Treatment Phase** — Induction, Stabilization, or Maintenance 4. Optionally link a **42 CFR Part 2 consent** record (required for SUD cases) 5. Click **Save** ### 2. Record a Medication Event 1. Open an enrollment from the list 2. In the **Medication Events** section, click **Record Event** 3. Select event type: Ordered (order placed before prescription), Prescribed, Administered, Dispensed, Held, or Missed 4. Enter medication name, dose value/unit, and timestamp 5. Set adherence status (On Time, Late, Missed) if applicable 6. Click **Save** ### 3. Schedule and Complete Monitoring 1. Open an enrollment detail page 2. In the **Monitoring Events** section, click **Add Monitoring** 3. Select monitoring type: UDS, Hepatic Panel, CBC, or Other 4. Set **Due By** date 5. Click **Save** 6. When the monitoring is completed, click **Mark Complete** on the event row **Overdue items** are highlighted in red with an "Overdue" badge. ### 4. Update Treatment Phase Treatment phases follow the clinical progression: * **Induction** → **Stabilization** → **Maintenance** To update, edit the enrollment and change the treatment phase field. ### 5. End an Enrollment To complete or discontinue an enrollment: 1. Edit the enrollment 2. Set **Status** to Completed or Discontinued 3. Enter the **End Date** 4. Add discontinuation reason if applicable 5. Click **Save** *** ## Consent Requirements For SUD-related MAT cases, **42 CFR Part 2 consent** must be active before accessing enrollment data. The system enforces this at the database level. If consent is not present, MAT records will not be accessible. The 2024 amendments to 42 CFR Part 2 are now in effect (compliance date: **2026-02-16**), and OCR accepts complaints for violations from that date. Under the updated rule, a single consent can cover future TPO disclosures, and HIPAA-covered recipients may redisclose according to HIPAA when disclosure is authorized by that consent. CL-11 consent workflows should be verified for updated single-consent and NPP requirements. Part 2 records still cannot be used in legal/civil proceedings without explicit consent. *** ## Settings * MAT behavior is governed by module-level CL settings and permission assignments (`cl.moud.*`). * Organization role mapping should be aligned with PF-30 permission governance. * Consent enforcement behavior depends on CL-11 consent configuration and active patient consent records. *** ## Known Limitations * Medication event type availability and workflow sequencing may vary by organization policy. * Monitoring protocol templates are limited to configured event types (UDS, hepatic panel, CBC, other). * Legal/regulatory workflows are documented guidance and must be validated against active org policy and CL-11 implementation state. *** ## Troubleshooting | Symptom | Likely Cause | Resolution | | ------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------------------------- | | MAT records are not visible | 42 CFR Part 2 consent missing/inactive | Verify active consent in CL-11 and relink enrollment consent if needed | | Cannot create or edit enrollment | Missing `cl.moud.enroll` permission | Request role update from org admin | | Cannot record medication event | Missing `cl.moud.medication-event.create` permission | Confirm role permissions and reload session | | Monitoring does not move to completed | Incorrect enrollment/event selected | Reopen enrollment detail and complete the intended monitoring row | *** ## Tips * Medication events are sorted newest-first for quick reference * Monitoring events show due/overdue status at a glance * All MAT data is subject to the same clinical document access controls as the patient chart *** ## Related Documentation * Specification: specs/cl/specs/CL-21-medication-assisted-treatment-moud-tracking.md * Admin Guide: docs/cl/mat-moud-admin-guide.md * Regulatory Tracker: docs/compliance/REGULATORY\_COMPLIANCE\_TRACKER.md # Medical Record Export & Document Generation — User Guide Source: https://docs.encoreos.io/cl/medical-record-export-user-guide Contact your organization administrator if you need access. ## Quick Reference | I need to... | Pattern | Location | | ------------------------------- | ---------------------------------------------- | ----------------------------------------------------------------- | | Export one chart document | Per-record download action | [Exporting a Single Document](#exporting-a-single-document) | | Export a complete patient chart | Export dialog with section/date filters | [Exporting a Full Patient Chart](#exporting-a-full-patient-chart) | | Include SUD content legally | Consent-gated SUD toggle + redisclosure notice | [SUD Records & 42 CFR Part 2](#sud-records--42-cfr-part-2) | | Verify export permissions | Permission-gated actions | [Permissions](#permissions) | ## Decision Trees ### Export path selection 1. Need one document only? * Yes → use row/header Download action in target section. * No → use **Export Chart** in chart header. 2. Need date-filtered bundle? * Yes → enable date range in chart export dialog. 3. Need SUD records? * Only include when consent and SUD indicators permit the toggle. ### SUD consent branch 1. Is patient SUD-indicated and consent active? * Yes → SUD toggle enabled; include redisclosure notice. * No → SUD content excluded from export. ## Pattern Library * **Download icon pattern:** section-level row action for single-document PDF export. * **Export Chart dialog pattern:** section selector + optional date filter + consent-gated SUD inclusion. * **Progress pattern:** visible progress bar for full-chart export generation. * **Audit pattern:** every export writes immutable export audit metadata. ## Common Mistakes | Mistake | Outcome | Resolution | | ---------------------------------------------------- | -------------------------------------- | ---------------------------------------------------- | | Trying full-chart export without `cl.records.export` | Export button unavailable | Request permission update from org admin | | Expecting SUD data without active consent | SUD toggle disabled or content missing | Verify CL-11 consent status and chart SUD indicators | | Exporting oversized chart without date filter | Slow/timeout-prone export | Use date range filter to reduce scope | ## Pre-Flight Checklist * [ ] Confirm user has required export permission(s). * [ ] Confirm patient chart context is correct. * [ ] If SUD content is needed, verify active consent and SUD flag conditions. * [ ] Select only necessary sections and apply date filters where appropriate. * [ ] Verify PHI handling workflow for downloaded PDFs. *** ## Overview CL-20 enables clinicians and authorized staff to export clinical documents as PDF files. You can export individual documents (e.g., a single progress note) or an entire patient chart (multiple sections combined into one PDF). *** ## Permissions | Action | Required Permission | | --------------------------- | ------------------- | | Export a single document | `cl.charts.export` | | Export a full patient chart | `cl.records.export` | Contact your organization administrator if you need access. *** ## Exporting a Single Document ### Where to Find Export Buttons Each section of the patient chart has a **Download** (↓) icon button next to individual records: | Section | Location | | --------------------- | ---------------------------------------------- | | Progress Notes | Per-row action area in the Notes tab | | Treatment Plans | Per-row action area in the Treatment Plans tab | | Assessments | Per-row action area in the Assessments tab | | Clinical Summary | Section header in the Summary tab | | Safety Plans | In the Safety Plan card (Risk tab) | | Consent Documents | Per-row action area in the Consents tab | | Group Sessions (Peer) | Per-row action area in the Peer tab | ### How to Export 1. Navigate to the patient chart. 2. Open the relevant tab (e.g., Notes, Treatment Plans). 3. Click the **Download** (↓) icon next to the record you want to export. 4. The PDF will be generated and opened in a new browser tab. 5. From the new tab, you can print or save the document. *** ## Exporting a Full Patient Chart ### Steps 1. Navigate to the patient chart. 2. Click the **Export Chart** button in the chart header (top-right area). 3. The **Export Patient Chart** dialog will open. 4. **Select Sections:** Check or uncheck the sections you want to include. All sections are selected by default. 5. **Date Range (optional):** Toggle "Filter by date range" and enter start/end dates to limit exported records. 6. **SUD Records:** If the patient has SUD-indicated records and active consent, you can toggle "Include SUD Records" to include 42 CFR Part 2 protected content. 7. Click **Export Chart**. 8. A progress bar will show generation status. 9. The combined PDF opens in a new browser tab. ### Section Availability * **Crisis Episodes** is shown but disabled (grayed out). This section requires CL-13 (Crisis Intervention), which is not yet implemented. * All other sections are available for export. *** ## SUD Records & 42 CFR Part 2 Substance Use Disorder (SUD) records are protected under federal regulation **42 CFR Part 2**. When exporting: * The "Include SUD Records" toggle is only enabled when: * The patient has SUD-indicated flags on their chart * Active patient consent exists for SUD record disclosure * If enabled, exported documents automatically include the **federal redisclosure notice** * If consent is not active, SUD content is excluded from the export **Important:** You are responsible for ensuring that exported documents containing SUD information are handled in accordance with 42 CFR Part 2 redisclosure restrictions. *** ## Audit Trail Every PDF export (single document or full chart) is automatically logged in the system audit trail. The audit record includes: * **Who** exported the document (user ID) * **What** was exported (document type, record ID) * **When** the export occurred * **Which patient** the record belongs to * **Export type** (`cl_export_document` for single exports, `cl_export_chart` for full chart exports) Administrators can review export activity in the audit logs. *** ## Troubleshooting | Issue | Solution | | ------------------------------------ | --------------------------------------------------------------------------------- | | "Export Chart" button not visible | Verify you have the `cl.records.export` permission | | Download icon not visible on records | Verify you have the `cl.charts.export` permission | | SUD toggle is disabled | Patient may not have SUD-indicated flags, or consent may be expired/revoked | | PDF generation fails | Check your internet connection; try again. If the issue persists, contact support | | Export times out on large charts | Try filtering by date range to reduce the number of records | *** ## Related Documentation * Specification: specs/cl/specs/CL-20-medical-record-export-document-generation.md * [CL-11: Consent Management & 42 CFR Part 2](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-11-consent-management-42cfr-part2.md) * [Regulatory Compliance Tracker (42 CFR Part 2)](/compliance/REGULATORY_COMPLIANCE_TRACKER) # MOUD Enrollments Source: https://docs.encoreos.io/cl/moud-enrollments View and manage medication-assisted treatment enrollment records and treatment phase tracking at route /cl/mat. This screen lists all MAT/MOUD enrollment records for the organization and is accessible at `/cl/mat`. ## Overview The MOUD Enrollments page displays a table of all medication-assisted treatment enrollment records scoped to the current organization. Each row shows the medication name, treatment phase, status badge, start date, and end date (if applicable). Rows are clickable and navigate to the enrollment detail page at `/cl/mat/:enrollmentId`. Users with the `cl.moud.enroll` permission see a "New Enrollment" button that opens `MoudEnrollmentFormDialog`. The list is fetched via `useMoudEnrollmentList`, ordered by `started_on` descending. An empty state is shown when no records exist; an error card is shown when the query fails. ## Who it's for Requires the `cl.moud.view` permission. The "New Enrollment" button is additionally gated on `cl.moud.enroll`. ## Before you start * You must hold the `cl.moud.view` permission to access this page. * To create a new enrollment you must also hold `cl.moud.enroll`. ## Steps Open the Clinical core and go to `/cl/mat`. The page loads all enrollment records for your organization, sorted by start date (most recent first). The table shows Medication, Phase, Status (with a color-coded badge), Started date, and Ended date. A "—" in the Ended column indicates the enrollment has no recorded end date. Click any row to navigate to the enrollment detail page at `/cl/mat/:enrollmentId`. If you hold `cl.moud.enroll`, click "New Enrollment" to open the enrollment form dialog. Complete the required fields and submit to create a new record. ## Key concepts The `enrollment_status` column uses four values rendered as badges: `active` (default style), `paused` (secondary), `completed` (outline), `discontinued` (destructive). Clinical interpretation of these statuses is not determinable from code — SME confirmation required. When no enrollments exist, an empty state with a pill icon and "No MAT/MOUD Enrollments" message is shown. If the data fetch fails, a card with "Unable to load enrollments. Please try again." is displayed. ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/MoudEnrollmentListPage.tsx * src/cores/cl/hooks/useMoudEnrollments.ts # Multi-Party Encounters Source: https://docs.encoreos.io/cl/multi-party-encounters List and filter multi-party encounters; view encounter metadata, participant roster, and manage recording consent. This screen lists all multi-party encounters for the organization and is accessible at `/cl/multi-party-encounters`. ## Overview The Multi-Party Encounters page displays a filterable table of encounters that involve more than one participant, including family therapy, mobile crisis, interpreter-assisted, and care team encounters. The list is fetched via `useMultiPartyEncountersList` and supports filtering by `status` using a dropdown. Columns show the encounter start datetime, type (resolved to a human-readable label via `MULTI_PARTY_ENCOUNTER_TYPE_OPTIONS`), modality (outline badge), and status (color-coded badge). Each row is keyboard-accessible and navigates to the encounter detail at `/cl/multi-party-encounters/:encounterId`. Users with `cl.multi_party.host` permission see a "New Encounter" button. ## Who it's for Requires the `cl.multi_party.view` permission. Creating encounters additionally requires `cl.multi_party.host`. ## Before you start * You must hold `cl.multi_party.view` to access this page. * To schedule a new encounter you must hold `cl.multi_party.host`. ## Steps Open the Clinical core and go to `/cl/multi-party-encounters`. The page loads all encounters for your organization, sorted by start time (most recent first). Use the Status dropdown to filter encounters to a specific status. Select "All Statuses" to clear the filter. Click any row (or press Enter/Space) to navigate to the encounter detail page at `/cl/multi-party-encounters/:encounterId`. If you hold `cl.multi_party.host`, click "New Encounter" to open the encounter form dialog. After submission, you are automatically navigated to the new encounter's detail page. ## Key concepts The `status` column uses badge variants: `completed` (default), `in_progress` (secondary), `cancelled` (destructive), all other values (outline). Clinical meaning of transitions between statuses is not determinable from code — SME confirmation required. When no encounters match (or exist), an empty state with a users icon and "No Multi-Party Encounters" message is shown, describing the supported encounter types. If the data fetch fails, a card with "Unable to load multi-party encounters. Please try again." is displayed. ## Viewing an encounter The Encounter Detail screen shows a single multi-party encounter record with its participant list at `/cl/multi-party-encounters/:encounterId` (permission: `cl.multi_party.view`). Users with `cl.multi_party.host` additionally see the **Add** participant button and per-row remove controls. The page loads a single multi-party encounter via `useMultiPartyEncounterDetail` and its participants via `useMultiPartyParticipants`, both scoped to `encounterId`. The Encounter Details card shows encounter type (human-readable label from `MULTI_PARTY_ENCOUNTER_TYPE_OPTIONS`), modality (`in_person`, `virtual`, `hybrid`), status, and optional encounter notes. The Participants card shows each participant's role (from `PARTICIPANT_ROLE_OPTIONS`), name (`external_participant_name` or a fallback of "Staff Member"/"Patient" based on `staff_user_id`), join time, and recording consent status. Users with `cl.multi_party.host` can add participants via `AddParticipantDialog` and remove participants whose consent has not yet been captured. Note: the `cl_multi_party_encounters` database migration must be applied; until then, the page shows an error state. Navigate to `/cl/multi-party-encounters`, then click an encounter row. The detail page loads encounter metadata and the participant table. The Encounter Details card shows type, modality, status, and any freetext `encounter_notes`. Click **Add** in the Participants card header (requires `cl.multi_party.host`) to open `AddParticipantDialog`. Assign a role from `PARTICIPANT_ROLE_OPTIONS`. Each participant row shows a **Captured** or **Pending** badge for recording consent based on `recording_consent_captured_at`. For participants who have not yet had recording consent captured, a remove button is available for users with `cl.multi_party.host`. Clicking it calls `removeParticipant` scoped to the participant `id` and `encounter_id`. Multi-party encounters are typed as `family_therapy`, `mobile_crisis_virtual`, `interpreter_assisted`, `care_team_meeting`, or `other`. The display label is resolved from `MULTI_PARTY_ENCOUNTER_TYPE_OPTIONS`. Participants are assigned roles from `PARTICIPANT_ROLE_OPTIONS`: `primary_clinician`, `co_facilitator`, `peer_specialist`, `interpreter`, `patient`, `family_member`, `guardian`, or `other`. * Migration pending / load error: `EmptyState` with title "Error Loading Encounter" and message "The feature may not be available yet (migration pending)." * Participants error: separate `EmptyState` for participant load failure. * Encounter not found: `EmptyState` with title "Encounter Not Found". * No participants: "No participants recorded." * Loading: skeleton placeholders for both cards. ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/MultiPartyEncounterListPage.tsx * src/cores/cl/hooks/useMultiPartyEncounters.ts * src/cores/cl/pages/MultiPartyEncounterDetailPage.tsx * src/cores/cl/types/multi-party-encounter.ts # My Panel Source: https://docs.encoreos.io/cl/my-panel This screen shows the logged-in clinician's attributed patient panel and is accessible at /cl/population-health/my-panel. This screen shows the logged-in clinician's attributed patient panel and is accessible at `/cl/population-health/my-panel`. ## Overview The My Panel page shows the clinician's attributed patients in a summary card grid and a patient table. Four summary cards display Panel Size, Avg Risk Score, Open Gaps, and Last Refresh. The patient table columns are Patient (last, first), Risk Tier (badge), Risk Score (numeric), and Actions. The Actions column provides three icon buttons per patient: open chart (`/cl/charts/:chartId`), view care gaps for that patient (`/cl/population-health/care-gaps?chart=:chartId`), and schedule an encounter (`/pm/scheduling/new?patient=:patientId`). Data is loaded by `useRiskStratifications` (patient-level risk data from `cl_risk_stratifications`) and `useCareGapList` (open gap counts per chart, up to 200 records). Small-cell suppression via `maskSmallCell` is applied to the Panel Size and Open Gaps card values. ## Who it's for Requires the `cl.care-gaps.view` permission (enforced by both `RequirePermission` in `cl.tsx` and a `PermissionGate` inside the component). ## Before you start * You must hold `cl.care-gaps.view` to access this page. * The panel is populated from `cl_risk_stratifications` rows for the current organization; no patients will appear if no stratifications exist for your panel. ## Steps Open the Clinical core and go to `/cl/population-health/my-panel`. Summary cards load immediately showing Panel Size, Avg Risk Score, Open Gaps, and Last Refresh. The four cards show aggregate metrics for your attributed panel. "Last Refresh" is the most recent `stratification_date` across all panel rows. The table lists each attributed patient with their Risk Tier badge and composite risk score. Rows with higher risk scores appear first (ordered by `composite_risk_score` descending in `useRiskStratifications`). Click the external link icon in the Actions column to open that patient's chart at `/cl/charts/:chartId`. Click the filter icon in the Actions column to navigate to the care gaps work list filtered to that patient. Click the calendar-plus icon in the Actions column to open the scheduling screen pre-populated with the patient ID. ## Key concepts The Risk Tier badge renders using: `low` → outline, `medium` → secondary, `high` → default, `critical` → destructive. Labels come from `RISK_TIER_LABELS` in the `risk-stratifications` type module. If no stratifications exist, an empty state shows "No patients in your panel" with the attribution explanation. If the query errors, an empty state shows "Unable to load panel — An error occurred." Panel Size and Open Gaps values are passed through `maskSmallCell` (imported from `usePopulationDashboard`). The threshold and output of suppression are not visible in this component — SME confirmation of the privacy basis is recommended. ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/population-health/ClinicianPanelPage.tsx * src/cores/cl/hooks/useRiskStratifications.ts * src/cores/cl/hooks/useCareGapList.ts # Note Source: https://docs.encoreos.io/cl/note Read-only detail view for a single progress note with sign, co-sign, and addendum actions when the note status permits them. The Note screen at `/cl/charts/:chartId/notes/:noteId` displays the full detail of a single progress note and provides sign, co-sign, and addendum actions based on the current note status. ## Overview The page loads a note by `noteId` via `useProgressNoteDetail` and resolves the linked PM encounter via `useEncounterContext`. The note header shows note type (Progress Note, Addendum, Outpatient, Residential, IOP/PHP), service date, duration in minutes, and diagnosis code. A status badge reflects one of: `draft`, `completed`, `signed`, `cosigned`, `amended`, `addendum`. Session Details display service date, begin/end time, duration, diagnosis, service line, place of service, and telehealth fields when applicable. Clinical Documentation fields render: Presenting Problem, Mental Status Exam Findings (when present), Interventions, Member Response, and Plan / Next Session. A Signatures card appears when `signed_at` or `cosigned_at` are populated, showing timestamp and credentials badge. A linked-encounter alert links to the PM patient when `encounter_id` and `patientId` are present. ## Who it's for Requires permission: `cl.progress_note.view` Additional actions require: `cl.progress_note.sign` (Sign button), `cl.progress_note.cosign` (Co-sign button), `cl.progress_note.create` (Add Addendum button). ## Before you start * Must hold `cl.progress_note.view`. * Navigate here from the Notes tab of a Patient Chart (or any direct link to `/cl/charts/:chartId/notes/:noteId`). ## Steps Navigate to a patient chart, open the Notes tab, and click a note row. The note detail page loads with the note type and status in the header. Read the Session Details card: service date, begin/end time, duration, diagnosis code, service line, place of service, and telehealth details when present. Read the Clinical Documentation card: Presenting Problem, Mental Status Exam Findings, Interventions, Member Response, and Plan / Next Session. When `status === 'completed'` and you hold `cl.progress_note.sign`, the Sign button is active. Click it to open `ProgressNoteSignDialog`. When `status === 'signed'` and you hold `cl.progress_note.cosign`, the Co-sign button is active. Click it to open `ProgressNoteSignDialog`. When the note is finalized (`status` is `signed`, `cosigned`, `amended`, or `addendum`) and you hold `cl.progress_note.create`, the Add Addendum button is active. Click it to open `ProgressNoteAddendumDialog`. Click the "Chart" back button to return to `/cl/charts/:chartId`. ## Key concepts Status values observed in code: `draft` → `completed` → `signed` → `cosigned`. `amended` and `addendum` are also valid finalized states. Sign is available only from `completed`; co-sign only from `signed`; addendum only from any finalized status. Note type labels rendered in code: `progress` → "Progress Note", `addendum` → "Addendum", `outpatient` → "Outpatient", `residential` → "Residential", `iop_php` → "IOP/PHP". Unrecognized types fall back to the raw `note_type` value. When `encounter_id` is populated, `useEncounterContext` resolves encounter type, status, service date, and telehealth flag from the PM core. An alert banner links to the PM patient record when `patientId` is available. Load error: destructive card with sanitized message. Note not found: "Note not found" empty-state card with `FileText` icon. ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/ProgressNoteDetailPage.tsx # Note Templates Source: https://docs.encoreos.io/cl/note-templates Manage service-line documentation templates for clinical notes including creating, editing, activating, and deactivating; create templates via slide-over form. This screen provides admin CRUD operations for session documentation templates and is accessible at `/cl/note-templates`. ## Overview The Note Templates page lists all active note templates for the current organization, loaded via `useNoteTemplatesList` from the `cl_note_templates` table. Templates are displayed in a card with a divide-separated list showing template name, note type label, service line (if set), active/inactive badge, an Edit button, and a toggle button to activate or deactivate. Users click "New Template" (top-right button) to open a side-sheet form (`TemplateForm` via `Sheet`) for creating a new template. Clicking "Edit" on a row opens the same sheet pre-populated with the template's current values. Note type choices are: Progress Note, Addendum, Outpatient, Residential, IOP/PHP. Service line is an optional free-text field. The `useNoteTemplateMutation` hook provides `createTemplate`, `updateTemplate`, `activateTemplate`, and `deactivateTemplate` actions, each invalidating the `cl_note_templates` query on success and showing a toast notification. ## Who it's for Requires the `cl.note_templates.manage` permission (enforced by `RequirePermission` in `cl.tsx` and the component itself). ## Before you start * You must hold `cl.note_templates.manage` to access this page. ## Steps Open the Clinical core and go to `/cl/note-templates`. All active note templates for your organization are listed. Click "New Template" (top right). The side-sheet opens. Enter a Template Name (required), select a Note Type (required), and optionally enter a Service Line. Click "Create" to save. Click "Edit" next to the template you want to update. The side-sheet opens pre-filled. Modify the fields as needed and click "Update" to save. Click the toggle icon button next to the template. Active templates show a ToggleRight icon (clicking deactivates); inactive templates show a ToggleLeft icon (clicking activates). A toast notification confirms the action. ## Key concepts Note: `/cl/note-templates/new` is **not a registered route** in the Clinical core router. Template creation is handled entirely through the "New Template" sheet on this page. Navigating to `/cl/note-templates/new` renders the `NotFound` component. The `note_type` field accepts: `progress` (Progress Note), `addendum` (Addendum), `outpatient` (Outpatient), `residential` (Residential), `iop_php` (IOP/PHP). These labels are from `NOTE_TYPE_LABEL` in the component. Clinical or billing significance of each type requires SME confirmation. `useNoteTemplatesList` queries only rows where `is_active = true`. Deactivated templates are hidden from the list. The `activateTemplate` mutation sets `is_active: true` and re-queries. When no active templates exist, an empty state shows a FileText icon with "No templates yet" and "Create templates to standardize session documentation." If the query errors, the sanitized error message is shown in destructive text within the card. | Term | Meaning | | ------------------------- | -------------------------------------------------------------------------------------------------------------- | | `note_type` | Enum classifying the documentation template: `progress`, `addendum`, `outpatient`, `residential`, or `iop_php` | | `service_line` | Optional free-text identifier (e.g., `SUD`, `MH`) further scoping the template | | `is_active` | When `false`, the template is inactive; it remains in the list but is not available for new notes | | `useNoteTemplateMutation` | Hook providing `createTemplate`, `updateTemplate`, `activateTemplate`, and `deactivateTemplate` | ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/NoteTemplatesPage.tsx * src/cores/cl/hooks/useNoteTemplatesList.ts * src/cores/cl/hooks/useNoteTemplateMutation.ts * src/cores/cl/types/progress-notes.ts # Notification Audit Source: https://docs.encoreos.io/cl/notification-audit Audit trail of dispatched clinical notifications with SLA outcome tracking, escalation steps, and CSV export up to 10,000 rows. The Notification Audit screen provides a paginated, filterable audit log of dispatched clinical notification events at the in-app route `/cl/notifications/audit`. ## Overview The page is gated behind the `cl.notification_audit.view` permission and behind the `cl.notification_service_enabled` feature flag; if the flag is off, a `NotificationServiceDisabledBanner` is shown instead. The audit log queries the `cl_notification_events` table filtered by the current organization, a date range (defaulting to the last 30 days), severity, and an optional signal type string. Results are paginated at 50 rows per page and displayed in a table showing dispatched time, signal type, severity, recipient role key, SLA deadline, acknowledgement time, computed SLA status (`on-time`, `breached`, `pending`), and escalation step. Each row has a "Trail" button that opens a `NotificationAttemptTrailSheet` side panel for delivery attempt details. Users with `cl.notification_audit.export` can preview and download a CSV of up to 10,000 matching rows. ## Who it's for Requires permission `cl.notification_audit.view`. The `cl.notification_audit.export` sub-permission enables CSV export. ## Before you start * Permission `cl.notification_audit.view` must be granted. * The `cl.notification_service_enabled` feature flag must be active; otherwise a disabled-service banner is shown. ## Steps Use the From and To date inputs to set the audit window. The default is the past 30 days ending today. Use the Severity select to filter to `critical`, `urgent`, or `informational` events, or leave on "All". Type a signal type string (e.g., `lab_critical`) in the Signal Type input to narrow results to a specific signal. The table shows dispatched time, signal, severity, recipient role, SLA deadline, acknowledgement time, SLA status badge, and escalation step. Use Previous / Next to page through results. Click "Trail" on any row to open the `NotificationAttemptTrailSheet` side panel, which shows individual delivery attempts for that event. Click "Preview Export" (requires `cl.notification_audit.export`) to open the export preview dialog. Review the row count, date range, severity, and signal filters, then click "Download CSV". Export is capped at 10,000 rows. The file is named `clinical-notifications-{from}-to-{to}.csv`. ## Key concepts SLA status is computed client-side from `acknowledged_at`, `sla_deadline`, and `sla_breached_at`: `on-time` (acknowledged at or before deadline), `breached` (acknowledged after deadline, or `sla_breached_at` is set, or deadline has passed without acknowledgement), `pending` (not yet acknowledged and deadline has not passed). `critical`, `urgent`, `informational` — from the Severity select options in the UI. The export includes these columns in order: `dispatched_at`, `signal_type`, `severity`, `recipient_role_key`, `sla_deadline`, `acknowledged_at`, `sla_status`, `escalation_step`. If no records match the filters, an "No audit records" empty state is shown. If the query fails (non-RLS/permission error), a retry action is presented. RLS and permission errors (codes `42501`, `PGRST301`) do not retry automatically. ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/notifications/NotificationAuditPage.tsx # Notification Policies Source: https://docs.encoreos.io/cl/notification-policies Configure severity rules, SLA timing, dedup windows, and escalation chains for each clinical signal type. This screen is the Notification Policies administration page, accessible at `/cl/notifications/policies`. It manages rows in `cl_notification_policies` and `cl_notification_escalation_chains`. ## Overview The Notification Policies page lists all `cl_notification_policies` rows for the current organization, ordered by `signal_type`. Each row displays the signal type, SLA (formatted as seconds, minutes, or hours), dedup window, and an active/inactive toggle. Administrators can create a new policy via a sheet editor (`PolicyEditorSheet`), edit an existing one by clicking **Edit**, or permanently delete a policy after a confirmation dialog. Below the policy table, an `EscalationChainEditor` section lets administrators configure ordered recipient roles that are notified when an SLA is breached. Toggling the **Active** switch calls `useUpsertNotificationPolicy` immediately; no separate save step is required. Deletion is permanent and confirmed by a destructive dialog. Both the route and the in-page `PermissionGate` enforce `cl.notification_policy.manage`. The route also wraps the page in a `FeatureFlagGate` for `cl.notification_service_enabled` — if that flag is off, a `NotificationServiceDisabledBanner` is shown instead. ## Who it's for Requires permission: `cl.notification_policy.manage` ## Before you start * You must hold the `cl.notification_policy.manage` permission. * The feature flag `cl.notification_service_enabled` must be **enabled** for this route to render. If it is disabled, a `NotificationServiceDisabledBanner` is displayed and the policy list is not accessible. ## Steps Go to `/cl/notifications/policies`. If you see a disabled-service banner, contact an administrator to enable the `cl.notification_service_enabled` feature flag. Click **New Policy**. The `PolicyEditorSheet` opens. Fill in the signal type, SLA, dedup window, and severity rules, then save. Click **Edit** on any row. The same sheet opens pre-populated with that policy's values. Save to apply changes. Use the **Active** toggle in the Status column. The change is saved immediately via `useUpsertNotificationPolicy`. Click the trash icon on a row. Confirm the destructive dialog. Deletion is permanent and cannot be undone. Scroll to the **Escalation Chains** section. Use `EscalationChainEditor` to configure ordered recipient roles for SLA-breach escalation. ## Key concepts A free-text identifier stored in `cl_notification_policies.signal_type` that categorizes the clinical event triggering the notification. SME: confirm the canonical list of valid signal type values. The number of seconds within which a notification must be acknowledged before escalation begins. Displayed as seconds (`s`), minutes (`m`), or hours (`h`). A window during which duplicate events of the same signal type are suppressed. Displayed in the same `s`/`m`/`h` format as SLA. Ordered sequences of recipient roles stored in `cl_notification_escalation_chains`. When an SLA is breached, the next step's role is notified. When no policies exist, an empty state with a **Create policy** action is displayed. When data fails to load, an error empty state shows a sanitized error message. ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/notifications/NotificationPoliciesPage.tsx * src/cores/cl/hooks/useNotificationPolicy.ts # Clinical Notification Service Admin Guide Source: https://docs.encoreos.io/cl/notification-service-admin-guide Configure notification policies, escalation chains, and audit exports that govern how clinical signals reach staff. > **Purpose:** Configure notification policies, escalation chains, and audit exports that govern how clinical signals reach staff. *** ## Overview The Centralized Clinical Notification Service routes signals (critical labs, medication exceptions, task assignments, etc.) into in-app alerts with severity, SLA, deduplication, and escalation behavior. As an administrator you control: * **Policies** — per signal type: severity rules, SLA seconds, deduplication window, active toggle. * **Escalation chains** — ordered recipient roles per severity tier. * **Audit log** — searchable history of every dispatched event with CSV export. * **Feature flag** — `cl.notification_service_enabled` global on/off switch. *** ## Prerequisites | Permission | Description | | ------------------------------- | --------------------------------------------------- | | `cl.notification_policy.manage` | Create, edit, delete policies and escalation chains | | `cl.notification_audit.view` | View the audit log | | `cl.notification_audit.export` | Download the audit CSV | These keys are seeded to `org_admin` by default. Grant to additional roles via the Permissions page. *** ## Enabling the Service The service is governed by the global feature flag `cl.notification_service_enabled` (default: **on**). 1. Open **Platform → Feature Flags**. 2. Locate `cl.notification_service_enabled`. 3. Toggle **off** to immediately disable both the dispatch edge function (returns 503) and the three notification UI pages ("Feature unavailable" empty state). No code change or redeploy is required to flip the flag. *** ## Managing Policies Path: **Clinical → Notifications → Policies**. ### Create a Policy 1. Click **New Policy** (top right). 2. Fill the form: * **Signal type** — must match a publisher signal (e.g. `lab_critical`, `medication_exception`, `task_assigned`). Unique per organization. * **SLA (seconds)** — time before the alert escalates. Examples: `1500` (25 min) for critical labs, `28800` (8 h) for task assignments. * **Dedup window (seconds)** — identical signals on the same chart inside this window are suppressed. Use a longer window for noisy sources. * **Severity rules (JSON)** — optional rules that promote/demote severity based on payload fields. Default severity comes from the publisher. 3. Click **Save**. ### Edit, Toggle, or Delete * **Edit** — click a row, modify, save. * **Active toggle** — switches dispatch on/off without losing configuration. * **Delete** — the trash icon opens a confirmation dialog. Deletion is permanent; existing events remain in the audit log. ### Severity Rule Tips * Keep rules narrow and explicit; broad rules cause incorrect routing. * Avoid PHI in rules — only payload metadata is allowed (a database CHECK constraint blocks PHI fields). *** ## Managing Escalation Chains Located on the same page, below Policies. Each chain is keyed by **severity tier** (`critical`, `warning`, `info`) and consists of ordered steps. Each step contains: * **Step order** — `0` is the first recipient. * **Recipient role key** — a system role (e.g. `clinical_supervisor`, `medical_director`, `org_admin`). * **Wait seconds** — optional delay before the SLA evaluator can promote to this step. ### Resolution Rules 1. The dispatch edge function reads step `0` for the alert's severity, resolves the role to a user via `pf_user_role_assignments`, and creates the in-app notification. 2. When the SLA evaluator (cron, every 60 s) finds an unacknowledged event past its deadline, it advances to the next step and inserts a fresh event for the new recipient. 3. If no user is found for a role, the chain falls back to `org_admin` so alerts are never dropped. 4. When the chain is exhausted, the original event is marked `sla_breached` but no further escalation occurs. ### Best Practices * Always end the chain with `org_admin` (or your equivalent terminal role). * Keep chains short (≤ 4 steps) — long chains delay clinically important escalations. * Validate by triggering a synthetic event in a non-production org before publishing. *** ## Audit Log and CSV Export Path: **Clinical → Notifications → Audit**. ### Filters * **Date range** (required) * **Severity** (multi-select) * **Signal type** (multi-select) * **SLA status** — On time / Breached ### Columns `Dispatched At`, `Signal Type`, `Severity`, `Recipient`, `SLA Deadline`, `Acknowledged At`, `SLA Status`, `Escalation Step`. ### Export to CSV 1. Apply filters that scope the result set. 2. Click **Export CSV**. 3. The current filtered view is streamed as CSV (UTF-8, comma delimited). **Hard cap:** 10,000 rows per export. Narrow the date range or filter further if you hit this limit. The CSV intentionally excludes free-text payload fields to minimize PHI exposure. ### Retention `cl_notification_events` rows are retained indefinitely. Coordinate with Compliance before bulk deletion; events are part of the clinical audit trail. *** ## Operational Reference ### Edge Functions | Function | Purpose | Trigger | | ------------------------------- | ------------------------------------------------------------ | -------------------------------------------- | | `cl-clinical-notify` | Resolve policy, dedup, dispatch, persist event | Called by publishers via `useClinicalNotify` | | `cl-notification-sla-evaluator` | Promote unacknowledged overdue events to the next chain step | Cron every 60 s | Both functions short-circuit when `cl.notification_service_enabled` is off. ### Tables * `cl_notification_policies` * `cl_notification_escalation_chains` * `cl_notification_events` — append-only event log with `chk_cl_notification_no_phi` CHECK constraint RLS scopes every read/write to the active organization. The acknowledgement RPC `cl_acknowledge_notification` is `SECURITY DEFINER` and verifies access before stamping `acknowledged_at` / `acknowledged_by`. *** ## Troubleshooting #### Alerts are not being dispatched 1. Confirm `cl.notification_service_enabled` is on. 2. Verify a policy exists for the signal type and is active. 3. Check `cl-clinical-notify` logs for dedup hits or PF-10 insert errors. #### Escalations are not advancing 1. Confirm a chain row exists for the next `(severity, step_order)`. 2. Confirm a user holds the chain's role in `pf_user_role_assignments`. 3. Inspect `cl-notification-sla-evaluator` logs for resolution failures (fallback to `org_admin` is logged as a warning). #### CSV export is empty * Check the date range; the default may not include recent events. * Verify the requesting user has `cl.notification_audit.export`. *** ## Related Documentation * **User Guide:** [cl-56-notification-service-user-guide.md](/cl/notification-service-user-guide) * **Specification:** `specs/cl/specs/CL-56-centralized-clinical-notification-service.md` * **Context:** `specs/cl/specs/CL-56-CONTEXT.md` * **Implementation Log:** `specs/cl/IMPLEMENTATION_LOG.md` * **Cross-core Integrations:** `docs/architecture/integrations/CROSS_CORE_INTEGRATIONS.md` *** **Last Updated:** 2026-05-11 # Clinical Notifications User Guide Source: https://docs.encoreos.io/cl/notification-service-user-guide Helps clinicians review, acknowledge, and act on time-bound clinical alerts (critical labs, medication exceptions, task assignments, and more). > **Purpose:** Helps clinicians review, acknowledge, and act on time-bound clinical alerts (critical labs, medication exceptions, task assignments, and more). *** ## Overview The Notification Center surfaces every clinical signal routed to you — critical lab results, medication exceptions, task assignments, and other policy-driven alerts. Each alert has a service-level agreement (SLA) deadline; if you do not acknowledge in time, it automatically escalates to the next person in the chain. ### Key Capabilities * **Active queue** sorted by SLA deadline (most urgent first) * **One-click acknowledgement** that removes the alert from your active list * **Auto-escalation** when an alert is not acknowledged before its SLA deadline * **Deduplication** so the same signal does not flood your inbox *** ## Prerequisites | Permission | Description | | ----------------------------- | ---------------------------------- | | `cl.notification.view` | See alerts routed to you | | `cl.notification.acknowledge` | Acknowledge alerts assigned to you | If the Notification Center shows "Feature unavailable," your administrator has not enabled the service for your organization. *** ## Getting Started 1. From the main menu, open **Clinical → Notifications**. 2. The page opens on the **Active** tab. Alerts are sorted by SLA deadline ascending. 3. The page auto-refreshes every 30 seconds. ### Reading an Alert Card | Element | Meaning | | -------------- | -------------------------------------------------------------------- | | Severity badge | `Critical`, `Warning`, or `Info` — drives color and escalation chain | | Signal type | Human-readable label (e.g. "Critical Lab Result") | | Patient link | Opens the linked chart, when available | | SLA countdown | Time remaining before the alert escalates | | Acknowledge | Primary action; removes the alert from your queue | *** ## Common Tasks ### Acknowledge an Alert 1. Open **Clinical → Notifications**. 2. Locate the alert in the **Active** tab. 3. Click **Acknowledge**. The alert disappears from the active list immediately and moves to the **Acknowledged** tab. If the request fails, the alert reappears with a retry toast. ### Review Recently Acknowledged Alerts 1. Switch to the **Acknowledged** tab. 2. The most recent 50 acknowledgements are shown with timestamps. 3. For older history, ask your administrator to pull the **Audit Log**. ### Open the Linked Chart Click the patient name on the alert card to jump to the chart. Use this before acknowledging when clinical follow-up is required. *** ## Tips and Best Practices ### Do's * ✅ Triage the **Active** tab top-down — items at the top are closest to SLA breach. * ✅ Open the chart and complete clinical action **before** acknowledging. * ✅ Acknowledge as soon as you have ownership; this prevents unnecessary escalation to your supervisor. ### Don'ts * ❌ Do not acknowledge "to clear the queue" without acting — the audit log records who acknowledged each alert. * ❌ Do not rely on the queue as a real-time pager; severe events should still be communicated by phone per local policy. *** ## Troubleshooting #### Issue: I expected an alert but see nothing **Cause:** The signal may have been deduplicated against a recent identical alert, or your role is not the first step of the escalation chain. **Solution:** Confirm with your administrator that a policy exists for the signal type and that your role is mapped in the chain. #### Issue: "Feature unavailable" is displayed **Cause:** The `cl.notification_service_enabled` feature flag is off for your organization. **Solution:** Contact your administrator to enable it. #### Issue: Acknowledge button fails **Cause:** Network error, or you do not have `cl.notification.acknowledge`. **Solution:** Retry from the toast. If it persists, contact your administrator. *** ## Related Documentation * **Admin Guide:** [cl-56-notification-service-admin-guide.md](/cl/notification-service-admin-guide) * **Specification:** `specs/cl/specs/CL-56-centralized-clinical-notification-service.md` *** **Last Updated:** 2026-05-11 # Notifications Source: https://docs.encoreos.io/cl/notifications View and acknowledge time-bound clinical alert events, with SLA-driven escalation, in the Notification Center. This screen is the Notification Center, accessible at `/cl/notifications`. It surfaces rows from `cl_notification_events` for the current organization. ## Overview The Notification Center displays clinical notification events in two URL-synced tabs: **Active** and **Acknowledged**. The active tab lists events where `acknowledged_at` is null, ordered by ascending `sla_deadline`, and shows a live countdown per event. Events past their deadline show "Overdue by N minutes"; events within one hour show "Due in Nm"; events further out show "Due in Nh". Each active event card shows a severity badge (`critical`, `urgent`, `informational`, or a generic outline variant), the `signal_type`, the dispatch timestamp, and the escalation step if `escalation_step > 0`. Users with `cl.notification_event.acknowledge` can click **Acknowledge** on any active event. The hook (`useAcknowledgeNotification`) calls the `cl_acknowledge_notification` RPC with an optimistic update — the event disappears from the active list immediately and is rolled back if the RPC fails. The acknowledged tab shows a table of events with their `signal_type`, severity badge, and `acknowledged_at` timestamp. ## Who it's for Requires permission: `cl.notification_event.view` Acknowledging an individual event additionally requires: `cl.notification_event.acknowledge` ## Before you start * You must hold the `cl.notification_event.view` permission to access this route. * The feature flag `cl.notification_service_enabled` must be **enabled**. If the flag is off, a `NotificationServiceDisabledBanner` is displayed in place of the notification center. * To acknowledge events, you additionally need the `cl.notification_event.acknowledge` permission. The Acknowledge button is hidden for users without it. ## Steps Go to `/cl/notifications`. If you see a disabled-service banner, contact an administrator to enable the `cl.notification_service_enabled` feature flag. The **Active** tab loads by default. Review the list ordered by SLA deadline. Events marked "Overdue" require immediate attention. Click **Acknowledge** on an active event card. The event optimistically disappears from the active list. If the server call fails, it reappears automatically. Click the **Acknowledged** tab to review previously acknowledged events with their acknowledgement timestamps. ## Key concepts The component maps `severity` values to badge variants: `critical` → destructive, `urgent` → default, `informational` → secondary, anything else → outline. SME: confirm canonical severity list. Each active event has an `sla_deadline` field. The `Countdown` component subtracts `Date.now()` from the deadline: negative means overdue, under 60 minutes shows minutes, 60+ shows hours. When `escalation_step > 0`, the event card notes the current escalation step. The escalation behavior is driven by policies configured in Notification Policies. `useAcknowledgeNotification` applies an optimistic update that removes the event from all cached active lists before the RPC resolves. On error, all affected caches are restored. Active tab with no events: "All clear — No active critical alerts." Acknowledged tab with no events: "No acknowledgements yet." Load error: "Could not load notifications" with a sanitized message. ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/notifications/NotificationCenterPage.tsx * src/cores/cl/hooks/useNotificationCenter.ts * src/cores/cl/hooks/useAcknowledgeNotification.ts # Order Sets Source: https://docs.encoreos.io/cl/order-sets Manage reusable order set templates for clinical workflows, stored in cl_order_set_templates. This screen is the Order Set Management page, accessible at `/cl/order-sets`. It administers rows in `cl_order_set_templates` for the current organization. ## Overview The Order Sets page lists all active (non-retired, non-deleted) `cl_order_set_templates` for the current organization, sorted alphabetically by name. A search bar filters by template name or category. Users with `cl.order_sets.manage` see a **New Order Set** button that opens `OrderSetTemplateDialog`. Each listed template has **Edit** and **Delete** actions; deletion is a soft-delete (sets `deleted_at`) and requires confirmation. If `cl_module_settings.order_sets_enabled` is false, the list is replaced by an empty state reading "Order sets are disabled — Ask an administrator to enable order sets in CL module settings." No data is fetched in that case. Templates have a `status` field; `useOrderSetTemplates` by default excludes `retired` templates unless `includeRetired` is passed as `true` (the page passes `true`, so retired templates are visible to administrators). ## Who it's for Requires permission: `cl.order_sets.view` Creating, editing, or deleting templates additionally requires: `cl.order_sets.manage` ## Before you start * You must hold `cl.order_sets.view` to access this route. * The `cl_module_settings.order_sets_enabled` setting must be `true` (or not explicitly set to `false`). If it is false, no order sets are accessible and an administrator must enable them in CL module settings. * To create or modify templates, you additionally need `cl.order_sets.manage`. ## Steps Go to `/cl/order-sets`. If you see "Order sets are disabled," contact an administrator to enable order sets in CL module settings. Type in the **Search order sets…** field to filter by name or category. Click **New Order Set** (requires `cl.order_sets.manage`). The `OrderSetTemplateDialog` opens. Fill in the name, category, and template details, then save. New templates default to `draft` status. Click **Edit** on a listed template. The same dialog opens pre-populated. Save to apply changes. Click **Delete** on a template and confirm the destructive dialog. Deletion is a soft-delete; the template's `deleted_at` is set and it no longer appears in the list. ## Key concepts `cl_order_set_templates` has a `status` field. The page loads templates including retired ones (`includeRetired: true`). SME: confirm the lifecycle states and which roles can transition a template between states. `useDeleteOrderSetTemplate` sets `deleted_at` and `updated_by` on the row rather than removing it. Deleted templates are filtered out by `.is('deleted_at', null)` in queries. The component reads `cl_module_settings` via `useClModuleSettings`. If `order_sets_enabled` is explicitly `false`, an empty-state screen replaces the list — no templates are fetched. No templates matching search: "No order sets yet — Create your first order set to streamline ordering." Load error: an Alert with a sanitized error message. ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/OrderSetManagementPage.tsx * src/cores/cl/hooks/useOrderSetTemplates.ts # Clinical Order Sets & Standing Orders (Admin Guide) Source: https://docs.encoreos.io/cl/order-sets-admin-guide Seeded by migration 20260508131517_*: ## Feature Flag CL-44 is gated by `cl_module_settings.order_sets_enabled` (boolean, default **true**). Disable it to hide order set navigation, the chart quick action, and the management pages. The standing order protocol UI remains independent of this flag. ## Module Settings | Setting | Default | Purpose | | ------------------------------------ | ------- | ------------------------------------------------- | | `order_sets_enabled` | `true` | Master feature flag | | `order_set_max_items` | `50` | Soft cap enforced in the template editor | | `standing_order_default_expiry_days` | `365` | Default protocol expiration when none is supplied | ## Permissions Mapping Seeded by migration `20260508131517_*`: | Role | Permissions granted | | ---------------- | ------------------------------------------------------------------------------------------------------- | | `platform_admin` | All seven CL-44 permissions | | `staff` | `cl.order_sets.view`, `cl.order_sets.activate`, `cl.standing_orders.view`, `cl.standing_orders.execute` | | `readonly` | `cl.order_sets.view`, `cl.standing_orders.view` | Adjust per-role mappings via the platform permission management UI as needed. ## Database Surface (Phase 1) * `cl_order_set_templates` — versioned templates (`status`: draft, approved, retired) * `cl_order_set_activations` — per-patient activation log; references `cl_charts` and `pm_patients` * `cl_clinical_standing_orders` — protocol definitions with parameter ranges and effective/expiration dates * `cl_standing_order_executions` — append-only execution log (no UPDATE/DELETE policy by design) All tables are tenant-scoped via `cl_has_org_access(organization_id, auth.uid())` with `FORCE ROW LEVEL SECURITY` enabled. ## Operational Notes * **Append-only executions:** corrections must be issued as compensating executions; do not attempt UPDATE/DELETE — RLS will reject them. * **Frequency enforcement** is implemented client-side in `useStandingOrderExecutions` (`frequencyLimit: { count, windowHours }`) before insertion. A future migration will add a server-side trigger if abuse is observed. * **CL-09 EN-30 coexistence:** the legacy lab-only `cl_standing_order_protocols` and `StandingOrderProtocolsPage` remain unchanged at `/cl/settings/standing-orders`. CL-44's cross-category protocols live at `/cl/standing-orders`. ## Related * Spec: `specs/cl/specs/CL-44-clinical-order-sets-standing-orders.md` * User guide: [`order-sets-user-guide.md`](/cl/order-sets-user-guide) * Tasks: `specs/cl/tasks/CL-44-TASKS.md` # Clinical Order Sets & Standing Orders (User Guide) Source: https://docs.encoreos.io/cl/order-sets-user-guide Order sets are reusable bundles of orders (labs, medications, assessments, monitoring) that can be activated against a patient chart in one step. Standing orde… ## Overview Order sets are reusable bundles of orders (labs, medications, assessments, monitoring) that can be activated against a patient chart in one step. Standing order protocols let nurses execute pre-approved orders within defined parameters without an additional prescriber order. ## Activate an Order Set From a Patient Chart 1. Open the patient chart (`/cl/charts/:id`). 2. Tap the floating **+** action button (bottom-right) and select **Start Order Set**. * The action requires the `cl.order_sets.activate` permission and a linked `pm_patients` record. 3. Choose a template, review the items grouped by category (Labs, Medications, Assessments, Monitoring), uncheck any items that should not be activated, add an optional reason, and submit. 4. The activation is recorded in `cl_order_set_activations`. Individual orders are then created through CL-05 / CL-09 hooks (Phase 2). ## Browse and Manage Order Set Templates * Navigate to **CL → Resources → Order Sets** (`/cl/order-sets`). * Search by name or category. Drafts, approved, and retired templates are listed (filter as needed). * Use **New Order Set** to create a template (requires `cl.order_sets.manage`). Add items per category, mark required defaults, and save. * Order sets are hidden when an admin disables `order_sets_enabled` in CL module settings. ## Execute a Standing Order (Nurses) 1. Navigate to **CL → Resources → Standing Order Protocols** (`/cl/standing-orders`). 2. Select an active protocol (within its effective/expiration window). 3. Open **Execute** and complete the parameter form. Frequency limits are enforced before submission (e.g., "max 2 per 24h"). 4. Submitted executions are append-only — they cannot be edited or deleted. Review and corrections happen via the supervisor review workflow. ## Permissions | Permission | Purpose | | ---------------------------- | -------------------------------------------- | | `cl.order_sets.view` | View templates and activation history | | `cl.order_sets.manage` | Create/edit/retire templates | | `cl.order_sets.activate` | Activate templates against patient charts | | `cl.standing_orders.view` | View standing order protocols and executions | | `cl.standing_orders.manage` | Create/edit standing order protocols | | `cl.standing_orders.execute` | Record standing order executions | | `cl.standing_orders.review` | Review nurse executions | ## Related * Spec: `specs/cl/specs/CL-44-clinical-order-sets-standing-orders.md` * Admin guide: [`order-sets-admin-guide.md`](/cl/order-sets-admin-guide) # Order Templates Source: https://docs.encoreos.io/cl/order-templates Manage lab order panels and template sets for quick ordering; create, edit, activate, or delete order templates. The Order Templates screen is the admin page for managing lab order panels and template sets, accessible at `/cl/settings/order-templates`. ## Overview The page fetches all order templates via `useAllOrderTemplates` and displays them in a searchable table. Each row shows `template_name` (with optional `description`), `template_type` (badged), item count (from `order_items` array length), and an `Active` toggle. The "New Template" button (gated to `cl.order_templates.manage`) opens `OrderTemplateFormDialog`. Row actions include "Edit" (opens the dialog pre-filled) and "Delete" (calls `deleteTemplate` mutation immediately, no confirmation dialog). The active toggle calls `updateTemplate` with `is_active` flipped. ## Who it's for Requires permission: `cl.order_templates.manage` ## Before you start * You must hold `cl.order_templates.manage` to access this page (required for both read and write operations per the route guard). * Deleting a template is immediate and does not prompt for confirmation. ## Steps Go to `/cl/settings/order-templates`. All templates for your organization load. Use the search input to filter by `template_name`. Click "New Template." The `OrderTemplateFormDialog` opens with empty fields. Click "Edit" on any row. The `OrderTemplateFormDialog` opens pre-filled with that template's data. Use the `Active` switch on any row. The switch is disabled while the `updateTemplate` mutation is pending. Click "Delete" on a row. The template is deleted immediately (no confirmation prompt). ## Key concepts When no templates match the search (or none exist): "No order templates found" / "Create one to streamline lab ordering." The "Items" column reflects the length of the `order_items` JSONB array cast to `OrderTemplateItem[]`. The contents of individual items are not displayed in the list view. ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/OrderTemplateManagementPage.tsx * src/cores/cl/hooks/useAllOrderTemplates.ts * src/cores/cl/hooks/useOrderTemplateMutations.ts # Clinical Overview Source: https://docs.encoreos.io/cl/overview Overview of the Clinical & EHR core in Encore OS — purpose, scope, and key responsibilities. The Clinical & EHR core (CL) provides the electronic health record and clinical documentation capabilities for Encore OS — patient charts, clinical notes, assessments, medication-assisted treatment (MAT/MOUD), orders, consents, lab results, population health reporting, and discharge planning. **Architecture:** CL is downstream — no other core may depend on it. It integrates with **Practice Management** through the encounter entity (`pm_encounters`) for charge capture and billing, and with **Platform Foundation** for jurisdiction-aware assessment requirements. ## How clinical work flows The patient chart is the hub: open it, document the encounter, route results and co-signs through the in-basket, then plan discharge — with the signed encounter flowing to **Practice Management** for billing. ```mermaid theme={null} flowchart LR Chart["Patient chart"] --> Note["Progress note
+ treatment plan"] Note --> Sign["Sign / co-sign
(in-basket)"] Sign --> Encounter["pm_encounters"] Encounter --> Bill["Charge capture
→ Practice Management"] Sign --> Discharge["Discharge &
aftercare"] Chart -.-> Orders["Orders, labs
& MAT/MOUD"] Orders -.-> Note CDS["Decision support
(CDS / alerts)"] -.-> Note ``` Clinical patient chart with problem list, allergies, medications, and recent notes ## Key surfaces The core clinical UI — problems, medications, allergies, encounters, and history. Structured documentation with templates and co-sign workflows. Goal- and objective-driven care planning. Provider messaging, results routing, and co-sign queues. CDS rules, alerts, and quality-measure configuration. Transition-of-care planning and post-discharge follow-up. ## Get oriented in CL Start in the [patient chart](/cl/patient-charts) — the hub for problems, medications, encounters, and results. Write a [progress note](/cl/progress-notes) and update the [treatment plan](/cl/treatment-plans) as goals change. Triage results and co-signs in the [in-basket](/cl/in-basket-user-guide), then plan transitions with [discharge & aftercare](/cl/discharge-aftercare-admin-guide). ## By role Daily charting, ordering, in-basket triage, and treatment planning. Start with the [patient chart](/cl/patient-charts) and [progress notes](/cl/progress-notes). Assessment templates, order sets, pathway management, and [CDS rule tuning](/cl/cds-admin-guide). Configure [patient-reported outcomes](/cl/patient-reported-outcomes-admin-guide). Consent audits, 42 CFR Part 2 segmentation, redisclosure tracking, and quality-measure attestation. See the [compliance tracker](/compliance/REGULATORY_COMPLIANCE_TRACKER). ## Scope at a glance * **Charting & documentation** — patient chart, progress notes, treatment plans, encounter review and discharge, ambient review, C-CDA documents, multi-party encounters. * **Orders, labs & medications** — order sets, MAT/MOUD enrollment, PDMP monitoring, lab results, controlled-substance inventory, reference ranges, e-prescribing. * **Care coordination** — in-basket messaging, co-sign queues, panels, cohorts, pathway adherence and templates, follow-up dashboards. * **Assessments & outcomes** — assessment templates, intake compliance, group and program outcomes, expiring assessments, patient-reported outcomes. * **Decision support & quality** — CDS rules, concurrent review, utilization management, alert-fatigue dashboard, HEDIS / UDS / quality measures, population health. * **Consent & compliance** — 42 CFR Part 2 consent management, electronic consent with redisclosure tracking, psychotherapy notes protection, DSI source attribution. ## Related How encounters flow from clinical documentation to billing. Source specifications for the CL core. Regulatory crosswalk and evidence. # Pathway Adherence Source: https://docs.encoreos.io/cl/pathway-adherence Aggregate dashboard showing active, completed, withdrawn, and overdue-milestone counts across clinical pathway enrollments. This screen is the Pathway Adherence Dashboard, accessible at `/cl/pathway-adherence`. It shows aggregate counts computed from `cl_patient_pathways` and `cl_pathway_milestones` for the current organization. ## Overview The Pathway Adherence Dashboard presents four summary stat cards for the current organization: * **Active pathways** — count of `cl_patient_pathways` rows with `status = 'active'`. * **Completed** — count of rows with `status = 'completed'` (displayed with success tone). * **Withdrawn** — count of rows with `status = 'withdrawn'` (displayed with warning tone). * **Overdue milestones** — count of `cl_pathway_milestones` rows where `status = 'overdue'`, or where `status` is `pending` or `in_progress` and `expected_completion_date` is before the current date/time (displayed with destructive tone). All four counts are computed client-side by `usePathwayAdherence` from two queries: all pathway rows and all milestone rows for the organization. The page header text reads "Pathway Adherence" with subtitle "Aggregate metrics for clinical pathway enrollment and milestone progress." While loading, four skeleton placeholders are shown. On error, a destructive Alert with a sanitized error message is displayed. ## Who it's for Requires permission: `cl.pathways.view_dashboard` ## Before you start * You must hold the `cl.pathways.view_dashboard` permission. * There are no module-setting gates or feature flags on this route beyond the permission check. ## Steps Go to `/cl/pathway-adherence`. The four stat cards load automatically for your organization. The **Active pathways** card shows how many patient pathway enrollments are currently in progress. The **Completed** and **Withdrawn** cards show aggregate counts. SME: confirm the clinical interpretation of each status before acting on these numbers. The **Overdue milestones** card (destructive/red tone when non-zero) counts milestones that have passed their `expected_completion_date` without completion. Review the individual pathway records for detail. ## Key concepts A milestone is counted as overdue if its `status` is `overdue`, OR if `status` is `pending` or `in_progress` and `expected_completion_date` is before `new Date()` at query time. This is a client-side calculation. * Active pathways: default (neutral) * Completed: success (green) * Withdrawn: warning (yellow) * Overdue milestones: destructive (red) `usePathwayAdherence` queries all `cl_patient_pathways` and `cl_pathway_milestones` for the current `organization_id`. Counts are not filtered by clinician or program. If data is null (no pathways or milestones), all four counts display as 0. On query error, the stat cards are replaced by a destructive Alert with a sanitized error message. ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/PathwayAdherenceDashboardPage.tsx * src/cores/cl/hooks/pathways/usePatientPathways.ts * src/cores/cl/hooks/pathways/index.ts # Pathway Management Source: https://docs.encoreos.io/cl/pathway-management Create and manage clinical care pathway definitions with steps, condition types, and active/inactive status. The Pathway Management screen (`/cl/pathways`) is the admin registry for clinical pathway definitions — structured care protocols organized into sequential steps. ## Overview The page loads all pathway definitions for the current organization from `cl_pathway_definitions` (soft-delete filtered). Each definition card displays `pathway_name`, `description`, `condition_type`, active/inactive status, and a step count badge. Clicking a card toggles an expanded view that renders the full `PathwayStepList`. Users with `cl.pathways.manage` see a "New Pathway" button in the header that opens a `CreatePathwayDialog`. An error alert using `sanitizeErrorMessage` surfaces any fetch failure. If no definitions exist, an empty state prompts creation. ## Who it's for Requires permission: `cl.pathways.manage` ## Before you start You must hold the `cl.pathways.manage` permission. The pathway list is scoped to your organization and will be empty until at least one definition is created. ## Steps Open the Clinical module and navigate to the Pathway Management page. The page loads pathway definitions for your organization. Each pathway card shows its name, description, condition type, active/inactive status, and step count. Click a card to expand and view the step list. Click "New Pathway" (visible to users with `cl.pathways.manage`) to open the Create Pathway dialog. Fill in the required fields and save. Click any pathway card to show or hide its `PathwayStepList`. Click again to collapse. ## Key concepts When no pathway definitions exist for the organization, the page shows: "No pathways defined — Create a clinical pathway to provide structured care guidance." If the data fetch fails, a destructive alert renders the sanitized error message above the pathway list. Each pathway card renders two badges: one for `condition_type` and one showing `Active` or `Inactive` based on the `is_active` field. ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/PathwayManagementPage.tsx * src/cores/cl/hooks/usePathways.ts * src/cores/cl/components/pathways/CreatePathwayDialog.tsx * src/cores/cl/components/pathways/PathwayStepList.tsx # Clinical Pathway Templates Source: https://docs.encoreos.io/cl/pathway-templates Manage reusable protocol-driven care pathway templates with draft, published, and archived lifecycle states. The Pathway Templates screen (`/cl/pathway-templates`) lists all reusable care pathway templates for the organization and provides lifecycle controls to create, edit, publish, archive, and delete them. ## Overview The page queries `cl_pathway_templates` (soft-delete filtered, ordered by `updated_at` descending) via `usePathwayTemplates`. Templates are displayed in a table with columns for Name, Program (`clinical_program`), Status, Milestones count, and Updated date. Templates have three statuses — `draft`, `published`, and `archived` — rendered as badges. Row-level actions (gated on `cl.pathways.manage`) depend on status: draft templates show Edit, Publish, and Delete buttons; published templates show an Archive button; archived templates have no row actions. Deleting a draft opens a `ConfirmationDialog` with a destructive confirmation step. Errors surface as sanitized toast messages via Sonner. ## Who it's for Requires permission: `cl.pathways.manage` ## Before you start You must hold the `cl.pathways.manage` permission. Templates are scoped to your organization. At least one template must exist before row-level actions are available. ## Steps Open the Clinical module and navigate to Pathway Templates. The page loads the template table for your organization. Click "New template" (visible to users with `cl.pathways.manage`) to open the `PathwayTemplateFormDialog`. Fill in name, clinical program, and milestones, then save. Click the Edit (pencil) icon on any draft-status row to reopen the form dialog pre-populated with the existing template data. Click the Publish (check-circle) icon on a draft row. The template status changes to `published` and a success toast confirms the action. Click the Archive icon on a published row. The template status changes to `archived` and a success toast confirms the action. Click the Delete (trash) icon on a draft row. Confirm the destruction in the dialog that appears. This action cannot be undone from the UI. ## Key concepts Templates move through three states: `draft` (editable) → `published` (read-only, archivable) → `archived` (no further UI actions). Status badges use `secondary`, `default`, and `outline` variants respectively. When no templates exist for the organization, the page shows: "No pathway templates yet — Create your first protocol-driven care pathway." If the data fetch fails, a destructive alert banner renders above the table with a sanitized error message. Mutation errors surface as Sonner toast notifications. The Milestones column shows the length of `milestones_parsed` — a parsed array derived from the raw `milestones` JSONB column. ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/PathwayTemplateListPage.tsx * src/cores/cl/hooks/pathways/usePathwayTemplates.ts * src/cores/cl/hooks/pathways/index.ts # Patient Charts Source: https://docs.encoreos.io/cl/patient-charts Search and browse the clinical patient chart registry, showing chart number, MRN, name, status, and risk level. The Patient Charts screen (`/cl/charts`) is the clinical patient chart registry — a searchable list of all patient charts for the organization. ## Overview The page loads charts from `cl_patient_charts` joined to `pf_patient_identities` (MRN) and `pm_patients` (first/last name) via `useChartList`. When a search term is provided, up to 200 charts (`CHART_SEARCH_LIMIT`) are fetched and filtered client-side by chart number, MRN, full name, and reversed name. Without a search, all non-deleted charts for the organization are returned ordered by `created_at` descending. Each chart row is a clickable link to `/cl/charts/:chartId` and displays a name avatar with initials, full name or fallback chart number, chart number and MRN, a `ClinicalUrgencyIndicator` if `current_risk_level` is set, and an active/secondary status badge. Charts with urgency `critical` or `high` render with an urgency-specific border class. Clinical patient chart registry list ## Who it's for Requires permission: `cl.charts.view` ## Before you start You must hold the `cl.charts.view` permission. Charts are scoped to your organization. Patient identity data (name, MRN) is PHI — handle per your organization's privacy policy and applicable regulations. ## Steps Open the Clinical module and navigate to Patient Charts. The registry loads all non-deleted charts for your organization. Type in the search box to filter by patient name, MRN, or chart number. The search field also supports reversed name order (last name first). Click any chart row to navigate to the individual chart detail at `/cl/charts/:chartId`. ## Key concepts Search is client-side after a server fetch limited to 200 rows. Matches on chart number, MRN, `first last`, and `last first` name combinations. No pagination UI is present in this version. If `current_risk_level` is present on a chart record, a `ClinicalUrgencyIndicator` renders the value as an uppercase label. Charts with `critical` or `high` urgency also receive an urgency border class on the card. When no charts match, the page shows: "No patient charts — Patient charts will appear here once created." If the data fetch fails, a destructive card renders the sanitized error message above the chart list. ## Detail view The Patient Chart screen displays the comprehensive clinical record for one patient at route `/cl/charts/:chartId`. ### Overview The Patient Chart page loads a single `cl_patient_charts` row (filtered by `organization_id`) and renders a sticky `PatientBanner` showing patient name, MRN, allergy count, and active problem count. A contextual sidebar replaces the module navigation on desktop, providing chart section tabs with badge counts for draft notes, pending consents, and high-risk screening results. On mobile, a bottom sheet handles section navigation. A `CdsAlertsPanel` appears above content whenever CDS (clinical decision support) alerts are present for the chart. Quick-action buttons for new note, record vitals, new screening, and order-set activation are always available. A "Generate C-CDA" button is shown when the user holds the `cl.cda.view` permission. ### Who it's for Requires permission: `cl.charts.view` Individual chart sections enforce additional scoped permissions (e.g., `cl.progress_note.view`, `cl.medications.view`, `cl.results.view`) via `PermissionGate`. ### Before you start * Must hold `cl.charts.view` permission to reach this page. * The chart must exist and not be soft-deleted (`deleted_at IS NULL`). ### Steps Navigate to `/cl/charts`, select a row, or follow any deep-link to `/cl/charts/:chartId`. The sticky Patient Banner loads immediately with name, MRN, allergy count, and active-problem count. Use the contextual sidebar (desktop) or bottom-sheet (mobile) to switch between sections: Summary, Timeline, Notes, Assessments, COD Assessments, Treatment Plans, Orders, Labs, PDMP, Medications, Allergies, Risk, Vitals, SDOH, Care Team, Outcomes, Transitions, Peer, Discharge, Consents, Disclosures. Use the floating `ChartQuickActions` buttons to open a new note form (navigates to Notes tab), record vitals, start a risk screening, or launch an order-set activation dialog. If `cl.cda.view` is held, click "Generate C-CDA" to navigate to `/cl/charts/:chartId/cda`. Click the export button on the Patient Banner to open the `ChartExportDialog`. ### Key concepts Each tab renders a dedicated section component under a `PermissionGate`. If the user lacks the tab's permission, the section is not rendered. The active tab is persisted in the URL via the `tab` query parameter (managed by `useTabUrlState`). Three badge counters appear on the sidebar: **Notes** shows the count of notes with `status === 'draft'`; **Consents** shows consents with no `revoked_at`, no `deleted_at`, and no `signed_by_patient_at`; **Risk** shows 1 when the most recent risk screening has `risk_level` of `high` or `imminent`. A `CODFlagBadge` is displayed if the chart's `cod_indicator` field is truthy. The COD (co-occurring disorder) indicator enables the COD Assessments tab and the COD section inside Treatment Plans. On chart load, `useCdsLabMonitoring` is evaluated for the chart. If evaluation fails, a destructive alert is shown. Any active CDS alerts are displayed in the `CdsAlertsPanel` above the tabbed content. If the chart fails to load, a destructive card with a sanitized error message is shown. If the chart ID is not found or is deleted, a "Chart not found" empty-state card is shown. ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/ChartListPage.tsx * src/cores/cl/hooks/useChartList.ts * src/cores/cl/components/ClinicalUrgencyIndicator.tsx * src/cores/cl/components/clinicalUrgencyUtils.ts * src/cores/cl/pages/PatientChartPage.tsx * src/cores/cl/hooks/useChartDetail.ts # Patient Cohorts Source: https://docs.encoreos.io/cl/patient-cohorts Define and manage named patient populations for HEDIS reporting, VBP attribution, and outreach campaigns. The Patient Cohorts screen (`/cl/cohorts`) lists all patient cohort definitions for the organization and provides controls to create new cohorts and filter the list by status. ## Overview The page queries `cl_patient_cohorts` via `useCohortList`, which supports paginated and filterable fetches (default page size 25, ordered by `updated_at` descending). Cohorts are displayed in a table with columns for Name, Type (`definition_type`), Status, Version, and Updated date. A status filter dropdown lets users show all cohorts or filter by `draft`, `active`, or `archived`. Users with `cl.cohort.create` see a "Create cohort" button that opens `CohortFormSheet` in a side panel. Each cohort name is a link to `/cl/cohorts/:cohortId`. Cohorts with a `description` show a truncated subtitle under the name. ## Who it's for Requires permission: `cl.cohort.view` ## Before you start You must hold the `cl.cohort.view` permission. Creating new cohorts additionally requires `cl.cohort.create`. The cohort list is scoped to your organization. ## Steps Open the Clinical module and navigate to Patient Cohorts. The page loads all cohorts for your organization. Use the status dropdown to narrow the list to `draft`, `active`, or `archived` cohorts. The default view shows all statuses. Click the cohort name link in the table to navigate to the cohort detail page at `/cl/cohorts/:cohortId`. Click "Create cohort" (requires `cl.cohort.create`) to open the `CohortFormSheet`. Complete the form fields and save to add the cohort to the list. ## Key concepts The status filter and badge display three values sourced from `COHORT_STATUS_LABELS`: `draft` (secondary badge), `active` (default badge), and `archived` (outline badge). The Type column renders a badge using `COHORT_DEFINITION_TYPE_LABELS`. If the type key is not in the map, the raw `definition_type` value is displayed. `useCohortList` supports `page` and `pageSize` parameters (default: page 1, size 25). The list page does not render explicit pagination controls in this version. When no cohorts exist or match the filter, the page shows: "No cohorts yet — Define patient populations for HEDIS reporting, VBP attribution, and outreach campaigns." ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/CohortListPage.tsx * src/cores/cl/hooks/cohorts/useCohortList.ts * src/cores/cl/types/cohorts.ts * src/cores/cl/components/cohorts/CohortFormSheet.tsx # Patient-Reported Outcomes & Self-Service Portal — Admin Guide Source: https://docs.encoreos.io/cl/patient-reported-outcomes-admin-guide This guide covers administrative configuration for the Patient-Reported Outcomes & Self-Service Portal feature. Organization administrators can manage permissi… **Feature ID:** CL-26\ **Module:** CL (Clinical & EHR)\ **Version:** 1.0\ **Last Updated:** 2026-02-25 *** ## Overview This guide covers administrative configuration for the Patient-Reported Outcomes & Self-Service Portal feature. Organization administrators can manage permissions, review workflows, and understand the data model. *** ## Permission Configuration CL-26 introduces three permission keys. These are automatically seeded for `org_admin` and `staff` roles. | Permission Key | Description | Recommended Roles | | ---------------------------------- | ------------------------------------------------ | -------------------------------- | | `cl.patient-submissions.view` | View submissions list and detail pages | All clinical staff | | `cl.patient-submissions.review` | Change submission status (reviewed/incorporated) | Licensed clinicians, supervisors | | `cl.between-session-checkins.view` | View between-session check-in data | All clinical staff | To modify role assignments: 1. Go to **Settings → Permissions** (org\_admin only). 2. Find the CL module permissions. 3. Assign or remove permissions per role as needed. *** ## Supported Screening Instruments | Instrument | Questions | Scoring | Crisis Detection | | --------------- | -------------- | ---------------------------------------- | -------------------------- | | PHQ-9 | 9 (Likert 0–3) | 0–27, severity bands | Q9 (suicidal ideation) ≥ 1 | | GAD-7 | 7 (Likert 0–3) | 0–21, severity bands | None | | AUDIT-C | 3 (Likert 0–4) | 0–12, positive ≥ 3 | None | | DAST-10 | 10 (Yes/No) | 0–10, severity bands (Q3 reverse-scored) | None | | C-SSRS Screener | 6 (Yes/No) | 0–6 positive items | Any positive = crisis | *** ## Data Model ### cl\_patient\_submissions Stores all patient-submitted screening results. | Column | Type | Description | | ---------------- | ----------- | -------------------------------------------- | | id | UUID | Primary key | | organization\_id | UUID | Tenant isolation | | chart\_id | UUID | Patient chart (composite FK) | | submission\_type | TEXT | Instrument type (CHECK constraint) | | submitted\_at | TIMESTAMPTZ | When patient submitted | | responses | JSONB | Raw question responses | | score\_result | JSONB | Auto-calculated score, severity, crisis flag | | status | TEXT | pending\_review → reviewed → incorporated | | reviewed\_by | UUID | Clinician who reviewed | | reviewed\_at | TIMESTAMPTZ | When reviewed | | custom\_fields | JSONB | Organization-specific metadata | ### cl\_between\_session\_checkins Append-only check-in records. | Column | Type | Description | | ---------------------- | ----------- | --------------------------------- | | id | UUID | Primary key | | organization\_id | UUID | Tenant isolation | | chart\_id | UUID | Patient chart (composite FK) | | checkin\_at | TIMESTAMPTZ | When patient checked in | | mood\_rating | INTEGER | 1–10 scale (CHECK constraint) | | medication\_adherence | TEXT | Adherence level | | crisis\_flag | BOOLEAN | Patient-reported crisis indicator | | crisis\_warning\_signs | TEXT | Free-text warning signs | | custom\_fields | JSONB | Organization-specific metadata | *** ## RLS & Security * **Row Level Security** is enabled and forced on both tables. * **Portal patients** can only see/insert data for their own charts (via `cl_portal_chart_ids_for_user` SECURITY DEFINER helper). * **Clinicians** access data scoped to their organization via `cl_has_org_access`. * **UPDATE policies** include `WITH CHECK` to prevent cross-tenant data movement. * Check-ins are **append-only** — no UPDATE or DELETE policies exist. *** ## Crisis Escalation Flow When a submission triggers crisis detection: 1. **Patient sees:** Crisis resources banner (988, Crisis Text Line, SAMHSA) immediately after submission. 2. **In-Basket:** An **urgent** priority in-basket item is created in CL-23 for the care team. 3. **Clinician action:** Clinician reviews the submission and takes appropriate clinical action. Crisis triggers: * PHQ-9: Question 9 (suicidal ideation) score ≥ 1 * C-SSRS: Any positive item * Check-in: Crisis flag toggled by patient *** ## Integration Points | System | Integration | Direction | | --------------------- | ------------------------------------- | ------------- | | CL-23 In-Basket | In-basket items created on submission | CL-26 → CL-23 | | PM-12 Portal | Patient identity and chart scoping | PM-12 → CL-26 | | CL-03 Treatment Plans | Read-only portal view | CL-03 → CL-26 | | PF-10 Notifications | Crisis escalation alerts | CL-26 → PF-10 | *** ## Troubleshooting **Q: Portal patients can't see the screening page.**\ A: Ensure the patient has an active `pm_portal_users` record with a linked `portal_patient_id` in `pf_profiles`. The RLS helper `cl_portal_chart_ids_for_user` must return chart IDs for the patient. **Q: Submissions aren't appearing in the clinician list.**\ A: Check that the clinician has `cl.patient-submissions.view` permission and belongs to the same organization as the submission. **Q: Crisis in-basket items aren't being created.**\ A: Verify CL-23 tables exist and the `usePatientSubmissionInbasket` hook is invoked after submission creation. # Patient-Reported Outcomes & Self-Service Portal — User Guide Source: https://docs.encoreos.io/cl/patient-reported-outcomes-user-guide The Patient-Reported Outcomes & Self-Service Portal enables patients to complete health screenings, submit between-session check-ins, and view their treatment… **Feature ID:** CL-26\ **Module:** CL (Clinical & EHR)\ **Version:** 1.0\ **Last Updated:** 2026-02-25 *** ## Overview The Patient-Reported Outcomes & Self-Service Portal enables patients to complete health screenings, submit between-session check-ins, and view their treatment plan — all from the patient portal. Clinicians can review and incorporate patient-submitted results into clinical workflows. *** ## For Patients ### Completing a Health Screening 1. Log in to the **Patient Portal**. 2. Navigate to **Clinical → Screenings** (or `/portal/clinical/screenings`). 3. Select a screening instrument from the dropdown: * **PHQ-9** — Depression screening (9 questions) * **GAD-7** — Anxiety screening (7 questions) * **AUDIT-C** — Alcohol use screening (3 questions) * **DAST-10** — Drug use screening (10 questions) * **C-SSRS Screener** — Suicide risk screening (6 questions) 4. Answer all questions honestly. Each question is required. 5. Click **Submit Screening**. 6. Your responses are automatically scored and sent to your care team for review. > **Crisis Resources:** If your screening results indicate a potential crisis, you will immediately see crisis resource information including the **988 Suicide & Crisis Lifeline**, **Crisis Text Line (741741)**, and the **SAMHSA National Helpline (1-800-662-4357)**. ### Between-Session Check-Ins 1. Navigate to **Clinical → Check-In** (or `/portal/clinical/checkin`). 2. Rate your **mood** on a 1–10 scale using the slider. 3. Select your **medication adherence** level. 4. If you are experiencing a crisis or thoughts of self-harm, toggle the **safety check** switch. Crisis resources will display immediately. 5. Optionally describe any warning signs or concerns. 6. Click **Submit Check-In**. ### Viewing Your Treatment Plan 1. Navigate to **Clinical → Treatment Plan** (or `/portal/clinical/treatment-plan`). 2. View your active treatment plan(s) including: * Plan type and status * Effective date and review due date 3. This view is **read-only**. Contact your care team to discuss changes. *** ## For Clinicians ### Reviewing Patient Submissions 1. In the **Clinical** module sidebar, click **Patient Submissions → All Submissions**. 2. Use the filters at the top to narrow by: * **Status:** Pending Review, Reviewed, or Incorporated * **Type:** PHQ-9, GAD-7, AUDIT-C, DAST-10, or C-SSRS 3. Click **View** on any submission to see the detail page. ### Submission Detail & Review Actions On the detail page you can see: * **Score Result:** Total score, severity level, and interpretation * **Crisis Indicators:** A red banner if crisis was detected (e.g., PHQ-9 Q9 ≥ 1, positive C-SSRS items) * **Individual Responses:** All patient answers * **Review Status:** Whether the submission has been reviewed **Actions (requires `cl.patient-submissions.review` permission):** * **Mark Reviewed:** Acknowledges you've seen the submission * **Mark Incorporated:** Indicates the results have been incorporated into the treatment plan ### In-Basket Integration When a patient submits a screening: * A **normal priority** in-basket item is created for the assigned clinician * If **crisis indicators** are detected, an **urgent priority** in-basket item is created * Navigate to **In-Basket** to see and triage these items *** ## Permissions | Permission Key | Description | Default Roles | | ---------------------------------- | ----------------------------------------- | ----------------- | | `cl.patient-submissions.view` | View patient submissions list and details | org\_admin, staff | | `cl.patient-submissions.review` | Mark submissions as reviewed/incorporated | org\_admin, staff | | `cl.between-session-checkins.view` | View between-session check-in data | org\_admin, staff | *** ## FAQ **Q: Can patients edit a submitted screening?**\ A: No. Submissions are append-only. Patients can complete a new screening at any time. **Q: What happens when crisis indicators are detected?**\ A: Crisis resources (988, Crisis Text Line, SAMHSA) are displayed immediately to the patient. An urgent in-basket item is created for the care team. **Q: Which scoring instruments are supported?**\ A: PHQ-9, GAD-7, AUDIT-C, DAST-10, and C-SSRS Screener. Additional instruments may be added in future updates. # Patient Submission Source: https://docs.encoreos.io/cl/patient-submission Review a patient-submitted screening instrument response, score result, and individual question answers; mark reviewed or incorporated. The Patient Submission detail screen displays a clinician-facing view of a single patient-reported screening instrument submission at `/cl/patient-submissions/:submissionId`. ## Overview The page loads a single patient submission via `usePatientSubmissionDetail`. If `score_result.crisis_detected` is true, a `CrisisResourcesBanner` is rendered at the top of the page. A header row shows the submission type label (`PHQ-9`, `GAD-7`, `AUDIT-C`, `DAST-10`, `C-SSRS Screener`), the `submitted_at` timestamp, and a status badge (`Pending Review`, `Reviewed`, `Incorporated`). A Score Result card shows `total_score`, `severity`, `interpretation`, subscale scores, and a crisis indicator strip when `crisis_detected` is true. A Responses card maps each response key to a human-readable label from `RESPONSE_KEY_LABELS` (covering PHQ-9, GAD-7, C-SSRS, AUDIT-C, and DAST-10 fields). A Review card is shown when `reviewed_by` is set, displaying the `reviewed_at` timestamp. Users with `cl.patient-submissions.review` see action buttons to transition status to `reviewed` or `incorporated`. ## Who it's for Requires permission `cl.patient-submissions.view` (enforced by `PermissionGate`). Action buttons to mark reviewed or incorporated require `cl.patient-submissions.review`. ## Before you start * You must have `cl.patient-submissions.view`. * The submission must exist in `cl_patient_submissions` and be accessible to your organization. * To mark reviewed or incorporated, you must additionally have `cl.patient-submissions.review`. ## Steps Navigate to `/cl/patient-submissions`, then click a submission row. The detail page loads the screening result, responses, and review state. If `score_result.crisis_detected` is true, `CrisisResourcesBanner` is displayed at the top of the page. Address per your organization's crisis protocol before proceeding. The Score Result card shows total score, severity label, and interpretation text. If subscale scores are present, each is listed. A crisis indicator strip appears when `crisis_detected` is true. The Responses card shows each question key mapped to its human-readable label alongside the patient's answer. If status is `pending_review` and you have `cl.patient-submissions.review`, click **Mark Reviewed** to transition status to `reviewed`. From either `pending_review` or `reviewed` status, click **Mark Incorporated** to transition status to `incorporated`. ## Key concepts The page supports `phq9` (PHQ-9), `gad7` (GAD-7), `audit_c` (AUDIT-C), `dast10` (DAST-10), and `cssrs_screener` (C-SSRS Screener). Response key labels are predefined in `RESPONSE_KEY_LABELS`; unrecognized keys are formatted by replacing underscores with spaces. Submissions begin as `pending_review`. From there a reviewer can transition to `reviewed`. From `reviewed` (or directly from `pending_review`), status can be set to `incorporated`. Transitions call `useReviewPatientSubmission`. `score_result.crisis_detected` is a boolean on the JSONB `score_result` column. When true, `CrisisResourcesBanner` is rendered above all content and an orange crisis strip appears inside the Score Result card. * Load error or submission not found: destructive card with "Unable to load submission." or "Submission not found." * No score result: Score Result card is not rendered. * No responses: Responses card is not rendered. * No review record: Review card is not rendered. * Loading: `DetailSkeleton` with header and two card skeletons. ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/PatientSubmissionDetailPage.tsx * src/cores/cl/hooks/usePatientSubmissionDetail.ts * src/cores/cl/hooks/usePatientSubmissionMutation.ts * src/cores/cl/types/patient-submissions.ts # PDMP Configuration Source: https://docs.encoreos.io/cl/pdmp-configuration Configure the organization's PDMP gateway provider and query behavior toggles for the Arizona CSPMP integration. The PDMP Configuration screen (`/cl/pdmp/configuration`) is the admin page for setting the Prescription Drug Monitoring Program gateway provider and query behavior options for the organization. ## Overview The page renders `PdmpConfigurationForm` inside a `PageContainer`. The form is gated by `PermissionGate` on `cl.pdmp.configuration.manage` and shows a loading skeleton while configuration data is fetched via `usePdmpConfiguration`. The form has four fields validated with Zod: a `gateway_provider` select (options: `PMP Gateway (NABP)`, `Bamboo Health / Appriss`, `Arizona HIE (Contexture)`) and three boolean toggles — `auto_query_enabled` (Auto-Query on Prescribing), `interstate_query_enabled` (Interstate Queries), and `delegate_access_enabled` (Delegate Access). On submit, `updateConfiguration.mutate` is called with the form values. The card header text reads "Configure Arizona CSPMP/PDMP gateway settings for your organization." ## Who it's for Requires permission: `cl.pdmp.configuration.manage` ## Before you start You must hold the `cl.pdmp.configuration.manage` permission. Only one PDMP configuration record exists per organization; this screen edits that record. Gateway credential secrets are managed separately and are not exposed in this UI. ## Steps Open the Clinical module and navigate to PDMP Configuration. The form loads the current gateway settings for your organization. Choose the PDMP gateway vendor from the dropdown: PMP Gateway (NABP), Bamboo Health / Appriss, or Arizona HIE (Contexture). Enable or disable each toggle as appropriate: * **Auto-Query on Prescribing** — automatically query PDMP when prescribing controlled substances. * **Interstate Queries** — query neighboring state PDMP databases in addition to Arizona. * **Delegate Access** — allow designated delegates to query PDMP on behalf of prescribers. Click "Save Configuration." The button shows "Saving…" while the mutation is in flight and returns to its default label on completion. ## Key concepts Three providers are available in the shipped schema: `pmp_gateway` (PMP Gateway / NABP), `bamboo_health` (Bamboo Health / Appriss), `arizona_hie` (Arizona HIE / Contexture). Selection is enforced by a Zod enum — no other values are accepted. The component comment explicitly notes: "credentials\_vault\_ref is NOT exposed in the UI." Gateway credentials are stored separately outside this form. While configuration data loads, the form renders three skeleton rows inside the card. No data is shown until `usePdmpConfiguration` resolves. `PermissionGate` wraps the entire form with `fallback={null}`. Users without `cl.pdmp.configuration.manage` see nothing rendered by the form component. ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/PdmpConfigurationPage.tsx * src/cores/cl/components/PdmpConfigurationForm.tsx * src/cores/cl/hooks/usePdmpConfiguration.ts # PDMP Monitoring Source: https://docs.encoreos.io/cl/pdmp-monitoring View the prescription drug monitoring program query history for a patient chart, with risk flags and prescriber attestation. The PDMP Monitoring screen displays PDMP query history for a specific patient chart at the in-app route `/cl/pdmp`. ## Overview The PDMP Monitoring page loads when a `chartId` query parameter is present in the URL; without it the page renders a "No Chart Selected" empty state prompting the user to navigate to a patient chart first. When a chart is provided, the `PdmpResultsView` component fetches the patient's PDMP query history from `cl_pdmp_queries` via `usePdmpQueryList`. Each query entry shows the datetime, gateway provider badge, attestation status, and a risk-flag badge. Users can expand any entry to view prescription count, risk indicators (daily MME, overlapping prescriptions, multiple prescribers, multiple pharmacies), exception type, and interstate query details. Queries that have not yet been attested show an "Attest" button (guarded by `cl.pdmp.queries.create`) that opens a `PdmpAttestationDialog`. ## Who it's for Requires permission `cl.pdmp.queries.view`. ## Before you start * Permission `cl.pdmp.queries.view` must be granted. * Navigate to this page from a patient chart context that passes a `chartId` query parameter; the standalone route at `/cl/pdmp` without a `chartId` renders an empty prompt. ## Steps Navigate to the patient's chart. The PDMP history link passes the `chartId` as a query parameter to `/cl/pdmp`. The page lists PDMP query records in reverse-chronological order. Each entry shows the query datetime, gateway provider, and attestation status. Each entry displays a "Risk Flags" badge (destructive) if any of the following are present: overlapping prescriptions, multiple prescribers, multiple pharmacies, or daily MME at or above the configured threshold. "No Risk Flags" (outline) indicates none were detected. Click "View Details" on any entry to see prescription count, risk indicator breakdown, exception type (if the query failed), and interstate query states. If you hold the `cl.pdmp.queries.create` permission and the query has not been attested, click "Attest" to open the attestation dialog and record your attestation. ## Key concepts The component surfaces four boolean/numeric risk indicators from `results_summary.risk_indicators`: `overlapping_prescriptions`, `multiple_prescribers`, `multiple_pharmacies`, and `mme_daily`. A daily MME value is highlighted in destructive styling when it meets or exceeds the threshold constant in code. If no queries are recorded for the chart, an empty state is shown. If the fetch fails, a sanitized error message is displayed inside the card. If no `chartId` query parameter is provided, a full-page "No Chart Selected" card is shown. When `interstate_query` is true on a record, the detail expansion lists the `states_queried` array. ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/PdmpHistoryPage.tsx * src/cores/cl/components/PdmpResultsView\.tsx * src/cores/cl/types/pdmp.ts # Pending Results Source: https://docs.encoreos.io/cl/pending-results Review and link unsolicited lab results to patient charts, or reject results with a documented reason. The Pending Results screen displays the queue of unsolicited lab results awaiting clinical review and linking to patient charts, accessible at `/cl/pending-results`. ## Overview The page renders a `PendingLabResultsQueue` component that fetches pending lab results via `usePendingLabResults`. Each result in the queue is displayed as a table row with columns: Lab name (from `cl_reference_labs`), LOINC Code, External Order ID, number of result items, Received date, and Expiry date. Two actions are available per row: **Link** — opens `LinkPendingResultDialog` to associate the result with a patient chart; **Reject** — opens a confirmation dialog requiring a typed rejection reason before the result is dismissed via `useRejectPendingResult`. The queue shows skeleton rows while loading and an inline error message on failure. When the queue is empty, the message "Queue is clear — No unsolicited lab results pending review." is shown. ## Who it's for Requires permission: `cl.results.manage` ## Before you start * Your account must have the `cl.results.manage` permission. * Results appear automatically when the lab integration delivers unsolicited results to the organization. ## Steps Navigate to `/cl/pending-results`. The queue loads automatically showing all unlinked, non-rejected pending results. Read the table row: Lab name, LOINC code, external order ID, result count, received timestamp, and expiry date (if set). Click "Link" on the result row to open the link dialog and associate the result with the correct patient chart. Click "Reject" on a result row. In the dialog, type a rejection reason and click "Reject Result" to remove the result from the queue. The reason field must not be empty. ## Key concepts Results in this queue were received from a reference lab without a matching outbound order in the system. They require manual review before being associated with a patient record. When an `expires_at` date is present on a result, the expiry date is shown with a clock icon. SME: confirm expiry handling behavior. "Queue is clear — No unsolicited lab results pending review." ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/PendingLabResultsPage.tsx * src/cores/cl/components/PendingLabResultsQueue.tsx # Pharmacy Directory Source: https://docs.encoreos.io/cl/pharmacy-directory Manage the organization's pharmacy directory for e-prescribing, including NCPDP ID, EPCS capability, and active status. The Pharmacy Directory screen manages the organization's list of pharmacies used for electronic prescribing, accessible at `/cl/pharmacies`. ## Overview The page fetches all organization pharmacies including inactive ones via `usePharmacyListAll` from `cl_pharmacies` (excluding soft-deleted rows). A live search field filters the displayed list by pharmacy name, NCPDP ID, or phone number. The main table columns are: Name, NCPDP ID, Contact (phone and fax), EPCS badge, Status (Active / Inactive), and an Activate/Deactivate toggle action (gated by `cl.pharmacies.manage`). Users with `cl.pharmacies.manage` can also open the "Add Pharmacy" dialog by clicking the accent button in the header. The Add Pharmacy form requires Name and NCPDP ID (both marked required), with optional Phone, Fax, and an EPCS Capable toggle (defaults to on). Inactive pharmacy rows render at reduced opacity with a muted background. ## Who it's for Requires permission: `cl.pharmacies.view` Additional permission that unlocks management: * `cl.pharmacies.manage` — enables "Add Pharmacy" button and Activate/Deactivate row actions ## Before you start * Your account must have the `cl.pharmacies.view` permission. * To add or manage pharmacies, you additionally need `cl.pharmacies.manage`. * Have the pharmacy's NCPDP Provider ID available before adding a new entry. ## Steps Navigate to `/cl/pharmacies`. The directory table loads automatically showing all pharmacies (active and inactive). Type in the search box to filter by pharmacy name, NCPDP ID, or phone number. The list filters in real time. Click "Add Pharmacy" to open the dialog. Enter the pharmacy Name (required) and NCPDP ID (required). Optionally add Phone, Fax, and toggle EPCS Capable. Click "Save Pharmacy" to add the entry to the directory. Click "Deactivate" on an active pharmacy row to set it inactive, or "Activate" on an inactive row to restore it. Changes take effect immediately. ## Key concepts The EPCS badge appears on rows where `accepts_epcs` is true. This indicates the pharmacy is flagged to accept electronic prescriptions for controlled substances. SME: confirm whether this is a verified or manual flag. Active pharmacies are available for prescribing workflows. Inactive pharmacies remain in the directory (soft deactivated) but are excluded from `usePharmacyList` (the active-only hook used in prescribing contexts). No search match: "No pharmacies found matching your search." No pharmacies in directory: "No pharmacies in directory." ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/PharmacyDirectoryPage.tsx * src/cores/cl/hooks/usePharmacyList.ts # Population Dashboard Source: https://docs.encoreos.io/cl/population-dashboard Aggregate population health charts showing risk distribution, open care gaps, and outcome trends with site filtering and VBP export. The Population Dashboard displays aggregate population health metrics for the organization at the in-app route `/cl/population-health/dashboards`. ## Overview The Population Dashboard is gated by `cl.population-dashboard.view` via a `PermissionGate`. The page header includes an "Export for VBP" button (requires `cl.quality-measures.export`) that calls the `cl-vbp-export` Supabase edge function and downloads a dated CSV. A site filter dropdown appears when the organization has more than one site, allowing data to be scoped to a single site. Four summary cards display total stratified patients, open care gaps, combined high/critical risk count, and the number of distinct gap types. A three-tab layout contains: "Risk Distribution" (bar chart of patient counts by risk tier with small-cell suppression), "Care Gap Summary" (bar chart of open gap counts by gap type), and "Outcome Trends" (currently an empty state shell with a ghosted line chart for PHQ-9 and GAD-7 averages). ## Who it's for Requires permission `cl.population-dashboard.view`. Export requires the additional permission `cl.quality-measures.export`. ## Before you start * Permission `cl.population-dashboard.view` must be granted. * Risk stratification and care gap data must have been processed for the organization for charts to display data rather than empty states. ## Steps Navigate to `/cl/population-health/dashboards`. The four summary cards load first with skeleton states while data is fetched. If the organization has more than one site, use the site dropdown to scope the dashboard to a single site or view all sites. Click the "Risk Distribution" tab to view a bar chart of patient counts by risk tier. Bars with counts below 5 are suppressed and displayed as a masked value. Click the "Care Gap Summary" tab to view a bar chart of open care gap counts by gap type. Click the "Outcome Trends" tab. If sufficient longitudinal data has been collected, trend lines for PHQ-9 and GAD-7 averages are shown; otherwise an empty state is displayed. Click "Export for VBP" (requires `cl.quality-measures.export`) to download a CSV from the `cl-vbp-export` edge function. The file is named `vbp-export-{date}.csv`. ## Key concepts `critical`, `high`, `medium`, `low` — from `RISK_TIER_LABELS` in `src/cores/cl/types/risk-stratifications.ts`. The `maskSmallCell` utility suppresses patient counts below 5 in all chart tooltips and summary cards to protect patient privacy. Each chart tab renders an `EmptyState` component when the data array is empty or all counts are zero. A card-level error state is shown when the data fetch fails. ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/population-health/PopulationDashboardPage.tsx * src/cores/cl/types/quality-measure-periods.ts # Population Health Source: https://docs.encoreos.io/cl/population-health The /cl/population-health route redirects to /cl/population-health/care-gaps, the Care Gap Work List. Sub-routes include dashboards, quality measures, and clin… The Population Health section of the Clinical core is accessible at `/cl/population-health`. This path redirects immediately to `/cl/population-health/care-gaps`. Sub-routes provide access to the Care Gap Work List, Population Dashboard, Quality Measures, Clinician Panel, and Supervisor Panels. ## Overview `/cl/population-health` is a **redirect-only route** that navigates to `/cl/population-health/care-gaps`. The Population Health sub-section contains five screens: | Sub-route | Component | Permission | | ---------------------------------------- | ------------------------- | ------------------------------ | | `/cl/population-health/care-gaps` | `CareGapWorkListPage` | `cl.care-gaps.view` | | `/cl/population-health/dashboards` | `PopulationDashboardPage` | `cl.population-dashboard.view` | | `/cl/population-health/quality-measures` | `QualityMeasuresPage` | `cl.quality-measures.view` | | `/cl/population-health/my-panel` | `ClinicianPanelPage` | `cl.care-gaps.view` | | `/cl/population-health/panels` | `SupervisorPanelsPage` | `cl.population-dashboard.view` | The Population Dashboard (`/dashboards`) renders three tabs — Risk Distribution, Care Gap Summary, and Outcome Trends — plus four summary stat cards (Total Stratified, Open Care Gaps, High/Critical Risk, Gap Types). Values below 5 are suppressed in displayed counts. An optional site filter appears when the organization has more than one site. ## Who it's for Each sub-route has its own `RequirePermission` or `PermissionGate` wrapper. The parent `/cl/population-health` redirect itself has no permission gate. ## Before you start * You need the permission for the specific sub-route you intend to access (see table above). * Risk stratification and care gap data must be populated by the risk engine and care gap identification process for dashboard charts to display non-empty states. ## Steps Go to `/cl/population-health`. The router redirects to `/cl/population-health/care-gaps`. The Care Gap Work List displays open care gaps for the organization. Filter by status, priority, gap type, or site. Open a gap detail sheet or close a gap using the available actions. Navigate to `/cl/population-health/dashboards` for aggregate charts. Use the Risk Distribution tab to see counts by risk tier. Use the Care Gap Summary tab for a bar chart of open gaps by type. The Outcome Trends tab is not yet populated (Phase 4 deliverable). On the Population Dashboard, users with `cl.quality-measures.export` permission can click "Export for VBP" to download a CSV from the `cl-vbp-export` edge function. Navigate to `/cl/population-health/my-panel` to see your assigned patients and their care gap status. ## Key concepts | Term | Meaning | | ------------------------ | --------------------------------------------------------------------------------------------------------------------- | | Care Gap | An identified gap between a patient's current care status and a clinical target | | Risk Tier | Patient risk classification: `critical`, `high`, `medium`, or `low` | | Small-cell suppression | Counts below 5 are masked in displayed values (`maskSmallCell`) to protect patient privacy | | VBP export | CSV export of population health data for Value-Based Payment reporting via the `cl-vbp-export` Supabase edge function | | `usePopulationDashboard` | Hook fetching aggregate risk distribution, care gap summary, and outcome trend data | ## Related Clinical core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/population-health/PopulationDashboardPage.tsx * src/cores/cl/pages/population-health/CareGapWorkListPage.tsx * src/cores/cl/hooks/usePopulationDashboard.ts * src/cores/cl/hooks/useCareGapList.ts * src/cores/cl/types/care-gaps.ts * src/cores/cl/types/risk-stratifications.ts # Population Health & Care Gap Management — Admin Guide Source: https://docs.encoreos.io/cl/population-health-admin-guide All configuration is stored in cl_module_settings.custom_fields under the population_health key, scoped per organization. ## Configuration All CL-35 configuration is stored in `cl_module_settings.custom_fields` under the `population_health` key, scoped per organization. ### Care gap thresholds | Setting | Default | Range / Constraint | Description | | ------------------------------------- | ------- | ------------------ | ------------------------------------------------------------- | | `assessment_due_warn_days` | 60 | 1–180 | Days before due date to flag an assessment as "due soon". | | `assessment_due_overdue_days` | 90 | 7–365 | Days after due date when assessment becomes "overdue". | | `followup_not_scheduled_warn_days` | 7 | 1–30 | Days post-discharge to warn if no follow-up is scheduled. | | `followup_not_scheduled_overdue_days` | 14 | 7–60 | Days post-discharge after which the follow-up gap is overdue. | | `screening_due_warn_days` | 30 | 1–180 | Days before screening due date to flag. | > **Jurisdiction note (PF-96):** These thresholds are clinical defaults, > not state-Medicaid mandates. If a state defines stricter timeliness > requirements, the values are overridden via the org's PF-96 > jurisdiction profile (`useJurisdictionProfile(siteId)` on the > frontend; `pf_resolve_jurisdiction_profile()` in edge functions). > Arizona AHCCCS is the **default profile**, not a universal default. ### Risk stratification weights | Setting | Default | Sum | Notes | | ----------------------- | ------- | ---- | -------------------------------------------------------- | | `risk_weight_safety` | 0.40 | 1.00 | CL-07 safety component | | `risk_weight_outcome` | 0.30 | | CL-10 outcome component | | `risk_weight_metabolic` | 0.20 | | CL-22 metabolic component | | `risk_weight_moud` | 0.10 | | CL-21 MOUD adherence; **gated on 42 CFR Part 2 consent** | Weights MUST sum to 1.00. The risk engine validates and rejects configurations that violate this constraint. When MOUD is excluded (no consent or no MOUD enrollment), its weight is redistributed proportionally across the remaining components. ### Risk tier thresholds | Setting | Default | Range | | ------------------ | ------- | ----- | | `risk_tier_low` | 25 | 0–100 | | `risk_tier_medium` | 50 | 0–100 | | `risk_tier_high` | 75 | 0–100 | A patient with a composite score `≥ high` is "critical"; `≥ medium` is "high"; `≥ low` is "medium"; otherwise "low". *** ## Feature Flags Configured in `pf_feature_flags`: | Flag | Default | Effect | | ------------------------- | ----------------- | ---------------------------------------------------------------------------------------------------------------------- | | `cl.pop_health_enabled` | `false` (per org) | Master switch — when off, all CL-35 routes return 404 / are hidden from the navigation. | | `care_gap_engine_enabled` | `true` | Enables the nightly care gap evaluation cron. Set false to pause gap creation/auto-close (e.g. during data migration). | *** ## Cron / Scheduled Jobs | Job | Schedule | Purpose | | ------------------------ | ---------------------- | -------------------------------------------------------------------------------------------- | | `cl-care-gap-engine` | nightly 02:00 local | Re-evaluates all open gaps; emits `cl_care_gap_closed` for auto-closures. | | `cl-risk-stratification` | nightly 03:00 local | Recomputes composite risk scores for every active patient. | | `cl-hedis-calculator` | weekly Sun 04:00 local | Computes/UPSERTs `cl_quality_measure_periods`; emits `cl_quality_measure_period_calculated`. | All cron functions are deployed via Supabase Edge Functions and use `createCronHandler` from `_shared/cron-handler.ts`. *** ## HEDIS / MA STARS Measure Definitions Measure definitions live as **versioned JSON** under `supabase/seeds/cl_hedis_measure_definitions/`. Each annual NCQA spec update is added as a new variant rather than overwriting prior years to maintain auditability. FUH/FUM are consumed from CL-29-EN-65 and not re-implemented in CL-35. To add a new measure year: 1. Update the relevant JSON file with a new `effective_year` variant. 2. Re-deploy `cl-hedis-calculator` (no schema migration needed). 3. Re-run the calculator for any year requiring re-computation. *** ## Permissions CL-35 ships these permission keys (registered in PF-30): * `cl.care-gaps.view` * `cl.care-gaps.close` * `cl.risk-stratifications.view` * `cl.population-dashboard.view` * `cl.quality-measures.view` * `cl.quality-measures.export` Assign to roles via **Settings → Permissions**. *** ## Compliance Controls (built-in) | Regulation | Control | | --------------------------------- | ---------------------------------------------------------------------- | | HIPAA Privacy (45 CFR 164.514(b)) | Small-cell suppression (`n < 5 → '<5'`) on all aggregates and exports. | | 42 CFR Part 2 | MOUD risk component gated on `cl_check_sud_consent()`. | | AHCCCS VBP | VBP CSV export with required aggregate columns. | | NCQA HEDIS MY 2026 | AMM/IET thresholds 84/180/14/2 days; FUH/FUM via CL-29-EN-65. | | CMS MA STARS | Separate MA-specific measure definitions in seed files. | | SAMHSA CCBHC | Systematic panel management + proactive gap identification. | | CARF | Aggregate trend dashboards for program evaluation. | See [REGULATORY\_COMPLIANCE\_TRACKER.md](/compliance/REGULATORY_COMPLIANCE_TRACKER) for current status. *** ## Related Docs * [Population Health User Guide](/cl/population-health-user-guide) * [CL-35 Integration Doc](/architecture/integrations/population-health-integration) * [CL–FA VBP Quality Data Pipeline](/architecture/integrations/CL-FA-VBP-QUALITY-DATA-PIPELINE) * [CL–FW Event Automation Integration](/architecture/integrations/CL-FW-EVENT-AUTOMATION-INTEGRATION) # Population Health & Care Gap Management — User Guide Source: https://docs.encoreos.io/cl/population-health-user-guide Population Health gives care managers and clinicians proactive tools for managing their patient panel: identifying open care gaps, reviewing risk stratificatio… ## Overview Population Health gives care managers and clinicians proactive tools for managing their patient panel: identifying open care gaps, reviewing risk stratification, monitoring program-level outcomes, and tracking quality measure performance for AHCCCS VBP, NCQA HEDIS, and CMS MA STARS reporting. *** ## Navigation All Population Health pages live under **Clinical → Population Health**. | Page | Path | Permission | | -------------------- | ---------------------------------------- | --------------------------------------- | | Care Gap Work List | `/cl/population-health/care-gaps` | `cl.care-gaps.view` | | Clinician Panel | `/cl/population-health/my-panel` | `cl.care-gaps.view` | | Supervisor Panels | `/cl/population-health/supervisor` | `cl.care-gaps.view` (+ supervisor role) | | Population Dashboard | `/cl/population-health/dashboard` | `cl.population-dashboard.view` | | Quality Measures | `/cl/population-health/quality-measures` | `cl.quality-measures.view` | *** ## 1. Care Gap Work List The Work List shows all open care gaps assigned to your panel, sorted by severity (overdue first), then due date. Use this view to plan your outreach for the day. ### Filtering * **Gap type** — assessment overdue, follow-up not scheduled, screening due, etc. * **Severity** — overdue, due-soon, future. * **Patient** — quick filter by chart name. ### Closing a gap 1. Click a gap row to open the patient chart in a side panel. 2. Complete the required clinical action (assessment, follow-up scheduling, screening, etc.). 3. The gap **auto-closes** when the underlying clinical event is recorded (e.g. assessment finalized, follow-up appointment booked). 4. To override a gap manually (clinician judgment), select **Close with reason** and pick a closure reason. Manual closures are audit-logged. *** ## 2. Clinician Panel `My Panel` lists every patient currently assigned to you, with their risk tier (low / medium / high / critical) and open gap count. Click a row to drill into the patient chart. Risk tiers are computed nightly by the risk-stratification job from up to four components (CL-07 safety, CL-10 outcome, CL-22 metabolic, CL-21 MOUD). For patients without 42 CFR Part 2 consent, MOUD is excluded and weight is redistributed across the remaining components. *** ## 3. Supervisor Panels Supervisors see all clinicians in their team plus aggregate panel metrics: average risk score, open gaps per panel, gap closure rate, and outcome trends. Use this to balance caseloads and target coaching. *** ## 4. Population Dashboard Aggregate, organization-level dashboards covering: * Risk tier distribution * Care gap summary by type * Outcome trends (PHQ-9, GAD-7, etc.) * Disaggregation by site, program, payer, age band, primary diagnosis **Privacy note:** All cells with fewer than 5 patients are suppressed and displayed as `<5` (HIPAA Safe Harbor de-identification). *** ## 5. Quality Measures The Quality Measures page shows HEDIS and CMS MA STARS measure period results for the selected reporting year: * **AMM** — Antidepressant Medication Management (acute / continuation) * **IET** — Initiation & Engagement of SUD Treatment * **FUH / FUM** — Follow-up After Hospitalization / ED Visit (sourced from CL-29-EN-65) Switch between **HEDIS** and **MA STARS** tabs at the top. Use the year selector to compare across reporting periods. ### VBP Export Users with `cl.quality-measures.export` may export the VBP CSV for AHCCCS reporting. The CSV contains aggregate metrics only — never patient identifiers — and applies small-cell suppression. *** ## Permissions Summary | Permission | What you can do | | ------------------------------ | --------------------------------- | | `cl.care-gaps.view` | View work list & panels | | `cl.care-gaps.close` | Close gaps manually with a reason | | `cl.risk-stratifications.view` | View risk tiers and components | | `cl.population-dashboard.view` | View aggregate dashboards | | `cl.quality-measures.view` | View HEDIS / MA STARS results | | `cl.quality-measures.export` | Export VBP CSV | *** ## Need help? * Admin guide: [Population Health Admin Guide](/cl/population-health-admin-guide) * Cross-core integrations: [Population Health Integration](/architecture/integrations/population-health-integration) * Email: [admin@example.org](mailto:admin@example.org) # Program Enrollments Source: https://docs.encoreos.io/cl/program-enrollments View and track patient program enrollment records and compliance status across active and ended programs. The Program Enrollments screen lists all patient program enrollments for the current organization, accessible at `/cl/program-enrollments`. ## Overview The page fetches all enrollment records from `cl_program_enrollments` joined to `cl_program_schedules` (name and program\_type) for the current organization, ordered by enrollment date descending. Each enrollment is displayed as a card showing the program name, an Active or Ended status badge, enrollment date, optional end date, and program type. Enrollments are initiated from patient charts (the empty state message indicates: "Enroll patients in program schedules from their chart"). The page renders skeleton placeholders while loading and shows a destructive error message on fetch failure. ## Who it's for Requires permission: `cl.program_enrollments.view` ## Before you start * Your account must have the `cl.program_enrollments.view` permission. * Program schedules must be configured before patients can be enrolled (see Program Schedules). ## Steps Navigate to `/cl/program-enrollments`. The list of enrollment cards loads automatically for the current organization. Each card shows the program name, Active or Ended badge, enrolled date, optional end date, and program type. Cards are ordered most-recently enrolled first. To create a new enrollment, navigate to the patient's chart and initiate enrollment from there. New enrollments cannot be created directly from this screen. ## Key concepts **Active** — the enrollment has no `ended_at` date. **Ended** — the enrollment has an `ended_at` date recorded. The `useProgramEnrollmentMutation` hook enforces that a patient cannot have two active enrollments in the same program schedule simultaneously. An error is surfaced if a duplicate active enrollment is attempted. When no enrollments exist: "No enrollments — Enroll patients in program schedules from their chart." ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/ProgramEnrollmentsPage.tsx * src/cores/cl/hooks/useProgramEnrollments.ts # Program Outcomes Source: https://docs.encoreos.io/cl/program-outcomes View aggregated, de-identified program-level outcome measures with HEDIS dashboard and small-n suppression. The Program Outcomes screen displays aggregated outcome measures across programs for the current organization, accessible at `/cl/program-outcomes`. ## Overview The page fetches program outcome records from `cl_program_outcomes` via `useProgramOutcomes`, with optional filtering by measure type. Outcomes with a denominator below the `outcome_small_n_suppression_threshold` (configurable in CL module settings, default 5) are automatically suppressed and displayed as dimmed rows with a "Suppressed — sample size too small" label rather than numerator/denominator/rate values. Four summary stat cards show: Total Measures, Average Rate, Meeting Benchmark count, and Suppressed count. A HEDIS Dashboard section renders below the summary cards. The main table columns are: Measure, Type, Period, Numerator, Denominator, Rate, Benchmark, and Status (Met / Not Met / N/A). A measure-type filter drop-down narrows the table. A warning alert appears if CL module settings fail to load (defaulting to threshold of 5). ## Who it's for Requires permission: `cl.program_outcomes.view` ## Before you start * Your account must have the `cl.program_outcomes.view` permission. * CL module settings must be configured to set the suppression threshold (defaults to 5 if unavailable). ## Steps Navigate to `/cl/program-outcomes`. Summary stat cards and the outcome table load automatically for the current organization. Use the "All Types" drop-down in the top-right header to filter the table to a specific measure type. Scroll past the stat cards and separator to view the HEDIS Dashboard section. Rows with denominator below the suppression threshold appear dimmed with the label "Suppressed — sample size too small" in place of numeric values. The suppressed count appears in the stat card. ## Key concepts Outcome rows where `denominator` is less than `outcome_small_n_suppression_threshold` are suppressed in the UI display. The threshold is read from `cl_module_settings.outcome_small_n_suppression_threshold` and defaults to 5. **Met** — `meets_benchmark` is `true`; **Not Met** — `meets_benchmark` is `false`; **N/A** — `meets_benchmark` is null. When no outcome data exists: "No Program Outcomes — No program-level outcome data has been recorded yet. Outcomes are generated from PROM entries and HEDIS calculations." If `cl_module_settings` cannot be loaded, a warning alert reads: "Could not load CL module settings; using default suppression threshold. Some configuration may be unavailable." ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/ProgramOutcomesPage.tsx * src/cores/cl/hooks/useProgramOutcomes.ts # Program Schedules Source: https://docs.encoreos.io/cl/program-schedules Create and manage IOP, PHP, Residential, and Outpatient program schedule templates for patient enrollment. The Program Schedules screen lists and manages program schedule templates used for patient enrollment, accessible at `/cl/program-schedules`. ## Overview The page fetches program schedule templates from `cl_program_schedules` via `useProgramSchedulesList`. By default only active schedules are shown; a "Show retired" toggle includes inactive schedules. Each schedule is displayed as a card showing the program name, program type label, minimum hours per week, and minimum days per week. Retired schedules render at reduced opacity with a "Retired" badge. A "New Schedule" button (visible to users with `cl.program_schedules.create`) opens a `ProgramScheduleFormDialog` to create a new template. The list is ordered alphabetically by name. ## Who it's for Requires permission: `cl.program_schedules.view` Additional permission that unlocks creation: * `cl.program_schedules.create` — enables the "New Schedule" button ## Before you start * Your account must have the `cl.program_schedules.view` permission. * To create schedules, you additionally need `cl.program_schedules.create`. ## Steps Navigate to `/cl/program-schedules`. The schedule card grid loads automatically showing active schedules only. Toggle "Show retired" to also display inactive (`is_active: false`) schedule templates. Retired cards render at reduced opacity. Click "New Schedule" to open the Program Schedule form dialog. Complete the required fields and save to add the template to the directory. ## Key concepts Active schedules (`is_active: true`) are available for patient enrollment. Retired schedules (`is_active: false`) are hidden by default but remain in the system. Retiring a schedule does not end existing enrollments. Each card shows: program name, program type (from `PROGRAM_TYPE_LABELS`), minimum hours per week (`≥Xh/wk`), and minimum days per week (`≥Xd/wk`). When no schedules exist: "No program schedules — Create your first program schedule template to get started." ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/ProgramSchedulesListPage.tsx * src/cores/cl/hooks/useProgramSchedules.ts # Program Scheduling Templates — Admin Guide Source: https://docs.encoreos.io/cl/program-scheduling-templates-admin-guide Configuration and administration guide for Program Scheduling Templates. > **Purpose:** Configuration and administration guide for CL-27 Program Scheduling Templates. *** ## Overview This guide covers administrative tasks for program scheduling: template configuration, permission assignment, schedule definition schema, and billing code mapping. *** ## Configuration ### Program Type Minimums | Program Type | Min Hours/Week | Min Days/Week | Common HCPCS | | ------------ | -------------- | ------------- | ------------------- | | IOP | 9 | 3 | H0015, H2036, S9480 | | PHP | 20 | 5 | H0035, H2017 | | Residential | 1 | 1 | H0018, H0019 | | Outpatient | 1 | 1 | H0038, 90837, 90847 | ### Schedule Definition Schema The `schedule_definition` JSONB column stores the weekly template: ```json theme={null} { "blocks": [ { "day_of_week": 1, "start_time": "09:00", "end_time": "12:00", "service_type": "group", "description": "Morning IOP Group" } ], "exceptions": [ { "date": "2026-07-04", "reason": "Holiday" } ] } ``` * `day_of_week`: 0 = Sunday, 1 = Monday, … 6 = Saturday * `service_type`: `group` | `individual` | `peer_support` * `exceptions`: Dates to skip during session generation ### Permissions Assign these permissions via the Admin → Permissions page: | Permission Key | Recommended Roles | | ------------------------------- | -------------------------- | | `cl.program_schedules.view` | org\_admin, manager, staff | | `cl.program_schedules.create` | org\_admin, manager | | `cl.program_schedules.edit` | org\_admin, manager | | `cl.program_enrollments.view` | org\_admin, manager, staff | | `cl.program_enrollments.create` | org\_admin, manager, staff | | `cl.program_enrollments.edit` | org\_admin, manager | ### CL-14 Integration Group session auto-creation inserts into `cl_group_sessions` with `custom_fields.program_schedule_id` linking back to the template. Generated sessions appear in the Group Sessions list. *** ## Troubleshooting ### Sessions Not Generated * Verify the schedule has blocks with `service_type: "group"` * Check that the target dates are not listed in `exceptions` * Ensure the user has `cl.program_schedules.edit` permission ### Compliance Shows Incorrect Data * Attendance summaries are computed from `cl_program_attendance_summaries` * Verify the enrollment period dates match the reporting period *** ## Related Documentation * **User Guide:** `docs/cl/cl-27-program-scheduling-templates-user-guide.md` * **Specification:** `specs/cl/specs/CL-27-behavioral-health-program-scheduling-templates.md` * **Integration:** `docs/architecture/integrations/CL-27-behavioral-health-program-scheduling-templates-INTEGRATION.md` *** **Last Updated:** 2026-02-25 # Program Scheduling Templates — User Guide Source: https://docs.encoreos.io/cl/program-scheduling-templates-user-guide This guide helps clinicians and program staff manage program schedule templates, enroll patients, and track attendance compliance. > **Purpose:** This guide helps clinicians and program staff manage program schedule templates, enroll patients, and track attendance compliance. *** ## Overview Program Scheduling Templates let your organization define weekly schedules for behavioral health programs (IOP, PHP, Residential, Outpatient). Patients are enrolled into programs, and the system tracks whether they meet minimum hour and day requirements. ### Key Capabilities * **Schedule Templates:** Define weekly block schedules with group, individual, and peer support sessions * **Patient Enrollment:** Enroll patients into programs with start/end dates and status tracking * **Compliance Tracking:** Monitor whether patients meet IOP (9 hrs/3 days) and PHP (20 hrs/5 days) minimums * **Group Session Generation:** Auto-create CL-14 group sessions from program templates ### Who Should Use This Guide | Role | Use Case | | ---------------- | -------------------------------------------------- | | Clinical Staff | Enroll patients, view compliance | | Program Director | Create/edit schedule templates, monitor compliance | | Org Admin | Configure templates, manage program settings | *** ## Prerequisites ### Permissions Required | Permission | Description | | ------------------------------- | ------------------------------- | | `cl.program_schedules.view` | View program schedule templates | | `cl.program_schedules.create` | Create new templates | | `cl.program_schedules.edit` | Edit existing templates | | `cl.program_enrollments.view` | View patient enrollments | | `cl.program_enrollments.create` | Enroll patients | | `cl.program_enrollments.edit` | Edit enrollment records | *** ## Common Tasks ### Create a Program Schedule Template 1. Navigate to **Clinical** → **Program Schedules** 2. Click **New Schedule** 3. Fill in: * **Name:** e.g., "Morning IOP — Mon/Wed/Fri" * **Program Type:** IOP, PHP, Residential, or Outpatient * **Minimum Hours/Week** and **Minimum Days/Week** (auto-filled based on program type) 4. Add schedule blocks (day, start time, end time, service type) 5. Click **Save** ### Enroll a Patient 1. Navigate to **Clinical** → **Program Enrollments** 2. Click **New Enrollment** 3. Select the patient chart and program schedule 4. Set start date (end date optional) 5. Click **Save** ### Generate Group Sessions After creating a schedule template with group blocks, use the "Generate Sessions" action to auto-create CL-14 group sessions for a date range. *** ## Tips and Best Practices * ✅ Set exception dates (holidays) in the schedule definition to avoid generating sessions on those days * ✅ Review compliance summaries weekly to catch patients falling below minimums * ❌ Don't create duplicate enrollments for the same patient and program *** ## Glossary | Term | Definition | | -------------- | ------------------------------------------------------------- | | IOP | Intensive Outpatient Program — 9+ hours/week, 3+ days | | PHP | Partial Hospitalization Program — 20+ hours/week, 5 days | | Schedule Block | A time slot in the weekly template (e.g., Mon 9am-12pm Group) | *** **Last Updated:** 2026-02-25\ **Questions?** Contact your organization administrator. # Progress Notes Source: https://docs.encoreos.io/cl/progress-notes The /cl/charts/:chartId/notes route is not registered. Individual progress notes are accessed at /cl/charts/:chartId/notes/:noteId with the cl.progress_note.vi… Progress notes in the Clinical core are accessed via individual note URLs. The path `/cl/charts/:chartId/notes` (without a note ID) is **not a registered route**. The active route for viewing a progress note is `/cl/charts/:chartId/notes/:noteId`. ## Overview `/cl/charts/:chartId/notes` is **not a registered route**. Navigating to it without a `:noteId` renders `NotFound`. The active route `/cl/charts/:chartId/notes/:noteId` renders `ProgressNoteDetailPage`, a read-only note view with optional action buttons (Sign, Co-sign, Add Addendum) gated on note status and permissions. The page displays: * A linked PM encounter alert (if `encounter_id` is set), with a link to the patient in Practice Management * Session Details card: service date, begin/end time, duration, diagnosis code, service line, place of service, telehealth fields * Clinical Documentation card: Presenting Problem, Mental Status Exam Findings, Interventions, Member Response, Plan/Next Session * Signatures card (if signed or co-signed): signed-at timestamp, cosigned-at timestamp, credentials badges Note lifecycle observable in code: `draft` → `completed` → `signed` → `cosigned` → `amended` / `addendum`. ## Who it's for Permission required: `cl.progress_note.view` (on the `/cl/charts/:chartId/notes/:noteId` route). Additional permission gates within the page: * Sign button: `cl.progress_note.sign` (shown when status is `completed`) * Co-sign button: `cl.progress_note.cosign` (shown when status is `signed`) * Add Addendum button: `cl.progress_note.create` (shown when note is finalized: `signed`, `cosigned`, `amended`, or `addendum`) ## Before you start * You need `cl.progress_note.view` permission. * You must know the `chartId` and `noteId` UUIDs; these are typically reached by navigating from a patient chart's notes tab. ## Steps Navigate to `/cl/charts/:chartId` and select the Progress Notes tab to see the list of notes for this chart. Click a note in the list. The router navigates to `/cl/charts/:chartId/notes/:noteId` and loads `ProgressNoteDetailPage`. The Session Details card shows service date, time, duration, diagnosis code, place of service, and telehealth information if applicable. The Clinical Documentation card shows Presenting Problem, MSE Findings, Interventions, Member Response, and Plan for Next Session. If your permissions and the note's status allow it, use the Sign, Co-sign, or Add Addendum button. Sign and co-sign use `ProgressNoteSignDialog`; addenda use `ProgressNoteAddendumDialog`. ## Key concepts | Term | Meaning | | --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ | | Note status lifecycle | `draft` → `completed` → `signed` → `cosigned`; finalized notes may become `amended` or receive an `addendum` | | `encounter_id` | Link to a `pm_encounters` record; the page uses `useEncounterContext` to show the linked encounter type and status | | MSE | Mental Status Exam — findings recorded in `mse_findings` on the note | | `signer_credentials` / `cosigner_credentials` | Credential strings displayed as badges on the Signatures card | | `ProgressNoteAddendumDialog` | Dialog for creating an addendum note linked to a finalized note | ## Related Clinical core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/ProgressNoteDetailPage.tsx * src/cores/cl/hooks/useProgressNoteDetail.ts * src/cores/cl/components/ProgressNoteSignDialog.tsx * src/cores/cl/components/ProgressNoteAddendumDialog.tsx * src/cores/cl/types/progress-notes.ts # Quality Measures Source: https://docs.encoreos.io/cl/quality-measures HEDIS and MA STARS measure period results showing denominator, numerator, and rate by measure ID with year and type filtering. The Quality Measures screen displays measure period results from `cl_quality_measure_periods` at the in-app route `/cl/population-health/quality-measures`. ## Overview The Quality Measures page is gated by `cl.quality-measures.view` via `PermissionGate`. A tab bar allows switching between `HEDIS` and `MA STARS` measure types, and a year selector (current year and the two preceding years) sets the reporting period. The page fetches measure periods via `useQualityMeasurePeriods` for the selected type and full-year date range. Results are displayed in a table with columns for Measure (measure ID plus a human-readable label from `MEASURE_ID_LABELS`), Type (badge), Denominator count, Numerator count, and Rate (formatted as a percentage). An "Export Measure Data" button is present but currently disabled. Below the table, a `HedisFuhFumPanel` component renders a HEDIS FUH/FUM compliance summary. ## Who it's for Requires permission `cl.quality-measures.view`. ## Before you start * Permission `cl.quality-measures.view` must be granted. * Measure period data must have been populated in `cl_quality_measure_periods` for the selected year and measure type. ## Steps Use the HEDIS / MA STARS tab bar to choose the measure set to view. Use the year dropdown to pick a reporting year (current year or up to two prior years). The table reloads for the full January–December period. Each row shows the measure ID and its label, type badge, denominator count, numerator count, and calculated rate as a percentage. Below the table, the HEDIS FUH/FUM compliance summary panel shows follow-up after hospitalization/ED visit data. ## Key concepts `HEDIS` and `MA_STARS` — from `MeasureType` in `src/cores/cl/types/quality-measure-periods.ts`. The following measure IDs are defined in code: `AMM` (Antidepressant Medication Management), `FUH` (Follow-Up After Hospitalization for Mental Illness), `FUM` (Follow-Up After Emergency Department Visit for Mental Illness), `ADD`, `SAA`, `SSD`, `APM`, `IET`, `IET-COD`. Unlabeled IDs render their raw identifier. Rates are stored as decimals (0.0–1.0) and displayed as percentages with one decimal place. A null or missing rate renders as `—`. When no data is available for the selected period, an EmptyState component is shown with the message "No measure data for this period." A skeleton table (4 rows) is shown while loading. ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/population-health/QualityMeasuresPage.tsx * src/cores/cl/types/quality-measure-periods.ts # Reference Lab Directory Source: https://docs.encoreos.io/cl/reference-lab-directory Manage external reference labs for order routing and result ingestion, including CLIA, NPI, and integration type configuration. The Reference Lab Directory screen is the admin page for managing external reference labs, accessible at `/cl/settings/labs`. ## Overview The page fetches all reference labs for the organization via `useAllReferenceLabs` and displays them in a searchable table. Rows show `lab_name` (with optional `phone`), `clia_number` (monospace), `npi` (monospace), integration type (badged: "Manual" for `none`, "HL7 v2" for `hl7v2`, "FHIR" for `fhir`), and an `Active` toggle. The search filters by `lab_name` or `clia_number`. The "Add Lab" button (gated to `cl.reference_labs.manage`) opens `ReferenceLabFormDialog`. Row actions include "Edit" and "Delete." The active toggle calls `updateLab` with `is_active` flipped. ## Who it's for Requires permission: `cl.reference_labs.manage` ## Before you start * You must hold `cl.reference_labs.manage` to access and modify the lab directory. * Deleting a lab is immediate; confirm clinical and IT readiness before removing an active integration. ## Steps Go to `/cl/settings/labs`. All configured reference labs for your organization load. Use the search input (placeholder: "Search labs by name or CLIA...") to filter by `lab_name` or `clia_number`. Click "Add Lab." The `ReferenceLabFormDialog` opens with empty fields. Click "Edit" on any row. The `ReferenceLabFormDialog` opens pre-filled with the selected lab's data. Use the `Active` switch. The switch is disabled while the `updateLab` mutation is pending. Click "Delete" on a row. The deletion is immediate (no confirmation prompt). ## Key concepts No results matching search: "No matching labs found" / "Try adjusting your search terms." No labs configured at all: "No reference labs configured" / "Add a lab to enable order routing." The `integration_type` field drives the badge: `null` or `"none"` → "Manual" (secondary); `"hl7v2"` → "HL7 v2" (default); `"fhir"` → "FHIR" (info). Any other value renders the raw type string in an outline badge. ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/ReferenceLabManagementPage.tsx * src/cores/cl/hooks/useAllReferenceLabs.ts * src/cores/cl/hooks/useReferenceLabMutations.ts # Reference Ranges Source: https://docs.encoreos.io/cl/reference-ranges Configure custom lab result reference ranges by LOINC code, sex, age band, and critical thresholds for result interpretation. The Reference Ranges screen lets administrators define custom lab result interpretation thresholds, accessible at `/cl/settings/reference-ranges`. ## Overview The page fetches reference ranges for the organization via `useReferenceRanges` and displays them in a table inside a Card component. Each row shows `loinc_code` (monospace), `display_name`, `sex` (badged, defaulting to "All"), age band (`age_min_years`–`age_max_years`, defaulting to "Any"), normal range (`low_value`–`high_value`), critical range (`critical_low`–`critical_high`, shown in destructive color), and `units`. The "Add Range" button (gated to `cl.reference_ranges.manage`) opens the `ReferenceRangeForm` dialog. Each row has a delete button (also gated to `cl.reference_ranges.manage`) that calls `useDeleteReferenceRange` directly without a confirmation dialog. ## Who it's for Requires permission: `cl.reference_ranges.manage` ## Before you start * You must hold `cl.reference_ranges.manage` to access this page. * Deleting a range is immediate — no confirmation prompt. ## Steps Go to `/cl/settings/reference-ranges`. All configured ranges for your organization load. Click "Add Range" (requires `cl.reference_ranges.manage`). The `ReferenceRangeForm` dialog opens. Review the table for LOINC code, sex, age band, normal range, critical range, and units. Click the trash icon button on a row (requires `cl.reference_ranges.manage`). Deletion is immediate. ## Key concepts While ranges load, two skeleton rows are shown. When no ranges exist: "No reference ranges configured" / "Add custom reference ranges for lab result interpretation." `age_min_years` and `age_max_years` are rendered as `{min}–{max}`. If both are null, "Any" is displayed. A null max is shown as "∞". `critical_low` and `critical_high` are rendered in destructive (red) color. If both are null, "—" is shown. ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/ReferenceRangeManagementPage.tsx * src/cores/cl/hooks/useReferenceRanges.ts * src/cores/cl/hooks/useReferenceRangeMutations.ts # Referral Outcomes Source: https://docs.encoreos.io/cl/referral-outcomes Track and report on referral status across community partners with summary metrics and CSV export. The Referral Outcomes screen displays the current status of all referrals for the organization, with summary metrics, status filtering, a history panel, and CSV export, accessible at `/cl/referral-outcomes`. ## Overview The page fetches referral current-status records from `cl_referral_current_status` scoped to the current organization. Four metric cards summarize Total Referrals, Connected, Declined, and Pending counts. A status drop-down filters the table by referral status. Clicking a referral ID row-button in the table selects that referral and reveals a status history panel (`ReferralStatusHistoryTable`). Users with `cl.referral_status.manage` can open an "Update Status" dialog for the selected referral. Users with `cl.referral_directory.search` can open a provider directory search sheet. When data is present, an "Export CSV" button downloads a file named `referral-outcomes-.csv` containing Referral ID, Status, Patient Connected, Connected At, Source, Notes, and Date columns. ## Who it's for Requires permission: `cl.referral_status.view` Additional permissions that unlock actions: * `cl.referral_status.manage` — enables "Update Status" for a selected referral * `cl.referral_directory.search` — enables "Find Providers" directory search ## Before you start * Your account must have the `cl.referral_status.view` permission. * Referral records must exist in the system; the screen shows an empty state otherwise. ## Steps Navigate to `/cl/referral-outcomes`. The four summary metric cards and the referral table load automatically. Use the "Filter by status" drop-down to narrow the table. Available statuses: Sent, Accepted, Declined, Patient Connected, Patient Did Not Connect, Closed, or All Statuses. Click the truncated referral ID button below the table to select a referral. A "Status History" panel appears showing the full status history for that referral. With a referral selected and `cl.referral_status.manage` permission, click "Update Status" to open the `ReferralStatusUpdateDialog` and record a new status. Click "Export CSV" to download the currently visible referral outcome records as a CSV file. ## Key concepts Statuses from code: **sent** (Sent), **accepted** (Accepted), **declined** (Declined), **patient\_connected** (Patient Connected), **patient\_did\_not\_connect** (Patient Did Not Connect), **closed** (Closed). **Pending** counts referrals with status `sent` or `accepted`. **Connected** counts rows where `patient_connected` is true. When no referral outcome records exist the table shows: "No Referral Outcomes — Referral status updates will appear here once recorded." ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/ReferralOutcomeReportPage.tsx # Report Definitions Source: https://docs.encoreos.io/cl/report-definitions Configure, edit, and run compliance and quality measure report templates for Joint Commission, CARF, HEDIS, AHCCCS, and custom types. The Report Definitions screen manages the catalog of report templates used to generate compliance and quality reports, at the in-app route `/cl/report-definitions`. ## Overview The page is guarded by `cl.report_definitions.view`. A list of report definitions from `cl_report_definitions` is fetched via `useReportDefinitionList`. Each definition shows its name, report type badge (from `REPORT_TYPE_OPTIONS`), format, and active/inactive status. Users with `cl.report_definitions.create` see a "New Definition" button that opens a `ReportDefinitionFormDialog` for creating a template. Each row supports Edit (opens the same dialog pre-populated with existing values) and, for users with `cl.report_definitions.delete`, Delete. Users with `cl.report_runs.run` see a "Run" button per row that triggers `useRunReport` to initiate a report run. When no definitions exist, an empty state is shown with an optional "Create Definition" action. ## Who it's for Requires permission `cl.report_definitions.view`. Additional sub-permissions control write actions: * `cl.report_definitions.create` — enables "New Definition" and the Create action in the empty state. * `cl.report_definitions.delete` — enables Delete per row. * `cl.report_runs.run` — enables Run per row. ## Before you start * Permission `cl.report_definitions.view` must be granted. * To create or edit definitions, `cl.report_definitions.create` is required. * To run a report, `cl.report_runs.run` is required; run history is visible at `/cl/report-runs`. ## Steps The table lists all report definitions with name, type, format, and status. Inactive definitions show a secondary status badge. Click "New Definition" (requires `cl.report_definitions.create`) to open the `ReportDefinitionFormDialog` and configure a new template. Click "Edit" on any row to open the dialog pre-populated with that definition's values. Click "Run" on any row (requires `cl.report_runs.run`) to initiate a report run. Navigate to the Report History page at `/cl/report-runs` to monitor run status. Click "Delete" (requires `cl.report_definitions.delete`) on any row to remove the definition. ## Key concepts `joint_commission` (Joint Commission), `carf` (CARF), `hedis` (NCQA / HEDIS), `ahcccs` (AHCCCS), `azdhs_incident` (AZDHS Incident), `custom` (Custom) — from `REPORT_TYPE_OPTIONS` in `src/cores/cl/types/reporting.ts`. `pdf`, `csv`, `excel` — displayed as uppercase short codes in the Format column. When no definitions exist, an empty state with a FileText icon is shown. A "Create Definition" action appears if `cl.report_definitions.create` is held. A skeleton (header + 96px content block) is displayed while loading. ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/ReportDefinitionsListPage.tsx * src/cores/cl/types/reporting.ts # Clinical Report History Source: https://docs.encoreos.io/cl/report-history View the chronological history of report generation runs with status, start time, and completion time for all report definitions. The Report History screen lists past report generation runs in reverse-chronological order at the in-app route `/cl/report-runs`. ## Overview The page is guarded by `cl.report_runs.view`. Report runs are fetched from `cl_report_runs` (joined to `cl_report_definitions` for report name) via `useReportRunList`. The table displays the report name (or "Ad-hoc" for runs without an associated definition), a status badge (`running`, `completed`, `failed`), the run start timestamp, and the run completion timestamp (or `—` if not yet complete). The list is shown most-recent-first. When no runs exist, an empty state with a Clock icon prompts the user to run a report from the Report Definitions page. ## Who it's for Requires permission `cl.report_runs.view`. ## Before you start * Permission `cl.report_runs.view` must be granted. * Report runs are initiated from the Report Definitions page at `/cl/report-definitions` (requires `cl.report_runs.run`). ## Steps Navigate to `/cl/report-runs`. The page loads all runs accessible to your organization. Each row shows the report name, a status badge (running, completed, or failed), start time, and completion time. To run a report, navigate to Report Definitions at `/cl/report-definitions` and click "Run" on the desired definition row. ## Key concepts `running` (secondary badge), `completed` (default badge), `failed` (destructive badge) — from `ReportRunStatus` in `src/cores/cl/types/reporting.ts`. When no runs have been executed, an empty state with a Clock icon is shown with the message "Run a report from the Report Definitions page to see history here." A skeleton (header + 96px block) is shown while loading. ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/ReportRunsHistoryPage.tsx * src/cores/cl/types/reporting.ts # Review Schedules Source: https://docs.encoreos.io/cl/review-schedules View and configure per-payer concurrent review cadences including initial review days, interval days, and grace period days. This screen displays the review schedule configuration at route `/cl/utilization-management/schedules`. ## Overview The Review Schedules page loads all review cadence schedules (both active and inactive) from the `cl_review_schedules` table via `useReviewSchedules({ activeOnly: false })`, scoped to the active organization. The records are displayed in a table with columns: Payer, Level of Care, Initial (days), Interval (days), Grace (days), and Active status badge. A sanitized error message is shown if the query fails. An empty-state message "No schedules configured yet." appears when no records exist. ## Who it's for Requires the `cl.reviews.configure` permission. ## Before you start * You must hold the `cl.reviews.configure` permission. * Review schedule records must be configured in `cl_review_schedules` for the active organization. Adding or editing schedules is not available through this UI in the current shipped code. ## Steps Navigate to `/cl/utilization-management/schedules`. The page loads all schedules for the active organization, sorted by payer name. Each row shows: Payer name, Level of Care (or `—` if null), Initial review days, Review interval days, Grace period days, and an Active/Inactive badge. ## Key concepts Each record in `cl_review_schedules` has: `payer_name`, `level_of_care` (nullable), `initial_review_days`, `review_interval_days`, `grace_period_days`, and `is_active`. When no schedules exist for the organization, the page renders: "No schedules configured yet." If the data query fails, a sanitized error message is shown via `sanitizeErrorMessage`. ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/ReviewScheduleConfigPage.tsx * src/cores/cl/hooks/useReviewSchedules.ts # Screening Instruments Source: https://docs.encoreos.io/cl/screening-instruments Read-only catalog of validated behavioral health screening instruments with auto-scoring metadata, severity bands, and critical alert thresholds. The Screening Instruments screen displays the library of validated behavioral health screening instruments at the in-app route `/cl/screening-instruments`. ## Overview The Screening Instruments page renders a static catalog sourced from `SCREENING_INSTRUMENT_CATALOG` (a client-side constant). There is no data fetching from the server on this page — instruments are defined in the application code. The page provides a text search input (filtering by instrument name, abbreviation, or category) and a tab bar with "All" plus one tab per category that has at least one instrument. Categories present in the catalog are: Depression, Anxiety, Alcohol, Substance Use, Suicide Risk, Trauma / PTSD, ACEs, and Withdrawal. Instrument codes in the catalog are: `phq9`, `gad7`, `audit_c`, `dast10`, `cssrs_screener`, `pcl5`, `ace`, `cage_aid`, `ciwa_ar`, `cows`. Each instrument card shows the abbreviation, category badge, full name, description, item count, max score, minimal clinically important change (MCC), severity bands with color-coded ranges, and critical alert threshold messages (if any) in a destructive-styled box, plus the citation string. ## Who it's for Requires permission `cl.risk_screening.view`. ## Before you start * Permission `cl.risk_screening.view` must be granted. * This page displays a read-only instrument reference catalog; no server data is required for it to render. ## Steps The page opens with all instruments displayed in a responsive grid (up to 3 columns on large screens). Type in the search box to filter by instrument name, abbreviation, or category (e.g., type "PHQ" to find the PHQ-9, or "depression" to filter by category). Click a category tab (Depression, Anxiety, Alcohol, Substance Use, Suicide Risk, Trauma / PTSD, ACEs, Withdrawal) to show only instruments in that category. Each card displays the abbreviation, full name, description, item count, max score, MCC (minimal clinically important change), severity bands with score ranges, and critical alert threshold messages. ## Key concepts `depression`, `anxiety`, `alcohol`, `substance_use`, `suicide_risk`, `trauma`, `adverse_childhood`, `withdrawal` — from `InstrumentCategory` in `src/cores/cl/types/screening-instruments.ts`. `phq9`, `gad7`, `audit_c`, `dast10`, `cssrs_screener`, `pcl5`, `ace`, `cage_aid`, `ciwa_ar`, `cows` — from `ScreeningInstrumentCode` in `src/cores/cl/types/screening-instruments.ts`. Instruments with `critical_thresholds` defined show a destructive-styled box on their card listing the alert messages. These thresholds drive clinical alerts when the instrument is administered. When the search text matches no instruments in the active tab, the message "No instruments match your search." is shown. ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/ScreeningInstrumentsPage.tsx * src/cores/cl/types/screening-instruments.ts # SDOH Screening & Social Referrals — User Guide Source: https://docs.encoreos.io/cl/sdoh-screening-referral-user-guide Clinical user guidance for SDOH screenings, social referrals, and Z-code documentation. ## Overview The SDOH (Social Determinants of Health) module enables clinicians to screen patients for social needs—such as housing, food, transportation, and employment—and create community resource referrals to address identified needs. All SDOH data lives on the patient chart under the **SDOH** tab. ### Table of Contents * [Key Capabilities](#key-capabilities) * [Decision Tree](#decision-tree) * [Quick Reference](#quick-reference) * [Pattern Library](#pattern-library) * [Common Mistakes](#common-mistakes) * [Pre-Flight Checklist](#pre-flight-checklist) * [Permissions](#permissions) * [Accessing the SDOH Tab](#accessing-the-sdoh-tab) * [Conducting a Screening](#conducting-a-screening) * [Creating a Referral](#creating-a-referral) * [Recording a Referral Outcome](#recording-a-referral-outcome) * [Referral Status Lifecycle](#referral-status-lifecycle) * [Z-Code Documentation (ICD-10-CM Z55–Z65)](#z-code-documentation-icd-10-cm-z55z65) * [Code Example](#code-example) * [Tips & Best Practices](#tips--best-practices) * [Troubleshooting](#troubleshooting) * [Related Documentation](#related-documentation) ### Key Capabilities * **Conduct screenings** using standardized instruments (PRAPARE, AHC-HRSN) or custom tools * **Identify social needs** across 12 categories (housing, food, transportation, etc.) * **Create referrals** to community resources linked to specific needs * **Track referral outcomes** through a status lifecycle (referred → resolved/declined) * **Document ICD-10-CM Z-codes** (Z55–Z65) for social determinants via PF-70 code library ## Decision Tree 1. **Need to assess social needs now?** * Yes → Conduct screening (PRAPARE/AHC-HRSN/custom). 2. **Screening identifies unmet needs?** * Yes → Create referral linked to screening. 3. **External resource engagement progresses?** * Update referral outcome status until terminal state (`resolved`, `declined`, `unable_to_reach`). 4. **Need formal coding for social determinants?** * Use PF-70 type-ahead to document ICD-10 Z-codes. ## Quick Reference | I need to... | Pattern | Location | | --------------------------------- | ---------------------------------------------------------------- | -------------------------------------------------------------- | | View SDOH data on a patient chart | Navigate to patient chart → SDOH tab | [Accessing the SDOH Tab](#accessing-the-sdoh-tab) | | Conduct a screening | Click "Conduct Screening" → select instrument → toggle needs | [Conducting a Screening](#conducting-a-screening) | | Create a referral | Click "Create Referral" → fill resource details → link screening | [Creating a Referral](#creating-a-referral) | | Update referral status | Click arrow icon on referral row → select new status | [Recording a Referral Outcome](#recording-a-referral-outcome) | | Document Z-codes | Use Z-Code Selector for ICD-10-CM Z55–Z65 type-ahead search | [Z-Code Documentation](#z-code-documentation-icd-10-cm-z55z65) | | Troubleshoot missing permissions | Check permission table; contact org admin | [Troubleshooting](#troubleshooting) | ## Pattern Library * **Screening dialog pattern:** instrument + date + need toggles + notes. * **Referral creation pattern:** need-linked referral with optional screening linkage. * **Outcome lifecycle pattern:** status progression with clinical outcome notes. * **Coding pattern:** PF-70 code lookup for ICD-10 Z55–Z65 documentation. ## Common Mistakes | Mistake | Impact | Fix | | ----------------------------------------------------- | -------------------------------------- | ----------------------------------------------------------------------- | | Creating referral without documented disclosure basis | Potential unauthorized disclosure risk | Confirm and document authorization/exception before submitting referral | | Not linking referral to source screening | Weak audit traceability | Populate linked screening when available | | Entering free-text Z-codes | Coding inconsistency | Use PF-70 selector and validated ICD-10 entries | ## Pre-Flight Checklist * [ ] Confirm chart-level access and required SDOH permissions. * [ ] Validate patient contact details before referral submission. * [ ] Verify disclosure basis (authorization or permitted exception) is documented. * [ ] Confirm resource-to-need match and referral notes completeness. * [ ] Add appropriate Z-code documentation where clinically indicated. *** ## Permissions | Permission | Description | Default Roles | | ---------------------------- | ------------------------------------------ | ------------------------ | | `cl.sdoh_screenings.view` | View SDOH screenings on patient charts | staff, manager, readonly | | `cl.sdoh_screenings.create` | Conduct new SDOH screenings | staff, manager | | `cl.social_referrals.view` | View community resource referrals | staff, manager, readonly | | `cl.social_referrals.create` | Create new social need referrals | staff, manager | | `cl.social_referrals.update` | Update referral status and record outcomes | staff, manager | > **Note:** The `org_admin` role automatically receives all permissions. The `readonly` role can view but not create or modify records. *** ## Accessing the SDOH Tab 1. Navigate to a **Patient Chart** (Clinical → Charts → select patient). 2. Click the **SDOH** tab in the chart tab bar. * If the tab is not visible, you may lack the `cl.sdoh_screenings.view` permission. Contact your administrator. *** ## Conducting a Screening 1. On the SDOH tab, click **Conduct Screening**. 2. In the dialog: * **Instrument:** Select the screening tool used (PRAPARE, AHC-HRSN, or Custom). * **Date:** Set the screening date (defaults to today). * **Identified Needs:** Click the need category badges to toggle them on/off. Selected needs appear highlighted. Categories include: * Housing Instability, Food Insecurity, Transportation, Employment, Education/Literacy, Childcare, Utilities, Personal Safety, Social Isolation, Financial Strain, Legal Issues, Other * **Notes:** Add any additional screening observations. 3. Click **Record Screening** to save. The new screening appears at the top of the Screenings table with the instrument, date, and identified need badges. *** ## Creating a Referral > **PHI Disclosure Notice:** Creating a referral may involve sharing patient information with an external community organization. Before submission, confirm and document the applicable disclosure basis (patient authorization and/or permitted regulatory exception per local policy). The referral workflow may transmit patient identifiers, contact details, linked social-need category, and referral notes to the external resource. > > The current application enforces role permissions (`cl.social_referrals.create`) but does not independently guarantee legal disclosure basis validation; clinicians/staff must verify this as part of workflow policy. Refer to your organization’s Notice of Privacy Practices and compliance guidance before sending referrals externally. 1. On the SDOH tab, scroll to the **Social Referrals** section and click **Create Referral**. 2. In the dialog: * **Resource Name** (required): Name of the community resource or agency. * **Resource Type:** Type of resource (e.g., shelter, food bank, legal aid). * **Need Category** (required): The social need this referral addresses. * **Linked Screening:** Optionally link to a prior screening that identified this need. * **Notes:** Additional referral details. 3. Click **Create Referral** to save. The referral appears with a **Referred** status badge. *** ## Recording a Referral Outcome 1. In the Social Referrals table, click the **arrow icon** (→) on the referral row you want to update. * This button is only visible if you have the `cl.social_referrals.update` permission. 2. In the outcome dialog: * **Status:** Select the new status: * **Contacted** — Initial outreach made * **In Progress** — Referral is actively being worked * **Resolved** — Need was successfully addressed * **Declined** — Patient declined the referral * **Unable to Reach** — Could not contact the resource or patient * **Outcome Date:** When the outcome occurred. * **Outcome Notes:** Document what happened. 3. Click **Record Outcome** to save. The referral status badge updates to reflect the new status. *** ## Referral Status Lifecycle ```text theme={null} referred → contacted → in_progress → resolved → declined → unable_to_reach ``` Valid forward transitions: * `referred` → `contacted` or directly to `resolved` / `declined` / `unable_to_reach` * `contacted` → `in_progress` or directly to `resolved` / `declined` / `unable_to_reach` * `in_progress` → `resolved` / `declined` / `unable_to_reach` Backward transitions are not supported. *** ## Z-Code Documentation (ICD-10-CM Z55–Z65) The Z-Code Selector provides type-ahead search for ICD-10-CM codes in the Z55–Z65 range, which document social determinants of health. These codes include: | Range | Category | | ----- | ------------------------------------------------------ | | Z55 | Problems related to education and literacy | | Z56 | Problems related to employment and unemployment | | Z57 | Occupational exposure to risk factors | | Z58 | Problems related to physical environment | | Z59 | Problems related to housing and economic circumstances | | Z60 | Problems related to social environment | | Z62 | Problems related to upbringing | | Z63 | Other problems related to primary support group | | Z64 | Problems related to certain psychosocial circumstances | | Z65 | Problems related to other psychosocial circumstances | > **Note:** Z-code selection is available as a standalone component and will be integrated into screening and problem list workflows in a future release. *** ## Code Example ```typescript theme={null} // Example: create referral and record related SDOH Z-code (PF-70-assisted lookup) const referralPayload = { chartId, needCategory: 'housing_instability', resourceName: 'City Housing Support Network', linkedScreeningId, }; // 1) Save referral await createSocialReferral(referralPayload); // 2) Persist ICD-10 Z-code selected from PF-70 type-ahead (example: Z59.0) await addSdohProblemCode({ chartId, code: 'Z59.0', codingSource: 'pf70', }); ``` *** ## Tips & Best Practices * **Screen at intake and periodically:** SDOH screenings should be conducted at admission and at regular intervals (e.g., every 90 days) to track changes in social needs. * **Link referrals to screenings:** When creating a referral, linking it to the screening that identified the need provides a clear audit trail. * **Follow up on referrals:** Use the outcome recording feature to track whether referrals result in successful connections to resources. * **Use standardized instruments:** PRAPARE and AHC-HRSN are validated, evidence-based tools. Use "Custom" only when a standardized instrument doesn't fit. *** ## Troubleshooting | Issue | Resolution | | ---------------------------------- | ---------------------------------------------------------------------------------- | | SDOH tab not visible | Ensure you have the `cl.sdoh_screenings.view` permission. Contact your org admin. | | "Conduct Screening" button missing | You need the `cl.sdoh_screenings.create` permission. | | Cannot record outcome on referral | You need the `cl.social_referrals.update` permission. | | No screenings or referrals showing | Verify the patient chart has SDOH data. New charts start with empty SDOH sections. | *** ## Related Documentation Specification: specs/cl/specs/CL-18-sdoh-screening-social-needs.md * [CL-18 Integration Doc](/architecture/integrations/sdoh-screening-integration) * [PF-70 Medical Terminology](https://github.com/Encore-OS/encoreos/blob/development/specs/pf/specs/PF-70-medical-terminology-code-libraries.md) # Standing Order Protocols Source: https://docs.encoreos.io/cl/standing-order-protocols Admin page for creating and managing standing order protocols that automate recurring lab orders; activate, deactivate, or delete protocols. The Standing Order Protocols screen is the admin page for managing standing order protocol definitions, accessible at `/cl/standing-orders`. ## Overview The page fetches standing order protocols via `useStandingOrderProtocols` and displays them in a table inside a Card. Each row shows `template_id` (or "Custom" if null), `status` (Active/Inactive badge), and `order_items` count. Each row has a toggle button (using a `Power` icon) that calls `useToggleStandingOrderProtocol` to flip `is_active`, and a delete button that calls `useDeleteStandingOrderProtocol` immediately. The "New Protocol" button (gated to `cl.standing_orders.manage`) opens the `StandingOrderForm` dialog. ## Who it's for Requires permission: `cl.standing_orders.manage` ## Before you start * You must hold `cl.standing_orders.manage` to access and modify protocols. * Deleting a protocol is immediate — no confirmation prompt. ## Steps Go to `/cl/standing-orders`. All protocols for your organization load. Click "New Protocol" (requires `cl.standing_orders.manage`). The `StandingOrderForm` dialog opens. Click the power icon button on a row (`aria-label`: "Activate protocol" / "Deactivate protocol") to toggle `is_active`. Click the trash icon button on a row (`aria-label`: "Delete protocol"). Deletion is immediate. ## Key concepts Three skeleton rows are shown while protocols load. When no protocols exist: "No standing order protocols / Create a protocol to automate recurring lab orders." `is_active = true` renders a "default" variant badge labeled "Active"; `is_active = false` renders a "secondary" badge labeled "Inactive." The "Template" column displays `template_id` if set, or "Custom" if null. ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/StandingOrderProtocolsPage.tsx * src/cores/cl/hooks/useStandingOrderProtocols.ts * src/cores/cl/hooks/useStandingOrderMutations.ts # Standing Orders Source: https://docs.encoreos.io/cl/standing-orders Manage clinical standing-order protocols available for execution; create, edit, renew, and delete standing orders. The Standing Orders screen manages clinical standing-order protocols available for execution, accessible at `/cl/settings/standing-orders`. ## Overview The page reads `cl_module_settings.order_sets_enabled` via `useClModuleSettings`; if false, it renders an empty state: "Standing orders are disabled / Ask an administrator to enable order sets in CL module settings." When enabled, it fetches standing orders via `useClinicalStandingOrders` and renders them through the `StandingOrderList` component with search filtering by `name` and `order_type`. The "New Standing Order" button (gated to `cl.standing_orders.manage`) opens `StandingOrderDialog`. Row actions from `StandingOrderList` include Edit (re-opens `StandingOrderDialog` pre-filled), Delete (opens `ConfirmationDialog`), and Renew (opens `StandingOrderRenewDialog` with `defaultExpiryDays` from module settings). ## Who it's for Requires permission: `cl.standing_orders.view` (read); `cl.standing_orders.manage` (create/edit/delete) ## Before you start * You must hold `cl.standing_orders.view` to access this route. * `order_sets_enabled` must be `true` in CL module settings for the list to display; otherwise the disabled state is shown. * Creating, editing, or deleting requires `cl.standing_orders.manage`. ## Steps Go to `/cl/settings/standing-orders`. If order sets are disabled, an empty state is shown instead of the list. Use the search input (placeholder: "Search standing orders…") to filter by `name` or `order_type`. Click "New Standing Order" (requires `cl.standing_orders.manage`). The `StandingOrderDialog` opens with empty fields. Select "Edit" from a row action. The `StandingOrderDialog` opens pre-filled. Select "Renew" from a row action. The `StandingOrderRenewDialog` opens with `defaultExpiryDays` pre-filled from module settings. Select "Delete" from a row action. A confirmation dialog ("Delete standing order ? This action cannot be undone.") is shown. Confirm to delete. ## Key concepts The entire list is gated behind `cl_module_settings.order_sets_enabled`. When false, the page shows: "Standing orders are disabled / Ask an administrator to enable order sets in CL module settings." When the feature is enabled but no orders exist or match the search: "No standing orders yet / Create your first standing order protocol." `StandingOrderRenewDialog` receives `defaultExpiryDays` from `cl_module_settings.standing_order_default_expiry_days` (default: 365 if not set). ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/StandingOrderManagementPage.tsx * src/cores/cl/hooks/useClinicalStandingOrders.ts * src/cores/cl/hooks/useClModuleSettings.ts # TEFCA Operations Source: https://docs.encoreos.io/cl/tefca-operations Monitor QHIN exchange activity, patient matching, and compliance status for the organization. The TEFCA Operations screen displays the organization's health information exchange log via the Trusted Exchange Framework and Common Agreement (TEFCA) network, accessible at `/cl/tefca-operations`. ## Overview The page opens with a KPI strip summarizing exchange activity loaded via `useTefcaExchangeList`, scoped to the current organization. Below the strip, a filter bar allows narrowing by status, direction, QHIN, purpose of use, and date range. Results are displayed in a sortable data table ordered by exchange date descending. Each row includes a "View" action that opens a `TefcaExchangeDetailDialog` with full exchange details. When no exchanges match the filters an empty state is shown; load errors display an inline destructive alert. ## Who it's for Requires permission: `cl.tefca.view` ## Before you start * Your account must have the `cl.tefca.view` permission. * The organization must have QHIN connectivity configured (visible via `qhin_identifier` column values). ## Steps Navigate to `/cl/tefca-operations`. The KPI strip and exchange table load automatically for the current organization. Use the filter bar to narrow by status (Completed, Failed, Pending, Blocked — No Consent), direction (Inbound / Outbound), QHIN identifier, purpose of use, or date range. Clear filters to return to the full list. Click "View" on any table row to open the exchange detail dialog. The dialog shows full exchange metadata for the selected `cl_tefca_exchange_log` record. ## Key concepts Statuses visible in the table: **Completed** — exchange succeeded; **Failed** — exchange encountered an error; **Pending** — exchange in progress; **Blocked (No Consent)** — exchange blocked because the required consent record was absent. **Inbound** — data received from a QHIN partner; **Outbound** — data sent to a QHIN partner. Values from code: Treatment, Payment, Healthcare Operations, Public Health, Individual Access, Benefits Determination. Empty state: "No TEFCA exchanges yet — Run a query or exchange to populate activity." Error state: inline destructive banner "Unable to load TEFCA activity." ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/TefcaOperationsPage.tsx * src/cores/cl/hooks/useTefcaExchangeList.ts * src/cores/cl/types/tefca.ts # Telehealth Documentation & Compliance — Admin Guide Source: https://docs.encoreos.io/cl/telehealth-documentation-admin-guide Admin: module settings, rollout stages, compliance dashboard, overrides, cron playbook, consent-language lineage. **Required permission:** `cl.telehealth_compliance.audit` for the dashboard; `cl.admin` for overrides *** ## Module settings Navigate to **Clinical → Settings → Telehealth Documentation** (requires `cl.admin`). All settings live on `cl_module_settings` and are tenant-scoped. | Setting | Type | Default | Behavior | | --------------------------------------------------- | ------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `telehealth_documentation_enabled` | boolean | `false` | Master switch. When `false`, CL-24 hooks short-circuit, the badge / sheet / pages are not mounted, and PM-13 sees no CL-24 surface. Use this to keep CL-24 off in orgs that aren't ready for the compliance layer. | | `telehealth_block_session_without_consent` | boolean | `true` | When `true`, the start-session orchestrator returns `ConsentRequiredError` if `cl_telehealth_consent_is_valid` returns false for the required `consent_type`. When `false`, the UI warns but does not block. | | `telehealth_block_session_without_safety_checklist` | boolean | `true` | When `true`, the start-session orchestrator returns `SafetyChecklistRequiredError` until `safety_checklist_completed_at` is stamped. When `false`, the UI warns but does not block. | | `telehealth_consent_validity_days` | integer | `365` | Default validity window for new consents. The `expires_at` column is `consented_at + telehealth_consent_validity_days`. Common alternatives: `730` (CCBHC 2-year cycles) or `90` for pilot rollouts. | A fourth flag is conceptually "audio-only consent required separately" — this is enforced **per jurisdiction** via the consent-language version, not a separate boolean. See [Consent language version lineage](#consent-language-version-lineage) below. ### Settings change audit Every change to these settings is tracked via the standard `updated_at` + `updated_by` capture (the `update_updated_at_column` trigger keeps `updated_at` current; the application layer stamps `updated_by`). Audit-row writes to `pf_audit_logs` are produced by the platform's settings-edit pipeline, not by this trigger. No CL-24-specific audit table. *** ## Feature-flag rollout — stages 0 through 4 CL-24 ships with a five-stage rollout. Each stage is gated by the master flag plus the two block flags above. The intent is to give clinicians time to develop the muscle memory before hard-block goes on. | Stage | `telehealth_documentation_enabled` | Consent block | Safety block | Use when | | ------------------------------------ | ---------------------------------- | ------------- | ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **0 — Dormant** | `false` | n/a | n/a | Pre-rollout. CL-24 surface is invisible; PM-13 unchanged. | | **1 — Surface-only** | `true` | `false` | `false` | Soft launch. Badge, sheet, pages render. Clinicians can capture consents and run checklists but nothing blocks. Use for clinician training. **Default for NorthSight starting Stage 1.** | | **2 — Consent warns, safety warns** | `true` | `false` | `false` | Same as Stage 1; included for explicit gating language. | | **3 — Consent blocks, safety warns** | `true` | `true` | `false` | After ≥ 4 weeks of Stage 1/2 with consent-capture rate ≥ 85% on the dashboard. Sessions without valid consent will fail; safety checklist still warn-only. | | **4 — Full compliance** | `true` | `true` | `true` | After Stage 3 has been clean for ≥ 4 weeks. This is the steady-state for AHCCCS CBHSG (Oct 2025), CCBHC v2, and Joint Commission CAMBHC alignment. | > Move only one block flag per cycle. Never go from Stage 1 directly to Stage 4 — the safety-checklist habit takes longer to build than consent capture, and a hard block on day one will cause clinicians to bypass via the chart-of-record fallback. Stage progression is logged in `specs/cl/IMPLEMENTATION_LOG.md` per org. *** ## Compliance dashboard interpretation Navigate to **Clinical → Telehealth → Compliance** (`/cl/telehealth/compliance`, requires `cl.telehealth_compliance.audit`). The dashboard surfaces four primary metrics for the selected period (last 7, 30, or 90 days, default 30): | Metric | Formula | Healthy range | Action when red | | ------------------------------------ | -------------------------------------------------- | --------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | | **Consent capture rate** | `valid_consents_at_session_start / total_sessions` | ≥ 0.95 | Look at the per-clinician breakdown; schedule a refresher on the consent dialog flow. | | **Safety checklist completion rate** | `sessions_with_safety_completed / total_sessions` | ≥ 0.90 (Stage 3) → 1.00 (Stage 4) | If below 0.90 for ≥ 2 weeks, do not advance to Stage 4. Investigate whether the warn-mode UX is being routinely dismissed. | | **Audio-only ratio** | `audio_only_sessions / total_sessions` | \< 0.20 typically | High ratios may indicate connectivity issues regionally — cross-check with the connectivity-issue panel. | | **Jurisdiction mismatch rate** | `mismatched_state_sessions / total_sessions` | \< 0.05 | Often signals a clinician's profile state is stale. Audit `pf_profiles.state` for telehealth providers. | Each metric drills down into the contributing rows. Drill-downs are RLS-filtered to the current org. > The dashboard uses small-cell suppression (n \< 5 displays as `<5`) for any per-clinician slice when the org has fewer than 5 telehealth providers, to honor 45 CFR 164.514(b) safe-harbor on indirect identification. *** ## Admin override for `revoked_at` immutability The trigger `cl_enforce_consent_revocation_immutability` rejects any UPDATE that changes `revoked_at` once it is set — **except** when `pf_is_org_admin(organization_id, auth.uid())` returns true. ### Why it exists Revocation is a clinical-legal event. Once a patient revokes consent, the row is part of the audit record (Joint Commission CAMBHC, AHCCCS CBHSG, and 42 CFR 164 expectations for behavioral-health record retention). Letting any clinician clear `revoked_at` would create a trivial path to scrub the record. But mistakes happen. A clinician may click the wrong patient, or a portal API may misfire. The override is the supervised escape valve. ### How to invoke 1. Open **Clinical → Telehealth → Consents → All consents** (admin-only filter). 2. Find the row in question. Inspect the revocation reason. 3. Click **Reverse revocation** — visible only when you hold `pf_is_org_admin` and the row's `revoked_at` is set. 4. Enter a justification (free-text, required, ≥ 30 chars). 5. Submit. The system: * UPDATEs `revoked_at = NULL`, `revoked_reason = NULL` (trigger allows this because you're an admin). * Writes an audit row to `pf_audit_logs` with the justification. * Emits `cl_telehealth_consent_captured` is **not** re-emitted (the row is the same, not a new one); use the override sparingly and document downstream notifications manually. > Every override is reviewed by the compliance officer monthly. If the rate exceeds 1 per 1000 active consents, treat as an incident. *** ## Cron failure playbook CL-24 runs one cron job: * **`cl-telehealth-consent-expiry-scan`** — nightly at 03:00 UTC. Idempotent within a 24h window via `cl_cron_run_log`. Emits `cl_telehealth_consent_expiring` for any consent with `revoked_at IS NULL` and `expires_at` ≤ `now() + interval '30 days'`. ### Detect a failure * **`cl_cron_run_log`** has no row for the current 24h window past 04:00 UTC. * The `cl_telehealth_consent_expiring` event count drops to zero for ≥ 24 hours when the dashboard shows pending expiries. * `pf_supervisor_alerts` raises `cl_cron_unhealthy` (if Supabase logs are wired through PF-44). ### Recover 1. Inspect `cl_cron_run_log` for the last successful run timestamp and outcome. 2. From the Supabase MCP / dashboard, check the `cl-telehealth-consent-expiry-scan` edge function logs for stack traces. 3. **Manual re-run:** invoke the function with `{ as_of: "", force: true }`. The function is idempotent on `(consent_id, run_window_start)` — re-runs do not double-publish. 4. If the failure was schema-related (e.g., a recent migration changed `cl_telehealth_consents`), open an incident, revert the migration, and replay the cron. 5. Document the incident in `specs/cl/IMPLEMENTATION_LOG.md` and `docs/compliance/REGULATORY_COMPLIANCE_TRACKER.md` (Joint Commission row, interim procedures). ### Prevent repeats * Add a `pg_cron` health check that asserts at least one `cl_cron_run_log.outcome = 'success'` row in the last 25 hours. * The function should already use the platform system actor UUID (`00000000-0000-0000-0000-000000000001`) per the [CL-FW automated-publishers contract](/architecture/integrations/CL-FW-EVENT-AUTOMATION-INTEGRATION). *** ## ARS 13-3005 language template sign-off Arizona is a **two-party consent** state for recordings (ARS 13-3005). When the org's primary jurisdiction is AZ (`pf_organizations.state = 'AZ'`), the `consent_language_version` for telehealth recordings must match the org's approved AZ template. ### Sign-off workflow 1. Compliance officer drafts the template using the canonical reference at `docs/compliance/templates/ars-13-3005-recording-notice.md` (or its successor under PF-96 jurisdiction profiles). 2. Legal / external counsel reviews and approves. 3. Org admin opens **Clinical → Telehealth → Consent language versions** and creates a new version: e.g., `AZ-ARS-13-3005-v3-2026Q3`. 4. Mark the version `active = true`. CL-24 will surface it in the consent dialog as the default for AZ-jurisdiction orgs. 5. Record sign-off in `specs/cl/reviews/CL-24-COMPLIANCE-SIGNOFF.md` with date, signer, and template diff. > Stage 2 cannot advance to Stage 3 until the active AZ template is sign-off-recorded. The compliance dashboard surfaces `consent_language_version` distribution so you can see whether older templates are still in active circulation. For non-AZ jurisdictions, PF-96 (Medicaid State Compliance Configuration) provides the per-state template; CL-24 inherits whichever version PF-96 marks active for the org's primary state. *** ## Consent language version lineage `consent_language_version` is a free-text identifier on every consent row. It is **never** mutated — once a consent is captured against version `AZ-ARS-13-3005-v2-2026Q1`, that row stays at v2 forever, even after v3 is active. ### Why lineage matters A patient revocation in 2027 may need to reference the exact language the patient agreed to in 2026. If versions were overwritten, the audit chain would break — a problem at survey time for Joint Commission CAMBHC and CCBHC v2. ### Recommended naming `{JURISDICTION}-{STATUTE}-{V}-{YYYY}{Q}` — e.g., `AZ-ARS-13-3005-v3-2026Q3`, `US-FED-v1-2026Q1`. ### Operating procedure 1. Maintain a master list under `docs/compliance/templates/` mirroring every version ever used. 2. When you mark a new version active, **do not** delete the prior version's master file — append a `superseded_by` note. 3. Quarterly, run the compliance dashboard filter **Group by consent\_language\_version** to confirm no consents older than 2 versions back are still active. If they are, schedule renewals. 4. The cron `cl-telehealth-consent-expiry-scan` does **not** auto-rotate language versions. Patients renew on the natural `expires_at` cycle and pick up whatever version is active at renewal time. *** ## Troubleshooting | Symptom | Likely cause | Fix | | ---------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------- | | `ConsentRequiredError` raised at session start despite a visible badge | `cl_telehealth_consent_is_valid` returned false. Check expiry, revocation, and consent\_type. | Capture a fresh consent of the required type. | | `SafetyChecklistRequiredError` raised at session start | Stage 4 is on; the safety checklist is incomplete. | Open the safety checklist sheet; complete the three required fields. | | Cron published 0 events but consents are clearly expiring | `cl_cron_run_log` has no row → cron didn't run, OR all expiring consents already had a prior 24h-window event. | Run the cron-failure playbook above. | | Connectivity-issue entries do not appear on the dashboard | The dashboard only counts entries within the selected period. Default is 30 days. | Widen the window. | | Jurisdiction-mismatch rate spiked overnight | A clinician's profile state may have been updated incorrectly. | Audit `pf_profiles.state` for the affected user. | | The admin override button is not visible for an admin | `pf_is_org_admin(organization_id, auth.uid())` returned false for the *target* org. | Confirm the admin's role binding for the specific org. | *** ## References * [CL-24 spec](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-24-telehealth-documentation-compliance.md) * [CL-24 user guide](/cl/telehealth-documentation-user-guide) * [CL-24 integration contract](/architecture/integrations/telehealth-documentation-compliance-integration) * [CL-PM Telehealth integration contract](/architecture/integrations/CL-PM-TELEHEALTH) * [Regulatory compliance tracker — Telehealth row](/compliance/REGULATORY_COMPLIANCE_TRACKER) * [ARS 13-3005 reference](https://www.azleg.gov/ars/13/03005.htm) * [AHCCCS CBHSG Oct 2025 telehealth chapter](https://www.azahcccs.gov/Resources/Downloads/CBHSG_Manuals/) (operationally maintained by Compliance) # Telehealth Documentation & Compliance — User Guide Source: https://docs.encoreos.io/cl/telehealth-documentation-user-guide Clinician workflow: consent capture, pre-session safety checklist, jurisdiction handling, connectivity logging, and progress-note linkage. ## Overview CL-24 is the **clinical compliance layer** for telehealth. It sits next to (not on top of) PM-13, which still owns the vendor session, the durable join URL, and the platform credentials. CL-24 adds: * Per-patient **telehealth consent** with annual renewal, two consent types, and audit-immutable revocation. * A **pre-session safety checklist** that can either warn or block the start of a session. * **Connectivity issue logging** mid-session for QA and payer audits. * A **jurisdiction-mismatch banner** when the patient state and provider state diverge. * A clean **link from the progress note** (CL-04) back to the CL-24 session record. You will see CL-24 surface in three places: * The **TelehealthConsentBadge** on the patient chart sidebar and on the PM-13 appointment form. * A **TelehealthSafetyChecklistSheet** that opens when you start a telehealth session. * New **Sessions** and **Compliance** pages under `/cl/telehealth/...`. > CL-24 never publishes telehealth billing modifiers. PM-07 continues to read modality, patient location, and provider location from the finalized progress note (CL-04). CL-24 only writes the **per-session compliance record**. *** ## Capturing telehealth consent Telehealth consent is captured **per patient**, not per session. Two consent types exist: | Consent type | When required | | -------------------- | ---------------------------------------------------------------------------------------------------------------------- | | `telehealth_general` | Any telehealth modality (video, audio-only, store-forward, remote monitoring). | | `audio_only` | Optional — only useful when a jurisdiction requires distinct audio-only language even though a general consent exists. | ### Inheritance rule (canonical) The single CL-24 rule for telehealth-consent inheritance — also enforced by `useStartTelehealthSession` and `cl_telehealth_consent_is_valid`: * **`telehealth_general` satisfies an audio-only session start.** A patient with valid general telehealth consent can be scheduled for audio-only without a separate `audio_only` row. * **`audio_only` does NOT satisfy a video / general telehealth session start.** A patient with only `audio_only` consent must be re-consented before video can be scheduled. So `audio_only` is the *narrower* consent type; `telehealth_general` is the *broader* type that covers audio-only too. ### How to capture 1. Open the patient's chart and look at the **Telehealth Consent** badge in the sidebar. 2. Click the badge → **Capture consent** → select the consent type. 3. Choose the consent method: * **Written** (paper, attach scan reference) * **Verbal attested** (clinician attests verbal consent) * **Electronic signature** (PF-33 e-signature integration if available; the dialog degrades gracefully if PF-33 is offline) 4. Confirm the consent language version (your org's current AZ template or US federal template is the default). 5. Save. The dialog writes a row to `cl_telehealth_consents` and publishes `cl_telehealth_consent_captured` to PF-10 for the patient-portal receipt. By default `expires_at = consented_at + 365 days` (org-configurable via `telehealth_consent_validity_days`). ### Cross-link * For the **PM-13** scheduling and session-launch workflow, see [PM-13 Telehealth User Guide](/pm/telehealth-user-guide). * For the underlying **progress-note** schema, see [CL-04 Progress Notes](/cl/progress-notes). *** ## Pre-session safety checklist When the **safety-checklist-required** flag is on, the **Start session** button opens the `TelehealthSafetyChecklistSheet` before the PM-13 join URL becomes available. Three items are **required**; one is optional. | Item | Required? | Why | | ------------------------------------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Patient current location verified** | ✅ | The patient may have moved since intake. Telehealth across state lines without provider licensure in the *patient's current* state can violate scope-of-practice. ARS 13-3005 and analogous statutes also require accurate location for recording-notice law. | | **Local emergency number captured** | ✅ | If the patient becomes unsafe mid-session, the clinician must be able to direct local 911 / mobile crisis to the **patient's** location, not the provider's. Joint Commission CAMBHC NPSG.15.01.01 expects this for remote risk-bearing sessions. | | **Disconnect protocol acknowledged** | ✅ | The clinician confirms they have reviewed the agreed-upon plan if the call drops mid-session — phone fallback number, support person to call, when to escalate. Reduces lethality risk for crisis-vulnerable patients. | | **Support person on site** | Optional | Captures whether a non-clinical adult is present (e.g., parent for a minor session, family member for a Memory Care patient). Recorded on `support_person_on_site` + `support_person_name`. | When you submit, `safety_checklist_completed_at` is stamped, the database CHECK constraint `chk_cl_telehealth_safety_complete` verifies the three required fields are all true / non-null, and `cl_telehealth_session_safety_completed` is published so PM-13 knows it is safe to release the join URL. If the safety-checklist flag is set to **warn-only**, you'll see an inline warning instead of a hard block, and the session can still start. *** ## Logging connectivity issues mid-session If the call drops, the video freezes for >30 seconds, you switch to audio-only because video failed, or any other technically-meaningful event occurs, log it from the **session detail page**: 1. Open **CL → Telehealth → Sessions** and select the active session. 2. Click **Log connectivity issue**. 3. Select the issue type (`call_drop`, `video_freeze`, `switched_to_audio`, `other`), enter a brief note, and submit. Each entry is appended to `cl_telehealth_sessions.connectivity_issues` (a JSONB array) with a UTC timestamp and the logger's profile ID. Entries are immutable. They render on the session detail timeline and are pulled into payer-audit exports for AHCCCS CBHSG and CCBHC v2 reviews. > **Do not** delete a connectivity-issue entry. If something was logged in error, add a corrective entry rather than amending the prior one. *** ## Jurisdiction mismatch banner — what to do When the session is opened, CL-24 compares: * `patient_state` on the session (or, if blank, the patient's chart-of-record state) * `provider_state` on the session (or, if blank, the clinician's profile state) * The org's licensed-states list If the patient state and provider state differ, **or** the patient state is not in the org's licensed-states list, the `JurisdictionMismatchBanner` renders at the top of the session detail page. | Outcome | Action | | ------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Banner says **"Out-of-state — verify licensure"** | Confirm you hold a license (or a recognized interjurisdictional compact such as PSYPACT) for the patient's current state. Document the basis in the session note. | | Banner says **"Recording-notice law differs"** | Confirm whether the patient's state is a two-party-consent state (AZ included under ARS 13-3005). Provide the recording notice required by the *patient's* state, not the provider's. | | Banner says **"Patient state unknown"** | Stop and verify with the patient. Update the session record. Re-evaluate the banner. | The banner is informational. CL-24 does **not** auto-block on jurisdiction; the clinician's professional judgment governs. *** ## Linking a progress note to a CL-24 session The CL-04 progress-note form auto-links to the CL-24 session in two ways: * **From an active session:** When you start documenting from `/cl/telehealth/sessions/:sessionId`, the **Create progress note** action carries the `session_id` forward. The note is saved with `cl_telehealth_sessions.progress_note_id` populated. * **From a chart:** In the progress-note picker, the "Link to telehealth session" dropdown lists today's sessions for that chart. Pick one to link. When the note is **finalized**, the existing `clinical_note_finalized` event (CL-04 → PM-07) fires with `is_telehealth`, `telehealth_modality`, `patient_location`, `provider_location`. **CL-24 does not republish this** — the billing pathway is unchanged. > If you forget to link the note at finalize time, an admin can backfill `progress_note_id` retrospectively (admin-only, with audit). See the admin guide. *** ## Revoking consent Patients can revoke telehealth consent at any time. 1. Open the patient's chart → **Telehealth Consent** badge → **View consent history**. 2. Locate the active consent row and click **Revoke**. 3. Enter a revocation reason (free-text). Submit. The system stamps `revoked_at = now()` and publishes `cl_telehealth_consent_revoked` (PF-10 routes notification to the clinician and to PM-13 so future join URLs are blocked for the chart). ### Immutability Once `revoked_at` is set, **non-admin** users cannot clear it. The `cl_enforce_consent_revocation_immutability` trigger raises an exception, even on a direct UPDATE. This is intentional: revocation is a clinical-legal event and audit immutability is a Joint Commission CAMBHC and AHCCCS requirement. If a revocation was entered in error and you need it reversed, request an admin override (see the [admin guide](/cl/telehealth-documentation-admin-guide#admin-override-for-revoked_at-immutability)). The admin override is logged. To re-establish consent for the same patient after a legitimate revocation, capture a **new** consent row. The system does not edit the revoked row — it adds a new active row alongside it. *** ## FAQ **Q: I started a session before the safety checklist sheet appeared. What happened?** A: The `telehealth_block_session_without_safety_checklist` flag is probably set to warn-only in your org. You'll see an inline warning instead of a blocking sheet. Capture the checklist on the session detail page before finalizing the note. **Q: The Telehealth Consent badge says "Expiring in 12 days." Will the session be blocked?** A: Not yet. The badge turns amber within 30 days of expiry and red after expiry. The consent-block flag only fires once the consent has actually expired or is revoked. Capture a renewal at the next visit. **Q: PM-13 says the patient hasn't joined yet but my session detail page says the safety checklist is done. Is something wrong?** A: No. The CL-24 safety checklist is a **pre-flight** record. PM-13 still tracks the actual session lifecycle (scheduled → active → completed) based on join timestamps from the vendor. **Q: Can I document the connectivity issue after the session ends?** A: Yes, retrospectively, on the session detail page. The session does not have to be `active`. We recommend logging within the same business day so the entry stays accurate. *** ## See also * [Telehealth Documentation — Admin Guide](/cl/telehealth-documentation-admin-guide) * [PM-13 Telehealth User Guide](/pm/telehealth-user-guide) * [CL-PM Telehealth Integration Contract](/architecture/integrations/CL-PM-TELEHEALTH) * [CL-24 Integration Contract](/architecture/integrations/telehealth-documentation-compliance-integration) * [Progress Notes (CL-04)](/cl/progress-notes) # Treatment Plans Source: https://docs.encoreos.io/cl/treatment-plans Dashboard listing treatment plans due for review within a configurable time window (30, 60, or 90 days), with overdue indicators. The Treatment Plans screen at `/cl/treatment-plans` shows all treatment plans whose review is due within a selected time window and provides entry points for creating a new plan. ## Overview The page renders a header with a "New Plan" button (permission-gated to `cl.treatment_plan.create`) and three filter tabs: 30 Days, 60 Days, and 90 Days. The `useTreatmentPlanList` hook fetches plans whose `review_due_date` falls within the selected window. Each plan row is a link to `/cl/treatment-plans/:planId` and shows: plan type (formatted from `plan_type`), chart number, service line, an overdue badge (destructive) when `review_due_date` is in the past, a relative due-date string otherwise, and a status badge (`draft` / `active` / `signed`). Clicking "New Plan" opens a `TemplateSelectStep` dialog; the user may select a template (navigates to `/cl/treatment-plans/new` with `state.templateId`) or choose a blank plan (navigates to `/cl/treatment-plans/new`). ## Who it's for Requires permission: `cl.treatment_plan.view` Creating a new plan additionally requires: `cl.treatment_plan.create` ## Before you start * Must hold `cl.treatment_plan.view`. * Treatment plans are associated with patient charts via `cl_patient_charts`. ## Steps Use the tab bar to choose 30, 60, or 90 days. The list refreshes to show plans due within that window. Plans with a `review_due_date` in the past show a red "Overdue" badge. Plans with a future due date show a relative time string (e.g., "due in 5 days"). Click any row to navigate to the Treatment Plan detail at `/cl/treatment-plans/:planId`. Click "New Plan" to open the template-selection dialog. Choose a template or a blank plan. Both paths navigate to `/cl/treatment-plans/new`. ## Key concepts The filter tabs control the `daysFilter` state (30, 60, or 90). `useTreatmentPlanList` receives this value and returns plans due within that many days. Statuses observed in code: `draft` (outline badge), `active` (secondary badge), `signed` (default badge). Any unrecognized status falls back to outline. The `TemplateSelectStep` dialog offers a template picker or a blank-plan option. Selecting a template passes `state.templateId` in navigation state to the new-plan route. Load error: destructive card with sanitized message above the list. Empty list: "No plans due — No treatment plans due for review within N days." ## Detail view The Treatment Plan screen at `/cl/treatment-plans/:planId` displays the full detail of a single treatment plan, including goals, interventions, signatures, caregiver participation, and goal-progress visualizations. ### Overview The page loads a plan by `planId` via `useTreatmentPlanDetail` and also loads the associated chart via `useChartDetail`. The header shows plan type (formatted from `plan_type`), service line, effective date, review due date, and status badge. The plan is editable when `status` is `draft` or `active`. A `GoalProgressCharts` component renders goal-progress visualization. A `CaregiverParticipationSection` shows caregiver role and participation timestamp. A Patient Signature card shows whether the patient has signed (and if they agreed or disagreed, showing "appeal rights provided" on disagreement). The Goals card lists goals as collapsible rows showing `goal_text_patient_words`, `measurable_criteria`, frequency, duration, target date, `progress_pct`, and status badge; each goal expands to show its interventions (description, frequency, modality). A `CODTreatmentPlanSection` appears based on the chart's `cod_indicator`. `TreatmentPlanSignatures` renders the signature section at the bottom. ### Who it's for Requires permission: `cl.treatment_plan.view` Additional actions require: `cl.treatment_plan.create` (Add Goal, Add Intervention), `cl.treatment_plan.patient_sign` (Record Patient Signature), `cl.treatment_plan.event_automation` (Record Life Event). ### Before you start * Must hold `cl.treatment_plan.view`. * Navigate here from the Treatment Plans list at `/cl/treatment-plans` or from the Treatment Plans tab on a Patient Chart. ### Steps Navigate to `/cl/treatment-plans` and click a plan row, or click a plan from the Treatment Plans tab on a Patient Chart. The plan header loads with type, service line, dates, and status badge. Read the plan header (type, service line, effective date, review due date, status). The `GoalProgressCharts` component shows progress visualization for all goals. The `CaregiverParticipationSection` shows caregiver role and the timestamp of recorded participation when applicable. The Patient Signature card shows "Signed (agrees)", "Signed (disagrees — appeal rights provided)", or "Not yet signed". If unsigned and the plan is editable, the "Record Patient Signature" button is shown to users with `cl.treatment_plan.patient_sign`. Click any goal row to expand it and view its linked interventions (description, frequency, modality). Add new goals (if editable and permitted) via the "Add Goal" button in the Goals card header. Users with `cl.treatment_plan.event_automation` can click "Record Life Event" to open `LifeEventRecordForm`. The `TreatmentPlanSignatures` section at the bottom shows signature records for the plan. ### Key concepts The plan is editable (`isEditable = true`) only when `status` is `draft` or `active`. When `signed`, `superseded`, or `discontinued`, goal and intervention Add buttons are hidden and patient-signature capture is disabled. Goal statuses in code: `not_started` (outline), `in_progress` (secondary), `partially_met` (secondary), `met` (default), `revised` (outline), `discontinued` (destructive). Goals display `goal_text_patient_words` as the primary text and `measurable_criteria` as secondary. When the associated chart's `cod_indicator` is truthy, a `CODTreatmentPlanSection` is rendered between the goals and the signatures. SME: confirm COD documentation requirements. Load error: destructive card with sanitized message. Plan not found: "Treatment plan not found" empty-state card. No goals yet: "No goals added yet." No interventions: "No interventions yet." ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/TreatmentPlanListPage.tsx * src/cores/cl/pages/TreatmentPlanDetailPage.tsx * src/cores/cl/hooks/useChartDetail.ts # UDS Reporting Source: https://docs.encoreos.io/cl/uds-reporting Place, filter, and track urine drug screening orders for a patient chart with status and panel-type views. The UDS Reporting screen lists urine drug screening (UDS) orders for a selected patient chart and allows placing new orders, accessible at `/cl/uds`. ## Overview The page reads a `chartId` query parameter from the URL. If no `chartId` is present, the page renders an empty state instructing the user to navigate from a patient chart. When a chart is selected, the page fetches UDS orders from `cl_uds_orders` via `useUdsOrdersByChart`, filtered by the chart and organization. Orders are sorted by `ordered_at` descending. Filter controls allow narrowing by status and date range; a "Clear" button resets all filters. Each row shows: Order date, Type (Presumptive / Definitive / Confirmation), Panel (5-Panel / 10-Panel / 12-Panel / Custom), Status badge, Observed indicator, and a "View" results button (gated by `cl.uds_results.view`). A "Create UDS Order" action is available via `CreateUdsOrderDialog`. ## Who it's for Requires permission: `cl.uds_orders.view` Additional permission that unlocks results: * `cl.uds_results.view` — enables the "View" results button on each row ## Before you start * Your account must have the `cl.uds_orders.view` permission. * Navigate from a patient chart that provides a `chartId` query parameter — opening `/cl/uds` directly without a `chartId` shows an empty state. ## Steps Navigate to `/cl/uds?chartId=` via the patient chart. The order list loads automatically for that chart. Select a status from the status drop-down (Ordered, Collected, Sent to Lab, Resulted, Cancelled) or set a date range using the From and To date inputs. Click "Clear" to remove all filters. Click the "Create UDS Order" action in the page header to open the order dialog and submit a new order. Click "View" on a resulted order row to open the results detail (requires `cl.uds_results.view`). ## Key concepts **Ordered** → **Collected** → **Sent to Lab** → **Resulted**; **Cancelled** is a terminal non-result state. **Presumptive** — initial immunoassay screen; **Definitive** — confirmatory test; **Confirmation** — secondary confirmation. (SME: verify clinical workflow sequence.) Standard 5-Panel, Standard 10-Panel, Expanded 12-Panel, Custom. No chart selected: "No chart selected — Navigate to a patient chart to view UDS orders." No orders for chart: "No UDS orders yet — Place a drug screening order to get started." Error state: "Error loading orders — An error occurred while loading UDS orders." ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/UdsOrderListPage.tsx * src/cores/cl/hooks/useUdsOrders.ts * src/cores/cl/types/uds.ts # UM Analytics Source: https://docs.encoreos.io/cl/um-analytics View approval rate and throughput metrics for concurrent reviews across the active organization. This screen displays aggregate Utilization Management analytics at route `/cl/utilization-management/analytics`. ## Overview The UM Analytics page renders two metric cards sourced from `useUMMetrics`. The **Approval rate** card shows the `approvalRate` percentage (computed as approved divided by total decided reviews, rounded to the nearest integer) and a subtitle stating the count of decided reviews. The **Throughput** card shows `totalReviews` — the total number of review records in `cl_concurrent_reviews` for the active organization. Both cards display skeleton loaders while data is fetching. ## Who it's for Requires the `cl.um.dashboard` permission. ## Before you start * You must hold the `cl.um.dashboard` permission. * Concurrent review records must exist for the active organization. ## Steps Navigate to `/cl/utilization-management/analytics`. The two metric cards load from `useUMMetrics`. The **Approval rate** card shows the percentage of decided reviews that received an `approved` or `partially_approved` determination. The subtitle shows the total number of decided reviews. The **Throughput** card shows the total count of all concurrent review records for the organization. ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/UMAnalyticsPage.tsx * src/cores/cl/hooks/useUMMetrics.ts # Utilization Management Source: https://docs.encoreos.io/cl/utilization-management View UM metrics and manage the concurrent review worklist, including upcoming, overdue, completed, and appeal buckets. This screen is the Utilization Management landing dashboard at route `/cl/utilization-management`. ## Overview The UM Dashboard displays four metric cards — Pending, Overdue, Approved, and Denied — computed from `useUMMetrics` against the `cl_concurrent_reviews` table. The page subscribes to real-time updates via `useConcurrentReviewsRealtime`. Below the metrics, a `ReviewWorklist` component is rendered in a four-tab layout: **Upcoming** (non-overdue, non-completed reviews sorted by due date ascending), **Overdue** (reviews past their due date), **Completed** (reviews with `status === 'completed' | 'submitted'` or a determination set), and **Appeals** (reviews with `determination === 'denied'`). Each tab shows a count badge. The active tab is persisted in the URL via `useTabUrlState`. ## Who it's for Requires the `cl.um.dashboard` permission. ## Before you start * You must hold the `cl.um.dashboard` permission. * Concurrent review records must exist for the active organization in `cl_concurrent_reviews`. ## Steps Navigate to `/cl/utilization-management`. The four metric cards and the worklist load for the active organization. Observe the Pending, Overdue, Approved, and Denied counts. Overdue is highlighted in a destructive tone; Approved in success tone. The default **Upcoming** tab lists reviews that are neither completed nor overdue, sorted earliest due date first. Click a row to open the concurrent review detail page. Switch to the **Overdue** tab to see reviews whose `review_due_date` is in the past or whose `status === 'overdue'`. Switch to the **Completed** tab to see finalized reviews sorted by due date descending. Switch to the **Appeals** tab to see denied reviews. ## Key concepts Reviews are classified into buckets client-side: `isCompleted` (status is `completed`, `submitted`, or a determination is set), `isOverdue` (not completed and `status === 'overdue'` or due date is past), and `isUpcoming` (neither completed nor overdue). `pending` counts reviews with status `pending`, `scheduled`, or `in_progress`. `approvalRate` is computed as `approved / (approved + denied) * 100`, rounded to the nearest integer. The page subscribes to real-time events via `useConcurrentReviewsRealtime`, so the worklist updates without a manual refresh when reviews change. When no reviews exist in a bucket, `ReviewWorklist` renders its empty state. ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/UMDashboardPage.tsx * src/cores/cl/hooks/useConcurrentReviews.ts * src/cores/cl/hooks/useUMMetrics.ts # Virtual Group Session Source: https://docs.encoreos.io/cl/virtual-group-session The /cl/virtual-groups/:sessionId route is not registered. Session join and host flows are at /cl/virtual-groups/:sessionId/join and /cl/virtual-groups/:sessio… The path `/cl/virtual-groups/:sessionId` (without a sub-path) is **not a registered route** in the Clinical core. Virtual group session participation is split into two distinct sub-routes: a join flow for attendees and a host flow for facilitators. ## Overview `/cl/virtual-groups/:sessionId` is **not a registered route**. Navigating to it without `/join` or `/host` renders `NotFound`. The two active sub-routes are: | Route | Component | Permission | | ------------------------------------ | ---------------------- | ------------------------- | | `/cl/virtual-groups/:sessionId/join` | `VirtualGroupJoinPage` | `cl.group.virtual.attend` | | `/cl/virtual-groups/:sessionId/host` | `VirtualGroupHostPage` | `cl.group.virtual.host` | `VirtualGroupJoinPage` is a patient-facing pre-session preparation screen. It requires two steps before enabling the telehealth room join button: 1. **Technology Check** — opens `TechnologyCheckSheet` to verify camera, microphone, and connection. Completion is recorded in `technology_check_completed_at` on the attendance record. 2. **Recording Consent** — shown only if `recording_enabled` is true on the session. Opens `RecordingConsentDialog`. Consent is locked once captured (`recording_consent_captured_at`). The "Open telehealth room" button is enabled only when both checks are complete and the session status is `scheduled` or `in_progress`. The join URL (`vendor_session_ref`) is sourced from `useTelehealthMetadata`; if absent, the button shows "Awaiting host to start." ## Who it's for * `/join` route: `cl.group.virtual.attend` permission * `/host` route: `cl.group.virtual.host` permission ## Before you start * For the join flow: you need `cl.group.virtual.attend` permission and an attendance record for the session. The `attendanceId` can be passed as a query parameter (`?attendanceId=`). * For the host flow: you need `cl.group.virtual.host` permission. * The session must be in `scheduled` or `in_progress` status to join. ## Steps Open `/cl/virtual-groups/:sessionId/join` (optionally appending `?attendanceId=`). The page loads session details and your attendance record. Click "Start" next to "Technology Check". The `TechnologyCheckSheet` guides you through verifying camera, microphone, and network. On completion, the step shows a green checkmark. If the session has recording enabled, click "Capture" next to "Recording Consent". The `RecordingConsentDialog` opens. Once consent is captured, it is locked and cannot be changed for this session. When both steps are complete and the session is active, the "Open telehealth room" button becomes enabled. Click it to open the telehealth room URL in a new tab. ## Key concepts | Term | Meaning | | ------------------------------- | ------------------------------------------------------------------------------------------------------------ | | `vendor_session_ref` | Telehealth vendor URL for the virtual room, sourced from `useTelehealthMetadata`; owned by PM-13 integration | | `technology_check_completed_at` | Timestamp on the attendance record indicating the tech check was completed | | `recording_consent_captured_at` | Timestamp on the attendance record when recording consent was given; locks the consent for the session | | `recording_consent_modality` | How consent was captured (`RecordingConsentModality` type) | | `TechnologyCheckSheet` | Slide-over component guiding users through camera/mic/network verification | | `RecordingConsentDialog` | Dialog for capturing and locking recording consent for a specific attendance record | ## Related Clinical core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/VirtualGroupJoinPage.tsx * src/cores/cl/hooks/useGroupSessions.ts * src/cores/cl/hooks/useGroupAttendance.ts * src/cores/cl/hooks/useVirtualGroupSessions.ts * src/cores/cl/components/virtual-group/TechnologyCheckSheet.tsx * src/cores/cl/components/virtual-group/RecordingConsentDialog.tsx * src/cores/cl/types/virtual-group.ts # Virtual Groups Source: https://docs.encoreos.io/cl/virtual-groups List and filter virtual and hybrid group therapy sessions by modality, with summary counts and navigation to session detail. The Virtual Groups list screen displays all group sessions with a modality of `virtual` or `hybrid` at `/cl/virtual-groups`. ## Overview The page fetches group sessions using `useVirtualGroupSessionsList`, which wraps the `useGroupSessionsList` hook and applies client-side filtering on the `modality` field. Three summary cards show total sessions, virtual count, and hybrid count for the current filter. A modality filter dropdown (`all`, `in_person`, `virtual`, `hybrid`) narrows the session table. Clicking any row navigates to the standard group session detail page at `/cl/group-sessions/:sessionId`. If the current user also holds `cl.group.virtual.host`, a **New Session** button redirects to `/cl/group-sessions` to create the session there. ## Who it's for Requires permission `cl.group.virtual.attend`. Users with `cl.group.virtual.host` additionally see the **New Session** shortcut button. ## Before you start * You must have `cl.group.virtual.attend`. * Sessions must have a `modality` value of `virtual` or `hybrid` to appear (the `modality` column is a pending migration; until applied, all sessions may appear regardless of filter). ## Steps Navigate to `/cl/virtual-groups`. The page loads the full session list and shows summary counts across three stat cards. Use the **Modality** dropdown to narrow the list to `Virtual`, `Hybrid`, `In Person`, or `All Modalities`. Click any row in the Sessions table to open the session detail screen at `/cl/group-sessions/:sessionId`. Users with `cl.group.virtual.host` can click **New Session** to navigate to `/cl/group-sessions` where the session creation dialog is available. ## Key concepts Session modality is stored as `in_person`, `virtual`, or `hybrid` on `cl_group_sessions`. The `virtual` and `hybrid` modalities enable telehealth-specific workflows (technology check, recording consent) accessible from the session detail and host/join pages. * No sessions matching filter: `EmptyState` with title "No Virtual Group Sessions" and description directing hosts to `/cl/group-sessions`. * Load error: inline destructive alert "Unable to load virtual group sessions. Please try again." * Loading: three skeleton stat cards and a table skeleton. ## Related Overview of the Clinical core. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/cl.tsx * src/cores/cl/pages/VirtualGroupsListPage.tsx * src/cores/cl/hooks/useVirtualGroupSessions.ts * src/cores/cl/types/virtual-group.ts # WENO e-Prescribing User Guide Source: https://docs.encoreos.io/cl/weno-prescribing-user-guide Prescriber guide for sending controlled and non-controlled medications electronically using WENO Online within Encore OS. > **Purpose:** This guide helps prescribers and authorized clinical staff send e-prescriptions and manage prescribing workflows using WENO Online's embedded interface in Encore OS. *** ## Overview WENO Online is a **DEA-compliant e-prescribing system** that allows you to send prescriptions electronically to pharmacies. Encore OS integrates WENO directly into the patient chart, so you can compose, sign, and transmit prescriptions without leaving the application. ### Key Capabilities * **Embedded e-prescribing:** Compose and send prescriptions directly from the patient chart * **Pharmacy selection:** Choose from a curated directory of local and mail-order pharmacies * **Controlled substance support:** Full CIII–CV support; CII available in WENO's platform * **Test mode:** Safe environment for training before live prescribing * **42 CFR Part 2 compliance:** Automatic consent verification for substance use disorder (SUD) records * **Prescription history:** Synced prescriptions appear on the patient's medication list ### Who Should Use This Guide | Role | Use Case | | ------------------------- | ------------------------------------------------------- | | Prescriber (MD/NP/PA/DDS) | Compose and send new prescriptions | | Clinic Staff | Assist with pharmacy selection and patient demographics | | Supervisor/QA | Review prescriptions sent via WENO | *** ## Prerequisites ### Permissions & Setup To prescribe via WENO, you need: * **Permission:** Your organization must grant you `cl.prescriptions.create` permission * **Admin setup:** Your organization's IT administrator must configure: * WENO encryption key (stored securely in Encore OS settings) * WENO admin login (for pharmacy directory sync) * Your WENO prescriber username and password * **Credentials:** You will enter your personal WENO login credentials when prompted > **Contact your administrator** if you don't have the required permission or if WENO is not yet enabled at your organization. ### Important: Test Mode vs. Live Mode **Encore OS starts in TEST MODE.** In test mode: * You can **only** prescribe to **test pharmacies** (select "Test patient" before prescribing) * You cannot send prescriptions to real, live pharmacies * All prescriptions are test data and will **not** be dispensed Your organization will move to **LIVE MODE** after completing a certification process with WENO. Until then, always use test mode. Your administrator will notify you when live prescribing is available. *** ## Getting Started ### Accessing WENO from a Patient Chart 1. **Open the patient's chart** in the Clinical module * Navigate to the patient's chart and click to open it * The chart displays all clinical information, medications, and actions 2. **Locate the "Prescribe (WENO)" button** * Look for the **Prescribe (WENO)** button in the chart header (below the patient banner) * The button has a **pill icon** and appears next to other chart actions * If you don't see this button, you may lack the required permission — contact your administrator 3. **Click the button** to open the WENO prescribe dialog *** ## Step-by-Step Workflow ### Step 1: Open the Prescribe Dialog Click **Prescribe (WENO)** from the patient chart. A dialog opens showing: * **Patient name and date of birth** * **Form fields** to collect address, phone, pharmacy, and test mode toggle ### Step 2: Enter Patient Address Fill in the **Address line 1** field with the patient's street address: * Examples: `123 Main St`, `456 Oak Ave, Apt 5` * **Do not include** city, state, or ZIP in this field (separate fields below) * This must be a valid street address (no PO boxes in WENO's system) **Tips:** * If the patient is homeless, enter `homeless` and fill city/state/ZIP with the patient's last known location or a shelter address * If the address changes frequently, use the patient's current location at the time of prescribing ### Step 3: Enter City, State, and ZIP Code 1. **City:** Enter the city (e.g., `Phoenix`, `Tucson`) 2. **State:** Enter the two-letter state code (e.g., `AZ`, `CA`) * Use standard abbreviations only 3. **Postal code:** Enter the 5-digit or 9-digit ZIP code (e.g., `85204` or `85204-1234`) **Validation:** * All three fields are required * State must be exactly 2 letters (Encore will validate and reject invalid entries) * ZIP code must be 5 or 9 digits (dashes will be ignored, e.g., `85204-1234` is accepted) ### Step 4: Enter Primary Phone Number Enter the **Primary phone** field with the patient's contact phone: * Examples: `(602) 555-1234`, `602-555-1234`, `6025551234` * **Spaces, dashes, and parentheses are automatically removed** — Encore accepts any common format * Must contain **exactly 10 digits** (US/territories only) * Ideally the patient's cell phone for pharmacy callbacks and MyDrugApp SMS notifications ### Step 5: Select the Primary Pharmacy Click the **Primary pharmacy** dropdown and choose a pharmacy: * **Dropdown shows:** Pharmacy name and NCPDP ID (e.g., `CVS Pharmacy #1234 · NCPDP 1234567`) * **Flag "ON WENO":** Pharmacies marked with an "ON WENO" badge process all e-prescription types without callbacks * **Non-WENO pharmacies:** May require fax-back (prefer an ON-WENO alternative if available) **Selecting a pharmacy:** 1. Click the dropdown to open the list 2. Scroll or type the pharmacy name to search 3. Click to select **If the pharmacy isn't listed:** * The pharmacy directory may be outdated — contact your administrator to request a sync * You can still send to an unlisted pharmacy if you know its NCPDP ID (provide it to your administrator) **Alternative pharmacy (if needed):** * If your chosen pharmacy is **not ON WENO**, Encore may prompt you to select a second, ON-WENO pharmacy for fallback * This ensures the prescription reaches the patient even if the primary pharmacy cannot process it electronically ### Step 6: Choose Test or Live Mode A checkbox labeled **"Test patient (test pharmacies only)"** appears: * **Checked (default):** Prescribe to **test pharmacies only** — use this for training and non-production prescriptions * **Unchecked:** Prescribe to **real, live pharmacies** — only uncheck when your organization is in LIVE MODE **Rule of thumb:** * ✅ **Default to checked** unless you are confirmed to be in LIVE MODE * ✅ **In test mode,** test pharmacies process your Rx immediately; you'll see results in WENO's RxLog * ❌ **Do NOT uncheck** without explicit approval from your administrator — test patients cannot reach live pharmacies, and vice versa ### Step 7: Check for 42 CFR Part 2 Consent Before opening WENO, Encore checks if the patient's chart is **flagged for substance use disorder (SUD)**. **If consent is required:** * You will see a **toast error:** "42 CFR Part 2 consent required" * **Action:** Record active SUD disclosure consent on the patient's chart (via the Consents section) * **Then retry** the prescription **Why this matters:** * 42 CFR Part 2 is a federal privacy rule protecting SUD treatment records * If a patient is in SUD treatment, Encore must confirm written consent before any prescriber (including you) can send e-prescriptions * This prevents accidental disclosure of sensitive SUD information to pharmacies ### Step 8: Click "Start Prescription" Click the **Start prescription** button to proceed: * If all fields are valid, the button changes to "Starting…" * Encore encrypts your data and constructs a secure link to WENO * The WENO ComposeRx interface opens **inside the dialog** **Common errors:** * **Validation failed:** Check that all required fields are filled and formatted correctly * **Credentials missing:** If WENO login credentials were not configured, WENO may show a login prompt instead of the compose form ### Step 9: Compose and Sign the Prescription in WENO Once the WENO interface loads: 1. **Your patient's data is pre-filled:** * Name, date of birth, address, phone * This data came from Encore's chart and WENO will use it to pre-populate the prescription 2. **Compose the prescription:** * Select the drug, strength, quantity, and directions * Add any refills, special instructions, or pharmacy notes * **WENO's interface guides you** — refer to your WENO training for detailed steps 3. **Review for accuracy:** * Verify the patient, drug, strength, and pharmacy are correct * Check for drug interactions or allergy warnings 4. **Sign the prescription:** * Enter your WENO password (or use digital signature, depending on your setup) * WENO validates your DEA credentials and signs the Rx * Prescription is immediately transmitted to the selected pharmacy 5. **Confirm transmission:** * WENO shows a confirmation with the pharmacy name, timestamp, and reference number * Save this reference number if you need to track the prescription later ### Step 10: Close the Dialog and Return to the Chart Once the prescription is sent: 1. **Close the WENO interface** by clicking the X or closing button in the dialog 2. **Return to the patient chart** — the dialog closes and you're back to the clinical view *** ## After the Prescription is Sent ### Viewing the Prescription on the Chart **The prescription will appear on the patient's medication list once it is synced back from WENO.** This typically happens within 15 minutes, depending on your organization's sync settings. **To see the updated medication list:** 1. Navigate to the **Medications** tab on the patient's chart 2. Look for the recently sent prescription (sorted by date sent) 3. Status will show as "Sent," "Pending," or "Filled" depending on the pharmacy's response ### Checking Prescription Status If you need to check on a prescription after it's sent: * **In WENO:** Log in to WENO's **RxLog** (ask your administrator for the link) to see all your prescriptions and their status * **In Encore:** The patient's medication list will update as the pharmacy processes the Rx ### Handling Pharmacy Callbacks If the pharmacy has questions about the prescription: * **WENO will notify you** via email or phone (depending on your contact preferences in WENO) * **You may need to clarify:** Directions, quantity, refills, or clinical rationale * **The prescription is held** until you respond — it will not be dispensed until confirmed *** ## Common Scenarios & Troubleshooting ### Scenario 1: "Prescribe (WENO)" Button Is Not Visible **Cause:** You lack the required permission. **Solution:** 1. Contact your organization administrator 2. Request the permission `cl.prescriptions.create` to be added to your role 3. Refresh the page once the permission is applied *** ### Scenario 2: WENO Shows a Login Screen Instead of the Compose Form **Cause:** Your WENO credentials (username/password) were not stored or have expired. **Solution:** 1. **Ask your administrator** to provision or reset your WENO prescriber account 2. Contact WENO support (via your administrator) if you don't remember your password 3. Once credentials are saved in Encore's settings, you won't see the login screen again *** ### Scenario 3: "42 CFR Part 2 Consent Required" Error **Cause:** The patient's chart is flagged as SUD-related, and active consent is not on file. **Solution:** 1. Close the WENO prescribe dialog 2. Navigate to the **Consents** tab on the patient's chart 3. Click **Add Consent** and select "SUD Disclosure Consent" 4. Have the patient sign (or confirm verbal consent is documented) 5. Retry the WENO prescription *** ### Scenario 4: Pharmacy Not Found in the Directory **Cause:** The pharmacy directory is outdated or the pharmacy is not enrolled with WENO. **Solution:** 1. **Search by name or ZIP code** in the pharmacy dropdown — partial matches may work 2. **Contact the pharmacy directly** to confirm they accept e-prescriptions 3. **Ask your administrator** to request a manual pharmacy directory refresh 4. If the pharmacy is still not found, you may need to **print and fax the prescription** as a fallback (contact your clinical supervisor) *** ### Scenario 5: "Test Patient" Toggle Not Working or Always Appears Checked **Cause:** Your organization is in LIVE MODE, or there's a configuration issue. **Solution:** * Contact your administrator — the toggle may be locked to match your organization's mode (TEST vs. LIVE) * If you believe your organization should be in LIVE MODE but can't uncheck the toggle, report this to your IT team *** ### Scenario 6: Prescription Doesn't Appear on the Chart After Sending **Cause:** The sync from WENO hasn't run yet, or there was a transmission error. **Solution:** 1. **Wait 15–30 minutes** — Encore syncs prescriptions periodically (usually every 15 minutes) 2. **Check WENO's RxLog** to confirm the prescription was sent and the status (e.g., "Sent," "Delivered," "Pending") 3. **Ask your administrator** to manually trigger a sync if the prescription is stuck 4. If the prescription never appears, contact WENO support with the prescription reference number *** ## Support & Resources ### Getting Help * **Permission issues:** Contact your organization's IT or clinical administrator * **WENO training:** Ask your supervisor for WENO ComposeRx training materials or a demo session * **Pharmacy issues:** Check with your pharmacy — they can confirm WENO enrollment and test vs. live status * **Prescription problems:** If a prescription fails to send, note the error message and contact your administrator with: * Patient name and DOB * Pharmacy name and NCPDP * Timestamp of the attempt * Any error messages displayed ### Related Guides * **Medications & Orders:** Managing all patient medications and lab orders * **Patient Consent Management:** Recording and managing patient consent, including SUD disclosure consent * **Pharmacy Directory:** Understanding available pharmacies and their WENO status ### Test Mode Training If you're training in test mode, practice these scenarios: * ✅ Send a simple, non-controlled prescription to a test pharmacy * ✅ Send a controlled substance (Rx only) to a test pharmacy * ✅ Attempt a prescription when pharmacy is not found (confirm the error and fallback process) * ✅ Check WENO's RxLog to see your test prescriptions and their status *** ## Glossary | Term | Definition | | ----------------- | ----------------------------------------------------------------------------------------------------- | | **ComposeRx** | WENO's e-prescribing form (the interface you use to compose prescriptions) | | **RxLog** | WENO's log of all prescriptions sent — shows status and allows follow-up on pharmacy requests | | **NCPDP** | Pharmacy identifier (7-digit code used by WENO) | | **42 CFR Part 2** | Federal rule protecting substance use disorder treatment records — requires consent before disclosing | | **Test Patient** | A flag that routes prescriptions to test pharmacies only (training mode) | | **ON WENO** | Pharmacy is enrolled with WENO and processes all e-prescription types without callbacks | | **SUD** | Substance Use Disorder — requires special privacy protection | | **DEA** | Drug Enforcement Administration — regulates controlled substances | *** **Version:** 0.1.0\ **Last updated:** 2026-06-28\ **Status:** Active # Authoritative External References (for AI Accuracy) Source: https://docs.encoreos.io/compliance/AUTHORITATIVE_REFERENCES When implementing CL, PM, HR, RH, GR, FA, IT, or PF features, agents SHOULD consult these authoritative sources rather than relying solely on training data. Us… When implementing CL, PM, HR, RH, GR, FA, IT, or PF features, agents SHOULD consult these authoritative sources rather than relying solely on training data. Use Context7 MCP for library APIs; use these for regulatory, clinical, and standards accuracy. ## Regulatory and Compliance | Source | URL | Used By | | ---------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------- | | 42 CFR Part 2 Final Rule (SUD confidentiality) | [https://www.hhs.gov/hipaa/part-2/index.html](https://www.hhs.gov/hipaa/part-2/index.html) | CL-11 | | 42 CFR Part 2 Fact Sheet | [https://www.hhs.gov/hipaa/for-professionals/regulatory-initiatives/fact-sheet-42-cfr-part-2-final-rule/index.html](https://www.hhs.gov/hipaa/for-professionals/regulatory-initiatives/fact-sheet-42-cfr-part-2-final-rule/index.html) | CL-11 | | 42 CFR Part 8 (Opioid Treatment Programs) | [https://www.samhsa.gov/substance-use/treatment/opioid-treatment-program/42-cfr-part-8](https://www.samhsa.gov/substance-use/treatment/opioid-treatment-program/42-cfr-part-8) | CL-21 | | CMS-0057-F (Interoperability and Prior Auth) | [https://www.cms.gov/cms-interoperability-and-prior-authorization-final-rule-cms-0057-f](https://www.cms.gov/cms-interoperability-and-prior-authorization-final-rule-cms-0057-f) | PM-10, PM-15 | | AHCCCS Medical Policy Manual (AMPM) | [https://azahcccs.gov/shared/MedicalPolicyManual/](https://azahcccs.gov/shared/MedicalPolicyManual/) | CL-02 through CL-04, PM-07, PM-08 | | AHCCCS Covered BH Services Guide (CBHSG) | [https://www.azahcccs.gov/PlansProviders/Downloads/MedicalCodingResources/AHCCCSCoveredBHServicesManual.pdf](https://www.azahcccs.gov/PlansProviders/Downloads/MedicalCodingResources/AHCCCSCoveredBHServicesManual.pdf) | PM-07, PM-08 | | Arizona Title 36 (Mental Health) | [https://www.azleg.gov/arsDetail/?title=36](https://www.azleg.gov/arsDetail/?title=36) | CL-13 | | Arizona CSPMP/PDMP | [https://pharmacy.az.gov/programs-services/cspmp](https://pharmacy.az.gov/programs-services/cspmp) | CL-17 | | HIPAA Privacy Rule | [https://www.hhs.gov/hipaa/for-professionals/privacy/index.html](https://www.hhs.gov/hipaa/for-professionals/privacy/index.html) | PF-44, PF-46, CL, PM | ## HR and Workforce Compliance | Source | URL | Used By | | ----------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------- | | FTC: Using Consumer Reports (Employers) | [https://www.ftc.gov/business-guidance/resources/using-consumer-reports-what-employers-need-know](https://www.ftc.gov/business-guidance/resources/using-consumer-reports-what-employers-need-know) | HR-09, HR-09-P5 | | CFPB: FCRA Summary of Rights | [https://www.consumerfinance.gov/rules-policy/regulations/1022/K](https://www.consumerfinance.gov/rules-policy/regulations/1022/K) | HR-09, HR-09-P5 | | FCC: TCPA Rules and Consent | [https://www.fcc.gov/document/rules-and-regulations-implementing-telephone-consumer-protection-act-22](https://www.fcc.gov/document/rules-and-regulations-implementing-telephone-consumer-protection-act-22) | HR-09-P5 (SMS) | | IRS Publication 15-T (Federal Income Tax Withholding) | [https://www.irs.gov/ht/forms-pubs/about-publication-15-t](https://www.irs.gov/ht/forms-pubs/about-publication-15-t) | HR-PAY-01 | | IRS FIRE (Filing Information Returns Electronically) | [https://www.irs.gov/e-file-providers/filing-information-returns-electronically-fire](https://www.irs.gov/e-file-providers/filing-information-returns-electronically-fire) | HR-PAY-06 | | IRS IRIS (E-file Information Returns) | [https://www.irs.gov/filing/e-file-information-returns-with-iris](https://www.irs.gov/filing/e-file-information-returns-with-iris) | HR-PAY-06 | | DOL: Fair Labor Standards Act (FLSA) | [https://www.dol.gov/agencies/whd/flsa](https://www.dol.gov/agencies/whd/flsa) | HR-05, HR-07 | | DOL: Family and Medical Leave Act (FMLA) | [https://www.dol.gov/agencies/whd/fmla](https://www.dol.gov/agencies/whd/fmla) | HR-06 | | DOL: ERISA | [https://www.dol.gov/agencies/ebsa/laws-and-regulations/laws/erisa](https://www.dol.gov/agencies/ebsa/laws-and-regulations/laws/erisa) | HR-11 | | IRS: ACA Employer Shared Responsibility | [https://www.irs.gov/affordable-care-act/employers/employer-shared-responsibility-provisions](https://www.irs.gov/affordable-care-act/employers/employer-shared-responsibility-provisions) | HR-11 | | USCIS: Form I-9 | [https://www.uscis.gov/i-9](https://www.uscis.gov/i-9) | HR-01 | | E-Verify | [https://www.e-verify.gov/](https://www.e-verify.gov/) | HR-01 | | OSHA: Healthcare Workplace Violence | [https://www.osha.gov/healthcare/workplace-violence](https://www.osha.gov/healthcare/workplace-violence) | HR-01 | | EEOC: Laws Enforced | [https://www.eeoc.gov/statutes/laws-enforced-eeoc](https://www.eeoc.gov/statutes/laws-enforced-eeoc) | HR-01 | | DOL: COBRA Employer Guide | [https://www.dol.gov/agencies/ebsa/about-ebsa/our-activities/resource-center/publications/an-employers-guide-to-group-health-continuation-coverage-under-cobra](https://www.dol.gov/agencies/ebsa/about-ebsa/our-activities/resource-center/publications/an-employers-guide-to-group-health-continuation-coverage-under-cobra) | HR-11 | | Arizona Revised Statutes Title 23 (Labor) | [https://www.azleg.gov/arsDetail/?title=23](https://www.azleg.gov/arsDetail/?title=23) | HR-05, HR-07 | | Arizona BBHE (Board of Behavioral Health Examiners) | [https://www.azbbhe.us/](https://www.azbbhe.us/) | HR-02 | | Arizona DPS Fingerprint Clearance | [https://www.azdps.gov/services/public/fingerprint](https://www.azdps.gov/services/public/fingerprint) | HR-02 | ## Recovery Housing and Governance | Source | URL | Used By | | --------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | ------------ | | Arizona DHS: Sober Living Home Licensing | [https://www.azdhs.gov/licensing/special/sober-living-homes/index.php](https://www.azdhs.gov/licensing/special/sober-living-homes/index.php) | RH-06, RH-01 | | Arizona DHS: Behavioral Health Facilities Licensing | [https://azdhs.gov/licensing/bbbl-facilities/index.php](https://azdhs.gov/licensing/bbbl-facilities/index.php) | RH-06, RH-03 | | Arizona DHS: Residential Facilities Licensing | [https://www.azdhs.gov/licensing/residential-facilities/](https://www.azdhs.gov/licensing/residential-facilities/) | RH-01, RH-06 | | ARS 36-2061 through 36-2068 (Sober Living Homes) | [https://www.azleg.gov/arsDetail/?title=36](https://www.azleg.gov/arsDetail/?title=36) | RH-06 | | AAC Title 9, Chapter 12 (Sober Living Home Rules) | [https://regulations.justia.com/states/arizona/title-9/chapter-12/](https://regulations.justia.com/states/arizona/title-9/chapter-12/) | RH-01, RH-06 | | NARR: National Standard for Recovery Residences 3.0 | [https://narronline.org/standards/](https://narronline.org/standards/) | RH-01, RH-06 | | Arizona Recovery Housing Association (AzRHA) | [https://www.myazrha.org/](https://www.myazrha.org/) | RH-06 | | HUD/DOJ: Fair Housing Act — Group Homes | [https://www.justice.gov/opa/file/912366/dl](https://www.justice.gov/opa/file/912366/dl) | RH-01, RH-02 | ## Finance & Accounting Compliance | Source | URL | Used By | | ----------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------- | | IRS Publication 1220 (1099 e-file specifications) | [https://www.irs.gov/pub/irs-pdf/p1220.pdf](https://www.irs.gov/pub/irs-pdf/p1220.pdf) | FA-10 | | IRS Publication 15-T (Federal Income Tax Withholding) | [https://www.irs.gov/ht/forms-pubs/about-publication-15-t](https://www.irs.gov/ht/forms-pubs/about-publication-15-t) | FA-10, HR-07 | | IRS FIRE (Filing Information Returns Electronically) | [https://www.irs.gov/e-file-providers/filing-information-returns-electronically-fire](https://www.irs.gov/e-file-providers/filing-information-returns-electronically-fire) | FA-10 | | IRS IRIS (E-file Information Returns) | [https://www.irs.gov/filing/e-file-information-returns-with-iris](https://www.irs.gov/filing/e-file-information-returns-with-iris) | FA-10 | | FASB ASC 958 (Not-for-Profit Entities) | [https://www.fasb.org/page/PageContent?pageId=/standards/accounting-standards-codification.html](https://www.fasb.org/page/PageContent?pageId=/standards/accounting-standards-codification.html) | FA-23, FA-07 | | OMB 2 CFR 200 (Uniform Administrative Requirements) | [https://www.ecfr.gov/current/title-2/subtitle-A/chapter-II/part-200](https://www.ecfr.gov/current/title-2/subtitle-A/chapter-II/part-200) | FA-13, FA-15 | | Single Audit (2 CFR 200 Subpart F) | [https://www.ecfr.gov/current/title-2/subtitle-A/chapter-II/part-200/subpart-F](https://www.ecfr.gov/current/title-2/subtitle-A/chapter-II/part-200/subpart-F) | FA-13 (future) | | SAMHSA Post-Award Reporting (FFR/SF-425) | [https://www.samhsa.gov/grants/grants-management/reporting-requirements](https://www.samhsa.gov/grants/grants-management/reporting-requirements) | FA-13 | | IRS Form 990 Instructions | [https://www.irs.gov/forms-pubs/about-form-990](https://www.irs.gov/forms-pubs/about-form-990) | FA-10 (deferred) | | Arizona Corporation Commission (Nonprofit) | [https://azcc.gov/divisions/corporations/](https://azcc.gov/divisions/corporations/) | FA (general) | | Arizona ARS 10-11622 (Annual report) | [https://www.azleg.gov/ars/10/11622.htm](https://www.azleg.gov/ars/10/11622.htm) | FA (state nonprofit) | ## Accreditation and Quality Measures | Source | URL | Used By | | ------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------- | | Joint Commission CAMBHC | [https://www.jointcommission.org/en-us/accreditation/behavioral-health-care-and-human-services](https://www.jointcommission.org/en-us/accreditation/behavioral-health-care-and-human-services) | CL-15, GR-08 | | CARF Behavioral Health | [https://carf.org/accreditation/programs/behavioral-health/](https://carf.org/accreditation/programs/behavioral-health/) | CL-10, CL-15, GR-08 | | NCQA HEDIS Measures | [https://www.ncqa.org/hedis/measures/](https://www.ncqa.org/hedis/measures/) | CL-10, CL-15 | | SAMHSA Quality Measurement | [https://www.samhsa.gov/substance-use/treatment/advancing-quality-measurement-behavioral-health](https://www.samhsa.gov/substance-use/treatment/advancing-quality-measurement-behavioral-health) | CL-10 | | SAMHSA NOMs | [https://www.samhsa.gov/data/faq/samhsas-national-outcomes-measures-noms-collected-mh-cld/](https://www.samhsa.gov/data/faq/samhsas-national-outcomes-measures-noms-collected-mh-cld/) | CL-10 | | Arizona ARS 46-454 (Mandatory reporting — vulnerable adults) | [https://www.azleg.gov/ars/46/00454.htm](https://www.azleg.gov/ars/46/00454.htm) | GR-08 | | Arizona ARS 13-3620 (Mandatory reporting — children) | [https://www.azleg.gov/ars/13/03620.htm](https://www.azleg.gov/ars/13/03620.htm) | GR-08 | | AHCCCS AMPM Policy 1620-O (Critical incident reporting) | [https://www.azahcccs.gov/shared/Downloads/MedicalPolicyManual/1600/1620O.pdf](https://www.azahcccs.gov/shared/Downloads/MedicalPolicyManual/1600/1620O.pdf) | GR-08 | | IRS: Governance and Related Topics — 501(c)(3) | [https://www.irs.gov/charities-non-profits/governance-and-related-topics-501c3-organizations](https://www.irs.gov/charities-non-profits/governance-and-related-topics-501c3-organizations) | GR-03 | ## Interoperability Standards | Source | URL | Used By | | ----------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ | | ONC USCDI (v3 baseline, v4 target) | [https://www.healthit.gov/isa/united-states-core-data-interoperability-uscdi](https://www.healthit.gov/isa/united-states-core-data-interoperability-uscdi) | CL-16, PM-01 | | HL7 US Core IG 7.0 (FHIR R4) | [https://hl7.org/fhir/us/core/](https://hl7.org/fhir/us/core/) | CL-16 | | US Behavioral Health Profiles IG (v0.1.0) | [https://build.fhir.org/ig/HL7/us-behavioral-health-profiles/](https://build.fhir.org/ig/HL7/us-behavioral-health-profiles/) | CL-16 | | Da Vinci PAS STU 2.1 | [https://hl7.org/fhir/us/davinci-pas](https://hl7.org/fhir/us/davinci-pas) | PM-10 | | Da Vinci CRD STU 2.0.1 | [https://hl7.org/fhir/us/davinci-crd](https://hl7.org/fhir/us/davinci-crd) | PM-10 | | Da Vinci DTR STU 2.0.0 | [https://hl7.org/fhir/us/davinci-dtr](https://hl7.org/fhir/us/davinci-dtr) | PM-10 | | LOINC | [https://loinc.org/](https://loinc.org/) | CL-09, PF-70 | | NLM RxNorm | [https://www.nlm.nih.gov/research/umls/rxnorm/](https://www.nlm.nih.gov/research/umls/rxnorm/) | CL-05, CL-06 | ## Platform Foundation (Accessibility & Data) | Source | URL | Used By | | ----------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------ | | HHS Section 504: Web Accessibility Rule (WCAG 2.1 AA) | [https://www.hhs.gov/civil-rights/for-individuals/disability/index.html](https://www.hhs.gov/civil-rights/for-individuals/disability/index.html) | PF (platform-wide) | | W3C: WCAG 2.1 | [https://www.w3.org/TR/WCAG21/](https://www.w3.org/TR/WCAG21/) | PF (platform-wide) | | ADA.gov: Web Accessibility Guidance | [https://www.ada.gov/resources/web-guidance/](https://www.ada.gov/resources/web-guidance/) | PF (platform-wide) | ## Community Engagement (Communications) | Source | URL | Used By | | -------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | | FTC: CAN-SPAM Act Compliance Guide | [https://www.ftc.gov/business-guidance/resources/can-spam-act-compliance-guide-business](https://www.ftc.gov/business-guidance/resources/can-spam-act-compliance-guide-business) | CE-09 | | FCC: Do Not Call Registry | [https://www.donotcall.gov/](https://www.donotcall.gov/) | CE-10 | | Arizona ARS 13-3005 (Call Recording / Wiretapping) | [https://www.azleg.gov/ars/13/03005.htm](https://www.azleg.gov/ars/13/03005.htm) | CE-10 | | HIPAA Marketing Authorization (45 CFR 164.508) | [https://www.hhs.gov/hipaa/for-professionals/privacy/guidance/marketing/index.html](https://www.hhs.gov/hipaa/for-professionals/privacy/guidance/marketing/index.html) | CE-09 | ## ONC Certification Criteria | Source | URL | Used By | | --------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------- | | ONC Health IT Certification (45 CFR Part 170) | [https://www.healthit.gov/topic/certification-ehrs/certification-criteria](https://www.healthit.gov/topic/certification-ehrs/certification-criteria) | PF, CL-16, PM-01 | ## IT and Security | Source | URL | Used By | | --------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | | HIPAA Security Rule (45 CFR 164 Subpart C) | [https://www.hhs.gov/hipaa/for-professionals/security/index.html](https://www.hhs.gov/hipaa/for-professionals/security/index.html) | IT-05 | | NIST SP 800-66r2 (Implementing HIPAA Security Rule) | [https://csrc.nist.gov/pubs/sp/800/66/r2/final](https://csrc.nist.gov/pubs/sp/800/66/r2/final) | IT-05 | | NIST Cybersecurity Framework 2.0 | [https://www.nist.gov/cyberframework](https://www.nist.gov/cyberframework) | IT-05 | | CIS Critical Security Controls v8 | [https://www.cisecurity.org/controls](https://www.cisecurity.org/controls) | IT-05 | | HITECH Act (Enforcement) | [https://www.hhs.gov/hipaa/for-professionals/special-topics/hitech-act-enforcement-interim-final-rule/index.html](https://www.hhs.gov/hipaa/for-professionals/special-topics/hitech-act-enforcement-interim-final-rule/index.html) | IT-05 | | HHS: Breach Notification Rule | [https://www.hhs.gov/hipaa/for-professionals/breach-notification/index.html](https://www.hhs.gov/hipaa/for-professionals/breach-notification/index.html) | IT-05 | | Arizona ARS 18-552 (Data breach notification) | [https://www.azleg.gov/ars/18/00552.htm](https://www.azleg.gov/ars/18/00552.htm) | IT-05 | | PCI Security Standards Council | [https://www.pcisecuritystandards.org/](https://www.pcisecuritystandards.org/) | IT-05 | ## Clinical Instruments | Source | URL | Used By | | ---------------------------- | ------------------------------------------------------------------------ | ------------------- | | Columbia C-SSRS | [https://cssrs.columbia.edu/](https://cssrs.columbia.edu/) | CL-07 | | PHQ Screeners (PHQ-9, GAD-7) | [https://www.phqscreeners.com/](https://www.phqscreeners.com/) | CL-02, CL-07, CL-10 | | ASAM Criteria | [https://www.asam.org/asam-criteria](https://www.asam.org/asam-criteria) | CL-02 | ## Content Licensing and Terminology | Content | License Source | Cost | URL | Status | | ----------------------- | ---------------------- | -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | ----------------- | | LOINC | Regenstrief Institute | Free | [https://loinc.org/get-started/loinc-license/](https://loinc.org/get-started/loinc-license/) | Not yet obtained | | SNOMED CT US Edition | NLM UMLS Metathesaurus | Free (US) | [https://www.nlm.nih.gov/databases/umls.html](https://www.nlm.nih.gov/databases/umls.html) | Not yet obtained | | RxNorm | NLM | Free | [https://www.nlm.nih.gov/research/umls/rxnorm/](https://www.nlm.nih.gov/research/umls/rxnorm/) | Not yet obtained | | ICD-10-CM | CMS | Free | [https://www.cms.gov/medicare/coding-billing/icd-10-codes](https://www.cms.gov/medicare/coding-billing/icd-10-codes) | Available | | CPT | AMA | $500–$3,500/yr | [https://www.ama-assn.org/practice-management/cpt](https://www.ama-assn.org/practice-management/cpt) | Not yet licensed | | CVX/MVX (vaccine codes) | CDC | Free | [https://www2a.cdc.gov/vaccines/iis/iisstandards/vaccines.asp?rpt=cvx](https://www2a.cdc.gov/vaccines/iis/iisstandards/vaccines.asp?rpt=cvx) | Not yet obtained | | NCPDP SCRIPT | NCPDP | Membership required | [https://www.ncpdp.org/](https://www.ncpdp.org/) | Not yet licensed | | Surescripts | Surescripts | Staged certification | [https://surescripts.com/enhance-prescribing/e-prescribing](https://surescripts.com/enhance-prescribing/e-prescribing) | Not yet certified | **Action:** Obtain NLM UMLS license within 30 days (prerequisite for SNOMED CT, RxNorm, LOINC distribution in production). ## ONC Certification and Interoperability Tools | Resource | URL | Used By | | ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------- | | Inferno Framework | [https://inferno.healthit.gov/](https://inferno.healthit.gov/) | CL-16, PM-55 (g)(10) testing | | SITE / Edge Testing Tool | [https://site.healthit.gov/](https://site.healthit.gov/) | CL-48 C-CDA, Direct testing | | Cypress (CQM testing) | [https://www.healthit.gov/cypress/](https://www.healthit.gov/cypress/) | CL-51 CQM testing | | eRx Testing Suite | [https://erx.healthit.gov/](https://erx.healthit.gov/) | CL-06 e-prescribing | | CHPL (Certified Health IT Products List) | [https://chpl.healthit.gov/](https://chpl.healthit.gov/) | Market reference | | ONC Conformance Test Tools | [https://healthit.gov/certification-health-it/certification-process/onc-conformance-test-tools/](https://healthit.gov/certification-health-it/certification-process/onc-conformance-test-tools/) | All criteria | | Drummond Group (ATL/ACB) | [https://www.drummondgroup.com/](https://www.drummondgroup.com/) | Certification engagement | | USCDI v3 Data Classes | [https://www.healthit.gov/isa/united-states-core-data-interoperability-uscdi#uscdi-v3](https://www.healthit.gov/isa/united-states-core-data-interoperability-uscdi#uscdi-v3) | CL-16, PM-55 | | US Core 6.1.0 IG | [https://hl7.org/fhir/us/core/STU6.1/](https://hl7.org/fhir/us/core/STU6.1/) | FHIR profile conformance | | SMART App Launch v2 | [https://hl7.org/fhir/smart-app-launch/STU2/](https://hl7.org/fhir/smart-app-launch/STU2/) | PM-55 OAuth | | USCDI+ BH (SAMHSA/ONC) | [https://uscdiplus.healthit.gov/uscdi](https://uscdiplus.healthit.gov/uscdi) | CL-16-EN-03 | ## Beyond-ONC Compliance | Resource | URL | Used By | | --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------- | | HITRUST Alliance | [https://hitrustalliance.net/](https://hitrustalliance.net/) | PF-109 | | DEA EPCS (21 CFR 1311) | [https://www.deadiversion.usdoj.gov/ecomm/e\_rx/](https://www.deadiversion.usdoj.gov/ecomm/e_rx/) | CL-64 | | EKRA (18 U.S.C. § 220) | [https://uscode.house.gov/view.xhtml?req=granuleid:USC-prelim-title18-section220](https://uscode.house.gov/view.xhtml?req=granuleid:USC-prelim-title18-section220) | PF-107 | | Contexture (Health Current) | [https://contexture.org/](https://contexture.org/) | PF-108 | | AHCCCS DAP Program | [https://www.azahcccs.gov/AHCCCS/Initiatives/HIT/](https://www.azahcccs.gov/AHCCCS/Initiatives/HIT/) | PF-108 | | SAMHSA SUPTRS/TEDS | [https://www.samhsa.gov/data/data-we-collect](https://www.samhsa.gov/data/data-we-collect) | GR-26 | ## Recommendations and Analysis * [PM-CL cross-core implementation plan](https://github.com/Encore-OS/encoreos/blob/development/specs/reviews/CL-PM-IMPLEMENTATION-PLAN.md) -- Rollout plan referencing PM/CL gap work (CL-21/22/23, PM-16/17 proposals) * [ONC Regulatory Readiness Implementation Plan](/compliance/ONC_REGULATORY_READINESS_IMPLEMENTATION_PLAN) -- Skills, specs, and phased roadmap # CE Communications Compliance Tracking Source: https://docs.encoreos.io/compliance/CE_COMMUNICATIONS_COMPLIANCE_TRACKING This document tracks communications and marketing compliance for the CE module, which manages CRM, campaigns, SMS messaging, call tracking, and community outre… > **Cross-References:** > > * [REGULATORY\_COMPLIANCE\_TRACKER.md](/compliance/REGULATORY_COMPLIANCE_TRACKER) — Master compliance tracker > * [FCRA\_TCPA\_COMPLIANCE\_TRACKING.md](/compliance/FCRA_TCPA_COMPLIANCE_TRACKING) — HR TCPA tracking (SMS consent patterns applicable to CE) > * `docs/compliance/AUTHORITATIVE_REFERENCES.md` — Authoritative External References *** ## Overview This document tracks communications and marketing compliance for the CE module, which manages CRM, campaigns, SMS messaging, call tracking, and community outreach. Key regulations include CAN-SPAM (email), TCPA (SMS/telephony), Arizona call recording law, and FCC telemarketing rules. Where CE handles PHI or SUD-related communications, HIPAA and 42 CFR Part 2 also apply. *** ## 1. CAN-SPAM Act (Commercial Email) | # | Requirement | Responsible Spec | Status | Notes | | ----- | --------------------------------------------------------------------------------------------------- | ---------------- | ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | | CS-01 | **Accurate header information** — From, To, Reply-To must accurately identify sender | CE-09 | ⏳ Not Started | Email template validation; org-level sender configuration | | CS-02 | **Non-deceptive subject lines** — Subject must reflect message content | CE-09 | ⏳ Not Started | Campaign review workflow; template approval | | CS-03 | **Advertisement identification** — Clearly identify commercial messages as advertisements | CE-09 | ⏳ Not Started | Auto-label commercial campaigns; transactional messages exempt | | CS-04 | **Physical address** — Include valid postal address in every commercial email | CE-09 | ⏳ Not Started | Org address auto-inserted in email footer | | CS-05 | **Unsubscribe mechanism** — Conspicuous opt-out; honor within 10 business days | CE-09, **CE-16** | ⏳ Not Started | CE-09 owns unsubscribe link in emails; CE-16 owns unified suppression registry (`ce_suppressions`) that records opt-outs and enforces pre-send blocks | | CS-06 | **Opt-out list management** — Maintain and honor suppression lists; no sharing | CE-09, **CE-16** | ⏳ Not Started | CE-16 centralizes opt-out list management via `ce_suppressions` (suppress\_email=true); CE-09 consumes via pre-send check | | CS-07 | **HIPAA marketing overlay** — PHI-based marketing requires patient authorization per 45 CFR 164.508 | CE-09, PF-44 | 📋 Policy | CE campaigns must not use PHI for marketing without authorization | *** ## 2. TCPA (SMS and Telephony) | # | Requirement | Responsible Spec | Status | Notes | | ----- | ----------------------------------------------------------------------------------------------- | ---------------- | -------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | | TC-01 | **Express written consent** — Obtain prior express written consent before sending automated SMS | CE-08, **CE-16** | 🔜 In Progress | CE-08 EN send gate now enforces local consent/opt-out fallback (shim) before send. CE-16 registry remains canonical target for finalized evidence pipeline. | | TC-02 | **Consent per message type** — Separate consent for marketing vs transactional messages | CE-08, **CE-16** | 🔜 In Progress | CE-08 EN send gate enforces marketing consent requirement (`messageType=marketing`) and fail-closed opt-out handling in current slice. | | TC-03 | **STOP keyword opt-out** — Honor STOP replies immediately | CE-08, **CE-16** | ⏳ Not Started | CE-08 processes inbound STOP webhook; CE-16 records suppression in `ce_suppressions` (reason='stop\_keyword') and blocks future sends | | TC-04 | **Opt-out confirmation** — Single confirmation message upon opt-out | CE-08, **CE-16** | ⏳ Not Started | CE-08 sends confirmation; CE-16 records consent withdrawal evidence in `ce_consent_evidence` (action='withdrawn') | | TC-05 | **Business hours** — Send messages only during appropriate hours (8am-9pm recipient local time) | CE-08 | 🔜 In Progress | CE-08 EN scheduled execution now applies TCPA 8am-9pm local-time floor and re-queues outside-window sends. | | TC-06 | **Sender identification** — Identify organization in every message | CE-08 | 🔜 In Progress | Shared send gate now injects organization identifier prefix in outbound message normalization. | | TC-07 | **10DLC/A2P registration** — Register for A2P 10DLC with carrier to avoid filtering | CE-08 | ⏳ Not Started | Carrier registration required before production SMS | | TC-08 | **No PHI in SMS** — Messages must not contain PHI | CE-08, PF-44 | 🔜 In Progress | Send gate and MMS path now warn/block per org PHI mode; MMS UI adds explicit PHI media safeguard warning and server-side MIME/size validation metadata checks. | *** ## 3. Arizona Call Recording (ARS 13-3005, HB 2038) | # | Requirement | Responsible Spec | Status | Notes | | ----- | --------------------------------------------------------------------------------------------------------------------------- | --------------------- | ------------- | ------------------------------------------------------------------- | | CR-01 | **One-party consent** — Arizona is one-party consent; at least one party must consent to recording | CE-10 (if applicable) | 📋 Policy | Staff making calls are the consenting party | | CR-02 | **Notice requirement (HB 2038, 2024)** — Must provide notice to all parties before recording wire/electronic communications | CE-10 | ⏳ Not Started | Auto-play recording notice at call start; log acknowledgment | | CR-03 | **Interstate calls** — Two-party consent states may require all-party consent | CE-10 | 📋 Policy | Default to all-party notice for out-of-state calls; policy guidance | | CR-04 | **Recording retention** — Store recordings securely; comply with data retention policies | CE-10, IT-05 | ⏳ Not Started | Encrypted storage; retention schedule per policy | *** ## 4. FCC Telemarketing Rules | # | Requirement | Responsible Spec | Status | Notes | | ------ | -------------------------------------------------------------------------------------- | ----------------------- | -------------- | ----------------------------------------------------------------------------------------------------------------------------------- | | FCC-01 | **National Do Not Call Registry** — Check DNC registry before outbound marketing calls | CE-10, **CE-16** | ⏳ Not Started | CE-16 owns DNC registry CSV import and creates suppression records (source='dnc\_registry'); CE-10 calls pre-send check before dial | | FCC-02 | **Internal Do Not Call list** — Maintain and honor organization's internal DNC list | CE-10, CE-08, **CE-16** | ⏳ Not Started | CE-16 owns internal DNC list via `ce_suppressions` (suppress\_phone=true); CE-10/CE-08 consume via suppression check API | | FCC-03 | **Caller ID** — Transmit accurate caller ID information | CE-10 | 📋 Operational | Telephony provider configuration | | FCC-04 | **Calling hours** — Outbound marketing calls only 8am-9pm recipient local time | CE-10 | ⏳ Not Started | Time zone-aware scheduling | *** ## 5. Charitable Solicitation (if applicable) | # | Requirement | Responsible Spec | Status | Notes | | ----- | ------------------------------------------------------------------------------------------ | ---------------- | -------------------- | -------------------------------------------------------------------- | | CH-01 | **State registration** — Register in states where soliciting donations (if applicable) | CE-09 | 📋 Assessment needed | Applicable only if CE module supports fundraising/donation campaigns | | CH-02 | **Disclosure requirements** — Disclose registration status and use of funds where required | CE-09 | 📋 Assessment needed | State-specific requirements vary | *** ## 6. Lead Conversion & PHI Handling (CE-29) | # | Requirement | Responsible Spec | Status | Notes | | ----- | -------------------------------------------------------------------------------------------------------------------------- | ---------------- | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | LC-01 | **No PHI in event payloads** — Conversion events contain IDs only (lead\_id, contact\_id, org\_id) | CE-29 | ✅ Verified | Event payloads in `useLeadMutations.ts` contain IDs only per CE-01 pattern | | LC-02 | **Sanitized error messages** — User-facing errors use `sanitizeErrorMessage()` | CE-29 | ✅ Verified | `onError` handler uses `sanitizeErrorMessage(error)` | | LC-03 | **No PHI in toast notifications** — Toast messages use static strings | CE-29 | ✅ Verified | Success/error toasts use hardcoded descriptions | | LC-04 | **INSERT-only audit table** — `ce_lead_conversions` has no UPDATE/DELETE RLS policies; explicit deny policies added | CE-29 | ✅ Verified | RLS: SELECT + INSERT only; explicit UPDATE/DELETE deny policies; immutable for 7-year retention | | LC-05 | **42 CFR Part 2 — SUD data gating** — Conversion payloads must not include SUD screening data without consent verification | CE-29, CE-28 | 📋 Deferred | CE-28 screening UI not yet implemented; conversion payloads carry IDs only (no SUD content). Consent gating required when CE-28 wires screening data into conversion flow. | | LC-06 | **Conversion notes character limit** — Notes capped at 500 chars to reduce PHI exposure risk | CE-29 | ✅ Verified | `Textarea maxLength={500}` with character counter | *** ## 7. AI Triage PHI & SUD Compliance (CE-54) | # | Requirement | Responsible Spec | Status | Notes | | ----- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------- | -------- | ------------------------------------------------------------------------------------- | | AI-01 | **No PHI in AI prompts** — AI payload uses structured criteria only (insurance type, diagnosis category, demographics bucket); no names, DOBs, SSNs, addresses, or free-text clinical notes | CE-54, PF-27 | 📋 Draft | Constitution §4.3.2; `_shared/phi-detection.ts` validates payload before transmission | | AI-02 | **SUD consent gating (server-side)** — Edge function checks `consent_obtained = true AND consent_method IS NOT NULL` on `ce_screening_attempts` before including SUD fields; not bypassable from client | CE-54, CL-11 | 📋 Draft | 42 CFR Part 2 § 2.31; server-side enforcement in `ai-triage-evaluate` edge function | | AI-03 | **Blocked SUD attempts audit-logged** — Blocked SUD processing creates `pf_audit_logs` entry with timestamp, user\_id, screening\_attempt\_id, action | CE-54 | 📋 Draft | 42 CFR Part 2 § 2.13 | | AI-04 | **PHI detection on AI response** — AI response validated by `_shared/phi-detection.ts` before storage; PHI-detected responses rejected and audit-logged | CE-54 | 📋 Draft | HIPAA Privacy Rule; re-disclosure prevention per § 2.32 | | AI-05 | **Structured output prevents re-disclosure** — Tool-calling schema constrains AI output to enumerated fields; no free-text SUD content in stored responses | CE-54 | 📋 Draft | 42 CFR Part 2 § 2.32 | | AI-06 | **Model metadata audit trail** — Every AI triage run records model\_id, model\_version, prompt\_version, processing\_time\_ms, user\_id, organization\_id | CE-54 | 📋 Draft | HIPAA Security Rule audit controls; Constitution §4.3.7 | | AI-07 | **Permission-gated access** — `ce.triage.view`, `ce.triage.run`, `ce.triage.decide`, `ce.triage.manage` enforced via `pf_has_permission()` | CE-54, PF-30 | 📋 Draft | HIPAA Security Rule access controls | | AI-08 | **Auth verification** — Edge function validates auth via `verifyOrgAccess()` from `_shared/auth.ts`; unauthenticated calls return 401 | CE-54 | 📋 Draft | Constitution §4.3; HIPAA Security Rule | ### CE-54 Initial Release Compliance Gate (Required Before Phase 1 Build) * AI-01 through AI-08 are release-blocking controls for the initial CE-54 launch; they are not deferred to follow-up patches. * `ai-triage-evaluate` must enforce SUD consent gating exactly as specified: `consent_obtained = true AND consent_method IS NOT NULL` before including SUD-tagged fields in prompts. * `_shared/phi-detection.ts` must be wired on both request payload preflight and AI response post-processing; PHI detections must reject processing/storage. * Blocked SUD attempts and PHI rejections must create `pf_audit_logs` entries; edge-function auth and authorization must enforce `verifyOrgAccess()` + `pf_has_permission()` for all CE-54 triage actions. * Every AI run must persist model metadata (`model_id`, `model_version`, `prompt_version`, `processing_time_ms`, `user_id`, `organization_id`) in CE-54 audit/result records. * CE-54 spec, schema migrations, and RLS policies must include the controls above before release promotion; **firm deployment target:** `2026-06-30` (SUD-handling compliance gate). *** ## 8. Authoritative External References | Source | URL | Used By | | ------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------- | | FTC: CAN-SPAM Act Compliance Guide | [https://www.ftc.gov/business-guidance/resources/can-spam-act-compliance-guide-business](https://www.ftc.gov/business-guidance/resources/can-spam-act-compliance-guide-business) | CE-09 | | FCC: TCPA Rules and Consent | [https://www.fcc.gov/document/rules-and-regulations-implementing-telephone-consumer-protection-act-22](https://www.fcc.gov/document/rules-and-regulations-implementing-telephone-consumer-protection-act-22) | CE-08 | | FCC: National Do Not Call Registry | [https://www.donotcall.gov/](https://www.donotcall.gov/) | CE-10 | | Arizona ARS 13-3005 (Wiretapping/Recording) | [https://www.azleg.gov/ars/13/03005.htm](https://www.azleg.gov/ars/13/03005.htm) | CE-10 | | Arizona HB 2038 (2024 recording notice amendment) | [https://www.azleg.gov/legtext/56leg/2r/bills/hb2038h.pdf](https://www.azleg.gov/legtext/56leg/2r/bills/hb2038h.pdf) | CE-10 | | HIPAA Marketing Authorization (45 CFR 164.508) | [https://www.hhs.gov/hipaa/for-professionals/privacy/guidance/marketing/index.html](https://www.hhs.gov/hipaa/for-professionals/privacy/guidance/marketing/index.html) | CE-09 | *** ## 9. Periodic Review Schedule | Review | Frequency | Next Due | Owner | | ---------------------------------- | --------- | ------------------ | ------------------ | | CAN-SPAM compliance audit | Quarterly | ****/****/\_\_\_\_ | Marketing Director | | TCPA consent mechanism review | Quarterly | ****/****/\_\_\_\_ | Compliance Officer | | DNC list synchronization | Monthly | ****/****/\_\_\_\_ | Marketing Director | | Call recording notice verification | Quarterly | ****/****/\_\_\_\_ | Compliance Officer | | Charitable solicitation assessment | Annually | ****/****/\_\_\_\_ | Legal Counsel | | Lead conversion PHI audit | Quarterly | ****/****/\_\_\_\_ | Compliance Officer | *** ## Version History ### 1.4.0 (2026-05-13) * Added CE-08-ENHANCEMENTS partial evidence for EN-01 + EN-02 execution slice: * shared pre-send compliance gate (local consent/opt-out shim), * MMS media constraints and PHI media warning, * scheduled send execution-time consent and TCPA window checks. * Updated TCPA rows TC-01, TC-02, TC-05, TC-06, and TC-08 to `🔜 In Progress` with current slice evidence notes. ### 1.3.0 (2026-05-12) * Added Section 7: AI Triage PHI & SUD Compliance (CE-54) * 8 compliance requirements tracked for AI triage pipeline (PHI in prompts, SUD consent gating, re-disclosure prevention, audit trail) * Renumbered §8 → §9 (Periodic Review) ### 1.2.0 (2026-03-30) * Merged duplicate §6/§7 (external references) and §7/§8 (periodic review) into canonical sections * Updated LC-04 to reflect explicit deny policies for UPDATE/DELETE * Renumbered sections for consistency ### 1.1.0 (2026-03-28) * Added Section 6: Lead Conversion & PHI Handling (CE-29) * 6 compliance requirements tracked for conversion pipeline * PHI audit verified: event payloads, error messages, toasts, audit immutability ### 1.0.0 (2026-02-27) * Initial CE communications compliance document * Covers CAN-SPAM, TCPA (SMS), Arizona call recording (ARS 13-3005, HB 2038), FCC telemarketing, charitable solicitation * 25+ compliance requirements tracked across 5 categories *** **Last Updated:** 2026-05-13 **Next Review:** 2026-08-12 # FA Financial Compliance Tracking Source: https://docs.encoreos.io/compliance/FA_FINANCIAL_COMPLIANCE_TRACKING This document tracks Finance & Accounting (FA) regulatory compliance: IRS tax reporting, GAAP/FASB ASC 958 nonprofit reporting, OMB Uniform Guidance (grant com… > **Cross-References:** > > * [REGULATORY\_COMPLIANCE\_TRACKER.md](/compliance/REGULATORY_COMPLIANCE_TRACKER) — FA section and status legend > * `docs/compliance/AUTHORITATIVE_REFERENCES.md` — Authoritative External References (Finance & Accounting Compliance) > * [FA-10 Tax Reporting & Compliance](https://github.com/Encore-OS/encoreos/blob/development/specs/fa/specs/FA-10-tax-reporting-compliance.md) > * [FA-23 Financial Statement Customization (ASC 958)](https://github.com/Encore-OS/encoreos/blob/development/specs/fa/specs/FA-23-financial-statement-customization.md) > * [FA-25 Financial Audit Trail & Compliance Reports](https://github.com/Encore-OS/encoreos/blob/development/specs/fa/specs/FA-25-financial-audit-trail.md) > * [FA-13 Project Accounting & Grant Tracking](https://github.com/Encore-OS/encoreos/blob/development/specs/fa/specs/FA-13-project-accounting-grant-tracking.md) > * **Latest deep review:** [`specs/fa/reports/fa-deep-review-20260417.md`](https://github.com/Encore-OS/encoreos/blob/development/specs/fa/reports/fa-deep-review-20260417.md) — companion: [actions](https://github.com/Encore-OS/encoreos/blob/development/specs/fa/reports/fa-deep-review-actions-20260417.md) > > **Published documentation hub** (audited 2026-04-18): > > * **End-user / admin guides:** [`packages/docs/docs/finance/`](https://github.com/Encore-OS/encoreos/tree/development/packages/docs/docs/finance) (32 user + 20 admin + 15 planned, with cross-links to the controls below) > * **Developer reference:** [`packages/docs/docs/developer/fa/`](https://github.com/Encore-OS/encoreos/tree/development/packages/docs/docs/developer/fa) (architecture, hooks, services, events, schema, edge-functions, security-model) > * **Security & compliance hub (this tracker's user-facing companion):** [`packages/docs/docs/security-compliance/fa/`](https://github.com/Encore-OS/encoreos/tree/development/packages/docs/docs/security-compliance/fa) > * [Overview](https://github.com/Encore-OS/encoreos/blob/development/packages/docs/docs/security-compliance/fa/overview.md) > * [Internal Controls](https://github.com/Encore-OS/encoreos/blob/development/packages/docs/docs/security-compliance/fa/internal-controls.md) — append-only ledger / period close / SoD > * [IRS Tax Reporting](https://github.com/Encore-OS/encoreos/blob/development/packages/docs/docs/security-compliance/fa/irs-tax-reporting.md) — companion to §1 > * [GAAP / ASC 958](https://github.com/Encore-OS/encoreos/blob/development/packages/docs/docs/security-compliance/fa/gaap-asc-958.md) — companion to §2 > * [OMB 2 CFR 200 Grants](https://github.com/Encore-OS/encoreos/blob/development/packages/docs/docs/security-compliance/fa/omb-2-cfr-200-grants.md) — companion to §3 > * [Vendor Data Handling](https://github.com/Encore-OS/encoreos/blob/development/packages/docs/docs/security-compliance/fa/vendor-data-handling.md) — financial PII (W-9 / SSN / EIN / NACHA / Plaid tokens) > * [PCI-DSS](https://github.com/Encore-OS/encoreos/blob/development/packages/docs/docs/security-compliance/fa/pci-dss.md) — current posture + FA-32 roadmap > * [Role Matrix](https://github.com/Encore-OS/encoreos/blob/development/packages/docs/docs/security-compliance/fa/role-matrix.md) — PF-30 permission keys × roles > * [RLS Catalog](https://github.com/Encore-OS/encoreos/blob/development/packages/docs/docs/security-compliance/fa/rls-catalog.md) — `fa_*` table RLS posture > * [Audit Logs](https://github.com/Encore-OS/encoreos/blob/development/packages/docs/docs/security-compliance/fa/audit-logs.md) — companion to §4.1 > > **Proposed specs to close named gaps in this tracker** (from 2026-04-17 deep review): > > * **FA-36 Federal Financial Reporting (FFR / SF-425, SEFA, Single Audit)** — closes §3.2 + §3.3 ("⏳ Not Started — No spec"). Preview: [`/docs/finance/planned/federal-financial-reporting`](https://github.com/Encore-OS/encoreos/blob/development/packages/docs/docs/finance/planned/federal-financial-reporting.md). > * **FA-37 Subrecipient & Vendor Compliance (SAM.gov / OFAC / W-9)** — closes §3.5 ("⏳ Not Started"). Preview: [`/docs/finance/planned/subrecipient-vendor-compliance`](https://github.com/Encore-OS/encoreos/blob/development/packages/docs/docs/finance/planned/subrecipient-vendor-compliance.md). > * **FA-38 ASC 842 Lease Accounting** — closes the "ASC 842 absent" gap noted in deep review Part 5. Preview: [`/docs/finance/planned/asc-842-lease-accounting`](https://github.com/Encore-OS/encoreos/blob/development/packages/docs/docs/finance/planned/asc-842-lease-accounting.md). > * **FA-39 Bill Pay & Vendor Payment Rails (Bill.com / Mercury)** — supports NACHA + check + wire end-to-end. Preview: [`/docs/finance/planned/bill-pay-vendor-rails`](https://github.com/Encore-OS/encoreos/blob/development/packages/docs/docs/finance/planned/bill-pay-vendor-rails.md). > * **FA-40 Multi-State Payroll Tax Withholding (PF-96-aligned)** — closes §1.2 multi-state row. Preview: [`/docs/finance/planned/multi-state-payroll`](https://github.com/Encore-OS/encoreos/blob/development/packages/docs/docs/finance/planned/multi-state-payroll.md). > * **FA-EN-14 SoD Report + Auditor Export Bundle** — closes §4.1 (SoD report and auditor export, "⏳ Not Started"). *** ## Overview This document tracks Finance & Accounting (FA) regulatory compliance: IRS tax reporting, GAAP/FASB ASC 958 nonprofit reporting, OMB Uniform Guidance (grant compliance), and financial internal controls. Status and interim procedures are summarized in the main [REGULATORY\_COMPLIANCE\_TRACKER.md](/compliance/REGULATORY_COMPLIANCE_TRACKER); this document provides detailed requirements and authoritative references. *** ## 1. IRS Tax Reporting Compliance Federal and state tax form generation and filing obligations supported by FA-10 (Tax Reporting & Compliance). FA-10 integrates with HR-07 (Payroll) for W-2 and 941/940 data. ### 1.1 Information Returns (1099-MISC / 1099-NEC) | Requirement | Deadline | Spec | Status | Notes | | -------------------------------------------- | --------------------------------------------- | ------------ | ---------------- | ----------------------------------------------- | | 1099-MISC/NEC generation for vendors ≥ \$600 | Jan 31 (filer copy); recipient copy by Jan 31 | FA-10 | 🟡 Partial (85%) | Generate via FA-10; e-file submission deferred. | | W-9 collection and TIN validation | Before payment / year-end | FA-03, FA-10 | 🟡 Partial | Vendor TIN stored; validation per FA-10. | | IRS e-file (FIRE/IRIS or Publication 1220) | Jan 31 | FA-10 | ⏳ Deferred | Interim: file paper or use third-party e-file. | ### 1.2 Wage and Payroll Tax (W-2, 941, 940) | Requirement | Deadline | Spec | Status | Notes | | ---------------------------------------- | ----------------------------------- | ------------ | ---------- | --------------------------------------------------------- | | W-2 to employees | Jan 31 | FA-10, HR-07 | 🟡 Partial | Generate from HR-07 data; distribution tracking in FA-10. | | W-2 to SSA (e-file) | Jan 31 | FA-10 | ⏳ Deferred | Interim: file via SSA portal or third party. | | Form 941 (quarterly federal payroll tax) | Last day of month after quarter end | FA-10 | 🟡 Partial | Prepare from payroll data; e-file deferred. | | Form 940 (annual FUTA) | Jan 31 | FA-10 | 🟡 Partial | Annual filing; e-file deferred. | | State payroll tax reports | Varies by state | FA-10 | 🟡 Partial | Multi-state withholding enhancements deferred. | ### 1.3 Out of Scope (per FA-10) * **Form 990** (annual information return for nonprofits) — Handled by external CPA. **Filing thresholds:** Form 990-N (gross receipts ≤ $50K); Form 990-EZ (receipts < $200K and assets \< $500K); Form 990 (receipts ≥ $200K or assets ≥ \$500K). FA-23 supports functional expense categorization (Program Services, G\&A, Fundraising) for 990 input; return preparation remains external. * **Form 990-T / Arizona Form 99T** (unrelated business income) — If unrelated business income is ≥ \$1,000, file 990-T (federal) and Arizona Form 99T; out of scope for FA-10; handle externally. * **Form 1040 / corporate tax returns** — Prepared externally. *** ## 2. GAAP / FASB ASC 958 Compliance Nonprofit financial reporting standards. Behavioral health and recovery housing organizations typically report under FASB ASC 958 (Not-for-Profit Entities). ### 2.1 Financial Statements | Requirement | Spec | Status | Notes | | --------------------------------------------------------- | ----- | ----------- | -------------------------------------------------------- | | Statement of Financial Position (balance sheet) | FA-23 | ✅ Compliant | Net assets with/without donor restrictions per ASC 958. | | Statement of Activities (with/without donor restrictions) | FA-23 | ✅ Compliant | ASC 958-aligned presentation. | | Statement of Functional Expenses | FA-23 | ✅ Compliant | Program, G\&A, Fundraising for Form 990 alignment. | | Trial Balance, fund-based reporting | FA-07 | 🟡 Planned | Core reporting in place; custom report builder deferred. | | Cash flow statement (indirect method) | FA-07 | 🟡 Planned | Per FA-07 spec. | ### 2.2 Fund Accounting | Requirement | Spec | Status | Notes | | ------------------------------------------ | ------------ | ----------- | ------------------------------------- | | Fund structure (unrestricted / restricted) | FA-01 | ✅ Compliant | Chart of accounts and fund hierarchy. | | Transaction-level fund tracking | FA-02 | ✅ Compliant | All GL entries carry fund\_id. | | Period close and lock | FA-02, FA-19 | ✅ Compliant | Prevents posting to closed periods. | *** ## 3. Grant Compliance (OMB Uniform Guidance — 2 CFR 200) Federal grant recipients must comply with 2 CFR 200 (Uniform Administrative Requirements, Cost Principles, and Audit Requirements). FA-13 (Project Accounting & Grant Tracking) and FA-15 (Cost Allocation & Indirect Cost Rates) provide system support when implemented. ### 3.1 Allowable Costs and Cost Principles | Topic | Reference | Spec | Status | Notes | | ------------------------------------------- | ----------------- | ----- | ---------------- | ---------------------------------------------------------- | | Allowable cost categories (200.420–200.475) | 2 CFR 200 | FA-13 | ⏳ Not Started | Policy enforcement; FA-13 supports project-level tracking. | | Indirect cost rates (NICRA, de minimis 10%) | 2 CFR 200.414 | FA-15 | 🟡 Partial (90%) | IDC pools and allocation; NICRA proposal export deferred. | | Time and effort reporting | 2 CFR 200.430–431 | FA-13 | ⏳ Not Started | No dedicated spec; interim manual certification. | | Procurement standards | 2 CFR 200.317–327 | FA-04 | ✅ Compliant | PO approval, 3-way match; competitive bidding deferred. | ### 3.2 Single Audit (2 CFR 200 Subpart F) | Requirement | Spec | Status | Notes | | ------------------------------------------------- | ------- | ------------- | ----------------------------------------------------------------- | | Schedule of Expenditures of Federal Awards (SEFA) | No spec | ⏳ Not Started | Prepare manually or via external auditor until dedicated spec. | | Single Audit (when federal awards > \$750K) | No spec | ⏳ Not Started | Support via data export and audit trail (FA-25 when implemented). | ### 3.3 Federal Financial Report (FFR/SF-425) Federal grant recipients (e.g. SAMHSA, other federal awardees) must submit the Federal Financial Report (FFR, SF-425) via the Payment Management System (PMS). | Requirement | Deadline | Spec | Status | Notes | | ---------------------- | --------------------------------------- | -------------------- | ------------- | ---------------------------------------------------------------------------- | | Annual FFR | 90 days after end of each budget period | FA-13 (data support) | ⏳ Not Started | No dedicated FFR spec. FA-13 project/grant data can support FFR preparation. | | Final FFR | 120 days after end of project period | FA-13 (data support) | ⏳ Not Started | Same as above. | | FFR submission via PMS | Per award terms | — | ⏳ Not Started | Submit via federal PMS; deadlines may vary by program (e.g. SAMHSA). | **Interim:** Prepare FFR from grant/project and GL data manually; submit via PMS. Implement FA-13 (Project Accounting & Grant Tracking) to improve data availability for FFR. ### 3.4 Record retention (2 CFR 200.334) Recipients and subrecipients must retain federal award records for **3 years from the date of submission of the final financial report** (2 CFR 200.334). Records must be retained longer if litigation, claims, or audit findings exist until resolution. **Alignment:** [FA-SECURITY-CONSIDERATIONS.md](/fa/security-considerations) requires audit logs to be retained for **7 years**, which satisfies and exceeds 2 CFR 200.334 for financial and compliance records. No additional tracker row required. **Reference:** eCFR [2 CFR 200.334](https://www.ecfr.gov/current/title-2/subtitle-A/chapter-II/part-200/subpart-D#p-200.334) — Retention requirements for records. ### 3.5 Subrecipient monitoring (pass-through entities) Under 2 CFR 200.331–200.332, pass-through entities must verify that subrecipients are not excluded (e.g. via SAM.gov), and ensure each subaward is clearly identified and documented (federal award id, subrecipient name/UEI, and other required information). | Requirement | Spec | Status | Notes | | ----------------------------------------- | ------- | ------------- | --------------------------------------------------------------------- | | SAM.gov exclusion/debarment verification | No spec | ⏳ Not Started | If org passes federal funds to subrecipients, verify before subaward. | | Subaward identification and documentation | No spec | ⏳ Not Started | Document subawards with required elements per 2 CFR 200.332. | **Interim:** If the organization passes federal funds to subrecipients: perform SAM.gov exclusion checks and maintain subaward documentation outside the system until a dedicated spec exists (future FA or GR). *** ### 4. Financial Controls & Audit Readiness Internal controls and audit trail support for external audits and SOX-analogous expectations (segregation of duties, immutable audit trail). **State and local — Arizona:** Arizona nonprofits must file an Annual Report with the Arizona Corporation Commission by the **formation anniversary date** (ARS 10-11622). Content includes directors/officers, principal office, activities, certificate of disclosure, and a statement that all corporate income tax returns have been filed. Extension up to 6 months available. No system automation; use org profile/board data. See Authoritative External References: Arizona Corporation Commission, ARS 10-11622. ### 4.1 Audit Trail and Reporting | Requirement | Spec | Status | Notes | | --------------------------------------------------- | ----- | ------------- | --------------------------------------------------------- | | Append-only general ledger (no destructive updates) | FA-02 | ✅ Compliant | Corrections via reversing entries. | | Journal entry audit trail (who, when, reversal ref) | FA-25 | ⏳ Not Started | Spec complete; implementation pending. | | Audit log viewer (filterable, searchable) | FA-25 | ⏳ Not Started | Phase 1 scope. | | Unposted entries report | FA-25 | ⏳ Not Started | Draft JEs with aging. | | Segregation of duties report | FA-25 | ⏳ Not Started | Phase 2; identify users who create and approve same type. | | Export-to-auditor package (PDF + CSV) | FA-25 | ⏳ Not Started | Phase 3. | ### 4.2 Period and Close Controls | Requirement | Spec | Status | Notes | | -------------------------------------------------- | ------------ | ----------- | ----------------------------------- | | Fiscal period status (open / soft\_close / closed) | FA-02, FA-19 | ✅ Compliant | Prevents posting to closed periods. | | Close checklist and task tracking | FA-19 | ✅ Compliant | Financial close management. | ### 4.3 Access and Security * **FA security:** [FA-SECURITY-CONSIDERATIONS.md](/fa/security-considerations) — Audit logs retained 7 years; permission-gated access to tax and financial data. * **HR offboarding:** Financial system access revoked on termination per SOX-related controls (see [HR\_IT\_OFFBOARDING.md](/architecture/integrations/HR_IT_OFFBOARDING)). *** ## 5. Authoritative External References Use these sources for implementation and spec review. Full table also in `docs/compliance/AUTHORITATIVE_REFERENCES.md` (Finance & Accounting Compliance). | Source | URL | Used By | | ----------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------- | | IRS Publication 1220 (1099 e-file specifications) | [https://www.irs.gov/pub/irs-pdf/p1220.pdf](https://www.irs.gov/pub/irs-pdf/p1220.pdf) | FA-10 | | IRS Publication 15-T (Federal Income Tax Withholding) | [https://www.irs.gov/ht/forms-pubs/about-publication-15-t](https://www.irs.gov/ht/forms-pubs/about-publication-15-t) | FA-10, HR-07 | | IRS FIRE (Filing Information Returns Electronically) | [https://www.irs.gov/e-file-providers/filing-information-returns-electronically-fire](https://www.irs.gov/e-file-providers/filing-information-returns-electronically-fire) | FA-10 | | IRS IRIS (E-file Information Returns) | [https://www.irs.gov/filing/e-file-information-returns-with-iris](https://www.irs.gov/filing/e-file-information-returns-with-iris) | FA-10 | | FASB ASC 958 (Not-for-Profit Entities) | [https://www.fasb.org/page/PageContent?pageId=/standards/accounting-standards-codification.html](https://www.fasb.org/page/PageContent?pageId=/standards/accounting-standards-codification.html) | FA-23, FA-07 | | OMB 2 CFR 200 (Uniform Administrative Requirements) | [https://www.ecfr.gov/current/title-2/subtitle-A/chapter-II/part-200](https://www.ecfr.gov/current/title-2/subtitle-A/chapter-II/part-200) | FA-13, FA-15 | | 2 CFR 200.334 (Record retention) | [https://www.ecfr.gov/current/title-2/subtitle-A/chapter-II/part-200/subpart-D#p-200.334](https://www.ecfr.gov/current/title-2/subtitle-A/chapter-II/part-200/subpart-D#p-200.334) | FA-13, grant compliance | | Single Audit (2 CFR 200 Subpart F) | [https://www.ecfr.gov/current/title-2/subtitle-A/chapter-II/part-200/subpart-F](https://www.ecfr.gov/current/title-2/subtitle-A/chapter-II/part-200/subpart-F) | FA-13 (future) | | SAMHSA Post-Award Reporting (FFR/SF-425) | [https://www.samhsa.gov/grants/grants-management/reporting-requirements](https://www.samhsa.gov/grants/grants-management/reporting-requirements) | FA-13 | | IRS Form 990 Instructions | [https://www.irs.gov/forms-pubs/about-form-990](https://www.irs.gov/forms-pubs/about-form-990) | FA-10 (deferred) | | Arizona Corporation Commission (Nonprofit) | [https://azcc.gov/divisions/corporations/](https://azcc.gov/divisions/corporations/) | FA (general) | | Arizona ARS 10-11622 (Annual report) | [https://www.azleg.gov/ars/10/11622.htm](https://www.azleg.gov/ars/10/11622.htm) | FA (state nonprofit) | *** ## Version History ### 1.1.0 (2026-02-27) * Added Federal Financial Report (FFR/SF-425) subsection and tracker row; SAMHSA FFR authoritative reference. * Added 2 CFR 200.334 record retention subsection and alignment with 7-year policy. * Added subrecipient monitoring (2 CFR 200.331–332) subsection; added pass-through branch to AGENTS.md decision tree. * Expanded Arizona ACC annual report in tracker and state/local note; added ARS 10-11622 reference. * Expanded Form 990 thresholds (990-N, 990-EZ, 990) and 990-T/AZ 99T in Out of scope. ### 1.0.0 (2026-02-27) * Initial FA financial compliance tracking document * IRS tax reporting (1099, W-2, 941, 940) per FA-10 * GAAP/FASB ASC 958 and fund accounting per FA-01, FA-02, FA-23, FA-07 * Grant compliance (OMB 2 CFR 200) and Single Audit per FA-13, FA-15 * Financial controls and audit readiness per FA-25, FA-19 * Authoritative external references aligned with AGENTS.md *** **Last Updated:** 2026-04-18 **Next Review:** 2026-05-27 # FCRA & TCPA Compliance Tracking Source: https://docs.encoreos.io/compliance/FCRA_TCPA_COMPLIANCE_TRACKING This document defines the mandatory compliance requirements and sign-off gates that must be satisfied before enabling Background Check (Checkr) and SMS notific… > **Cross-References:** > > * [Background Check Types](https://github.com/Encore-OS/encoreos/blob/development/src/cores/hr/types/background-checks.ts) - FCRA adverse action types > * [SMS Consent Types](https://github.com/Encore-OS/encoreos/blob/development/src/cores/hr/types/sms-consent.ts) - TCPA consent definitions > * ATS Background Check Architecture - Integration patterns *** ## Overview This document defines the mandatory compliance requirements and sign-off gates that must be satisfied before enabling Background Check (Checkr) and SMS notification features in production. Each gate requires documented approval from the designated authority before the feature can be activated for an organization. ### Current Verification Status (2026-03-03) | Area | Implementation | Sign-Off | Target | | -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------- | ---------------------------------------------------------- | | **F-01–F-12 (FCRA)** | Spec and DB/RLS in place (HR-09-P5.2); Checkr live integration not yet enabled. Tables: `hr_background_checks`, `hr_background_check_webhook_audit`. | All ☐ Pending | Gate 1 target: when HR-09-P5.2 ships (Q2 2026) | | **T-01–T-12 (TCPA)** | Spec and DB/RLS in place; `hr_sms_consent_logs`, consent types, PHI detection pattern. SMS delivery via existing `send-sms-notification` edge function. | All ☐ Pending | Gate 2 target: when SMS feature enabled for orgs (Q2 2026) | **Pre-requisite for Gate 1:** HR-09-P5.2 (Background Check Integration) must be implemented and deployed before Checkr can be enabled for any organization. Until then, all F-\* requirements remain "implementation ready, sign-off pending." *** ## 1. FCRA Compliance Requirements (Background Checks) The Fair Credit Reporting Act (FCRA) governs how consumer reports (background checks) are obtained, used, and disclosed in employment decisions. ### 1.1 Pre-Screening Requirements | # | Requirement | Implementation | Status | Sign-Off | | ---- | --------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | --------- | ---------------- | | F-01 | **Written Disclosure** — Provide applicant a standalone written disclosure that a background check may be obtained | `fcra_disclosure_document_url` field on `hr_background_checks` | ☐ Pending | \_\_\_\_\_\_\_\_ | | F-02 | **Written Authorization** — Obtain written consent from the applicant before ordering the report | Consent captured via Candidate Portal (HR-09-P5 Phase 5.3) with timestamped record | ☐ Pending | \_\_\_\_\_\_\_\_ | | F-03 | **Certification to CRA** — Certify to the Consumer Reporting Agency (Checkr) that all FCRA requirements have been met | Checkr API invitation flow includes employer certification | ☐ Pending | \_\_\_\_\_\_\_\_ | | F-04 | **State-Specific Disclosures** — Include any state-specific disclosure addenda (e.g., CA, NY, WA) | Organization-level document configuration in settings | ☐ Pending | \_\_\_\_\_\_\_\_ | ### 1.2 Adverse Action Process The FCRA mandates a two-step adverse action process when a background check result may negatively impact an employment decision. | # | Requirement | Implementation | Status | Sign-Off | | ---- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------- | --------- | ---------------- | | F-05 | **Pre-Adverse Action Notice** — Send the applicant a copy of the report, a summary of rights, and a pre-adverse action letter before making a final decision | `adverse_action_notice_sent_at` + `adverse_action_notice_document_url` fields; `FCRAAdverseActionStatus = 'notice_sent'` | ☐ Pending | \_\_\_\_\_\_\_\_ | | F-06 | **Waiting Period** — Allow a reasonable waiting period (typically 5 business days) for the applicant to dispute | `dispute_window_closes_at` field with configurable window; system blocks final action until window expires | ☐ Pending | \_\_\_\_\_\_\_\_ | | F-07 | **Dispute Handling** — Process applicant disputes by re-investigating through the CRA | `dispute_submitted`, `dispute_reason`, `dispute_resolved_at` fields; `FCRAAdverseActionStatus = 'dispute_pending'` → `'resolved'` | ☐ Pending | \_\_\_\_\_\_\_\_ | | F-08 | **Final Adverse Action Notice** — If decision stands after dispute window, send final adverse action notice with CRA contact info and rights summary | `final_adverse_notice_sent_at` + `final_adverse_notice_document_url`; `FCRAAdverseActionStatus = 'final_notice_sent'` | ☐ Pending | \_\_\_\_\_\_\_\_ | | F-09 | **Record Retention** — Retain all FCRA-related documents per federal (1 year) and state requirements | `fcra_retention_until` field; retention policy enforcement | ☐ Pending | \_\_\_\_\_\_\_\_ | ### 1.3 Ongoing Obligations | # | Requirement | Implementation | Status | Sign-Off | | ---- | --------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | --------- | ---------------- | | F-10 | **Data Security** — Properly dispose of consumer report information | Soft-delete with `fcra_retention_until` expiration; no PII in logs | ☐ Pending | \_\_\_\_\_\_\_\_ | | F-11 | **Audit Trail** — Maintain complete audit trail of all background check actions | `hr_background_check_webhook_audit` table; immutable webhook logs | ☐ Pending | \_\_\_\_\_\_\_\_ | | F-12 | **Permissible Purpose** — Only obtain reports for permissible employment purposes | Application-level enforcement: checks tied to `hr_applications` with active status | ☐ Pending | \_\_\_\_\_\_\_\_ | *** ## 2. TCPA Compliance Requirements (SMS) The Telephone Consumer Protection Act (TCPA) regulates automated text messages and requires explicit consent before sending SMS communications. ### 2.1 Consent Collection | # | Requirement | Implementation | Status | Sign-Off | | ---- | --------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | --------- | ---------------- | | T-01 | **Express Written Consent** — Obtain clear, conspicuous written consent before sending any automated SMS | `hr_sms_consent_logs` table with `consent_given`, `consent_text`, `ip_address` fields | ☐ Pending | \_\_\_\_\_\_\_\_ | | T-02 | **Consent Text Disclosure** — Consent language must clearly describe the types of messages, frequency, and data rates | `DEFAULT_CONSENT_TEXT` constant; customizable per organization | ☐ Pending | \_\_\_\_\_\_\_\_ | | T-03 | **Consent Per Message Type** — Separate consent for each category of messages | `SMSConsentType` enum: `background_check_notifications`, `interview_reminders`, `offer_updates`, `general_hr` | ☐ Pending | \_\_\_\_\_\_\_\_ | | T-04 | **Voluntary Consent** — Consent cannot be a condition of employment or application | UI displays consent as optional checkbox; application proceeds regardless | ☐ Pending | \_\_\_\_\_\_\_\_ | ### 2.2 Opt-Out Mechanisms | # | Requirement | Implementation | Status | Sign-Off | | ---- | ------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------- | --------- | ---------------- | | T-05 | **STOP Keyword** — Honor "STOP" replies to immediately cease messages | `opt_out_methods: 'stop_keyword'`; webhook processing for inbound STOP | ☐ Pending | \_\_\_\_\_\_\_\_ | | T-06 | **Opt-Out Confirmation** — Send a single confirmation message acknowledging opt-out | Edge function sends one final message upon STOP processing | ☐ Pending | \_\_\_\_\_\_\_\_ | | T-07 | **Opt-Out Record** — Maintain timestamped record of all opt-outs | `opted_out_at`, `opt_out_method` fields on `hr_sms_consent_logs` | ☐ Pending | \_\_\_\_\_\_\_\_ | | T-08 | **Re-Opt-In Process** — If user texts START after opting out, re-enable with fresh consent | New consent log entry created; previous opt-out record preserved | ☐ Pending | \_\_\_\_\_\_\_\_ | ### 2.3 Message Content Requirements | # | Requirement | Implementation | Status | Sign-Off | | ---- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | --------- | ---------------- | | T-09 | **Organization Identification** — Every message must identify the sending organization | Message templates include org name prefix | ☐ Pending | \_\_\_\_\_\_\_\_ | | T-10 | **Opt-Out Instructions** — Every message must include opt-out instructions | SMS footer includes "Reply STOP to opt out" | ☐ Pending | \_\_\_\_\_\_\_\_ | | T-11 | **No PHI in SMS** — Messages must not contain Protected Health Information | PHI detection via `detectPhiInMessage` utility; `sms_phi_detection_mode` setting | ☐ Pending | \_\_\_\_\_\_\_\_ | | T-12 | **Business Hours** — Send messages only during appropriate hours | `sms_business_hours_start/end` in `ce_module_settings` | ☐ Pending | \_\_\_\_\_\_\_\_ | *** ## 3. Sign-Off Gates ### Gate 1: Background Check Feature Activation **Required before:** Enabling Checkr integration for any organization\ **Target date for sign-off:** Q2 2026 (when HR-09-P5.2 ships) | Prerequisite | Authority | Date | Signature | | ---------------------------------------------------------------- | -------------------- | ------------ | ---------------------------- | | All F-01 through F-04 requirements verified | Compliance Officer | `YYYY-MM-DD` | \_\_\_\_\_\_\_\_\_\_\_\_\_\_ | | Adverse action workflow tested end-to-end (F-05 through F-08) | Legal Counsel | `YYYY-MM-DD` | \_\_\_\_\_\_\_\_\_\_\_\_\_\_ | | Audit trail and retention policies confirmed (F-09 through F-12) | Data Privacy Officer | `YYYY-MM-DD` | \_\_\_\_\_\_\_\_\_\_\_\_\_\_ | | Checkr webhook signature verification tested | Engineering Lead | `YYYY-MM-DD` | \_\_\_\_\_\_\_\_\_\_\_\_\_\_ | | State-specific disclosure review for operating states | Legal Counsel | `YYYY-MM-DD` | \_\_\_\_\_\_\_\_\_\_\_\_\_\_ | **Gate Decision:** ☐ Approved / ☐ Conditional / ☐ Blocked **Conditions (if any):** \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ *** ### Gate 2: SMS Feature Activation **Required before:** Enabling SMS notifications for any organization\ **Target date for sign-off:** Q2 2026 (when SMS feature enabled for orgs) | Prerequisite | Authority | Date | Signature | | ---------------------------------------------------------- | -------------------- | ------------ | ---------------------------- | | All T-01 through T-04 consent mechanisms verified | Compliance Officer | `YYYY-MM-DD` | \_\_\_\_\_\_\_\_\_\_\_\_\_\_ | | Opt-out flow tested end-to-end (T-05 through T-08) | Legal Counsel | `YYYY-MM-DD` | \_\_\_\_\_\_\_\_\_\_\_\_\_\_ | | Message content requirements validated (T-09 through T-12) | Compliance Officer | `YYYY-MM-DD` | \_\_\_\_\_\_\_\_\_\_\_\_\_\_ | | PHI detection rules reviewed and tested | Data Privacy Officer | `YYYY-MM-DD` | \_\_\_\_\_\_\_\_\_\_\_\_\_\_ | | Carrier registration (10DLC/A2P) completed | Engineering Lead | `YYYY-MM-DD` | \_\_\_\_\_\_\_\_\_\_\_\_\_\_ | **Gate Decision:** ☐ Approved / ☐ Conditional / ☐ Blocked **Conditions (if any):** \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ *** ### Gate 3: Per-Organization Activation **Required before:** Enabling features for each new organization/tenant | Prerequisite | Authority | Date | Signature | | ------------------------------------------------------------ | ------------------ | ------------ | ---------------------------- | | Organization-specific disclosure documents uploaded | Org Admin | `YYYY-MM-DD` | \_\_\_\_\_\_\_\_\_\_\_\_\_\_ | | State-specific addenda configured for org's operating states | Compliance Officer | `YYYY-MM-DD` | \_\_\_\_\_\_\_\_\_\_\_\_\_\_ | | SMS consent text reviewed and customized | Legal Counsel | `YYYY-MM-DD` | \_\_\_\_\_\_\_\_\_\_\_\_\_\_ | | Org admin trained on adverse action workflow | Compliance Officer | `YYYY-MM-DD` | \_\_\_\_\_\_\_\_\_\_\_\_\_\_ | **Gate Decision:** ☐ Approved / ☐ Conditional / ☐ Blocked *** ## 4. Enforcement in Code The following technical controls enforce compliance gates: | Control | Location | Description | | ---------------------------- | ----------------------------------- | -------------------------------------------------------------------------------------------------------------- | | `HiringChecklist` component | HR-09-P5 | Blocks hire completion until background check is `complete_clear` and offer is `signed` | | SMS consent gate | `hr_sms_consent_logs` | SMS sending functions verify active consent before dispatch | | PHI detection | `detectPhiInMessage` | Blocks or warns on PHI content based on `sms_phi_detection_mode` | | Adverse action state machine | `FCRAAdverseActionStatus` | Enforces sequential progression: `none` → `notice_sent` → `dispute_pending` → `resolved` → `final_notice_sent` | | Webhook audit immutability | `hr_background_check_webhook_audit` | RLS restricts writes to `service_role` only | | Consent record immutability | `hr_sms_consent_logs` | Insert-only policy; no updates or deletes by application users | *** ## 5. Periodic Review Schedule | Review | Frequency | Next Due | Owner | | --------------------------------- | ------------- | ------------ | -------------------- | | FCRA process audit | Quarterly | `YYYY-MM-DD` | Compliance Officer | | TCPA consent mechanism review | Quarterly | `YYYY-MM-DD` | Legal Counsel | | State law update check | Monthly | `YYYY-MM-DD` | Legal Counsel | | PHI detection pattern update | Semi-annually | `YYYY-MM-DD` | Data Privacy Officer | | Carrier compliance review (10DLC) | Annually | `YYYY-MM-DD` | Engineering Lead | *** ## Official Sources | Source | URL | | ---------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | FTC: Using Consumer Reports — What Employers Need to Know | [https://www.ftc.gov/business-guidance/resources/using-consumer-reports-what-employers-need-know](https://www.ftc.gov/business-guidance/resources/using-consumer-reports-what-employers-need-know) | | CFPB: Summary of Consumer Rights (FCRA Regulation V, Appendix K) | [https://www.consumerfinance.gov/rules-policy/regulations/1022/K](https://www.consumerfinance.gov/rules-policy/regulations/1022/K) | | FCC: Rules and Regulations Implementing the TCPA | [https://www.fcc.gov/document/rules-and-regulations-implementing-telephone-consumer-protection-act-22](https://www.fcc.gov/document/rules-and-regulations-implementing-telephone-consumer-protection-act-22) | Full list of authoritative external references (HR, CL, PM, RH, GR, IT, PF): `docs/compliance/AUTHORITATIVE_REFERENCES.md`. *** ## Version History ### 1.0.0 (2026-02-10) * Initial compliance tracking document * Defined FCRA requirements F-01 through F-12 * Defined TCPA requirements T-01 through T-12 * Established three sign-off gates (feature activation, SMS activation, per-org activation) * Mapped enforcement controls to codebase *** **Last Updated:** 2026-02-10\ **Next Review:** 2026-05-10 # GR Governance & Risk Compliance Tracking Source: https://docs.encoreos.io/compliance/GR_GOVERNANCE_COMPLIANCE_TRACKING This document tracks governance, accreditation, quality measurement, incident reporting, and nonprofit compliance obligations for Encore OS. The GR module serv… > **Cross-References:** > > * [REGULATORY\_COMPLIANCE\_TRACKER.md](/compliance/REGULATORY_COMPLIANCE_TRACKER) — Master compliance tracker > * `docs/compliance/AUTHORITATIVE_REFERENCES.md` — Authoritative External References — Accreditation and Quality Measures *** ## Overview This document tracks governance, accreditation, quality measurement, incident reporting, and nonprofit compliance obligations for Encore OS. The GR module serves as the organizational compliance backbone — spanning accreditation survey readiness, quality measure reporting, mandatory incident reporting, board governance, document retention, and risk management. *** ## 1. Accreditation Standards ### 1.1 CARF Behavioral Health | # | Requirement | Responsible Spec | Status | Notes | | -------- | ------------------------------------------------------------------------------------------------------------ | --------------------------------------------- | ---------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | CARF-01 | **CARF accreditation** — Achieve and maintain CARF Behavioral Health accreditation (1-year or 3-year) | GR-08 | ⏳ Not Started | Survey preparation features in GR-08; survey cycle tracking | | CARF-02 | **Person-centered planning** — Demonstrate individualized treatment/service planning across programs | CL-02, CL-04 | 🟡 Partial | Assessment and treatment planning in CL module; CARF alignment needed | | CARF-03 | **Performance measurement** — Systematic outcome measurement and program evaluation | CL-10, CL-15 | 🟡 Partial | Quality measures in CL-10/CL-15; CARF-specific indicators needed | | CARF-04 | **Health and safety** — Policies and procedures for client and staff safety | GR-08, GR-12 | ⏳ Not Started | Policy library; incident tracking; safety plans; GR-12 adds procedure templates to accelerate SOP readiness | | CARF-05 | **Rights of persons served** — Grievance procedures, informed consent, confidentiality | CL-11, RH-02 | 🟡 Partial | Consent in CL-11; resident rights in RH-02; centralized rights management needed | | CARF-06 | **Workforce development** — Staff qualifications, training, supervision documentation | HR-02, HR-04, **GR-02**, **GR-18**, **GR-19** | 🟡 Partial | Credentialing in HR-02; training tracking in HR-04; GR-02 owns canonical training & CEU schema (✅ Complete); **GR-18 (📋 Specification)** ships the competency assessment engine (question banks, attempts, server-side grading, surveyor evidence) — turns "attendance" into surveyor-defensible competency validation per CARF 1.B.6 (see CARF-08 below); GR-19 adds focused mandatory in-service compliance matrix + surveyor PDF packet (one-click "last 12 months of HIPAA / BBP / mandated-reporter completions, by employee") on top of the GR-02 substrate + GR-02-EN-05 seed catalog | | CARF-08 | **Competency validation (1.B.6)** — Demonstrate ongoing staff competency via assessment, not just attendance | **GR-18** | 📋 Specification | GR-18 question banks + attempts + server-side grading + answer-key isolation (safe view + SECURITY DEFINER grading) + immutable response audit + surveyor evidence PDF (counts/score/citations only — no question stems). Closes the GR-02 "self-attest" gap. | | CARF-07a | **Quality improvement plan (QIP)** — QIP-aligned procedure templates and starters | GR-08, GR-12 | ⏳ Not Started | QIP creation and tracking; corrective action plans; GR-12 templates include QIP-aligned procedure starters | | CARF-07b | **Quality improvement plan (QIP)** — CAP lifecycle tracking from survey findings | GR-08, **GR-16** | ⏳ Not Started | GR-16 CAP lifecycle tracks corrective actions from survey findings (CARF QIP component); GR-08 handles broader QIP | ### 1.2 Joint Commission CAMBHC | # | Requirement | Responsible Spec | Status | Notes | | ----- | ------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------ | ---------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | JC-01 | **Joint Commission CAMBHC accreditation** — Community-based and Ambulatory Behavioral Health Care | GR-08 | ⏳ Not Started | Survey readiness features in GR-08 | | JC-02 | **National Patient Safety Goals (NPSGs)** — NPSG.15.01.01 (suicide risk identification) | CL-07 | 🟡 Partial | Safety assessment in CL-07; NPSG.15.01.01 compliance mapping needed | | JC-03 | **Tracer methodology readiness** — Demonstrate care continuity through patient tracer reviews | CL-01, CL-02, CL-04, **GR-16** | ⏳ Not Started | GR-16 adds tracer pack generation and mock survey capability; clinical tracer views in CL specs | | JC-04 | **Performance improvement** — Sustained improvement in clinical and operational outcomes | CL-15, GR-08 | ⏳ Not Started | Dashboard support; trend analysis | | JC-05 | **Leadership standards** — Board governance, strategic planning, resource management documentation | GR-03 | ⏳ Not Started | Policy and governance management in GR-03 | | JC-06 | **Environment of care** — Safety management plans, hazardous materials, emergency management | GR-08 | ⏳ Not Started | Safety management features | | JC-07 | **HR.01.04.01 — Ongoing competency assessment** — Competency must be *assessed*, not just *attended* (annual + role-triggered) | **GR-18**, **GR-19** | 📋 Specification | GR-18 ships the assessment engine (question banks, attempts, server-side grading, immutable evidence). GR-19 surfaces compliance via the in-service matrix and surveyor PDF packet. Together they close the gap that GR-02 alone (attendance + self-attest) does not. | | JC-08 | **CMS Conditions of Participation §482.13 — Restraint training competency** — Documented competency for restraint application post-training | **GR-18** + GR-02-EN-05 | 📋 Specification | GR-18 supports linking an `assessment` to any `gr_training_courses` row (no schema special-casing). Restraint courses in the GR-02-EN-05 mandatory training seed catalog can be configured with an assessment template. | *** ## 2. Quality Measures and Outcome Reporting ### 2.1 NCQA HEDIS (Healthcare Effectiveness Data and Information Set) | # | Requirement | Responsible Spec | Status | Notes | | ----- | ----------------------------------------------------------------------------------------------------------- | ---------------- | ------------- | ------------------------------------------------- | | QM-01 | **Follow-Up After Hospitalization (FUH)** — 7-day and 30-day follow-up for mental illness | CL-15 | ⏳ Not Started | Requires encounter/discharge tracking integration | | QM-02 | **Follow-Up After Emergency Department Visit (FUM)** — 7-day and 30-day follow-up for mental illness/SUD | CL-15 | ⏳ Not Started | Requires ED visit tracking | | QM-03 | **Initiation and Engagement of SUD Treatment (IET)** — Initiation within 14 days; engagement within 34 days | CL-15, CL-10 | ⏳ Not Started | SUD treatment timeline tracking | | QM-04 | **Antidepressant Medication Management (AMM)** — Effective acute and continuation phase treatment | CL-05, CL-15 | ⏳ Not Started | Medication tracking integration | | QM-05 | **Screening for Depression (SDD/CDF)** — PHQ-9 screening and follow-up | CL-02, CL-07 | 🟡 Partial | PHQ-9 in assessment; reporting integration needed | ### 2.2 SAMHSA NOMs (National Outcome Measures) | # | Requirement | Responsible Spec | Status | Notes | | ------ | ------------------------------------------------------------------------ | ---------------- | ------------- | ------------------------------------ | | NOM-01 | **Abstinence from drug/alcohol use** — Track substance use outcomes | CL-10 | ⏳ Not Started | Outcome tracking in CL-10 | | NOM-02 | **Employment/education** — Functional outcomes | CL-18 | ⏳ Not Started | SDOH tracking per CL-18 | | NOM-03 | **Criminal justice involvement** — Reduced involvement | CL-10 | ⏳ Not Started | Outcome measure | | NOM-04 | **Stable housing** — Housing stability outcomes | CL-18, RH-02 | 🟡 Partial | Housing data in RH; SDOH in CL-18 | | NOM-05 | **Social connectedness** — Social support and community engagement | CL-18 | ⏳ Not Started | SDOH domain | | NOM-06 | **Access/capacity** — Service utilization and retention metrics | PM-01, CL-15 | ⏳ Not Started | Scheduling and reporting data | | NOM-07 | **Client perception of care** — Satisfaction surveys and outcome ratings | CL-10 | ⏳ Not Started | Survey data collection and reporting | *** ## 3. Mandatory Incident Reporting | # | Requirement | Responsible Spec | Status | Notes | | ----- | ------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------ | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | IR-01 | **Arizona mandatory reporting — vulnerable adults** (ARS 46-454) — Report suspected abuse, neglect, exploitation immediately | **GR-09** (intake), GR-08, CL-13, **GR-14** | 📋 Specification | GR-09 captures incident and emits `gr_incident_created` event; GR-14 automates APS obligation creation, deadline tracking, and report package generation | | IR-02 | **Arizona mandatory reporting — children** (ARS 13-3620) — Report suspected child abuse/neglect immediately to DCS or law enforcement | **GR-09** (intake), GR-08, **GR-14** | 📋 Specification | GR-09 captures incident; GR-14 automates DCS obligation creation and deadline tracking | | IR-03 | **Restraint/seclusion reporting** (42 CFR 482.13(e)) — Document and report per federal and state requirements | **GR-09** (CL-GR bridge intake), CL-13, **GR-14** | 📋 Specification | GR-09 CL-GR bridge creates draft incident with `severity=critical`; GR-14 implements CMS death\_report obligation (1 calendar day deadline) | | IR-04 | **Critical incident tracking** — Deaths, serious injuries, elopements, medication errors | **GR-09** (intake), GR-08, **GR-14** | 📋 Specification | GR-09 is the incident intake layer; GR-14 adds regulatory classification, deadlines, and report packages on top of GR-09 data | | IR-05 | **AHCCCS incident reporting** (AMPM 1620-O) — Report critical incidents to AHCCCS per policy | **GR-09** (intake), GR-08, **GR-14** | 📋 Specification | GR-09 captures incident and emits event; GR-14 implements AHCCCS verbal (8 business hrs) + written (40 business hrs) packages with business-day deadline calculator | | IR-06 | **Sentinel event reporting** — Joint Commission sentinel events require root cause analysis | **GR-09** (intake, RCA via investigations), GR-08, **GR-14** | 📋 Specification | GR-09 investigation + root cause analysis workflow; GR-14 implements sentinel event report tracking with 45-day RCA deadline monitoring | | IR-07 | **Reporter protection** — Good-faith reporters protected from civil/criminal liability (ARS 46-454) | GR-08 | 📋 Policy | Organizational policy; system documents reporter identity confidentially | *** ## 4. Nonprofit Governance | # | Requirement | Responsible Spec | Status | Notes | | ----- | ------------------------------------------------------------------------------------------------------------------------------- | ---------------- | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | | NG-01 | **Whistleblower policy** — Required under Sarbanes-Oxley §1107; no retaliation for reporting financial impropriety | GR-03, **GR-15** | 📋 Specification | GR-15 Phase 2: anonymous-capable whistleblower intake with non-retaliation tracking; see `specs/gr/reviews/GR-15-COMPLIANCE-SIGNOFF.md` W-1 through W-5 | | NG-02 | **Document retention policy** — SOX §802 prohibits destruction of records to impede investigation; establish retention schedule | GR-03, **GR-15** | 📋 Specification | GR-15 Phase 4: PF-46 retention schedule configuration (7yr COI/WB; permanent board records); legal hold enforcement | | NG-03 | **Conflict of interest policy** — Board member/officer disclosure; IRS requires for Form 990 | GR-03, **GR-15** | 📋 Specification | GR-15 Phase 1: annual COI attestation + Form 990 Schedule L prep report; see `specs/gr/reviews/GR-15-COMPLIANCE-SIGNOFF.md` C-1 through C-4 | | NG-04 | **Board composition and independence** — Independent directors; audit committee (best practice) | GR-03, **GR-15** | 📋 Partial | GR-15 Phase 3 adds board roster via minutes attendees; full independence scoring deferred | | NG-05 | **Board minutes and records** — Maintain meeting records per state law and accreditation requirements | GR-03, **GR-15** | 📋 Specification | GR-15 Phase 3: board minutes + resolutions with approval workflow and PDF export | | NG-06 | **Executive compensation review** — Reasonableness and documentation per IRS intermediate sanctions (IRC 4958) | GR-03, HR-07 | 📋 Policy | Board reviews compensation; documented in minutes | | NG-07 | **Arizona nonprofit compliance** — Annual report to ACC; maintain registered agent; charitable solicitation (if applicable) | GR-03 | 📋 External | ACC filing managed externally; see FA compliance for financial aspects | *** ## 5. Risk Management | # | Requirement | Responsible Spec | Status | Notes | | ----- | ------------------------------------------------------------------------------------------------------------------- | ----------------------- | ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | RM-01 | **Risk assessment** — Periodic organizational risk assessment covering clinical, operational, financial, compliance | GR-08 | ⏳ Not Started | Risk register and assessment workflow | | RM-02 | **Insurance management** — Professional liability, general liability, D\&O, workers comp | GR-08, HR-11 | 📋 External | Insurance managed externally; track policy dates and coverage | | RM-03 | **Corrective action plans** — Track and resolve deficiencies from surveys, audits, incidents | GR-08 | ⏳ Not Started | CAP workflow; evidence of correction tracking | | RM-04 | **Compliance program** — Designated compliance officer, training, hotline, audit schedule | GR-03, GR-08, **GR-19** | ⏳ Not Started | Compliance program management features. GR-19 contributes the **training** element (mandatory in-service completion matrix, automated reminders 90/60/30/7 days before due date, surveyor PDF packet); designated-officer / hotline / audit schedule remain pending. | *** ## 6. Authoritative External References | Source | URL | Used By | | ------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------- | | CARF Behavioral Health | [https://carf.org/accreditation/programs/behavioral-health/](https://carf.org/accreditation/programs/behavioral-health/) | GR-08, CL-10, CL-15 | | Joint Commission CAMBHC | [https://www.jointcommission.org/en-us/accreditation/behavioral-health-care-and-human-services](https://www.jointcommission.org/en-us/accreditation/behavioral-health-care-and-human-services) | GR-08, CL-15 | | NCQA HEDIS Measures | [https://www.ncqa.org/hedis/measures/](https://www.ncqa.org/hedis/measures/) | CL-10, CL-15 | | SAMHSA NOMs | [https://www.samhsa.gov/data/faq/samhsas-national-outcomes-measures-noms-collected-mh-cld/](https://www.samhsa.gov/data/faq/samhsas-national-outcomes-measures-noms-collected-mh-cld/) | CL-10 | | SAMHSA Quality Measurement | [https://www.samhsa.gov/substance-use/treatment/advancing-quality-measurement-behavioral-health](https://www.samhsa.gov/substance-use/treatment/advancing-quality-measurement-behavioral-health) | CL-10 | | Arizona ARS 46-454 (Mandatory reporting — vulnerable adults) | [https://www.azleg.gov/ars/46/00454.htm](https://www.azleg.gov/ars/46/00454.htm) | GR-08 | | Arizona ARS 13-3620 (Mandatory reporting — children) | [https://www.azleg.gov/ars/13/03620.htm](https://www.azleg.gov/ars/13/03620.htm) | GR-08 | | AHCCCS AMPM Policy 1620-O (Critical incident reporting) | [https://www.azahcccs.gov/shared/Downloads/MedicalPolicyManual/1600/1620O.pdf](https://www.azahcccs.gov/shared/Downloads/MedicalPolicyManual/1600/1620O.pdf) | GR-08 | | IRS: Governance and Related Topics — 501(c)(3) Organizations | [https://www.irs.gov/charities-non-profits/governance-and-related-topics-501c3-organizations](https://www.irs.gov/charities-non-profits/governance-and-related-topics-501c3-organizations) | GR-03 | | Sarbanes-Oxley Act (Whistleblower/Document Retention) | [https://www.congress.gov/bill/107th-congress/house-bill/3763](https://www.congress.gov/bill/107th-congress/house-bill/3763) | GR-03 | *** ## 7. Periodic Review Schedule | Review | Frequency | Next Due | Owner | | -------------------------------- | ----------------------------------- | ------------------ | ------------------ | | CARF survey preparation | Per survey cycle (annual/triennial) | ****/****/\_\_\_\_ | Quality Director | | Joint Commission survey prep | Per survey cycle | ****/****/\_\_\_\_ | Quality Director | | HEDIS measure calculation | Annually | ****/****/\_\_\_\_ | Quality Director | | SAMHSA NOMs reporting | Per grant requirements | ****/****/\_\_\_\_ | Program Director | | Incident reporting audit | Quarterly | ****/****/\_\_\_\_ | Compliance Officer | | Board governance review | Annually | ****/****/\_\_\_\_ | Board Secretary | | Conflict of interest disclosures | Annually | ****/****/\_\_\_\_ | Board Secretary | | Risk assessment | Annually | ****/****/\_\_\_\_ | Risk Manager | | Document retention audit | Annually | ****/****/\_\_\_\_ | Compliance Officer | *** ## Version History ### 1.0.0 (2026-02-27) * Initial comprehensive GR governance and risk compliance document * Covers CARF, Joint Commission, NCQA HEDIS, SAMHSA NOMs, mandatory incident reporting, nonprofit governance, risk management * 45+ compliance requirements tracked across 5 categories *** **Last Updated:** 2026-02-27 **Next Review:** 2026-05-27 # HR Workforce Compliance Tracking Source: https://docs.encoreos.io/compliance/HR_WORKFORCE_COMPLIANCE_TRACKING This document tracks the full scope of workforce compliance obligations for behavioral health employers operating in Arizona. It extends beyond the FCRA/TCPA t… > **Cross-References:** > > * [FCRA\_TCPA\_COMPLIANCE\_TRACKING.md](/compliance/FCRA_TCPA_COMPLIANCE_TRACKING) — Background check and SMS consent gates > * [REGULATORY\_COMPLIANCE\_TRACKER.md](/compliance/REGULATORY_COMPLIANCE_TRACKER) — Master compliance tracker > * `docs/compliance/AUTHORITATIVE_REFERENCES.md` — Authoritative External References — HR and Workforce Compliance *** ## Overview This document tracks the full scope of workforce compliance obligations for behavioral health employers operating in Arizona. It extends beyond the FCRA/TCPA tracking (which covers background checks and SMS) to address wage & hour, leave, benefits, employment eligibility, workplace safety, anti-discrimination, credentialing, and Arizona-specific labor law. *** ## 1. Wage & Hour Compliance (FLSA / Arizona) ### 1.1 Fair Labor Standards Act (FLSA) | # | Requirement | Responsible Spec | Status | Notes | | ----- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------- | ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | WH-01 | **Minimum wage** — Pay at least federal ($7.25/hr) or Arizona ($15.15/hr effective January 1, 2026, per ARS 23-363(B)), whichever is higher. **Note:** Local ordinances (e.g., Tucson, Flagstaff) may set higher minimums — verify local rates when expanding to new sites. | HR-07, HR-PAY-01 | 🟡 Partial | Arizona minimum wage is higher; system must track state rate annually. Local ordinance checks deferred to multi-site expansion. | | WH-02 | **Overtime** — Pay 1.5× regular rate for hours > 40/week for non-exempt employees | HR-07, HR-05, **HR-29** | 🟡 Partial | Time tracking (HR-05) feeds payroll (HR-07); **HR-29** provides authoritative exempt/non-exempt classification that determines overtime eligibility | | WH-03 | **Employee classification** — Correctly classify exempt vs non-exempt per FLSA duties test | **HR-29** | 📋 Specification | **HR-29** provides structured duties test documentation per 29 CFR 541, salary threshold tracking, annual audit workflow, reclassification workflow, and DOL audit reports. Replaces manual classification tracking. | | WH-04 | **Recordkeeping** — Maintain records of hours worked, wages paid, and deductions for 3 years | HR-05, HR-07 | 🟡 Partial | Time/payroll data retained; ensure 3-year minimum retention policy | | WH-05 | **Youth employment** — Comply with child labor provisions (hours, hazardous work restrictions) | N/A | 📋 Low risk | Behavioral health employers typically hire adults; document policy | ### 1.2 Arizona Wage Payment Act (ARS 23-350 through 23-365) | # | Requirement | Responsible Spec | Status | Notes | | ------ | --------------------------------------------------------------------------------------------------------------------- | ---------------- | ------------- | ----------------------------------------------------------------------------------------- | | AZ-W01 | **Pay frequency** — Designate ≥2 fixed paydays/month, ≤16 days apart | HR-07, HR-PAY-01 | 🟡 Partial | Payroll schedule configuration | | AZ-W02 | **Final paycheck** — Pay within 7 working days of termination (3 working days if employee quits with 72 hours notice) | HR-07 | ⏳ Not Started | Implement termination paycheck workflow; track deadlines | | AZ-W03 | **Cash payment compliance** — Employers paying cash must withhold taxes and comply with workers comp (ARS 23-361.01) | HR-07 | 📋 N/A | Encore OS processes payroll electronically; document exception | | AZ-W04 | **Earned Paid Sick Time** — Accrue 1 hour per 30 hours worked (ARS 23-371 et seq.) | HR-06 | ⏳ Not Started | Track accrual in leave management; minimum 40 hours/year for employers with ≥15 employees | *** ## 2. Leave and Benefits Compliance ### 2.1 FMLA (Family and Medical Leave Act) | # | Requirement | Responsible Spec | Status | Notes | | ----- | ----------------------------------------------------------------------------------------------------------------------------------- | ---------------- | ------------- | ------------------------------------------------------------------------------------------------------------------- | | LV-01 | **Eligibility tracking** — Identify employees who have worked 12 months and 1,250 hours | HR-06 | ⏳ Not Started | Auto-calculate from time records; flag eligibility. Owner: HR Director. Interim: track manually until HR-06 Phase 2 | | LV-02 | **12-week unpaid leave** — Provide up to 12 weeks for qualifying events (serious health condition, birth/adoption, military family) | HR-06 | ⏳ Not Started | Leave request and approval workflow. Owner: HR Director | | LV-03 | **Job protection** — Restore employee to same or equivalent position | HR-06 | ⏳ Not Started | Track protected status in leave records. Owner: HR Director | | LV-04 | **Benefits continuation** — Maintain group health coverage during FMLA leave | HR-11 | ⏳ Not Started | Flag FMLA status to prevent benefits termination. Owner: Benefits Administrator | | LV-05 | **Posting and notice** — Display FMLA poster; provide eligibility/rights notice within 5 business days of request | HR-06 | ⏳ Not Started | Generate notices from system. Owner: HR Director | ### 2.2 ERISA and Employee Benefits | # | Requirement | Responsible Spec | Status | Notes | | ----- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------- | ------------- | ---------------------------------------------------------------------------------- | | BN-01 | **Summary Plan Description (SPD)** — Provide SPD to participants within 90 days of enrollment | HR-11 | ⏳ Not Started | Document management for plan documents | | BN-02 | **Annual reporting (Form 5500)** — File Form 5500 with DOL for plans with 100+ participants | HR-11 | 📋 External | Filed by benefits administrator/TPA; system provides headcount data | | BN-03 | **Fiduciary duties** — Plan administrators must act in participants' best interest | HR-11 | 📋 Policy | Organizational policy; system supports audit trail | | BN-04 | **COBRA continuation** — Offer continuation coverage for 18-36 months after qualifying events (employers with 20+ employees) | HR-11 | ⏳ Not Started | Track qualifying events; generate election notices; enforce 60-day election window | | BN-05 | **ACA employer mandate** — Offer minimum essential coverage to full-time employees (50+ FTE) or face penalties | HR-11 | ⏳ Not Started | Track FTE count; benefits eligibility; generate 1095-C data | *** ## 3. Employment Eligibility and Anti-Discrimination ### 3.1 I-9 and E-Verify | # | Requirement | Responsible Spec | Status | Notes | | ----- | ---------------------------------------------------------------------------------------------------------- | ---------------- | ------------- | ---------------------------------------------------------------------------------------------------------- | | EE-01 | **Form I-9** — Complete Section 1 by first day; Section 2 within 3 business days of hire | HR-01, HR-03 | 🟡 Partial | HR-03 EN-3 implements I-9/W-4 forms in onboarding; E-Verify integration still ⏳. Owner: Compliance Officer | | EE-02 | **E-Verify** — Arizona mandates E-Verify for all employers (ARS 23-214) | HR-01 | ⏳ Not Started | Integration or manual verification; record case number. Owner: Compliance Officer | | EE-03 | **Document retention** — Retain I-9 for 3 years after hire or 1 year after termination, whichever is later | HR-01 | ⏳ Not Started | Automated retention calculation and alerts. Owner: HR Director | | EE-04 | **Re-verification** — Re-verify employment authorization before document expiration | HR-01 | ⏳ Not Started | Alert on upcoming document expirations. Owner: HR Director | ### 3.2 EEOC / Anti-Discrimination (Title VII, ADA Title I, GINA, PWFA) | # | Requirement | Responsible Spec | Status | Notes | | ----- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------- | -------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | AD-01 | **Title VII** — No discrimination based on race, color, religion, sex, national origin (employers with 15+) | HR-01, HR-09 | 📋 Policy | Organizational policy; system enforces consistent hiring workflows | | AD-02 | **ADA Title I** — Reasonable accommodation; no discrimination based on disability | HR-01 | 📋 Policy | Track accommodation requests; interactive process documentation | | AD-03 | **GINA** — No use of genetic information in employment decisions; maintain confidentiality | HR-01 | 📋 Policy | System must not store or surface genetic information | | AD-04 | **PWFA** — Reasonable accommodations for pregnancy-related conditions | HR-01, HR-06 | 📋 Policy | Extends ADA-type accommodations to pregnancy; track requests | | AD-05 | **EEO-1 reporting** — Annual filing for employers with 100+ employees (or 50+ with federal contracts) | HR-42 (export), HR-01 (source demographics) | 📋 Specification | Workforce EEO-1 Component 1 export via HR Reports Hub; hiring EEO remains HR-09 | | AD-06 | **Arizona Civil Rights Act (ARS 41-1463)** — State-level anti-discrimination; Arizona Attorney General enforcement | HR-01 | 📋 Policy | Posting requirement; aligned with federal protections | | AD-07 | **Internal selection / promotion audit trail** — Document non-discriminatory internal selection decisions with disposition codes and timestamped stage history (EEOC UGESP 29 CFR 1607) | **HR-35** | ✅ Implemented (2026-05-22) | `hr_internal_application_stage_audit` captures every transition; `hr_application_disposition` PF-15 picklist (8 EEOC-aligned defaults) is required on terminal transitions; manager-notify default OFF protects employee privacy. Evidence: `docs/compliance/evidence/HR-35-eeo-internal-selection-EVIDENCE.md`. | ### 3.3 HIPAA Privacy Rule — workforce safeguards | # | Requirement | Responsible Spec | Status | Notes | | ----- | ------------------------------------------------------------------------------------------------------------------------------------------- | ---------------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | HP-01 | **Policies and procedures; workforce training** — Document that workforce is trained on privacy policies and procedures (45 CFR 164.530(b)) | **HR-31**, HR-03 | ⏳ Not Started | **HR-31** provides electronic acknowledgment, version history, and exportable evidence; **HR-03** may include policy packet steps. Interim: paper sign-off sheets. | *** ## 4. Workplace Safety (OSHA / ADOSH) | # | Requirement | Responsible Spec | Status | Notes | | ----- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------- | -------------- | ------------------------------------------------------------------------------------------------- | | OS-01 | **General Duty Clause** — Maintain workplace free from recognized hazards | N/A | 📋 Operational | No system spec; operational safety programs | | OS-02 | **Workplace violence prevention** — Healthcare-specific: risk assessments, training, incident reporting | HR-01 (incident tracking) | ⏳ Not Started | Behavioral health has elevated risk (44.4 per 10,000); implement incident tracking | | OS-03 | **OSHA 300 Log** — Record and post workplace injuries/illnesses annually | HR-01 | ⏳ Not Started | Track incidents; generate OSHA 300/300A forms | | OS-04 | **ADOSH (Arizona Division of Occupational Safety)** — State OSHA plan; additional state-specific inspections | N/A | 📋 Operational | Comply with ADOSH standards; no additional system requirements beyond OSHA | | OS-05 | **Bloodborne pathogens** — Exposure control plan for healthcare workers (29 CFR 1910.1030) | N/A | 📋 Operational | Clinical and residential staff exposure; operational policy | | OS-06 | **Hazard communication / safety policy acknowledgment** — Evidence employees received required safety-related policies (29 CFR 1910.1030 training elements; General Duty communication) | **HR-31** | ⏳ Not Started | Complements operational OSHA programs; **HR-31** stores acknowledgment records and audit exports. | *** ## 5. Credentialing and Licensing | # | Requirement | Responsible Spec | Status | Notes | | ----- | --------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | CR-01 | **State licensure verification** — Verify behavioral health professional licenses (AZBBHE, nursing boards) | HR-02 | 🟡 Partial | Credentialing module tracks license status; manual verification | | CR-02 | **NPI tracking** — Maintain National Provider Identifier for rendering providers | HR-02 | 🟡 Partial | NPI stored in employee/provider record | | CR-03 | **Payer credentialing** — Maintain provider enrollment with AHCCCS, commercial payers | HR-02 | ⏳ Not Started | Track payer enrollment status and renewal dates | | CR-04 | **License renewal alerts** — Notify before license/certification expiration | HR-02 | 🟡 Partial | Expiration tracking with configurable alerts | | CR-05 | **Continuing education** — Track CE hours required for license renewal | GR-02-EN-04 (canonical requirement library, jurisdiction-scoped via PF-96); HR-02 (consumer for renewal eligibility); HR-27 (overlay UI for deficit alerts) | 📋 Specification | Reframed by ADR-014: requirement library moved from HR-27/HR-02 into `gr_ce_requirements` + `gr_ce_requirement_overrides` + `gr_ce_progress_v` under the AZ jurisdiction profile. CE hour logging via `gr_ceu_credits` (GR-02 parent); auto-check against jurisdiction-resolved requirements. | | CR-06 | **Fingerprint clearance card** — Arizona DPS fingerprint clearance required for behavioral health (ARS 36-425.03, ARS 41-1758.07) | HR-02 | ⏳ Not Started | Track clearance card status and renewal (6-year cycle) | *** ## 6. Workers' Compensation (Arizona) | # | Requirement | Responsible Spec | Status | Notes | | ----- | ------------------------------------------------------------------------------------------------ | ---------------- | ------------- | ---------------------------------------------------- | | WC-01 | **Coverage requirement** — All Arizona employers must carry workers' comp insurance (ARS 23-961) | HR-11 | 📋 External | Insurance carrier manages; system tracks claims data | | WC-02 | **Injury reporting** — Report workplace injuries to insurer within prescribed timeframes | HR-01 | ⏳ Not Started | Incident reporting workflow; track claim status | | WC-03 | **Return to work** — Facilitate modified duty/return-to-work programs | HR-01, HR-06 | ⏳ Not Started | Track work restrictions and accommodations | | WC-04 | **Premium classification** — Correct industry classification codes for premium calculation | HR-11 | 📋 External | Provided to insurance carrier; payroll data feeds | *** ## 7. Authoritative External References | Source | URL | Used By | | --------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------- | | DOL: Fair Labor Standards Act (FLSA) | [https://www.dol.gov/agencies/whd/flsa](https://www.dol.gov/agencies/whd/flsa) | HR-05, HR-07 | | DOL: Family and Medical Leave Act (FMLA) | [https://www.dol.gov/agencies/whd/fmla](https://www.dol.gov/agencies/whd/fmla) | HR-06 | | DOL: ERISA | [https://www.dol.gov/agencies/ebsa/laws-and-regulations/laws/erisa](https://www.dol.gov/agencies/ebsa/laws-and-regulations/laws/erisa) | HR-11 | | DOL: COBRA Employer Guide | [https://www.dol.gov/agencies/ebsa/about-ebsa/our-activities/resource-center/publications/an-employers-guide-to-group-health-continuation-coverage-under-cobra](https://www.dol.gov/agencies/ebsa/about-ebsa/our-activities/resource-center/publications/an-employers-guide-to-group-health-continuation-coverage-under-cobra) | HR-11 | | IRS: ACA Employer Shared Responsibility | [https://www.irs.gov/affordable-care-act/employers/employer-shared-responsibility-provisions](https://www.irs.gov/affordable-care-act/employers/employer-shared-responsibility-provisions) | HR-11 | | USCIS: Form I-9 | [https://www.uscis.gov/i-9](https://www.uscis.gov/i-9) | HR-01 | | USCIS: E-Verify | [https://www.e-verify.gov/](https://www.e-verify.gov/) | HR-01 | | OSHA: Healthcare Workplace Violence | [https://www.osha.gov/healthcare/workplace-violence](https://www.osha.gov/healthcare/workplace-violence) | HR-01 | | OSHA: Bloodborne Pathogens (29 CFR 1910.1030) | [https://www.osha.gov/bloodborne-pathogens](https://www.osha.gov/bloodborne-pathogens) | N/A (operational) | | ADOSH (Arizona OSHA) | [https://www.ica.state.az.us/adosh](https://www.ica.state.az.us/adosh) | N/A (operational) | | EEOC: Laws Enforced | [https://www.eeoc.gov/statutes/laws-enforced-eeoc](https://www.eeoc.gov/statutes/laws-enforced-eeoc) | HR-01 | | Arizona ICA: Workers' Compensation | [https://www.ica.state.az.us/claims](https://www.ica.state.az.us/claims) | HR-11 | | Arizona Revised Statutes Title 23 (Labor) | [https://www.azleg.gov/arsDetail/?title=23](https://www.azleg.gov/arsDetail/?title=23) | HR-05, HR-07 | | Arizona Earned Paid Sick Time (Prop 206) | [https://www.azica.gov/labor-minimum-wage-main-page](https://www.azica.gov/labor-minimum-wage-main-page) | HR-06 | | Arizona BBHE (Board of Behavioral Health Examiners) | [https://www.azbbhe.us/](https://www.azbbhe.us/) | HR-02 | | Arizona DPS Fingerprint Clearance | [https://www.azdps.gov/services/public/fingerprint](https://www.azdps.gov/services/public/fingerprint) | HR-02 | | FTC: Using Consumer Reports (Employers) | [https://www.ftc.gov/business-guidance/resources/using-consumer-reports-what-employers-need-know](https://www.ftc.gov/business-guidance/resources/using-consumer-reports-what-employers-need-know) | HR-09 | | CFPB: FCRA Summary of Rights | [https://www.consumerfinance.gov/rules-policy/regulations/1022/K](https://www.consumerfinance.gov/rules-policy/regulations/1022/K) | HR-09 | | FCC: TCPA Rules | [https://www.fcc.gov/document/rules-and-regulations-implementing-telephone-consumer-protection-act-22](https://www.fcc.gov/document/rules-and-regulations-implementing-telephone-consumer-protection-act-22) | HR-09-P5 | *** ## 8. Periodic Review Schedule | Review | Frequency | Next Due | Owner | | ----------------------------------- | ------------------------- | ------------ | ------------------------- | | FLSA classification audit | Annually | `YYYY-MM-DD` | HR Director | | Arizona minimum wage rate update | Annually (Jan 1) | 2027-01-01 | Payroll Manager | | I-9 / E-Verify audit | Annually | `YYYY-MM-DD` | Compliance Officer | | FMLA eligibility review | Quarterly | `YYYY-MM-DD` | HR Director | | License/credential expiration check | Monthly | `YYYY-MM-DD` | Credentialing Coordinator | | OSHA 300 Log posting | Annually (Feb 1 – Apr 30) | 2027-02-01 | Safety Officer | | Workers' comp classification review | Annually | `YYYY-MM-DD` | HR Director | | FCRA/TCPA compliance audit | Quarterly | `YYYY-MM-DD` | Compliance Officer | *** ## Version History ### 1.0.2 (2026-05-22) * Updated AD-05 mapping to HR-42 for workforce EEO-1 Component 1 export ### 1.0.1 (2026-03-25) * Added HIPAA Privacy Rule workforce training documentation (HP-01) mapped to HR-31 / HR-03 * Added OSHA safety policy acknowledgment evidence (OS-06) mapped to HR-31 ### 1.0.0 (2026-02-27) * Initial comprehensive HR workforce compliance document * Covers FLSA, Arizona wage law, FMLA, ERISA, COBRA, ACA, I-9/E-Verify, EEOC/Title VII/ADA/GINA/PWFA, OSHA/ADOSH, credentialing, workers' comp * Cross-references FCRA\_TCPA\_COMPLIANCE\_TRACKING.md for background check and SMS details * 40+ compliance requirements tracked across 6 categories *** **Last Updated:** 2026-05-22 **Next Review:** 2026-05-27 # IT Security Compliance Tracking Source: https://docs.encoreos.io/compliance/IT_SECURITY_COMPLIANCE_TRACKING This document tracks information security and IT compliance obligations for Encore OS as a healthcare technology platform processing ePHI. The IT module covers… > **Cross-References:** > > * [REGULATORY\_COMPLIANCE\_TRACKER.md](/compliance/REGULATORY_COMPLIANCE_TRACKER) — Master compliance tracker > * ONC\_CERTIFICATION\_ROADMAP.md — ONC certification (related) > * [PHI\_CLASSIFICATION.md](/compliance/PHI_CLASSIFICATION) — PHI data classification > * `docs/compliance/AUTHORITATIVE_REFERENCES.md` — Authoritative External References — IT and Security *** ## Overview This document tracks information security and IT compliance obligations for Encore OS as a healthcare technology platform processing ePHI. The IT module covers HIPAA Security Rule safeguards, HITECH breach notification, cybersecurity frameworks (NIST CSF, CIS Controls), state data breach notification, and related standards (SOC 2, PCI DSS). *** ## 1. HIPAA Security Rule (45 CFR 164 Subpart C) ### 1.1 Administrative Safeguards (§164.308) | # | Requirement | Responsible Spec | Status | Notes | | ------ | ------------------------------------------------------------------------------------------------------- | -------------------------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | HS-A01 | **Risk analysis** — Conduct accurate and thorough assessment of risks to ePHI | IT-05 | ⏳ Not Started | Annual risk analysis; document findings and remediation | | HS-A02 | **Risk management** — Implement measures sufficient to reduce risks to reasonable and appropriate level | IT-05 | ⏳ Not Started | Risk treatment plan; track mitigation actions | | HS-A03 | **Workforce security** — Ensure appropriate access to ePHI; prevent unauthorized access | PF-30 (permissions), HR-01 | 🟡 Partial | Role-based access in PF-30; authorization/supervision procedures needed | | HS-A04 | **Information access management** — Authorize access to ePHI consistent with access policies | PF-30 | 🟡 Partial | Permission system implemented; access review procedures needed | | HS-A05 | **Security awareness training** — Security training program for all workforce members | IT-05, HR-04 | ⏳ Not Started | Training tracking in HR-04; security-specific curriculum needed | | HS-A06 | **Security incident procedures** — Identify, respond to, and mitigate security incidents | IT-05 | ⏳ Not Started | Incident response plan; SIEM integration | | HS-A07 | **Contingency plan** — Establish data backup, disaster recovery, and emergency operations plans | IT-05 | ⏳ Not Started | Backup strategy (Supabase); RTO/RPO documentation | | HS-A08 | **Business associate agreements** — Written agreements with all business associates handling ePHI | PF-44, **PF-111** | 🟡 Partial | BAA with Supabase. **AI subprocessors (see [AI\_SUBPROCESSOR\_BAA\_POSTURE.md](/compliance/AI_SUBPROCESSOR_BAA_POSTURE)):** Vercel AI Gateway BAA + Zero-Data-Retention confirmed 2026-05-29; Anthropic/OpenAI covered transitively through Gateway BAA+ZDR. Langfuse Cloud: no BAA executed — acceptable under metadata-only posture (no PHI content ever sent); a Langfuse BAA is required before any content capture is enabled. BAA tracking for all remaining vendors (non-AI) still needed. | ### 1.2 Physical Safeguards (§164.310) | # | Requirement | Responsible Spec | Status | Notes | | ------ | ------------------------------------------------------------------------------------------- | ---------------- | ------------- | ---------------------------------------------------------------------------------- | | HS-P01 | **Facility access controls** — Limit physical access to systems containing ePHI | IT-05 | 📋 Cloud | Cloud-hosted (Supabase/Vercel); data center physical security managed by providers | | HS-P02 | **Workstation use and security** — Policies for workstation access and physical safeguards | IT-05 | ⏳ Not Started | Endpoint security policies needed | | HS-P03 | **Device and media controls** — Procedures for disposal, re-use, and transfer of ePHI media | IT-05 | ⏳ Not Started | Data disposal procedures; encryption at rest | ### 1.3 Technical Safeguards (§164.312) | # | Requirement | Responsible Spec | Status | Notes | | ------ | ---------------------------------------------------------------------------------------------------- | --------------------- | ----------- | ------------------------------------------------------------------------------------------- | | HS-T01 | **Access control** — Unique user identification, emergency access, automatic logoff, encryption | PF-30, PF-01 | 🟡 Partial | Supabase Auth (PF-01); RBAC (PF-30); session timeout and emergency access procedures needed | | HS-T02 | **Audit controls** — Hardware, software, and procedural mechanisms to record and examine ePHI access | PF-40 (audit logging) | 🟡 Partial | Audit logging implemented; log review and retention procedures needed | | HS-T03 | **Integrity controls** — Protect ePHI from improper alteration or destruction | PF, RLS | 🟡 Partial | RLS policies enforce data integrity; additional integrity verification needed | | HS-T04 | **Person or entity authentication** — Verify identity of person/entity seeking ePHI access | PF-01 | ✅ Compliant | Supabase Auth with MFA support | | HS-T05 | **Transmission security** — Encrypt ePHI in transit (TLS/SSL) | PF, Supabase | ✅ Compliant | All Supabase connections use TLS; Vercel serves HTTPS | ### 1.4 Encryption at Rest and Key Management (Module-Specific) | # | Spec / Module | Requirement | Status | Notes | | ----- | ---------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------- | ------------------------------------------------------- | | KM-01 | **PM-33** (Capitation) | `member_id_external` (MCO-assigned member ID) encrypted at rest via pgcrypto `pgp_sym_encrypt`; keys stored in Supabase Vault. **Key rotation:** Privacy Officer and Security Officer agree on rotation cadence during PM-33 sign-off (e.g. annual per [FA-SECURITY-CONSIDERATIONS](/fa/security-considerations) or 90-day service key). Agreed cadence must be recorded in this tracker and in [PM-33-COMPLIANCE-SIGNOFF.md](https://github.com/Encore-OS/encoreos/blob/development/specs/pm/reviews/PM-33-COMPLIANCE-SIGNOFF.md). | 📋 Pending sign-off | Rotation plan documented upon PM-33 compliance sign-off | *** ## 2. HITECH Act | # | Requirement | Responsible Spec | Status | Notes | | ----- | --------------------------------------------------------------------------------------------------------------- | ---------------- | ------------- | ----------------------------------------------------------------------- | | HT-01 | **Breach notification — individuals** — Notify affected individuals without unreasonable delay (within 60 days) | IT-05, PF-44 | ⏳ Not Started | Breach notification workflow; template letters | | HT-02 | **Breach notification — HHS** — Report breaches of 500+ individuals to HHS and media | IT-05 | ⏳ Not Started | HHS breach reporting portal integration or manual process | | HT-03 | **Breach notification — small breaches** — Annual report to HHS for breaches \< 500 individuals | IT-05 | ⏳ Not Started | Breach log; annual compilation and submission | | HT-04 | **Risk assessment for breach determination** — Assess probability that PHI was compromised | IT-05 | ⏳ Not Started | Risk assessment methodology per HITECH 4-factor test | | HT-05 | **Business associate obligations** — BAs directly liable for HIPAA Security Rule compliance | PF-44, IT-05 | 🟡 Partial | BAA tracking; vendor security assessments needed | | HT-06 | **Encryption safe harbor** — Encrypted/destroyed data exempt from breach notification | IT-05 | 🟡 Partial | Supabase encryption at rest; application-level encryption review needed | *** ## 3. Cybersecurity Frameworks ### 3.1 NIST Cybersecurity Framework (CSF 2.0) | # | Function | Responsible Spec | Status | Notes | | ------- | ---------------------------------------------------------------------------------------------- | ---------------- | ------------- | -------------------------------------------------------------------- | | NIST-01 | **Identify** — Asset management, risk assessment, governance | IT-05 | ⏳ Not Started | Asset inventory; risk register; governance framework | | NIST-02 | **Protect** — Access control, awareness training, data security, maintenance | IT-05, PF-30 | 🟡 Partial | Access control via PF-30; training and maintenance procedures needed | | NIST-03 | **Detect** — Anomalies and events, continuous monitoring, detection processes | IT-05 | ⏳ Not Started | SIEM/monitoring; alerting; log analysis | | NIST-04 | **Respond** — Response planning, communications, analysis, mitigation, improvements | IT-05 | ⏳ Not Started | Incident response plan; communication templates | | NIST-05 | **Recover** — Recovery planning, improvements, communications | IT-05 | ⏳ Not Started | Disaster recovery plan; business continuity | | NIST-06 | **Govern** (CSF 2.0 new) — Organizational context, risk management strategy, supply chain risk | IT-05 | ⏳ Not Started | Cybersecurity governance framework | ### 3.2 CIS Critical Security Controls v8 | # | Control | Responsible Spec | Status | Notes | | ------ | ----------------------------------------------------------------------------------------- | ---------------- | ------------- | ------------------------------------------------------------------------------------ | | CIS-01 | **Inventory and control of enterprise assets** | IT-05 | ⏳ Not Started | Asset inventory system | | CIS-02 | **Inventory and control of software assets** | IT-05 | 🟡 Partial | package.json/lock files track dependencies; formal software inventory needed | | CIS-03 | **Data protection** — Classify and protect sensitive data | IT-05, PF-44 | 🟡 Partial | PHI\_CLASSIFICATION.md exists; data loss prevention needed | | CIS-04 | **Secure configuration** — Establish and maintain secure configurations | IT-05 | 🟡 Partial | Infrastructure-as-code partially; CIS benchmarks audit needed | | CIS-05 | **Account management** — Manage lifecycle of accounts | PF-30, PF-01 | 🟡 Partial | Auth and RBAC in place; formal lifecycle (provisioning/deprovisioning) review needed | | CIS-06 | **Access control management** — Create, assign, manage, and revoke access | PF-30 | 🟡 Partial | Permission system; periodic access review procedures needed | | CIS-07 | **Continuous vulnerability management** — Identify, prioritize, remediate vulnerabilities | IT-05 | ⏳ Not Started | Dependabot/Snyk scanning; vulnerability management process | *** ## 4. Arizona Data Breach Notification (ARS 18-552) | # | Requirement | Responsible Spec | Status | Notes | | ------ | ----------------------------------------------------------------------------------------------------------- | ---------------- | ------------- | --------------------------------------------------------------------------------------- | | AZ-B01 | **Investigation requirement** — Investigate security incidents to determine if breach occurred | IT-05 | ⏳ Not Started | Incident investigation procedures | | AZ-B02 | **45-day notification** — Notify affected individuals within 45 days of breach determination | IT-05 | ⏳ Not Started | Notification workflow; template letters | | AZ-B03 | **1,000+ threshold reporting** — Notify AG, DHS, and CRAs for breaches of 1,000+ individuals | IT-05 | ⏳ Not Started | AG notification form; CRA contact procedures | | AZ-B04 | **HIPAA exemption** — HIPAA-covered entities following HIPAA breach notification are exempt from ARS 18-552 | IT-05 | 📋 Awareness | Encore OS as HIPAA CE follows HIPAA rules; ARS 18-552 exemption applies to PHI breaches | *** ## 5. SOC 2 (Service Organization Control) | # | Requirement | Responsible Spec | Status | Notes | | ------ | -------------------------------------------------------------------------------------------------------------------------------------------- | ---------------- | ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | SOC-01 | **SOC 2 Type II readiness** — Trust service criteria: security, availability, processing integrity, confidentiality, privacy | IT-05 | ⏳ Not Started | Evaluate need based on customer/payer requirements; Supabase has SOC 2 | | SOC-02 | **Control documentation** — Document and test controls per trust service criteria | IT-05 | ⏳ Not Started | If pursuing SOC 2: map controls to criteria; engage auditor | | SOC-03 | **Vendor SOC reports** — Obtain and review SOC reports from subservice organizations (Supabase, Vercel, Stripe, Langfuse, Anthropic, OpenAI) | IT-05 | ⏳ Not Started | Annual vendor SOC report review. AI subprocessors added: Vercel AI Gateway, Langfuse Cloud, Anthropic, OpenAI. See [AI\_SUBPROCESSOR\_BAA\_POSTURE.md](/compliance/AI_SUBPROCESSOR_BAA_POSTURE) for current posture. | *** ## 6. PCI DSS | # | Requirement | Responsible Spec | Status | Notes | | ------ | ---------------------------------------------------------------------------------------------------------------------- | ---------------- | -------------------- | --------------------------------------------------------------------------------- | | PCI-01 | **PCI DSS applicability assessment** — Determine if cardholder data is stored/processed/transmitted | IT-05 | 📋 Assessment needed | If Stripe tokenization is used exclusively, PCI scope is minimal (SAQ-A eligible) | | PCI-02 | **SAQ-A compliance** (if applicable) — Self-Assessment Questionnaire A for merchants who outsource all cardholder data | IT-05 | ⏳ Not Started | Complete SAQ-A annually if payment processing is in scope | *** ## 7. Authoritative External References | Source | URL | Used By | | --------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | | HIPAA Security Rule (45 CFR 164 Subpart C) | [https://www.hhs.gov/hipaa/for-professionals/security/index.html](https://www.hhs.gov/hipaa/for-professionals/security/index.html) | IT-05 | | NIST SP 800-66r2 (Implementing HIPAA Security Rule) | [https://csrc.nist.gov/pubs/sp/800/66/r2/final](https://csrc.nist.gov/pubs/sp/800/66/r2/final) | IT-05 | | NIST Cybersecurity Framework 2.0 | [https://www.nist.gov/cyberframework](https://www.nist.gov/cyberframework) | IT-05 | | CIS Critical Security Controls v8 | [https://www.cisecurity.org/controls](https://www.cisecurity.org/controls) | IT-05 | | HITECH Act | [https://www.hhs.gov/hipaa/for-professionals/special-topics/hitech-act-enforcement-interim-final-rule/index.html](https://www.hhs.gov/hipaa/for-professionals/special-topics/hitech-act-enforcement-interim-final-rule/index.html) | IT-05 | | HHS: Breach Notification Rule | [https://www.hhs.gov/hipaa/for-professionals/breach-notification/index.html](https://www.hhs.gov/hipaa/for-professionals/breach-notification/index.html) | IT-05 | | Arizona ARS 18-552 (Data breach notification) | [https://www.azleg.gov/ars/18/00552.htm](https://www.azleg.gov/ars/18/00552.htm) | IT-05 | | Arizona AG: Data Breach FAQ | [https://www.azag.gov/consumer/data-breach/faq](https://www.azag.gov/consumer/data-breach/faq) | IT-05 | | PCI Security Standards Council | [https://www.pcisecuritystandards.org/](https://www.pcisecuritystandards.org/) | IT-05 | | SOC 2 (AICPA) | [https://us.aicpa.org/interestareas/frc/assuranceadvisoryservices/sorhome](https://us.aicpa.org/interestareas/frc/assuranceadvisoryservices/sorhome) | IT-05 | *** ## 8. Periodic Review Schedule | Review | Frequency | Next Due | Owner | | ---------------------------- | ----------------------- | ------------ | ----------------------- | | HIPAA Security risk analysis | Annually | `YYYY-MM-DD` | CISO / Security Officer | | NIST CSF maturity assessment | Annually | `YYYY-MM-DD` | CISO / Security Officer | | Vulnerability scanning | Monthly (or continuous) | `YYYY-MM-DD` | Engineering / DevOps | | Penetration testing | Annually | `YYYY-MM-DD` | External vendor | | Incident response plan test | Annually | `YYYY-MM-DD` | CISO / Security Officer | | BAA inventory review | Annually | `YYYY-MM-DD` | Privacy Officer | | Vendor SOC report review | Annually | `YYYY-MM-DD` | CISO / Security Officer | | Backup and recovery test | Semi-annually | `YYYY-MM-DD` | DevOps | | PCI SAQ-A (if applicable) | Annually | `YYYY-MM-DD` | Finance / IT | *** ## Version History ### 1.0.0 (2026-02-27) * Initial comprehensive IT security compliance document * Covers HIPAA Security Rule (admin/physical/technical safeguards), HITECH, NIST CSF 2.0, CIS Controls v8, Arizona breach notification, SOC 2, PCI DSS * 40+ compliance requirements tracked across 6 categories *** **Last Updated:** 2026-02-27 **Next Review:** 2026-05-27 # ONC Health IT Certification Gap Matrix Source: https://docs.encoreos.io/compliance/ONC_CERTIFICATION_GAP_MATRIX **Version:** 1.1.0\ **Last Updated:** 2026-05-15\ **Owner:** Product / Compliance / CL / PM / PF\ **Purpose:** Decision-grade matrix for choosing ONC pathway (**Full certification**, **modular certification**, or **alignment-only**), with criterion-level coverage and implementation gaps. *** ## 1) Executive Summary and Decision Framework Encore OS already has meaningful ONC-oriented groundwork in specs and partial implementation, especially around FHIR, patient access, C-CDA, information blocking, and prior authorization. Strongest existing anchors: * [`CL-16`](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-16-fhir-interoperability-data-exchange.md) and [`CL-16-EN-02`](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-16-EN-02-uscdi-v3-patient-access-api.md) for FHIR/USCDI and SMART-aligned patient access. * [`PM-55`](https://github.com/Encore-OS/encoreos/blob/development/specs/pm/specs/PM-55-onc-hti1-uscdi-v3-patient-access-api.md) for ONC HTI-1 patient access + information blocking workflow. * [`CL-48`](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-48-clinical-document-architecture-cda.md) for C-CDA generation and transition workflows. * [`PM-52`](https://github.com/Encore-OS/encoreos/blob/development/specs/pm/specs/PM-52-davinci-fhir-prior-authorization-api.md) and [`PM-10`](https://github.com/Encore-OS/encoreos/blob/development/specs/pm/specs/PM-10-prior-authorization-management.md) for Da Vinci CRD/DTR/PAS trajectory. * Existing compliance baseline in [`ONC_CERTIFICATION_ROADMAP.md`](/compliance/ONC_CERTIFICATION_ROADMAP), [`REGULATORY_COMPLIANCE_TRACKER.md`](/compliance/REGULATORY_COMPLIANCE_TRACKER), and [`AUTHORITATIVE_REFERENCES.md`](/compliance/AUTHORITATIVE_REFERENCES). Most important missing areas for certification readiness: * Conditions and Maintenance of Certification artifacts (Real World Testing, Insights condition, attestations cadence, CHPL documentation artifacts). * Public health reporting criteria (f-family) and transport criteria (h-family) at certification depth. * Design/process criteria (g(3) Safety-Enhanced Design, g(4) QMS, g(5) Accessibility-centered design) as ONC evidence artifacts. * Predictive DSI transparency and HTI-2 additions (`j(20)`, `j(21)`). ### 1.1 Path Comparison | Path | What it means | Approx effort | Ongoing burden | Best fit | | -------------------------------------------- | ------------------------------------------------------------------------------------------------ | ------------: | -------------: | ------------------------------------------------------------------------------------ | | Full ONC Certification (broad module scope) | Certify broad criterion set with ONC-ACB/ATL and full Conditions/Maintenance obligations | 12-24+ months | High | If commercial strategy depends on certified module breadth and formal CHPL posture | | Modular ONC Certification (targeted) | Certify a constrained criterion package (typically API-centric and selected supporting criteria) | 6-12 months | Medium-High | If payer/customer contracts need certified capability but not full criterion surface | | ONC Alignment-Only (no certification filing) | Implement standards and compliance posture without formal ONC testing/certification artifacts | 3-9 months | Medium | If near-term value is interop/compliance readiness without CHPL listing | ### 1.2 Required Artifacts by Path | Artifact | Full | Modular | Alignment-only | | ----------------------------------------- | -------- | -------------------------------- | ----------------------------- | | ONC-ACB engagement | Required | Required | Not required | | ONC-ATL test execution | Required | Required (for in-scope criteria) | Not required | | CHPL listing | Required | Required (for certified module) | No | | Real World Testing plan/results | Required | Required (for certified scope) | Optional internal | | Insights Condition reporting | Required | Required | Optional internal | | Mandatory disclosures URL | Required | Required | Optional | | Hosted documentation URL | Required | Required | Optional | | Annual attestation package | Required | Required | Internal governance only | | Inferno/SITE/Cypress conformance evidence | Required | Required for selected criteria | Strongly recommended internal | ### 1.3 Decision Triggers | Trigger | Recommendation | | ------------------------------------------------------------------ | ----------------------------------------------------------------------------- | | Contract explicitly requires CHPL-listed module | Choose modular or full certification | | Strategic product positioning requires "certified" market claim | Choose modular now, full later if needed | | Priority is interoperability delivery speed with lower overhead | Choose alignment-only with certification-grade internal evidence | | Multi-state payer expansion requires auditable API posture quickly | Choose modular certification focused on API and information blocking evidence | *** ## 2) 45 CFR §170.315 Criteria Gap Matrix (Criterion Families) Coverage Status Legend: * `None` * `Spec-only` * `Spec + partial impl` * `Spec + impl-complete` * `Certified-ready` ### 2.1 (a) Clinical Criteria | Criterion | Title | In-scope for BH | Owning core | Existing spec(s) | Implementation evidence | Coverage status | ONC test tool | Standards / SVAP posture | HTI rule context | Recommended action | | --------- | ---------------------------------------------- | ---------------------- | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------- | --------------------------------------- | ------------------------------- | ------------------------------------- | ----------------------------------------------------------------------------- | | `a(1)` | CPOE - medications | Yes | CL | [`CL-05`](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-05-medication-management-reconciliation.md), [`CL-06`](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-06-e-prescribing-epcs.md) | Partial eRx workflow and medication structures | Spec + partial impl | SITE + certification method | NCPDP/RxNorm ecosystem | HTI-4 impacts med standards timelines | Split into cert-oriented enhancement with testable CPOE acceptance | | `a(2)` | CPOE - laboratory | Yes | CL | [`CL-09`](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-09-lab-diagnostic-orders-results.md) | HL7/FHIR lab ingestion exists; full certification flow not complete | Spec + partial impl | NIST/public health suites + cert method | HL7 v2/Lab standards | HTI alignment via USCDI | Add explicit certification test matrix for lab order entry and result linkage | | `a(3)` | CPOE - diagnostic imaging | Usually limited for BH | CL | No dedicated cert-ready spec | No dedicated evidence surfaced | None | Certification method | Imaging standards as applicable | N/A or limited by service line | Confirm N/A policy by product scope and document rationale | | `a(4)` | Drug-drug / drug-allergy checks | Yes | CL | [`CL-06`](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-06-e-prescribing-epcs.md), [`CL-45`](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-45-allergy-adverse-reaction-tracking.md) | Allergy tracking implemented, interaction logic partial | Spec + partial impl | Certification method | RxNorm/SNOMED ecosystems | HTI-4 adjacent | Add required interaction logic evidence package and override logging | | `a(5)` | Demographics | Yes | PM/CL | [`PM-01`](https://github.com/Encore-OS/encoreos/blob/development/specs/pm/specs/PM-01-patient-registration-demographics.md), [`PM-55`](https://github.com/Encore-OS/encoreos/blob/development/specs/pm/specs/PM-55-onc-hti1-uscdi-v3-patient-access-api.md) | Demographics tables + APIs partially mapped | Spec + partial impl | Inferno + cert method | USCDI v3 baseline | HTI-1 | Normalize to USCDI v3 required fields and value sets | | `a(6)` | Problem list | Yes | CL | [`CL-46`](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-46-problem-list-management-icd10.md) | Problem list features present; FHIR cert mapping incomplete | Spec + partial impl | Inferno + cert method | USCDI + terminology | HTI-1 | Add profile-conformant export + terminology conformance tests | | `a(7)` | Medication list | Yes | CL | [`CL-05`](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-05-medication-management-reconciliation.md) | Medication data exists; full cert test evidence not assembled | Spec + partial impl | Inferno + cert method | USCDI + RxNorm | HTI-1/4 | Add gap closure on code-set fidelity and API outputs | | `a(8)` | Medication allergy list | Yes | CL | [`CL-45`](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-45-allergy-adverse-reaction-tracking.md) | Implemented allergy workflows + partial FHIR mapping | Spec + partial impl | Inferno + cert method | USCDI + terminology | HTI-1 | Add inferno-oriented conformance test assets | | `a(9)` | Clinical decision support | Yes | CL | [`CL-08`](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-08-clinical-decision-support.md) | Internal CDS exists; not ONC cert evidence packaged | Spec + partial impl | Certification method | CDS evidence requirements | HTI-1/HTI-2 interplay | Add cert-specific CDS intervention, source, and audit artifacts | | `a(10)` | Drug-formulary and preferred drug list checks | Yes | CL/PM | No dedicated ONC cert spec found | No dedicated cert evidence | None | eRx suite + cert method | NCPDP/RxNorm ecosystem | HTI-4 adjacent | Create dedicated spec or enhancement for formulary checking | | `a(11)` | Smoking status | Yes | CL | Covered indirectly in assessments and USCDI mapping specs | Partial via assessments; not explicitly certified | Spec + partial impl | Inferno + cert method | USCDI v3 | HTI-1 | Add explicit smoking-status criterion acceptance and FHIR mapping | | `a(12)` | Family health history | Possibly in-scope | CL | No clear dedicated criterion spec | No evidence confirmed | None | Certification method | USCDI profile scope dependent | HTI-1 | Decide in-scope status and either implement or document exclusion | | `a(13)` | Patient-specific education resources | Usually yes | PM/CL | Portal and engagement specs (`PM-12`, `CL-26`) | Patient education workflows not mapped to criterion artifacts | Spec-only | Certification method | Patient engagement standards | HTI-1 adjacent | Add criterion-specific educational resource mapping and audit trail | | `a(14)` | Implantable device list | Typically not BH core | CL | Explicitly treated as N/A in roadmap | No implementation expected | None | Certification method | Device UDI standards | N/A for BH scope | Keep N/A with formal scope memo | | `a(15)` | Social, psychological, behavioral data support | Yes | CL | [`CL-18`](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-18-sdoh-screening-social-needs.md), [`CL-40`](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-40-clinical-intake-documentation-sdoh-assessment.md) | SDOH/intake features exist | Spec + partial impl | Inferno + cert method | USCDI+ BH relevance | HTI-1/HTI-2 trajectory | Align value sets and criterion-specific export/reporting evidence | ### 2.2 (b) Care Coordination Criteria | Criterion | Title | In-scope for BH | Owning core | Existing spec(s) | Implementation evidence | Coverage status | ONC test tool | Standards / SVAP posture | HTI rule context | Recommended action | | --------- | ------------------------------------------------------------ | --------------------------------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------ | ------------------- | ----------------------------- | --------------------------------------- | ---------------------- | ---------------------------------------------------------------------- | | `b(1)` | Transitions of Care | Yes | CL | [`CL-48`](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-48-clinical-document-architecture-cda.md), [`CL-12`](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-12-care-coordination-transitions.md) | C-CDA tooling in progress, not fully cert-ready | Spec + partial impl | SITE C-CDA tools | C-CDA companion guide versions changing | HTI-1 baseline updates | Finish validation harness and transmission evidence | | `b(2)` | Clinical information reconciliation/incorporation | Yes | CL | [`CL-12`](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-12-care-coordination-transitions.md), [`CL-05`](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-05-medication-management-reconciliation.md) | Partial reconciliation functions | Spec + partial impl | SITE/C-CDA tooling | C-CDA + USCDI | HTI-1 | Build cert test cases for reconciliation workflows | | `b(3)` | Electronic prescribing | Yes | CL | [`CL-06`](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-06-e-prescribing-epcs.md) | Current eRx path exists; production-grade NCPDP transition pending | Spec + partial impl | eRx Testing Suite | NCPDP SCRIPT 2023011 deadline | HTI-4 | Execute HTI-4 upgrade program and test suite readiness | | `b(4)` | Real-time prescription benefit | Often in-scope if eRx scope includes it | CL | Mentioned in CL-06 enhancement planning | No cert-ready implementation confirmed | Spec-only | eRx Testing Suite | RTPB standard v13 | HTI-4 | Add dedicated implementation spec and go/no-go decision | | `b(5)` | Incorporate laboratory tests/results | Yes | CL | [`CL-09`](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-09-lab-diagnostic-orders-results.md) | Lab ingestion partially present | Spec + partial impl | Public health + cert method | HL7 v2/FHIR mapping | HTI-1 | Expand to criterion-specific reconciliation and provenance checks | | `b(6)` | Data export | Yes | PF/CL | [`PF-44`](https://github.com/Encore-OS/encoreos/blob/development/specs/pf/specs/PF-44-data-export-compliance.md), [`CL-20`](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-20-medical-record-export-document-generation.md) | Export capabilities implemented in parts | Spec + partial impl | Certification method | EHI export requirements | HTI-1 | Consolidate EHI export criterion evidence packet | | `b(7)` | Security tags - summary of care (send) | Yes | CL/PF | No dedicated DS4P send spec | No criterion-level evidence | None | SITE/C-CDA tools | DS4P required | HTI-1 | Create DS4P send spec and labeling pipeline | | `b(8)` | Security tags - summary of care (receive) | Yes | CL/PF | No dedicated DS4P receive spec | No criterion-level evidence | None | SITE/C-CDA tools | DS4P required | HTI-1 | Create DS4P receive/processing policy + tests | | `b(9)` | Care plan | Yes | CL | [`CL-03`](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-03-treatment-planning.md), CL-16 mappings | Care plan data exists; cert conformance incomplete | Spec + partial impl | C-CDA + Inferno as applicable | USCDI/C-CDA | HTI-1 | Add canonical care-plan export and validation evidence | | `b(10)` | EHI export | Yes | PF/CL/PM | [`PF-44`](https://github.com/Encore-OS/encoreos/blob/development/specs/pf/specs/PF-44-data-export-compliance.md), [`PM-55`](https://github.com/Encore-OS/encoreos/blob/development/specs/pm/specs/PM-55-onc-hti1-uscdi-v3-patient-access-api.md) | Partial implementation across modules | Spec + partial impl | Certification method | EHI export + Cures posture | HTI-1 | Single governed EHI export control plane and tests | | `b(11)` | Decision support interventions / predictive DSI transparency | Yes | PM/CL/GR | [`PM-64`](https://github.com/Encore-OS/encoreos/blob/development/specs/pm/specs/PM-64-ai-coding-assistant.md), [`CL-08`](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-08-clinical-decision-support.md) | Mentioned but no dedicated ONC transparency package | Spec-only | Certification method | ONC DSI source attributes | HTI-1 | Author dedicated criterion spec with full source attribute disclosures | ### 2.3 (c) Clinical Quality Measure Criteria | Criterion | Title | In-scope for BH | Owning core | Existing spec(s) | Implementation evidence | Coverage status | ONC test tool | Standards / SVAP posture | HTI rule context | Recommended action | | --------- | -------------------------- | --------------- | ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------- | ------------------- | ------------- | ---------------------------------- | --------------------- | ------------------------------------------------------- | | `c(1)` | CQM - record and export | Yes | CL | [`CL-51`](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-51-clinical-quality-measures-reporting-engine.md) | Spec present, implementation not complete | Spec-only | Cypress | QRDA ecosystem | HTI roadmap dependent | Build QRDA generation and certification test pipeline | | `c(2)` | CQM - import and calculate | Yes | CL | [`CL-51`](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-51-clinical-quality-measures-reporting-engine.md) | Partial quality calculations in product; not cert packaged | Spec + partial impl | Cypress | QRDA + measure logic | HTI roadmap dependent | Add ONC cert method coverage and validation data | | `c(3)` | CQM - report | Yes | CL | [`CL-51`](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-51-clinical-quality-measures-reporting-engine.md), [`CL-35`](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-35-population-health-care-gap-management.md) | Reporting exists operationally but not ONC cert-targeted | Spec + partial impl | Cypress | CMS quality reporting guides | HTI-1 adjacent | Formalize ONC reporting output conformance | | `c(4)` | CQM - filter | Yes | CL | [`CL-51`](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-51-clinical-quality-measures-reporting-engine.md) | No cert-oriented evidence bundle identified | Spec-only | Cypress | Taxonomy/value-set versions matter | HTI-1 adjacent | Implement filter conformance + replayable test fixtures | ### 2.4 (d) Privacy and Security Criteria | Criterion | Title | In-scope | Owning core | Existing spec(s) | Implementation evidence | Coverage status | ONC test tool | Standards / posture | HTI context | Recommended action | | --------- | --------------------------------------------------- | -------- | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------- | -------------------- | -------------------- | ------------------------------- | ----------- | -------------------------------------------------------------------- | | `d(1)` | Authentication, access control, authorization | Yes | PF | [`PF-01`](https://github.com/Encore-OS/encoreos/blob/development/specs/pf/specs/PF-01-organization-site-management.md), [`PF-30`](https://github.com/Encore-OS/encoreos/blob/development/specs/pf/specs/PF-30-permissions-system-v2.md) | Mature auth/RBAC foundations | Spec + impl-complete | Certification method | HIPAA + ONC controls | HTI-1 | Add criterion-specific traceability matrix | | `d(2)` | Auditable events and tamper resistance | Yes | PF/PM | [`PF-40`](https://github.com/Encore-OS/encoreos/blob/development/specs/pf/specs/PF-40-ux-enhancement-framework.md), [`PM-55`](https://github.com/Encore-OS/encoreos/blob/development/specs/pm/specs/PM-55-onc-hti1-uscdi-v3-patient-access-api.md) | Audit logs exist, PM info-blocking log exists | Spec + partial impl | Certification method | HIPAA audit controls | HTI-1 | Add immutable FHIR-specific audit stream and cert evidence | | `d(3)` | Audit report(s) | Yes | PF | [`PF-91`](https://github.com/Encore-OS/encoreos/blob/development/specs/pf/specs/PF-91-compliance-automation-regulatory-dashboard.md) | Dashboard spec exists, not fully implemented | Spec-only | Certification method | Reporting evidence | HTI-1 | Deliver audit report artifact generator for certification | | `d(4)` | Amendments | Yes | CL/PM | Scattered in clinical documentation specs | Not mapped as ONC criterion | Spec-only | Certification method | HIPAA overlap | HTI-1 | Add explicit criterion ownership and tests | | `d(5)` | Automatic log-off | Yes | PF | No dedicated ONC criterion spec | Platform behavior likely present but undocumented for cert | None | Certification method | Security UX policy | HTI-1 | Create criterion-level evidence and timeout policy tests | | `d(6)` | Emergency access | Yes | PF/CL | Break-glass references in compliance tracker | Partial references, no criterion package | Spec-only | Certification method | Emergency access controls | HTI-1 | Define and test emergency access workflow formally | | `d(7)` | End-user device encryption | Yes | PF/IT | IT compliance tracker references | No explicit criterion implementation package | None | Certification method | HIPAA device controls | HTI-1 | Add policy/evidence package for endpoint encryption controls | | `d(8)` | Integrity | Yes | PF | Core platform safeguards exist | Not mapped in ONC cert format | Spec-only | Certification method | Data integrity checks | HTI-1 | Add signed evidence for integrity controls | | `d(9)` | Accounting of disclosures | Yes | CL | [`CL-11`](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-11-consent-management-42cfr-part2.md), CL-11 enhancements | Implemented for Part 2 disclosures | Spec + impl-complete | Certification method | Part 2 + HIPAA overlap | HTI-1 | Extend to full ONC accounting criterion mapping | | `d(10)` | Authentication credential management | Yes | PF | PF auth/RBAC specs | Core exists, cert evidence package not assembled | Spec + partial impl | Certification method | Credential lifecycle controls | HTI-1 | Produce criterion-level credential management controls documentation | | `d(11)` | Encryption and hashing of authenticated credentials | Yes | PF/IT | IT tracker notes deferred credential-at-rest hardening | Partial | Spec + partial impl | Certification method | HIPAA + crypto controls | HTI-1 | Prioritize vault migration and certify traceability | | `d(12)` | Encrypt authentication assertions | Yes | PF | No dedicated cert spec | No direct evidence bundle | None | Certification method | SAML/SMART assertion encryption | HTI-1 | Author dedicated criterion spec | | `d(13)` | Multi-factor authentication | Yes | PF | Mentioned in trackers/specs; no standalone criterion spec | Partial/Deferred operationally | Spec-only | Certification method | MFA requirements | HTI-1 | Add dedicated MFA criterion implementation and evidence | ### 2.5 (e) Patient Engagement Criteria | Criterion | Title | In-scope for BH | Owning core | Existing spec(s) | Implementation evidence | Coverage status | ONC test tool | Standards / posture | HTI context | Recommended action | | --------- | ---------------------------------- | --------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------- | ------------------- | --------------------- | -------------------------------- | ----------- | -------------------------------------------------------------------------------- | | `e(1)` | View, Download, and Transmit (VDT) | Yes | PM/CL | [`PM-12`](https://github.com/Encore-OS/encoreos/blob/development/specs/pm/specs/PM-12-patient-portal-self-service.md), [`PM-55`](https://github.com/Encore-OS/encoreos/blob/development/specs/pm/specs/PM-55-onc-hti1-uscdi-v3-patient-access-api.md), [`CL-16`](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-16-fhir-interoperability-data-exchange.md) | Portal exists; API scope incomplete for certification posture | Spec + partial impl | Inferno + cert method | USCDI/FHIR + patient rights | HTI-1 | Complete patient-driven SMART access and evidence | | `e(2)` | Secure messaging | Yes | PM/CL | [`PM-14`](https://github.com/Encore-OS/encoreos/blob/development/specs/pm/specs/PM-14-secure-messaging.md), [`CL-48`](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-48-clinical-document-architecture-cda.md) | In-app messaging and C-CDA transmission efforts exist | Spec-only | SITE/Direct tools | Direct/transport requirements | HTI-1 | Differentiate in-app messaging from ONC Direct-compliant messaging and close gap | | `e(3)` | Patient health information capture | Yes | PM/CL | No dedicated ONC criterion spec identified | No evidence package found | None | Certification method | Patient-submitted data standards | HTI-1 | Add dedicated spec for capture, provenance, and reconciliation | ### 2.6 (f) Public Health Criteria | Criterion | Title | In-scope for BH | Owning core | Existing spec(s) | Implementation evidence | Coverage status | ONC test tool | Standards / posture | HTI context | Recommended action | | --------- | ------------------------------------------ | ---------------------------------------------- | ----------- | ------------------------------------------------------------ | -------------------------- | --------------- | ---------------------------- | --------------------------------- | ----------- | ------------------------------------------------------------- | | `f(1)` | Immunization registry reporting | Sometimes | CL/PM | No dedicated ONC criterion spec | No VXU-style cert evidence | None | NIST Immunization Test Suite | HL7 v2 immunization guides | HTI-1 | Decide scope by contracts; if in-scope, author full spec | | `f(2)` | Syndromic surveillance reporting | Usually limited for BH, but contract-dependent | CL/PM | No dedicated criterion spec | No evidence found | None | NIST Syndromic Suite | HL7 v2 syndromic guides | HTI-1 | Keep as conditional scope item with documented decision | | `f(3)` | Electronic lab reporting (ELR) | Potentially relevant | CL | Lab ingestion exists, but no ELR outbound certification spec | No cert evidence found | None | NIST ELR Suite | HL7 v2 ELR | HTI-1 | Add outbound/reporting scope decision and implementation plan | | `f(4)` | Cancer registry reporting | Often N/A for BH | CL/PM | No dedicated spec | No evidence | None | Public health tooling | Registry standards | HTI-1 | Document N/A unless oncology service lines added | | `f(5)` | Reportable lab tests/conditions | Contract-dependent | CL/PM | No dedicated spec | No evidence | None | Public health tooling | Public health condition reporting | HTI-1 | Evaluate by state/public-health mandates | | `f(6)` | Antimicrobial use and resistance reporting | Usually N/A for BH | CL | No dedicated spec | No evidence | None | AU/AR CDA validator | CDA AU/AR guides | HTI-1 | Document N/A unless service scope expands | | `f(7)` | Health care surveys reporting | Usually limited for BH | CL/PM | No dedicated spec | No evidence | None | NHCS validator | CDA NHCS guides | HTI-1 | Document N/A or add if payer/contract requires | ### 2.7 (g) Design and Performance Criteria | Criterion | Title | In-scope | Owning core | Existing spec(s) | Implementation evidence | Coverage status | ONC test tool | Standards / posture | HTI context | Recommended action | | --------- | ---------------------------------------------------- | -------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------- | ------------------- | -------------------- | ------------------------------ | ----------- | ---------------------------------------------------------------- | | `g(3)` | Safety-enhanced design | Yes | PF/CL/PM | No ONC-specific SED spec | No NIST 7741 evidence package | None | Certification method | NIST IR 7741 usability process | HTI-1 | Create SED spec and study artifact template | | `g(4)` | Quality management system | Yes | PF/GR | No dedicated QMS criterion spec | No ONC-ready QMS artifact set | None | Certification method | QMS attestation expectations | HTI-1 | Create QMS governance/evidence spec | | `g(5)` | Accessibility-centered design | Yes | PF/CL/PM | [`PF-93`](https://github.com/Encore-OS/encoreos/blob/development/specs/pf/specs/PF-93-platform-accessibility-infrastructure.md), CL portal enhancements | Accessibility work in progress, not mapped to ONC criterion artifacts | Spec + partial impl | Certification method | WCAG 2.1 AA + Section 504 | HTI-1 | Add ONC-centered accessibility evidence matrix | | `g(6)` | C-CDA creation performance | Yes | CL | [`CL-48`](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-48-clinical-document-architecture-cda.md) | C-CDA generation path in progress | Spec + partial impl | SITE/C-CDA tools | C-CDA performance and validity | HTI-1 | Finish benchmarking + validation artifact set | | `g(7)` | Application access - patient selection | Yes | CL/PM | [`CL-16`](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-16-fhir-interoperability-data-exchange.md), [`PM-55`](https://github.com/Encore-OS/encoreos/blob/development/specs/pm/specs/PM-55-onc-hti1-uscdi-v3-patient-access-api.md) | Partial API surfaces | Spec + partial impl | Inferno | FHIR/SMART | HTI-1 | Finalize patient-level access semantics and tests | | `g(8)` | Application access - data category request | Yes | CL/PM | CL-16 + PM-55 | Partial | Spec + partial impl | Inferno | FHIR/USCDI mappings | HTI-1 | Complete category-level filtering and conformance tests | | `g(9)` | Application access - all data request | Yes | CL/PM | CL-16 + PM-55 | Partial (`$everything` path not fully cert-ready) | Spec + partial impl | Inferno | FHIR all-data semantics | HTI-1 | Add production-ready all-data request behavior and evidence | | `g(10)` | Standardized API for patient and population services | Yes | CL/PM | [`CL-16`](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-16-fhir-interoperability-data-exchange.md), [`CL-16-EN-02`](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-16-EN-02-uscdi-v3-patient-access-api.md), [`PM-55`](https://github.com/Encore-OS/encoreos/blob/development/specs/pm/specs/PM-55-onc-hti1-uscdi-v3-patient-access-api.md) | FHIR edge facade exists but SMART/CapabilityStatement/cert harness incomplete | Spec + partial impl | Inferno | US Core, SMART, USCDI v3 | HTI-1 | Build inferno CI harness + complete SMART and metadata endpoints | ### 2.8 (h) Transport Criteria | Criterion | Title | In-scope | Owning core | Existing spec(s) | Implementation evidence | Coverage status | ONC test tool | Standards / posture | HTI context | Recommended action | | --------- | ------------------------------ | ------------------------------ | ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------- | ------------------- | ------------------------ | -------------------------- | ----------- | --------------------------------------------------------------------------- | | `h(1)` | Direct Project | Yes (for transition workflows) | CL/PM | [`CL-48`](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-48-clinical-document-architecture-cda.md), [`PM-14`](https://github.com/Encore-OS/encoreos/blob/development/specs/pm/specs/PM-14-secure-messaging.md) | HISP adapter patterns exist; not full cert-ready direct stack | Spec + partial impl | SITE Direct Testing | Direct transport standards | HTI-1 | Implement full Direct flow, delivery notifications, and certification tests | | `h(2)` | Direct edge protocols, XDR/XDM | Yes if Direct scope chosen | CL/PM | No dedicated h(2) cert spec | No certified-ready evidence found | None | SITE Direct + edge tools | XDR/XDM requirements | HTI-1 | Add explicit h(2) implementation spec if cert path selected | ### 2.9 (j) HTI-2 Additions | Criterion | Title | In-scope | Owning core | Existing spec(s) | Implementation evidence | Coverage status | ONC test tool | Standards / posture | HTI context | Recommended action | | --------- | ------------------------------------------------ | ---------------------- | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------- | --------------- | ---------------------------- | --------------------------- | ----------- | ------------------------------------------------------------ | | `j(15)` | Prior auth API - coverage requirements discovery | Yes (payer operations) | PM | [`PM-52`](https://github.com/Encore-OS/encoreos/blob/development/specs/pm/specs/PM-52-davinci-fhir-prior-authorization-api.md), [`PM-10`](https://github.com/Encore-OS/encoreos/blob/development/specs/pm/specs/PM-10-prior-authorization-management.md) | Spec track exists, implementation incomplete | Spec-only | Inferno/Da Vinci conformance | CRD | HTI-2 | Execute phased implementation with payer pilots | | `j(16)` | Prior auth API - documentation templates/rules | Yes | PM | PM-52 + PM-10 | Spec exists | Spec-only | Inferno/Da Vinci conformance | DTR | HTI-2 | Add DTR rule engine and endpoint-level conformance tests | | `j(19)` | Prior auth API - prior auth support | Yes | PM | PM-52 + PM-10 | Spec exists, not complete | Spec-only | Inferno/Da Vinci conformance | PAS | HTI-2 | Implement PAS transaction lifecycle + evidence | | `j(20)` | DSI workflow triggers (client) | Yes | PM/CL | Mentioned in standards references only | No dedicated implementation | None | ONC tooling as released | CDS Hooks STU2 | HTI-2 | Create dedicated spec and client integration plan | | `j(21)` | Subscriptions (client) | Yes | PM/CL | Mentioned in standards references only | No dedicated implementation | None | ONC tooling as released | FHIR subscriptions backport | HTI-2 | Create dedicated spec and phased event subscription strategy | ### 2.10 SVAP / Version Cutover Flags (Cross-Criterion) | Standard area | Legacy baseline | New baseline | Operational impact | | --------------------- | --------------- | -------------------------------------------------------------------- | ------------------------------------------------------------------ | | USCDI | v1 | v3 (required by late 2025 cutover windows in ONC tooling references) | Update mappings in CL-16/PM-55 and all certification test fixtures | | US Core | STU3.1.1 | STU6.1.0 | Resource profile conformance changes for Inferno | | SMART App Launch | 1.0 | 2.0 | Update OAuth flows, scopes, and app registration expectations | | NCPDP SCRIPT | 2017071 | 2023011 | eRx/billing ecosystem upgrade with HTI-4 timing | | C-CDA companion guide | R2 | R4.1 | Document generation/validation updates in CL-48 | *** ## 3) Conditions and Maintenance of Certification Matrix | Condition/Maintenance Area | Current repo coverage | Status | Primary anchors | Gap summary | Recommended action | | ------------------------------------------------------------------------ | --------------------------------------- | ------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------- | -------------------------------------------------------------------- | | Information Blocking governance | Present in PM-55 and compliance tracker | Spec + partial impl | [`PM-55`](https://github.com/Encore-OS/encoreos/blob/development/specs/pm/specs/PM-55-onc-hti1-uscdi-v3-patient-access-api.md), [`REGULATORY_COMPLIANCE_TRACKER.md`](/compliance/REGULATORY_COMPLIANCE_TRACKER) | Need full denial taxonomy, workflows, and annual governance packet | Build criterion-to-exception control matrix and reporting automation | | API Conditions of Certification (terms, fees, transparency, maintenance) | Partial conceptual coverage | Spec-only | PM-55, CL-16 family | Missing formal policy/doc artifacts expected in certification workflows | Add API condition governance spec + publishable artifacts | | Real World Testing (RWT) | No dedicated spec/doc found | None | N/A | Missing annual plan/results framework | Create RWT spec and evidence template | | Insights Condition metrics | No dedicated spec/doc found | None | N/A | Missing data capture + submission process | Create Insights metrics pipeline spec | | Communications condition | Not explicitly documented | None | N/A | Missing formal communications guardrail artifact | Add policy spec tied to legal/compliance workflows | | Annual attestation process | Not explicitly documented | None | N/A | Missing attestation calendar and artifact assembly | Add attestation operations spec | | Assurances | Not explicitly documented | None | N/A | Missing signed assurance framework and controls mapping | Add assurances package spec | | Mandatory disclosures URL | Not explicitly documented | None | N/A | Missing customer-facing disclosures publication workflow | Add disclosures publication spec | | Hosted docs URL | Not explicitly documented | None | N/A | Missing certification-oriented hosted docs surface | Add docs publication and versioning policy | | Trusted Exchange / TEFCA evolution | Scoped in enhancement | Spec + partial impl | [`CL-16-EN-01`](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-16-EN-01-tefca-qhin-connectivity.md) | Needs operational partner onboarding and cert interplay decisions | Keep as phased item with go/no-go contract trigger | *** ## 4) ONC Tooling Readiness Matrix | Tool | URL | Main criterion coverage | Current readiness | Evidence today | What is required to pass | | -------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------- | ----------------- | ---------------------------------------------- | ------------------------------------------------------------------------------ | | Inferno Framework | [inferno.healthit.gov](https://inferno.healthit.gov/) | `g(10)`, API-centric criteria, related HTI updates | Partial | CL-16/PM-55 specs, partial FHIR facade | CapabilityStatement, SMART full flow, profile-conformant resources, CI harness | | SITE / Edge Testing Tool | [site.healthit.gov](https://site.healthit.gov/) | C-CDA, Direct, related certification tooling | Partial | CL-48 and direct adapter concepts | Complete Direct/XDR/XDM implementations and validation workflows | | ONC Conformance Test Tools index | [ONC Conformance Test Tools](https://healthit.gov/certification-health-it/certification-process/onc-conformance-test-tools/) | Cross-criterion test resources | Partial | Resource inventory known | Build test execution program tied to each selected criterion | | C-CDA Testing | [C-CDA testing entry](https://site.healthit.gov/c-cda) | `b(1)`, `b(2)`, `g(6)` and related | Partial | CL-48 generation work | Full schema/content validation and regression tests | | Direct Testing | [Direct testing entry](https://ett.healthit.gov/ett/#/direct) | `h(1)`, `h(2)`, transition transport | Partial | HISP adapter pattern exists | Production Direct stack, delivery notification, edge protocol coverage | | Cypress | [healthit.gov/cypress](https://healthit.gov/cypress/) | `c(1)`-`c(4)` CQM | Low | CL-51 spec only | Implement QRDA/CQM engine with Cypress-ready fixtures | | eRx Testing Suite | [erx.healthit.gov](https://erx.healthit.gov/erx/#/home) | `b(3)`, `b(4)` | Low-Partial | CL-06 path exists but HTI-4 transition pending | Upgrade standards and execute full eRx conformance tests | | NIST Immunization Suite | [NIST Immunization Suite](https://hl7v2-iz-r1-5-testing.nist.gov/iztool/#/home) | `f(1)` | Low | No dedicated criterion implementation | Build/report immunization messaging if in-scope | | NIST Syndromic Suite | [NIST Syndromic Suite](https://hl7v2-ss-r2-testing.nist.gov/ss-r2/#/home) | `f(2)` | Low | No dedicated criterion implementation | Build/report syndromic feeds if in-scope | | NIST ELR Suite | [NIST ELR Suite](https://hl7v2-elr-testing.nist.gov/mu-elr/) | `f(3)` | Low | No dedicated ELR certification flow | Build/report ELR transport and validations if in-scope | | AU/AR CDA validator | [AU/AR validator](https://validator-legacy.lantanagroup.com/validator/) | `f(6)` | Low | None | Implement and validate AU/AR submissions if in-scope | | NHCS validator | [NHCS validator](https://cda-validation.nist.gov/cda-validation/muNHCS.html) | `f(7)` | Low | None | Implement and validate NHCS submissions if in-scope | | CPOE Evaluation Tool | [Leapfrog CPOE tool](https://www.leapfroggroup.org/survey-materials/prepare-cpoe-tool) | CPOE quality and safety corroboration | Low | None | Add pilot validation workflow if pursuing broader quality evidence | | IHE Testing Tools | [IHE tools](https://www.ihe.net/testing/testing_tools/) | Interoperability profile validation | Low | None | Map relevant IHE profiles to cert scope and execute tests | *** ## 5) ONC Resource Adoption Assessment (Non-Certification Resources) | Resource | URL | Current use in repo | Coverage status | Recommendation | | -------------------------------- | ------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------- | --------------- | ------------------------------------------------------------------------- | | Health IT Playbook | [playbook.healthit.gov](https://playbook.healthit.gov/) | Mentioned as resource category; no dedicated adoption spec | None | Create cross-core adoption guide tied to CL/PM/PF implementation patterns | | ONC Implementation Resources hub | [Implementation Resources](https://healthit.gov/resources/?search-text=Implementation+Resources) | Referenced in ONC pages; not operationalized in compliance docs | None | Add periodic review cadence and artifact intake process | | SITE hub | [site.healthit.gov](https://site.healthit.gov/) | Known as test hub; no internal runbook in compliance docs | Spec-only | Add certification test-ops runbook and ownership model | | ONC Certification overview | [Certification of Health IT](https://healthit.gov/certification-health-it/) | Mapped in roadmap/tracker | Spec-only | Keep updated with HTI release changes and ACB process updates | | ONC Conformance tools page | [Conformance tools](https://healthit.gov/certification-health-it/certification-process/onc-conformance-test-tools/) | Partially reflected in docs | Spec-only | Convert to criterion-to-tool matrix (this document is first pass) | | SAFER Guides (2025 updates) | [Resources hub entry](https://healthit.gov/resources/?search-text=Implementation+Resources) | Not explicitly mapped to specs | None | Add safety assessment program and annual review requirement | | Security Risk Assessment Tool | [SRA Tool](https://healthit.gov/resources/?search-text=Implementation+Resources) | Mentioned in ONC ecosystem references only | None | Create customer operational workflow and internal readiness checklist | | Patient Engagement Playbook | [Health IT Playbook ecosystem](https://playbook.healthit.gov/) | No direct operational mapping | None | Create PM-12/CL-26 adoption enhancement and content governance | | Get It, Check It, Use It guide | [Resources hub](https://healthit.gov/resources/?search-text=Implementation+Resources) | Not integrated into patient guidance workflows | None | Add patient education/copy strategy for portal engagement | *** ## 6) Recommended Next-Step Batches (Post-Decision) These are not implemented in this document. They are recommended work packages after path selection. ### Batch A: Decision Lock * Choose one path: Full, Modular, or Alignment-only. * Set scope statement by criterion family and target deadlines. * Name accountable owners and evidence calendar. ### Batch B: Critical Safety and Conditions * New specs for Real World Testing, Insights condition, and attestation packaging. * Dedicated predictive DSI transparency spec (`b(11)`). * SAFER Guides adoption and governance spec. ### Batch C: Modular Certification Core * Production conformance for `g(10)` (Inferno-ready API package). * Direct transport criterion hardening (`h(1)` / `h(2)`). * Patient engagement criterion completion (`e(1)`/`e(2)`/`e(3)` as selected). * d-family criterion evidence bundle finalization. ### Batch D: Public Health Decision and Execution * Formal in-scope/N/A determinations for `f(1)`-`f(7)`. * Implement only contract-required public health criteria. * Build corresponding NIST validation workflows. ### Batch E: HTI-2 Extensions * Implement and certify `j(15)`/`j(16)`/`j(19)` to production level. * Add new specs for `j(20)` CDS Hooks client and `j(21)` subscriptions client. ### Batch F: ONC Resource Adoption * Health IT Playbook operational adoption guide. * Patient engagement playbook integration plan. * SRA tool integration and annual safety review process. ### Batch G: Governance and Process Updates * Refresh [`ONC_CERTIFICATION_ROADMAP.md`](/compliance/ONC_CERTIFICATION_ROADMAP). * Refresh [`REGULATORY_COMPLIANCE_TRACKER.md`](/compliance/REGULATORY_COMPLIANCE_TRACKER) ONC rows. * Update compliance-review workflows to enforce criterion checks in future spec authoring. *** ## 7) Cross-References and Sources ### 7.1 External ONC/HHS Sources * [Certification of Health IT](https://healthit.gov/certification-health-it/) * [ONC Conformance Test Tools](https://healthit.gov/certification-health-it/certification-process/onc-conformance-test-tools/) * [SITE](https://site.healthit.gov/) * [Health IT Playbook](https://playbook.healthit.gov/) * [Implementation Resources](https://healthit.gov/resources/?search-text=Implementation+Resources) ### 7.2 Internal Compliance and Spec Sources * [`docs/compliance/ONC_CERTIFICATION_ROADMAP.md`](/compliance/ONC_CERTIFICATION_ROADMAP) * [`docs/compliance/REGULATORY_COMPLIANCE_TRACKER.md`](/compliance/REGULATORY_COMPLIANCE_TRACKER) * [`docs/compliance/AUTHORITATIVE_REFERENCES.md`](/compliance/AUTHORITATIVE_REFERENCES) * [`specs/SPEC_STATUS_REGISTRY.md`](https://github.com/Encore-OS/encoreos/blob/development/specs/SPEC_STATUS_REGISTRY.md) * [`specs/cl/specs/CL-16-fhir-interoperability-data-exchange.md`](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-16-fhir-interoperability-data-exchange.md) * [`specs/cl/specs/CL-16-EN-02-uscdi-v3-patient-access-api.md`](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-16-EN-02-uscdi-v3-patient-access-api.md) * [`specs/pm/specs/PM-55-onc-hti1-uscdi-v3-patient-access-api.md`](https://github.com/Encore-OS/encoreos/blob/development/specs/pm/specs/PM-55-onc-hti1-uscdi-v3-patient-access-api.md) * [`specs/cl/specs/CL-48-clinical-document-architecture-cda.md`](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-48-clinical-document-architecture-cda.md) * [`specs/pm/specs/PM-52-davinci-fhir-prior-authorization-api.md`](https://github.com/Encore-OS/encoreos/blob/development/specs/pm/specs/PM-52-davinci-fhir-prior-authorization-api.md) * [`specs/pf/specs/PF-96-medicaid-state-compliance-configuration.md`](https://github.com/Encore-OS/encoreos/blob/development/specs/pf/specs/PF-96-medicaid-state-compliance-configuration.md) ### 7.3 Known Internal Consistency Notes * [`PF-96`](https://github.com/Encore-OS/encoreos/blob/development/specs/pf/specs/PF-96-medicaid-state-compliance-configuration.md) file header indicates complete status while registry/tracker entries may lag in some contexts. * [`ONC_CERTIFICATION_ROADMAP.md`](/compliance/ONC_CERTIFICATION_ROADMAP) is intentionally high-level and should be refreshed after path selection. *** ## Appendix A: Current ONC Readiness Scorecard (Snapshot) | Area | Score (0-5) | Rationale | | ------------------------------------------------- | ----------: | ----------------------------------------------------------------------------------------------- | | API foundation (`g(10)` track) | 2.5 | Strong specs and partial implementation, missing certification harness and full SMART readiness | | Information blocking operations | 2.0 | Governance direction present, still missing full annual artifact machinery | | C-CDA and transitions | 2.0 | Strong CL-48 scope, not yet complete and validated end-to-end for certification | | eRx track | 2.0 | Core direction present, HTI-4 standard transition pending | | Public health criteria | 0.5 | Mostly unscoped/unimplemented for certification | | Conditions/Maintenance of Certification | 1.0 | Major artifacts missing (RWT, Insights, attestation operations) | | Tooling operationalization (SITE/Inferno/Cypress) | 1.5 | Inventory known, execution program not formalized | Overall snapshot: **1.8 / 5.0** for certification readiness; **2.5 / 5.0** for alignment-only interoperability posture (revised down from 3.0 per May 2026 analysis — USCDI v3 is now the baseline and most BH competitors already meet that bar). *** ## Appendix B: Immediate No-Regret Actions (Regardless of Path) 1. Finalize and run Inferno-aligned test harness for current FHIR API scope. 2. Normalize USCDI v3 mapping inventory and close known terminology gaps. 3. Formalize information blocking denial taxonomy and review queue disposition standards. 4. Add explicit criterion ownership tags to each ONC-relevant spec. 5. Create one annual ONC compliance calendar (deadlines, attestations, test windows). 6. Create DS4P send/receive spec (CL-63) for §170.315(b)(7)/(b)(8) — critical for Part 2 SUD data exchange. 7. Create DEA EPCS spec (CL-64) for 21 CFR 1311 — required for MAT prescribing. 8. Create Contexture HIE integration spec (PF-108) — highest-ROI Arizona move for DAP/TI 2.0. 9. Create EKRA compliance spec (PF-107) — P0 legal priority due to NorthSight relationship. 10. Create DSI transparency spec (CL-65) for §170.315(b)(11) — required before AI features ship. **Note:** Alignment score revised from 3.0/5.0 to 2.5/5.0. USCDI v3 is now the baseline (Jan 1, 2026); most BH competitors already meet that bar. Target 4.0/5.0 within 6 months. See `docs/compliance/ONC_REGULATORY_READINESS_IMPLEMENTATION_PLAN.md` for the full implementation plan with 12 new skills and 12 new specs. # ONC Certification Roadmap Source: https://docs.encoreos.io/compliance/ONC_CERTIFICATION_ROADMAP Source: CL-PM-SPEC-REVIEW Finding 4.4, ONC 21st Century Cures Act, May 2026 Compass Artifact Analysis Owner: Product / Compliance / CL / PM / PF **Source:** CL-PM-SPEC-REVIEW Finding 4.4, ONC 21st Century Cures Act, May 2026 Compass Artifact Analysis **Owner:** Product / Compliance / CL / PM / PF This document maps Encore OS specs to ONC Health IT Certification criteria (45 CFR Part 170), provides a trigger-based escalation framework, and integrates competitive landscape findings. *** ## Strategic Recommendation: Alignment-Only → Modular → Full **Current path: Alignment-Only.** Build to ONC criteria without formal certification filing. Certify when a named trigger event fires. | Path | Cost | Timeline | Annual Maint. | Fit for Encore | | ----------------------------------- | -------------------------------------- | ------------------------ | ------------- | ------------------- | | **Alignment-Only** | \$0 external; \~500–1,000 hrs internal | Continuous | \$0 | **Current path** | | **Modular** (e.g., (g)(10)/(g)(31)) | \~$150K–$300K | 9–12 months from kickoff | \~$30K–$80K | When trigger fires | | **Full / Base EHR** | $400K–$1M+ | 18–24 months | $100K–$250K | Not before Series A | ### Trigger Events (Alignment → Modular) 1. Named AHCCCS-contracted ACC-RBHA or CARF/Joint Commission-accredited multi-state SUD chain writes "ONC-certified CEHRT" into mandatory RFP requirements 2. Clinical AI feature ships that triggers HTI-1 §170.315(b)(11) DSI transparency obligations 3. Encore wins a TI 2.0 cohort or AHCCCS RHTP subaward where EHR functionality is scored 4. Information blocking enforcement materially escalates (\$1M per violation CMPs are live; joint HHS-OIG/ASTP enforcement alert issued September 4, 2025) ### Trigger Events (Modular → Full) 1. Large hospital-affiliated psychiatric customer requires CEHRT for Medicare hospital PI reporting 2. Multi-state expansion into Medicaid programs with active PI-successor incentives 3. HTI-5 re-introduces Patient Access API requirements *** ## Competitive Landscape Of 11 named BH EHR competitors, **10 are ONC-certified.** Certification is table stakes for enterprise BH EHR. | Vendor | ONC Certified | Notes | | -------------------------- | ------------- | ----------------------------------------------- | | Kipu Health | Yes | Also HITRUST-certified; ISO 42001 AI management | | Sigmund AURA | Yes | HIPAA + SOC 2 Type II + ONC | | AZZLY Rize | Yes | Includes EPCS for MAT | | Lightning Step | Yes | BH-only platform | | Procentive (Ensora Health) | Yes | Ensora portfolio | | TenEleven eCR (Ensora) | Yes | Ensora-owned | | EchoVantage (Ensora) | Yes | Ensora portfolio | | ICANotes | Yes | Built for BH | | Qualifacts (4 products) | Yes | Largest BH vendor by certification footprint | | EHRYourWay (Adaptamed) | Yes | SLI Compliance certified | | BestNotes | No | Smaller practices/SUD focus | *** ## Readiness Scores | Area | Score | Target (6 mo) | | ----------------------------------- | ------------- | ------------- | | API foundation (g)(10) track | 2.5 / 5.0 | 4.0 | | Information blocking operations | 2.0 / 5.0 | 3.5 | | C-CDA and transitions | 2.0 / 5.0 | 3.0 | | eRx track | 2.0 / 5.0 | 2.5 | | Public health criteria | 0.5 / 5.0 | 1.0 | | Conditions/Maintenance | 1.0 / 5.0 | 2.0 | | **Overall Certification Readiness** | **1.8 / 5.0** | **3.0** | | **Overall Alignment Posture** | **2.5 / 5.0** | **4.0** | *Note: Alignment score revised from 3.0 to 2.5 per May 2026 analysis — USCDI v3 is now the baseline and most BH competitors already meet that bar.* *** ## Mapping: Encore OS Specs to ONC Criteria | ONC Criterion | Description | Encore OS Spec(s) | Status | | --------------------- | ------------------------------------ | --------------------------------- | ------------------- | | §170.315(a)(1)–(3) | CPOE (meds, lab, imaging) | CL-05, CL-06, CL-09 | Spec + partial impl | | §170.315(a)(4) | Drug-drug/allergy checks | CL-06, CL-45 | Spec + partial impl | | §170.315(a)(5) | Demographics | PM-01, PM-55 | Spec + partial impl | | §170.315(a)(6) | Problem list | CL-46 | Spec + partial impl | | §170.315(a)(7) | Medication list | CL-05 | Spec + partial impl | | §170.315(a)(8) | Medication allergy list | CL-45 | Spec + partial impl | | §170.315(a)(9) | Clinical decision support | CL-08 | Spec + partial impl | | §170.315(a)(14) | Implantable device list | N/A (BH focus) | N/A | | §170.315(a)(15) | SDOH/behavioral data | CL-18, CL-40 | Spec + partial impl | | §170.315(b)(1)–(2) | Transitions of care / reconciliation | CL-48, CL-12, CL-05 | Spec + partial impl | | §170.315(b)(3) | E-prescribing | CL-06 | Spec + partial impl | | §170.315(b)(6) | Data export | PF-44, CL-20 | Spec + partial impl | | §170.315(b)(7)/(b)(8) | DS4P send/receive | **CL-63 (new)** | **Not Started** | | §170.315(b)(10) | EHI export | PF-44, PM-55 | Spec + partial impl | | §170.315(b)(11) | DSI transparency | CL-65 (new), PM-64, CL-08 | Spec-only | | §170.315(c)(1)–(4) | CQM record/import/report/filter | CL-51 | Spec-only | | §170.315(d)(1)–(13) | Privacy and security | PF-01, PF-30, PF-91, CL-11 | Mixed | | §170.315(e)(1) | VDT (View, Download, Transmit) | PM-12, PM-55, CL-16 | Spec + partial impl | | §170.315(f)(1) | Immunization registry (ASIIS) | CL-66 (new) | Not Started | | §170.315(f)(5) | eCR reportable conditions | CL-67 (new) | Not Started | | §170.315(g)(7)–(9) | Application access APIs | CL-16, PM-55 | Spec + partial impl | | §170.315(g)(10) | Standardized FHIR R4 API | CL-16, CL-16-EN-02, PM-55 | Spec + partial impl | | §170.315(h)(1)–(2) | Direct transport | CL-48, PM-14 | Spec + partial impl | | USCDI v3 | Demographics, problems, meds, etc. | PM-01, CL-01, CL-04, CL-05, CL-10 | Partial | *** ## Parallel Tracks (Non-ONC but Critical) | Track | Spec | Priority | Status | | ------------------------- | ----------------- | --------------------- | ----------- | | DEA EPCS (21 CFR 1311) | CL-64 (new) | P1 — required for MAT | Not Started | | Contexture HIE | PF-108 (new) | P1 — AHCCCS DAP 8.0% | Not Started | | EKRA compliance | PF-107 (new) | P0 — NorthSight risk | Not Started | | HITRUST e1 | PF-109 (new) | P2 — Kipu parity | Not Started | | USCDI+ BH profiles | CL-16-EN-03 (new) | P2 — proactive | Not Started | | Surescripts certification | PM-73 (new) | P3 — production eRx | Not Started | | SAMHSA reporting | GR-26 (new) | P3 — grant compliance | Not Started | *** ## Gaps and Priorities 1. **USCDI v3 alignment:** All FHIR resources must target USCDI v3 (baseline as of Jan 1, 2026). US Core 6.1.0 profiles are the conformance target. 2. **DS4P for Part 2:** CL-63 must implement confidentiality coding before any production FHIR exchange involving SUD data. 3. **FHIR R4 API (g)(10):** CL-16 + PM-55 must complete SMART App Launch v2, CapabilityStatement, and Inferno-passing conformance. 4. **Information blocking:** PM-55 must complete denial taxonomy, review queue, and annual governance packet. 5. **DEA EPCS:** CL-64 is prerequisite for MAT prescribing — half the AHCCCS-funded SUD market. 6. **Contexture/HIE:** PF-108 is the single highest-ROI Arizona-specific move — DAP incentives flow through Contexture. 7. **DSI transparency:** CL-65 required before shipping AI clinical features to avoid HTI-1 compliance exposure. 8. **EKRA:** PF-107 is P0 — shared-founder NorthSight relationship requires immediate legal review. *** ## Phased Timeline | Phase | Focus | Target | | ---------------- | ---------------------------------------------------------------------------------------------------------- | --------- | | **Days 0–30** | Contexture agreement; NLM UMLS license; EKRA legal memo; USCDI v3 data model alignment; HITRUST e1 scoping | Immediate | | **Days 31–90** | FHIR R4 USCDI v3 endpoints + SMART v2; DS4P coding; DAP SOW submission; HITRUST e1 readiness | 90 days | | **Months 4–6** | HITRUST e1 assessment; Contexture live exchange; Inferno-passing (g)(10) alignment; first DSI disclosure | 6 months | | **Months 6–12** | Trigger decision gate; HITRUST i1 readiness; DEA EPCS engagement; USCDI+ BH pilot mapping | 12 months | | **Months 12–24** | If triggered: Drummond engagement for modular certification | 24 months | *** ## References * [ONC Certification Program](https://www.healthit.gov/topic/certification-ehrs/certification-program) * [ONC Certification Gap Matrix](/compliance/ONC_CERTIFICATION_GAP_MATRIX) * [ONC Regulatory Readiness Implementation Plan](/compliance/ONC_REGULATORY_READINESS_IMPLEMENTATION_PLAN) * [CL-16 FHIR Interoperability](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-16-fhir-interoperability-data-exchange.md) * [PM-55 ONC HTI-1 Patient Access](https://github.com/Encore-OS/encoreos/blob/development/specs/pm/specs/PM-55-onc-hti1-uscdi-v3-patient-access-api.md) * [REGULATORY\_COMPLIANCE\_TRACKER.md](/compliance/REGULATORY_COMPLIANCE_TRACKER) * [AUTHORITATIVE\_REFERENCES.md](/compliance/AUTHORITATIVE_REFERENCES) # ONC Regulatory Readiness & Alignment Implementation Plan Source: https://docs.encoreos.io/compliance/ONC_REGULATORY_READINESS_IMPLEMENTATION_PLAN Source: Compass Artifact deep review + ONC Certification Gap Matrix + existing compliance infrastructure analysis Owner: Product / Compliance / CL / PM / PF **Source:** Compass Artifact deep review + ONC Certification Gap Matrix + existing compliance infrastructure analysis **Owner:** Product / Compliance / CL / PM / PF *** ## 1. Executive Summary This plan operationalizes the findings from the May 2026 ONC Certification Strategy & Regulatory Readiness analysis ("Compass Artifact") into concrete deliverables: new skills, updated rules, new specs, regulatory tracker updates, and AGENTS.md amendments. The recommendation is **Alignment-Only now, Modular certification when a trigger fires** — but the alignment work itself is substantial. ### Key Strategic Decisions | Decision | Recommendation | Trigger to Escalate | | ----------------- | ------------------------------------------- | ---------------------------------------------------------------------- | | ONC Certification | Alignment-Only (no formal filing) | Named enterprise prospect with "CEHRT required" in mandatory RFP terms | | Contexture/HIE | Sign Participation Agreement within 30 days | Already justified — DAP 8.0% uplift | | DEA EPCS | Begin partner evaluation immediately | First MAT-prescribing customer signed | | HITRUST | e1 assessment within 12 months | Kipu competitive parity | | EKRA/NorthSight | P0 legal review immediately | Shared-founder structure is textbook risk | *** ## 2. Deep Review — Gaps Found in Compass Artifact ### 2.1 Items Missing from the Compass Artifact The compass artifact is thorough but omits several areas that Encore's existing compliance infrastructure already tracks or should add: | # | Gap | Severity | Rationale | | -- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | 1 | **OTP/Part 8 compliance (42 CFR Part 8)** — mentioned in passing under EPCS but no dedicated analysis of OTP licensing, SAMHSA certification, and medication-unit dosing rules | Medium | Encore serves MAT/OTP programs; Part 8 governs OTP operations including daily dosing, take-home schedules, and drug testing. Existing tracker already tracks this. | | 2 | **Arizona PDMP (CSPMP) integration** — the regulatory-compliance rule lists this but the compass artifact omits PDMP query requirements entirely | High | A.R.S. § 36-2608 requires PDMP query before prescribing opioids. MAT prescribers using Encore must have PDMP integration or documented workaround. | | 3 | **Psychotherapy notes segregation (45 CFR 164.501)** — existing decision tree includes this but compass artifact does not address ONC criterion mapping for psychotherapy note handling | Low | BH-specific HIPAA carve-out; existing compliance tracking covers this. | | 4 | **HIPAA Breach Notification (HITECH Act)** — compass artifact discusses information blocking penalties but omits breach notification obligations under HITECH, which the IT compliance tracker already covers | Low | Already tracked in `IT_SECURITY_COMPLIANCE_TRACKING.md`. | | 5 | **CMS-0057-F Prior Authorization API** — compass artifact mentions HTI-2 withdrawal of `(g)(30)-(g)(33)` but does not explicitly cover the **separate** CMS-0057-F rule (finalized Jan 2024) requiring payer prior auth APIs by Jan 1, 2027 — existing spec PM-52 covers this | Medium | PM-52 already tracks Da Vinci CRD/DTR/PAS for this rule. | | 6 | **HEDIS/Quality Measures** — compass artifact §7 mentions CARF/Joint Commission as N/A for Encore (correct) but does not address BH HEDIS measures (FUH, FUM, AMM, SSD) that payer contracts frequently require. CL-51 spec and GR tracker already cover this. | Low | Already in compliance tracker and CL-51 spec. | | 7 | **Collections compliance (TCPA/FDCPA/PCI)** — compass artifact omits patient collections compliance, which the regulatory tracker already covers | Low | Already tracked in `REGULATORY_COMPLIANCE_TRACKER.md`. | | 8 | **No Surprises Act/Good Faith Estimate** — omitted from compass artifact; PM tracker covers this | Low | Already tracked; PM specs address GFE. | | 9 | **Surescripts certification pathway** — compass artifact mentions e-prescribing partners but does not detail Surescripts' staged certification process (application → validation → production) which is separate from both ONC and DEA EPCS | Medium | Critical path dependency for any e-prescribing feature. | | 10 | **State Medicaid Promoting Interoperability successors** — compass artifact correctly notes AZ PI ended Oct 2021 but does not survey other states (e.g., CO, NY, TX) that still have active HIT incentive programs, relevant for multi-state expansion via PF-96 | Low | Deferred until multi-state expansion is in scope. | ### 2.2 Items in Compass Artifact Not Yet in Encore's Compliance Infrastructure | # | New Finding | Current Coverage | Action Required | | -- | ----------------------------------------------------------------------------------------------- | ---------------------------------------- | --------------------------------------------- | | 1 | **DEA EPCS certification (21 CFR 1311)** — required for MAT prescribing | Not tracked | Add to regulatory tracker + create new spec | | 2 | **EKRA (18 U.S.C. § 220)** — NorthSight relationship risk | Not tracked | Add to regulatory tracker + legal memo | | 3 | **Section 1557 ACA nondiscrimination** — language access/TTY for patient portal | Partially covered under WCAG/Section 504 | Expand coverage | | 4 | **ADA Title III digital accessibility (WCAG 2.1 AA)** — DOJ April 2024 final rule | Tracked under PF-93 + Section 504 | Update timeline | | 5 | **SAMHSA SUPTRS/MHBG/TEDS reporting** — block-grant reporting hooks | Not tracked | Add to GR compliance tracker | | 6 | **USCDI+ Behavioral Health profiles** — SAMHSA/ONC \$20M initiative | Not tracked | Add to CL-16 roadmap | | 7 | **HITRUST e1 → i1 pathway** — competitive parity with Kipu | Not tracked | Add to IT compliance tracker | | 8 | **DS4P (Data Segmentation for Privacy) — §170.315(b)(7)/(b)(8)** — critical for Part 2 SUD data | Gap matrix shows "None" for b(7)/b(8) | Create new spec | | 9 | **DEA Special Registration for Telemedicine** — MAT-via-telehealth | Not tracked | Add to regulatory tracker | | 10 | **Contexture/Health Current Participation Agreement** — DAP/TI 2.0 gate | Not tracked as deliverable | Add to roadmap | | 11 | **HTI-4 NCPDP SCRIPT 2023011** — Jan 1, 2028 deadline | Mentioned in gap matrix | Ensure CL-06 enhancement tracks this | | 12 | **Information blocking penalty enforcement** — \$1M per violation | Tracked in regulatory tracker | Ensure PM-55 info-blocking workflows complete | *** ## 3. New Skills to Create Skills are organized by priority tier. Each skill follows the `.cursor/skills/` convention with YAML frontmatter, references directory where needed, and pointers to authoritative docs. ### Tier 1 — Alignment-Critical (Create in first 30 days) #### 3.1 `onc-alignment-assessment` (`.cursor/skills/`) **Purpose:** Assess any feature or spec against ONC alignment criteria without requiring formal certification. **Scope:** * Map feature data elements to USCDI v3 data classes/elements * Check US Core 6.1.0 FHIR profile conformance * Validate SMART App Launch v2 OAuth flow design * Evaluate information blocking compliance * Generate alignment score (0-5) per criterion family **References directory:** * `references/uscdi-v3-data-classes.md` — USCDI v3 data class inventory * `references/onc-criterion-checklist.md` — Per-criterion implementation checklist **Trigger phrases:** "ONC alignment", "USCDI mapping", "certification readiness", "FHIR conformance check" *** #### 3.2 `fhir-profile-conformance` (`.cursor/skills/`) **Purpose:** Author and validate FHIR R4 resources against US Core 6.1.0 + USCDI v3 profiles. **Scope:** * US Core 6.1.0 profile requirements per resource type * USCDI v3 data element mapping * CapabilityStatement authoring * Inferno test alignment * USCDI+ BH profile awareness (future-proofing) **References directory:** * `references/us-core-profiles.md` — Profile-by-profile requirements * `references/fhir-resource-patterns.md` — Encore-specific FHIR resource authoring patterns **Trigger phrases:** "FHIR profile", "US Core", "CapabilityStatement", "Inferno test", "USCDI mapping" *** #### 3.3 `ds4p-privacy-segmentation` (`.cursor/skills/`) **Purpose:** Implement Data Segmentation for Privacy (DS4P) for 42 CFR Part 2 SUD data. **Scope:** * DS4P confidentiality codes (V, R, N) on C-CDA and FHIR resources * Part 2 consent-to-segmentation pipeline * Redisclosure notice generation * DS4P send/receive criterion mapping for §170.315(b)(7)/(b)(8) * Integration with CL-11 consent management **References directory:** * `references/ds4p-codes.md` — Confidentiality code table and mapping rules * `references/part2-consent-flows.md` — Part 2 → DS4P decision tree **Trigger phrases:** "DS4P", "data segmentation", "privacy segmentation", "Part 2 FHIR", "confidentiality codes" *** #### 3.4 `information-blocking-compliance` (`.cursor/skills/`) **Purpose:** Ensure all data-sharing decisions comply with 21st Century Cures Act information blocking provisions. **Scope:** * Exception documentation (8 exceptions + TEFCA Manner + Protecting Care Access) * Denial taxonomy and review queue * Annual governance packet assembly * OIG CMP risk assessment (\$1M per violation) * Information blocking response workflow **References directory:** * `references/exception-matrix.md` — Exception-by-exception documentation template * `references/denial-taxonomy.md` — Standardized denial categories and review workflow **Trigger phrases:** "information blocking", "Cures Act", "data sharing denial", "EHI export", "exception documentation" *** ### Tier 2 — Pre-Certification Readiness (Create in 30-90 days) #### 3.5 `dsi-transparency-disclosure` (`.cursor/skills/`) **Purpose:** Generate §170.315(b)(11) DSI source attribute disclosures for AI features. **Scope:** * Source attribute documentation per HTI-1 requirements * Predictive DSI vs. evidence-based DSI classification * Algorithm transparency requirements * User-facing disclosure content generation * Integration with PM-64 (AI coding) and CL-08 (CDS) **Trigger phrases:** "DSI transparency", "AI disclosure", "b(11)", "algorithm transparency", "predictive DSI" *** #### 3.6 `epcs-audit-preparation` (`.cursor/skills/`) **Purpose:** Prepare for DEA EPCS third-party audit (21 CFR 1311). **Scope:** * Identity proofing documentation (NIST SP 800-63-3) * Two-factor authentication evidence * Prescription signing workflow design * Audit trail requirements for controlled substances * Drummond/DEA audit checklist * ARCOS reporting integration points **Trigger phrases:** "EPCS", "DEA audit", "controlled substance", "e-prescribing controlled", "buprenorphine", "21 CFR 1311" *** #### 3.7 `contexture-hie-integration` (`.cursor/skills/`) **Purpose:** Guide integration with Contexture (Health Current) HIE for AHCCCS DAP/TI 2.0. **Scope:** * ADT notification send/receive (HL7 v2.5.1) * CCD exchange (C-CDA R2.1) * Contexture participation agreement requirements * DAP milestone evidence generation * TEFCA connectivity path (Contexture → eHealth Exchange QHIN → national) **Trigger phrases:** "Contexture", "Health Current", "HIE integration", "ADT notification", "DAP attestation", "TI 2.0" *** #### 3.8 `hitrust-assessment-preparation` (`.cursor/skills/`) **Purpose:** Prepare for HITRUST e1 (Essentials) validated assessment. **Scope:** * HITRUST CSF control mapping to existing Encore controls * Evidence collection checklist * Gap analysis between SOC 2 Type II and HITRUST e1 * Authorized external assessor engagement guide * Escalation path to i1 **Trigger phrases:** "HITRUST", "e1 assessment", "i1 assessment", "security certification", "HITRUST CSF" *** ### Tier 3 — Certification-Phase Skills (Create when trigger fires) #### 3.9 `onc-criterion-mapper` (`.agents/skills/`) **Purpose:** Generate per-criterion compliance evidence packages. **Scope:** * Criterion text → Encore feature → test case → screenshot/log evidence mapping * Relied-upon software documentation * CHPL listing metadata generation * Mandatory disclosure URL content *** #### 3.10 `inferno-test-author` (`.agents/skills/`) **Purpose:** Write Inferno test plans and expected response fixtures. **Scope:** * (g)(10), (g)(7), (g)(9) test plan authoring * CapabilityStatement validation fixtures * SMART App Launch v2 test flow documentation * CI harness integration for Inferno tests *** #### 3.11 `rwt-plan-author` (`.agents/skills/`) **Purpose:** Generate Real World Testing plans and results reports. **Scope:** * RWT plan template per ONC requirements * Metrics collection framework * Results report generation * Enforcement discretion tracking (HTI-5 pending) *** #### 3.12 `drummond-engagement-orchestrator` (`.agents/skills/`) **Purpose:** Pre-populate Drummond ATL test scripts and ACB documentation. **Scope:** * Drummond Advisory Services engagement guide * ATL test script pre-population * ACB vendor form completion * CHPL listing preparation * Compliance Learning Series planning *** *** ## 4. Regulatory Rules Updates ### 4.1 Update `.cursor/rules/regulatory-compliance.md` **Changes needed:** Add the following branches to the decision tree: ```text theme={null} ├─ CL (Clinical) │ ├─ [EXISTING branches...] │ ├─ Involves e-prescribing of controlled substances? → DEA EPCS (21 CFR 1311), Drummond audit │ ├─ Involves MAT/buprenorphine prescribing? → DEA EPCS + X-waiver removal (CAA 2023 §1262) + DEA Telemedicine Special Registration │ ├─ Involves FHIR data export with SUD data? → DS4P §170.315(b)(7)/(b)(8) confidentiality coding │ ├─ Involves AI clinical recommendations? → HTI-1 DSI transparency §170.315(b)(11) │ └─ Involves Arizona HIE/Contexture? → AHCCCS DAP/TI 2.0 requirements ├─ PM (Practice Management) │ ├─ [EXISTING branches...] │ ├─ Involves patient access API? → ONC HTI-1 §170.315(g)(10), SMART App Launch v2, US Core 6.1.0 │ ├─ Involves AI coding/billing? → HTI-1 DSI transparency §170.315(b)(11), human acceptance required │ └─ Involves e-prescribing standards? → HTI-4 NCPDP SCRIPT 2023011 (deadline Jan 1, 2028) ├─ PF (Platform Foundation) │ ├─ [EXISTING branches...] │ ├─ Involves patient portal language access? → Section 1557 ACA nondiscrimination │ └─ Involves HITRUST assessment? → HITRUST CSF e1/i1 controls ├─ GR (Governance & Risk) │ ├─ [EXISTING branches...] │ └─ Involves SAMHSA reporting? → SUPTRS, TEDS, MHBG block grant data ``` Add new footer section: ```text theme={null} **ONC/Interoperability-specific:** - `docs/compliance/ONC_CERTIFICATION_GAP_MATRIX.md` — Criterion-level gap analysis - `docs/compliance/ONC_REGULATORY_READINESS_IMPLEMENTATION_PLAN.md` — Skills, specs, and roadmap **Beyond-ONC compliance:** - EKRA (18 U.S.C. § 220) — Kickback risk for recovery treatment referrals - HITRUST e1/i1 — Security assessment pathway - DEA EPCS (21 CFR 1311) — Controlled substance e-prescribing audit ``` ### 4.2 Update `.cursor/skills/module-regulatory-compliance/` **Changes to SKILL.md:** * Add ONC alignment, FHIR/USCDI, DS4P, EPCS, HITRUST, and EKRA to the decision tree * Add new common mistakes table entries for ONC-specific errors * Update tags to include `[regulatory, compliance, HIPAA, ONC, FHIR, USCDI, EPCS, DS4P, HITRUST]` **Changes to `references/per-core-compliance.md`:** * Add "ONC / Interoperability Compliance" section under CL * Add "EPCS / DEA Audit" section under CL * Add "ONC Patient Access API" section under PM * Add "HITRUST Assessment" section under IT/PF * Add "EKRA / Anti-Kickback" section under GR/PF * Add "SAMHSA Reporting" section under GR *** ## 5. New Specs Required ### 5.1 Specs to Create (ordered by priority) | Priority | Spec ID | Title | Core | Rationale | | -------- | ----------- | ------------------------------------------------------ | ---- | ------------------------------------------------------------------------------- | | **P0** | PF-107 | EKRA Compliance and Related-Party Transaction Controls | PF | Shared-founder NorthSight relationship; higher enforcement probability than ONC | | **P1** | CL-63 | DS4P Data Segmentation for Privacy (Send/Receive) | CL | §170.315(b)(7)/(b)(8); critical for Part 2 SUD data in FHIR/C-CDA exchange | | **P1** | CL-64 | DEA EPCS Integration and Audit Readiness | CL | 21 CFR 1311; required for MAT prescribing market | | **P1** | PF-108 | Contexture HIE Integration (ADT/CCD Exchange) | PF | AHCCCS DAP 8.0% uplift; TI 2.0 eligibility; highest-ROI Arizona move | | **P2** | PF-109 | HITRUST e1 Security Assessment Readiness | PF | Competitive parity with Kipu; hospital/payer procurement signal | | **P2** | CL-65 | DSI Transparency Disclosure Framework | CL | §170.315(b)(11) HTI-1; required if AI clinical features ship | | **P2** | PM-72 | ONC API Conditions of Certification Governance | PM | Terms, fees, transparency, maintenance for FHIR APIs | | **P2** | CL-16-EN-03 | USCDI+ Behavioral Health Profile Mapping | CL | SAMHSA/ONC \$20M initiative; proactive alignment | | **P3** | GR-26 | SAMHSA SUPTRS/TEDS/MHBG Reporting Integration | GR | Block-grant reporting for SOR sub-grantees | | **P3** | CL-66 | Immunization Registry Reporting (ASIIS/VXU) | CL | §170.315(f)(1); required for MAT/OTP clinics administering vaccines | | **P3** | CL-67 | Electronic Case Reporting (eCR) | CL | §170.315(f)(5); HIV/HCV reportable conditions for MAT/SUD programs | | **P3** | PM-73 | Surescripts Certification Pathway | PM | Production e-prescribing requirement; staged onboarding | ### 5.2 Existing Specs Requiring Updates | Spec | Update Needed | | --------------- | ------------------------------------------------------------------------------------------------------------------------------ | | **CL-16** | Add USCDI v3 mapping checklist; reference USCDI+ BH; add Inferno CI harness requirement; add DS4P cross-reference to CL-63 | | **CL-16-EN-02** | Update US Core from "planned" to alignment target with specific 6.1.0 profile list | | **PM-55** | Add information blocking denial taxonomy; add §170.315(g)(10) SMART v2 requirements; cross-reference new PM-72 governance spec | | **CL-06** | Add HTI-4 NCPDP SCRIPT 2023011 transition timeline; cross-reference CL-64 EPCS | | **CL-48** | Add C-CDA R4.1 companion guide update; cross-reference DS4P send via CL-63 | | **PM-52** | Note HTI-2 withdrawal of `(g)(30)-(g)(33)` but CMS-0057-F independence; track HTI-5 | | **PF-93** | Add DOJ April 2024 Title II WCAG 2.1 AA rule; add Section 1557 language access | | **PF-44** | Add EHI export criterion b(10) evidence requirements | | **CL-11** | Cross-reference DS4P spec CL-63; add redisclosure notice in FHIR context | *** ## 6. AGENTS.md Updates ### 6.1 Root AGENTS.md Add to "What AI Must NEVER Do": ```text theme={null} - Ship FHIR resources that do not conform to US Core 6.1.0 profiles when CL-16/PM-55 features are in scope. - Omit DS4P confidentiality codes on any FHIR resource or C-CDA document containing 42 CFR Part 2 SUD data. - Implement controlled substance e-prescribing without DEA EPCS audit trail (21 CFR 1311). - Bypass information blocking exception documentation when denying data access requests. ``` Add to "Other Patterns (Pointers)": ```text theme={null} - **ONC Alignment (Alignment-Only):** Build to USCDI v3 + US Core 6.1.0 + SMART v2 + DS4P without formal certification. Gap matrix: `docs/compliance/ONC_CERTIFICATION_GAP_MATRIX.md`. Implementation plan: `docs/compliance/ONC_REGULATORY_READINESS_IMPLEMENTATION_PLAN.md`. - **Contexture/HIE (Arizona):** ADT and CCD exchange via Contexture for AHCCCS DAP/TI 2.0. See PF-108. - **DEA EPCS:** Required for MAT prescribing. Third-party audit via Drummond. See CL-64. - **DS4P (Part 2 + FHIR):** Confidentiality coding on all SUD data in FHIR/C-CDA. See CL-63. - **HITRUST e1:** Security assessment for hospital/payer procurement. See PF-109. - **EKRA:** Anti-kickback for recovery treatment referrals. P0 legal priority. See PF-107. ``` Add to "Landmines (Non-Discoverable)": ```text theme={null} - [2026-05] USCDI v3 is the baseline as of Jan 1, 2026 (with ASTP/ONC enforcement discretion through Feb 28, 2026). All new FHIR work must target v3, not v1. - [2026-05] HTI-2 non-finalized provisions (g(30)-(g)(33), CDS Hooks, Subscriptions) were withdrawn Dec 29, 2025. Do not implement withdrawn criteria. - [2026-05] OIG information blocking penalties ($1M per violation) are live since Sept 2023. Joint HHS-OIG/ASTP enforcement alert issued Sept 4, 2025. - [2026-05] DEA Telemedicine Special Registration rule remains in flux; MAT-via-telehealth must use feature flags. ``` ### 6.2 Core-Specific AGENTS.md Updates **`src/cores/cl/AGENTS.md`:** * Add DS4P requirements for SUD data in FHIR/C-CDA * Add EPCS audit trail requirements * Add USCDI v3 / US Core 6.1.0 conformance requirement for all FHIR resources * Add DSI transparency requirement for AI clinical features **`src/cores/pm/AGENTS.md`:** * Add information blocking exception documentation requirement * Add ONC API governance (PM-72) reference * Add HTI-4 NCPDP SCRIPT 2023011 deadline awareness * Add CMS-0057-F Da Vinci timeline independence from HTI-2 withdrawal *** ## 7. Regulatory Tracker Updates ### 7.1 Add to `REGULATORY_COMPLIANCE_TRACKER.md` | Regulation | Requirement | Deadline | Owning Spec | Status | | ----------------------------- | ------------------------------------------------------------- | ------------------------------- | ------------ | ----------------- | | DEA EPCS (21 CFR 1311) | Third-party audit for controlled substance e-prescribing | Before MAT prescribing launch | CL-64 | Not Started | | EKRA (18 U.S.C. § 220) | Anti-kickback compliance for NorthSight relationship | Immediate (P0) | PF-107 | Not Started | | HITRUST e1 | Security assessment validated by authorized external assessor | 12 months | PF-109 | Not Started | | Section 1557 ACA | Language access, TTY, nondiscrimination in patient portal | Ongoing | PF-93 update | Partially Covered | | ADA Title III / DOJ Rule | WCAG 2.1 AA for patient-facing web properties | HHS May 2026 deadline | PF-93 | In Progress | | SAMHSA SUPTRS/TEDS | Treatment episode reporting for block-grant compliance | Per grant cycle | GR-26 | Not Started | | USCDI+ BH | FHIR BH profiles mapping | Proactive alignment | CL-16-EN-03 | Not Started | | DS4P b(7)/b(8) | Privacy segmentation for SUD data in FHIR/C-CDA | Before production FHIR exchange | CL-63 | Not Started | | HTI-4 NCPDP SCRIPT 2023011 | E-prescribing standard upgrade | Jan 1, 2028 | CL-06 update | Not Started | | DEA Telemedicine Registration | MAT-via-telehealth prescribing rules | Pending final rule (2026?) | CL-64 | Monitoring | | Contexture Participation | HIE connectivity for AHCCCS DAP/TI 2.0 | 30 days (business) | PF-108 | Not Started | | OIG Info Blocking CMP | \$1M per violation for HIT developers | Live since Sept 2023 | PM-55 | In Progress | ### 7.2 Update `ONC_CERTIFICATION_ROADMAP.md` * Increase version to 2.0.0 * Replace generic phased timeline with the compass artifact's 30/90/180/365-day roadmap * Add DEA EPCS, Contexture, HITRUST, and EKRA as parallel tracks * Add competitive landscape section (10 of 11 BH competitors are ONC-certified) * Add trigger-based escalation framework * Cross-reference gap matrix and implementation plan ### 7.3 Update `ONC_CERTIFICATION_GAP_MATRIX.md` * Add DEA EPCS row * Add EKRA risk assessment row * Add Contexture/DAP evidence requirements * Update alignment score from 3.0 to 2.5 per compass artifact analysis * Add USCDI+ BH as future-state alignment target *** ## 8. Content Licensing Tracker Add to compliance infrastructure (new section in `AUTHORITATIVE_REFERENCES.md`): | Content | License | Cost | Status | | --------------------- | ---------------------- | ------------------------------- | ---------------- | | LOINC | Regenstrief Institute | Free | Not yet obtained | | SNOMED CT US Edition | NLM UMLS Metathesaurus | Free (US) | Not yet obtained | | RxNorm | NLM | Free | Not yet obtained | | ICD-10-CM | CMS | Free | Not yet obtained | | CPT | AMA | $500–$3,500/yr for distribution | Not yet licensed | | CVX/MVX vaccine codes | CDC | Free | Not yet obtained | | NCPDP SCRIPT | NCPDP | Membership required | Not yet licensed | **Action:** Obtain NLM UMLS license within 30 days (prerequisite for SNOMED CT, RxNorm, LOINC distribution in production). *** ## 9. Phased Implementation Timeline ### Phase 1: Foundation (Days 0–30) | # | Deliverable | Type | Owner | | -- | ---------------------------------------------- | -------- | ---------- | | 1 | Create PF-107 (EKRA) spec | Spec | Legal/PF | | 2 | Create PF-108 (Contexture) spec | Spec | PF | | 3 | Update `regulatory-compliance.md` rule | Rule | Platform | | 4 | Update `module-regulatory-compliance` skill | Skill | Platform | | 5 | Update AGENTS.md (root + CL + PM) | Docs | Platform | | 6 | Update `REGULATORY_COMPLIANCE_TRACKER.md` | Docs | Compliance | | 7 | Update `ONC_CERTIFICATION_ROADMAP.md` to v2.0 | Docs | Compliance | | 8 | Create `onc-alignment-assessment` skill | Skill | Platform | | 9 | Create `information-blocking-compliance` skill | Skill | Platform | | 10 | Obtain NLM UMLS license | Business | Product | ### Phase 2: Interoperability Core (Days 31–90) | # | Deliverable | Type | Owner | | -- | ---------------------------------------------------- | ------------ | -------- | | 11 | Create CL-63 (DS4P) spec | Spec | CL | | 12 | Create CL-64 (DEA EPCS) spec | Spec | CL | | 13 | Create `fhir-profile-conformance` skill | Skill | Platform | | 14 | Create `ds4p-privacy-segmentation` skill | Skill | Platform | | 15 | Create `dsi-transparency-disclosure` skill | Skill | Platform | | 16 | Create `epcs-audit-preparation` skill | Skill | Platform | | 17 | Create `contexture-hie-integration` skill | Skill | Platform | | 18 | Update CL-16, CL-16-EN-02, PM-55, CL-06, CL-48 specs | Spec updates | CL/PM | | 19 | Create PF-109 (HITRUST e1) spec | Spec | PF/IT | | 20 | Create PM-72 (ONC API Governance) spec | Spec | PM | ### Phase 3: Expanded Coverage (Days 91–180) | # | Deliverable | Type | Owner | | -- | -------------------------------------------------- | --------- | -------- | | 21 | Create CL-65 (DSI Transparency) spec | Spec | CL | | 22 | Create CL-16-EN-03 (USCDI+ BH) spec | Spec | CL | | 23 | Create GR-26 (SAMHSA Reporting) spec | Spec | GR | | 24 | Create `hitrust-assessment-preparation` skill | Skill | Platform | | 25 | Update `per-core-compliance.md` references | Skill ref | Platform | | 26 | Create CL-66 (Immunization ASIIS) spec if in-scope | Spec | CL | | 27 | Create CL-67 (eCR) spec if in-scope | Spec | CL | | 28 | Create PM-73 (Surescripts) spec | Spec | PM | ### Phase 4: Certification Readiness (Months 6–12, only if trigger fires) | # | Deliverable | Type | Owner | | -- | ----------------------------------------------- | ----------- | -------- | | 29 | Create `onc-criterion-mapper` skill | Skill | Platform | | 30 | Create `inferno-test-author` skill | Skill | Platform | | 31 | Create `rwt-plan-author` skill | Skill | Platform | | 32 | Create `drummond-engagement-orchestrator` skill | Skill | Platform | | 33 | Build Inferno CI harness | Engineering | CL/PM | | 34 | Formal Drummond Advisory engagement | Business | Product | *** ## 10. Validation Checklist Before considering this plan complete, verify: * [ ] All 12 new skills have SKILL.md with correct YAML frontmatter * [ ] All new specs follow `specs/_templates/SPEC_TEMPLATE.md` structure * [ ] `SPEC_STATUS_REGISTRY.md` updated with new spec IDs * [ ] `regulatory-compliance.md` rule updated with new decision tree branches * [ ] `module-regulatory-compliance` skill and references updated * [ ] Root AGENTS.md updated with new patterns/landmines/prohibitions * [ ] Core AGENTS.md files (CL, PM) updated * [ ] `REGULATORY_COMPLIANCE_TRACKER.md` has new rows * [ ] `ONC_CERTIFICATION_ROADMAP.md` version bumped and expanded * [ ] `ONC_CERTIFICATION_GAP_MATRIX.md` updated with new findings * [ ] `AUTHORITATIVE_REFERENCES.md` has content licensing section * [ ] All cross-references between documents are valid *** ## 11. Cross-References * [Compass Artifact (source analysis)](https://github.com/Encore-OS/encoreos/blob/development/compass_artifact_wf-5ec62b38-cba7-4116-a35e-5f9b1bc60d47_text_markdown.md) * [ONC Certification Gap Matrix](/compliance/ONC_CERTIFICATION_GAP_MATRIX) * ONC Certification Roadmap * [Regulatory Compliance Tracker](/compliance/REGULATORY_COMPLIANCE_TRACKER) * [Authoritative References](/compliance/AUTHORITATIVE_REFERENCES) * [PHI Classification](/compliance/PHI_CLASSIFICATION) * [Constitution](https://github.com/Encore-OS/encoreos/blob/development/constitution.md) §4 (Security), §5 (Database) * [AGENTS.md](https://github.com/Encore-OS/encoreos/blob/development/AGENTS.md) §Architecture Rules, §What AI Must NEVER Do # PHI/PII Classification (CL & PM Tables) Source: https://docs.encoreos.io/compliance/PHI_CLASSIFICATION Source: CL-PM-SPEC-REVIEW Finding 8.3 **Source:** CL-PM-SPEC-REVIEW Finding 8.3 This document classifies CL and PM database tables by data sensitivity for access control, logging, and compliance. **PHI** = protected health information; **PII** = personally identifiable information; **SUD** = substance use disorder (42 CFR Part 2–protected when applicable). *** ## Classification Levels | Level | Meaning | Logging / Sharing | | ----------- | ------------------------------------------------------------------ | ---------------------------------------------------------------------------- | | **PHI** | Health information that identifies or could identify an individual | Never in logs; never to external AI; encrypt at rest and in transit | | **PII** | Non-health identifiers (name, SSN, contact) | Never in logs; last-4 SSN only where required (e.g. PM); full SSN in vault | | **SUD** | Substance use disorder treatment information | 42 CFR Part 2; consent required for disclosure; treat as highest sensitivity | | **General** | No direct identifier (e.g. aggregate, codes only) | Org/site/user IDs and codes OK in logs per policy | *** ## CL Tables | Table | Classification | Notes | | --------------------- | -------------- | ---------------------------------------------------------------- | | cl\_patient\_charts | PHI | Links to patient; chart content PHI | | cl\_problems | PHI | Diagnosis and problem list | | cl\_assessments | PHI / SUD | Full assessment may include SUD; consent required for disclosure | | cl\_treatment\_plans | PHI | Goals and interventions | | cl\_progress\_notes | PHI / SUD | Note content; SUD if substance use documented | | cl\_medications | PHI | Medication list | | cl\_prescriptions | PHI | Prescription details | | cl\_consents | PHI / SUD | Consent scope may reference SUD | | cl\_disclosure\_log | PHI | Disclosure events; no content in logs | | cl\_risk\_screenings | PHI | Suicide risk, etc. | | cl\_safety\_plans | PHI | Safety plan content | | cl\_group\_sessions | PHI | Session and attendance | | cl\_group\_attendance | PHI | Individual response may be SUD | | cl\_crisis\_episodes | PHI | Crisis documentation | | cl\_sdoh\_screenings | PHI | Social needs responses | | cl\_social\_referrals | PHI | Referral and outcome | | cl\_peer\_encounters | PHI / SUD | Peer service may involve SUD | | cl\_outcome\_measures | PHI | PROMs and scores | | cl\_pdmp\_queries | PHI | Query/response; log query\_id only, no response content | *** ## PM Tables | Table | Classification | Notes | | ------------------------- | -------------- | --------------------------------------------------------- | | pm\_patients | PHI / PII | Demographics; SSN last-4 only in table; full SSN in vault | | pm\_insurance\_policies | PHI / PII | Member ID, subscriber info | | pm\_eligibility\_checks | PHI | Benefit and eligibility | | pm\_appointments | PHI | Appointment and patient link | | pm\_encounters | PHI | Encounter and patient link | | pm\_charges | PHI | Charge and diagnosis/procedure codes | | pm\_claims | PHI | Claim and line items | | pm\_payments | PHI | Payment and patient/claim | | pm\_prior\_authorizations | PHI | Auth and patient | | pm\_messages | PHI / SUD | Message content may be SUD | | pm\_portal\_users | PII | Link to patient; no PHI in table | | pm\_telehealth\_sessions | PHI | Session and patient link | *** ## PF Tables (Clinical/PM Boundary) | Table | Classification | Notes | | ----------------------- | -------------- | -------------------------- | | pf\_patient\_identities | PII (minimal) | MRN and org only; no names | *** ## References * [constitution.md](https://github.com/Encore-OS/encoreos/blob/development/constitution.md) §4 (PHI/PII) * [CL-11 Consent & 42 CFR Part 2](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-11-consent-management-42cfr-part2.md) * [REGULATORY\_COMPLIANCE\_TRACKER.md](/compliance/REGULATORY_COMPLIANCE_TRACKER) # Regulatory Compliance Tracker Source: https://docs.encoreos.io/compliance/REGULATORY_COMPLIANCE_TRACKER Regulatory deadlines, implementation status, responsible specs, and interim procedures for Encore OS EHR/PM compliance tracking. **Source:** CL-PM-SPEC-REVIEW, docs/archive/ehr\_pm/ehr\_research\_updated.md, BHRF Coverage Plan 2026-05-18 This document tracks regulatory deadlines, implementation status, responsible spec, and interim procedures for Encore OS EHR/PM. > **How we stay current:** automated tripwires (Federal Register, curated AZ/AHCCCS/CMS/ONC sources, deadline alerts) plus a deep-dive agent file issues against the specs below. See [Regulatory Monitoring & Automation](/compliance/REGULATORY_MONITORING) for the runbook. *** ## CL-11 (42 CFR Part 2) — Implemented **Deadline:** Feb 16, 2026\ **Status:** ✅ Compliant — fully implemented. * **Spec:** [CL-11 Consent Management](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-11-consent-management-42cfr-part2.md) * **Integration doc:** [CL-11-consent-management-42cfr-part2-INTEGRATION.md](/architecture/integrations/consent-management-42cfr-part2-integration) * **Capabilities:** Consent capture (8 types, 4 categories), consent lifecycle (active/expired/revoked), disclosure logging with consent reference, accounting of disclosures export, SUD detection via `cl_check_sud_consent()`, permission-gated UI. **CL-11-EN-01:** Electronic consent with e-signature, granular categories (treatment/payment/operations/providers/research), 42 CFR Part 2 § 2.32 redisclosure chain-of-custody audit trail, consent expiration alerts (30/14/7 days), revocation workflow, Part 2 compliance dashboard. Evidence: `docs/compliance/evidence/CL-11-EN-01-42cfr-part2-EVIDENCE.md`. *** ## Status Legend | Status | Meaning | | -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | ✅ Compliant | Implemented and verified | | 🟡 In Progress | Implementation underway | | ⏳ Not Started | Spec exists; 0% implemented | | ⚠️ Overdue | Deadline passed; interim procedures in place | | 📋 N/A | Not applicable or deferred | | 🏗️ Scaffolded | Partial implementation — core structure (tables, UI shell, audit hooks) in place; vendor integration, gateway, or go-live still pending. Tracker cells may append a percentage (e.g. `🏗️ Scaffolded (70%)`) for rough completeness. | *** ## Tracker Table | Regulation | Deadline | Status | Responsible Spec | Owner | Escalation date | Interim Procedures | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------- | --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **42 CFR Part 2** (SUD confidentiality) | Feb 16, 2026 | ✅ Compliant | CL-11 — [CL-11 Integration doc](/architecture/integrations/consent-management-42cfr-part2-integration); **CL-31** (consumer: SUD consent gating for COD assessments and dual-diagnosis notes via `redactSUDFields` helper); **CL-48** (consumer: SUD consent check before CDA generation, SUD section filtering, redisclosure notice, disclosure logging; 📋 Specification); **CL-55** (consumer: virtual group/multi-party event gating, 📋 Specification); **CE-54** (consumer: AI triage SUD consent gating — edge function checks `consent_obtained` on `ce_screening_attempts` before including SUD fields in AI payload; blocked attempts audit-logged; AI response validated for PHI before storage; 📋 Draft); **CL-69** (consumer: SUPRT-A/C outcome rows DS4P-labeled per `CL-63`; downstream emit to GR-28 gated on per-receiving-entity Part 2 consent; 📋 Specification — compliance\_reviewed 2026-05-28); **GR-28** (consumer: SPARS package generation queries `CL-11` for per-receiving-entity Part 2 consent and surfaces a non-overridable `consent_missing` error per row; 📋 Specification — compliance\_reviewed 2026-05-28); **CL-29-EN-66** (consumer: ADT-derived SUD denominator events from `PF-108` Contexture HIE inherit Part 2 considerations on payer-facing export; 📋 Specification — compliance\_reviewed 2026-05-28) | — | — | Implemented: consent capture, revocation, disclosure logging, accounting export, SUD detection via cl\_check\_sud\_consent. **CL-31 Planned/in-progress:** design/specs for consent capture, revocation, disclosure logging, accounting export and SUD detection via cl\_check\_sud\_consent for COD documentation; interim controls in place; CL-31 will extend Part 2 coverage for COD documentation (redactSUDFields for ASI-6 SUD domains and progress note SUD sections). **CL-48 planned:** C-CDA generation checks `cl_has_sud_consent(chart_id)` before including SUD data in CDA sections; excludes SUD medications/diagnoses/notes when consent inactive; attaches redisclosure notice per § 2.32; creates disclosure log entry per § 2.31. **CL-55 planned:** SUD-related virtual group attendance, recording, export, and event publication must route through CL-11 consent/disclosure policy checks and keep events PHI-free. **CE-54 planned:** AI triage edge function verifies SUD consent on `ce_screening_attempts` before processing; SUD fields excluded if consent missing; PHI detection on AI response before storage; structured output prevents re-disclosure (§ 2.32). **CL-69 planned:** SUD-derived outcome rows carry DS4P labels at insert (FR-9, NFR-sec-1); downstream emit to `clinical.outcome_assessment.recorded` is gated by per-receiving-entity Part 2 consent enforced server-side. **GR-28 planned:** SPARS package generation excludes any SUD-derived row without a per-receiving-entity Part 2 consent on file and surfaces a non-overridable `consent_missing` error (FR-8, AC-4.1/4.2). **CL-29-EN-66 planned:** payer/AHCCCS-facing exports of FUA/FUI denominator events containing SUD diagnoses must route through `CL-11` `cl_check_sud_consent()` and log to the disclosure log; ADT-derived events RLS-isolated per tenant. | | **CMS-2454-IFC** (Medicaid community-engagement / work-requirement exemption verification; H.R.1 §71119; 42 CFR 435.560(c), 440.315(f)) | Jan 1, 2027 (state implementation; rule effective Jul 31, 2026; comments due Jul 31, 2026; good-faith extension ceiling Dec 31, 2028) | ⏳ Not Started | **CEEM** — **PF-96-EN-01** (work\_requirement\_rules pack), **PF-117** (status registry — the single CEEM evaluator; absorbed the former PF-114), **PF-114** (rules-evaluator — **ARCHIVED 2026-06-02, superseded by PF-117**), **PF-115** (80-hr activity tracker), **PF-116** (verification/cure lifecycle), **CL-70** (medically-frail determination + attestation), **CL-71** (42 CFR Part 2 / DS4P disclosure gate), **GR-32** (state/MCO export), **FA-47** (revenue-at-risk). The 9 enhancement specs were renumbered to numeric `-EN-{n}` (e.g. PF-96-EN-01) on 2026-06-02. Epic #737; spec-tracking #719–#735; drafts under `specs/{pf,cl,gr,fa}/specs/`. | Compliance Officer / PF / CL | 2026-12-31 (enrollee outreach outer deadline) | Specs drafted and grounded against CMS-2454-IFC (FR 2026-11094), 42 CFR 440.315(f), and the 2024 42 CFR Part 2 final rule (89 FR 12472); recommendation report + P0 spec-review under `specs/reviews/`. Exemption verification **not yet implemented** — until CEEM ships, exemption evidence (provider attestations, treatment-episode records) is produced manually and disclosed to AHCCCS/MCOs only on a valid Part 2 basis (consent OR permissible TPO/claims-data basis) with **minimum-necessary** (yes/no exemption attestation, never the raw SUD record). The "disabling mental disorder" qualifying-diagnosis set and AZ lookback/cadence values are **PF-96-configurable, not hardcoded**. P0 spec-review verdicts: PF-96-EN-01 / PF-117 `minor_fixes`; PF-114 / CL-71 `needs_work` — **CL-71 Part 2/DS4P gate MUST precede any SUD-derived disclosure** (gates CL-70 and GR-32). Fail-safe toward coverage retention; audit every status transition (PF-04). | | **ONC HTI-1 / USCDI v3** | Jan 1, 2026 | ⚠️ Overdue | PM-01, CL-16, **CL-48** (C-CDA R2.1 document format per §170.315(b)(1)) | — | — | Align demographics and export scope with USCDI v3 in new development; certification pathway documented in ONC\_CERTIFICATION\_ROADMAP.md. CL-48 addresses C-CDA R2.1 generation for Transitions of Care (§170.315(b)(1)). | | **Arizona CSPMP (PDMP)** EMR integration | Dec 31, 2026 | 🏗️ Adapter shipped (85%) — vendor go-live pending | CL-17 / CL-17-EN-01 — [CL-17 Arizona CSPMP/PDMP](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-17-arizona-cspmp-pdmp-integration.md) | Vendor-Selection Lead | — | **Vendor-agnostic adapter shipped (#1964):** `PdmpAdapter` seam + report persistence + fail-closed go-live gate (`pdmp_adapter_enabled`, off until vendor contract + BAA — EN-20). Go-live = file the AZ Integration Interest Form (Bamboo Customer Connect; **state-funded, \$0 license**, new-vendor onboarding "weeks–months" — lead time is the deadline risk, START NOW), then config + vault credential + Bamboo XML call. Interim: AWARxE portal link-out + in-chart manual attestation satisfies the prescriber duty (§ 36-2606(F); AMPM 940 evidence in chart). ⚠️ Laws 2026 Ch. 94 (eff. 2026-09-12) reletters (F)→(E) / (I)→(H) and tightens the prescriber duty to EVERY prescription and refill. Research: `specs/cl/research/CL-17-EN-01-RESEARCH.md`. | | **HHS Section 504** WCAG 2.1 AA (web accessibility) | **May 2026** | 🟡 In Progress — Owner: Accessibility Lead (Escalated, weekly updates until May 11, 2026) | CL-26, EN-64 — [CL-26-EN-64 multi-language portal](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-26-EN-64-multi-language-portal.md) | Accessibility Lead | 2026-05-11 | **Wave 1 (HIGH-priority).** Weekly status updates until May 11, 2026. Immediate task: run WCAG 2.1 AA gap analysis (keyboard navigation, screen-reader checks, form labels, contrast fixes) linked to [CL-26-EN-64](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-26-EN-64-multi-language-portal.md). Acceptance criteria: portal meets WCAG 2.1 AA; multi-language support per EN-64. | | **HIPAA EDI — Clearinghouse Transport** (45 CFR 162 X12 5010 compliance; 45 CFR 164.312(e)(2)(ii) PHI encryption in transit; 45 CFR 164.312(a)(2)(iv) credential encryption at rest; 45 CFR 164.312(b) audit controls) | Ongoing | ✅ Implemented | **PM-15-P2** — [PM-15-P2 Production Clearinghouse Transport](https://github.com/Encore-OS/encoreos/blob/development/specs/pm/contexts/PM-15-PHASE-2-EXPANSION.md) | — | 2026-04-09 | PM-15-P2 implements REST-only transport for live X12 5010 claim submission (837P), ERA retrieval (835), eligibility (270/271), acknowledgment processing (999, 277CA), and connection health monitoring. Waystar OAuth2 via Edge Function Secrets. SFTP deferred (Deno Deploy incompatible). 72 unit tests passing. Evidence: `docs/compliance/evidence/PM-15-P2-HIPAA-EDI-EVIDENCE.md`. Sign-off: `specs/pm/PM-15-P2-COMPLIANCE-SIGNOFF.md`. | | **HIPAA EDI — Multi-vendor clearinghouse failover** (45 CFR 162 X12 5010 continuity; 45 CFR 164.312(a)/(b)/(e) access, audit, transmission safeguards; 45 CFR 164.308(b)(1), 164.502(e) BAA controls) | Ongoing (go-live gate before non-Waystar PHI traffic) | ✅ Implemented (Waystar live; Availity / Change Healthcare gated by BAA) | **PM-15-P2-EN-01** — [PM-15-P2-EN-01 Clearinghouse Multi-Vendor Failover](https://github.com/Encore-OS/encoreos/blob/development/specs/pm/specs/PM-15-P2-EN-01-clearinghouse-multi-vendor-failover.md) · [Plan](https://github.com/Encore-OS/encoreos/blob/development/specs/pm/plans/PM-15-P2-EN-01-clearinghouse-multi-vendor-failover-PLAN.md) · [Tasks](https://github.com/Encore-OS/encoreos/blob/development/specs/pm/tasks/PM-15-P2-EN-01-TASKS.md) · [Context](https://github.com/Encore-OS/encoreos/blob/development/specs/pm/specs/PM-15-P2-EN-01-CONTEXT.md) | PM / Compliance / Security | 2026-05-15 | Adds Availity / Change Healthcare adapter stubs (PHI-blocked until BAA recorded), per-payer route overrides (`pm_payer_clearinghouse_routes`), and health-based failover with configurable threshold. Routing precedence (`payer_override → primary → secondary`) implemented as pure `resolveVendorRoute()` with unit tests. BAA gate enforced in `FailoverSettingsCard` against `pm_clearinghouse_config.custom_fields.baa_approved_vendors`. Audit controls: config saves emit `failover_config_change`; runtime route flips emit `clearinghouse_route_failover` via `resolveVendorRouteWithAudit()` (in-memory dedupe per org+payer; PHI-free). Tenant isolation: RLS test `tests/rls/pm/pm-clearinghouse-failover.test.ts`. Seed data: `supabase/seeds/pm/pm-15-p2-en-01-test-data.sql`. Evidence: [`docs/compliance/evidence/PM-15-P2-EN-01-HIPAA-EDI-FAILOVER-EVIDENCE.md`](/compliance/evidence/hipaa-edi-failover-evidence). Sign-off: [`PM-15-P2-EN-01-COMPLIANCE-SIGNOFF.md`](https://github.com/Encore-OS/encoreos/blob/development/specs/pm/reviews/PM-15-P2-EN-01-COMPLIANCE-SIGNOFF.md). Follow-ups (logged in `specs/pm/IMPLEMENTATION_LOG.md`): mobile Sheet variant, shared ``, server-side router audit when submission moves to edge functions, dedicated `pm_clearinghouse_baa_approvals` table. | | **HIPAA EDI / CMS COB / AHCCCS Crossover** (X12 837P/837I COB segments; 42 CFR Part 411 MSP; AHCCCS crossover procedures) | Ongoing | ✅ Implemented | **PM-30** — [PM-30 COB & Secondary Claims](https://github.com/Encore-OS/encoreos/blob/development/specs/pm/specs/PM-30-coordination-of-benefits-secondary-claims.md) | — | — | **PM-30** implemented: COB priority order, secondary/tertiary 837P/837I claim generation with COB2300/COB2400 segments, Medicare–AHCCCS dual-eligible crossover routing, and secondary ERA posting. Completed 2026-03-27. MSP situation enumeration (42 CFR Part 411) deferred to post-MVP (see PM-30 Known Limitations). Two pending compliance sign-off items: (1) `crossover_routing = 'manual'` default acceptable for rollout; (2) MSP reason code not required in MVP COB segments. | | **HRSA FQHC Sliding Fee / Financial Counseling** (42 USC § 254b; HRSA PIN 2014-02) | Ongoing | 📋 Specification | **PM-32**, PM-21 | — | — | PM-32 specifies financial counseling workflow (income/FPL collection, assistance program referral tracking, charity care applications with board-approved policy tiers). PM-21 provides sliding fee schedule and discount application. HRSA compliance features (income verification enforcement, annual review reminder) configurable per org via PM-28. **Pending:** Compliance officer HRSA & HIPAA review required before Phase 1 implementation. | | **CMS-0057-F** (Prior auth APIs) | Jan 1, 2027 (Medicaid MC) | ⏳ Not Started | PM-10 | — | — | Continue manual/portal prior auth; implement Da Vinci CRD/DTR/PAS per PM-10 plan. | | **HTI-4** NCPDP SCRIPT 2023011 | Dec 31, 2027 | ⏳ Not Started | CL-06 | — | — | Use current Surescripts version; plan SCRIPT transition in CL-06. | | **AHCCCS** Policy 320-O, 940 | Ongoing | 🟡 Partial | CL-02, CL-04, **CL-04-EN-66** (canonical Policy 940 gate, 📋 Specification), **CL-36** (AI-assisted note quality; delegates to EN-66 for Policy 940 validation, Phase 2, 📋 Specification); **CL-40** (intake 18-element assessment + compliance dashboard, 📋 Specification); **CL-55** (virtual group modifier/contingency documentation, 📋 Specification); **PM-34** (eligibility at encounter, ✅ Complete); **PM-41** (intake funnel analytics — AHCCCS 48-72h scheduling compliance report, ⏳ Not started / Draft / 0%) | — | — | Implement per CL specs; 18-element assessment and progress note elements required. **PM-34** is **implemented**: encounter-level eligibility verification (AHCCCS Policy 940) with auto-trigger 270/271 at check-in (see `specs/pm/IMPLEMENTATION_LOG.md` PM-34). **CL-04-EN-66** is the **canonical** pre-finalize Policy 940 validation: Phase 1 covers 6 high-risk elements; Phase 2 adds remaining 6 categories (see [CL-04-EN-66](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-04-EN-66-note-quality-pre-submission-validation.md) Clarification #5). INSERT-only override audit; 6-year HIPAA retention; `pf_organizations.ahcccs_contracted` enforces FR-8. **CL-55** uses PF-96/PF-70 for virtual group modifier suggestions (Arizona profile result `95 + HQ`; non-Arizona/state-neutral profiles must not inherit AHCCCS constants) and requires contingency documentation before virtual group start. **CL-36** delegates to EN-66 (or shared `validatePolicy940`) for Policy 940 validation; enforcement modes aligned; single org config. **PM-41** is **spec only** (not implemented): planned AHCCCS AMPM 320-O lead-to-appointment latency reporting, configurable compliance window, and CSV export with exception reasons—**interim:** no automated compliance audit from PM-41 until implementation; use manual reporting as needed. | | **HIPAA — Coverage Discovery Vendor BAA** (45 CFR 164.502(e), 164.308(b)(1); 45 CFR 164.312(e)(2)(ii) TLS; 42 CFR Part 2 §2.31 no SUD context) | Before Phase 1 go-live | 📋 Specification | **PM-60** — [PM-60 Coverage Discovery](https://github.com/Encore-OS/encoreos/blob/development/specs/pm/specs/PM-60-realtime-insurance-discovery-coverage-autoadd.md) | Compliance Officer / IT Security | — | PM-60 sends patient PII (name, DOB, optional SSN) to coverage discovery vendor (Waystar/pVerify/Inovalon). BAA must be signed before production traffic. SSN consent gated per PF-96 jurisdiction profile. No clinical/SUD context sent to vendor (42 CFR Part 2 defense-in-depth). Compliance sign-off: [PM-60-COMPLIANCE-SIGNOFF.md](https://github.com/Encore-OS/encoreos/blob/development/specs/pm/reviews/PM-60-COMPLIANCE-SIGNOFF.md). | | **HIPAA 45 CFR 164 — Lead Insurance PHI (CE intake)** (45 CFR 164.312(a) access control, (b) audit controls, (e)(2) transmission integrity; 164.502(b) minimum-necessary) | Ongoing | ✅ Compliant (Approved with conditions 2026-06-15) | **CE-71** — [CE-71 Lead Insurance Capture](https://github.com/Encore-OS/encoreos/blob/development/specs/ce/specs/CE-71-lead-insurance-capture.md) | CE / Compliance Officer | — | CE-71 captures pre-conversion lead insurance (`payer_picklist_value`, plaintext `member_id` PHI, coverage dates) in `ce_lead_insurance`. **member\_id** follows the CE-65 pattern: plaintext storage + UI masking (`insurance-mask.ts`) + permission-gated Reveal that emits an append-only `ce_lead_insurance_access_audit` row (no column crypto). **Two-leg RLS:** org scope (`ce_has_org_access`) AND PHI role (`pf_has_permission`), FORCE RLS, anon REVOKE (AC-7/AC-8). PHI never crosses the event bus — conversion re-reads server-side (IDs-only payload, AC-5). **42 CFR Part 2 N/A:** no SUD context at the lead stage; Part 2 boundary preserved downstream at PM/CL. **Minimum-necessary exception (condition c):** the member\_id grant currently includes generic `staff` (per NFR-sec-1: intake/partnerships/billing roles) because no dedicated intake role exists in `app_role`; narrow when one is added (ref migration `20260614210200`). Sign-off: [CE-71-COMPLIANCE-SIGNOFF.md](https://github.com/Encore-OS/encoreos/blob/development/specs/ce/reviews/CE-71-COMPLIANCE-SIGNOFF.md); findings: [CE-71-COMPLIANCE-REVIEW-2026-06-15.md](https://github.com/Encore-OS/encoreos/blob/development/specs/ce/reviews/CE-71-COMPLIANCE-REVIEW-2026-06-15.md). Verification tail before `spec-complete`: AC-5 local-serve pass + a11y/docshots/browser-autoheal (pipeline-ordered; CE-71 stays `status: draft` until those land). | | **HIPAA — AI Vendor BAA** (45 CFR 164.502(e), 164.308(b)(1)) | Before Phase 1 go-live | 🟡 Partial — Vercel Gateway BAA + ZDR confirmed 2026-05-29; Langfuse trace store metadata-only (no BAA required under current posture); model vendors (Anthropic/OpenAI) covered transitively through Gateway | **CL-36**, **PM-64**, **PF-111** | Compliance Officer | — | **Three-subprocessor chain (see [AI\_SUBPROCESSOR\_BAA\_POSTURE.md](/compliance/AI_SUBPROCESSOR_BAA_POSTURE)):** (1) **Vercel AI Gateway** — BAA in place + Zero-Data-Retention confirmed 2026-05-29; all PHI-lane traffic routes through the single gateway seam (`vercel-gateway.ts`); only BAA-confirmed models in `PHI_MODELS` (`cl`/`pm` modules); fail-closed `PhiLaneNotConfiguredError` for any unconfigured module. (2) **Langfuse Cloud** — no BAA executed; acceptable under current metadata-only posture: prompt/response content is never attached to observations (invariant enforced in `tracing.ts`; live-verified 2026-06-03); `tracing-mask.ts` `mask()` is a defense-in-depth backstop (SSN/email/phone/CC only — not a de-identification engine). A Langfuse BAA + switch to `hipaa.cloud.langfuse.com` is a **hard prerequisite before any content capture is ever enabled**. Note: Langfuse Cloud has no configurable retention cap (EE-gated, Encore has no EE) — acceptable only while no PHI content is sent. (3) **Model vendors (Anthropic claude-sonnet-4.6, OpenAI gpt-4o)** — covered transitively by Vercel Gateway BAA + ZDR. Ops recommendation: rotate `LANGFUSE_BASE_URL` secret to `https://us.cloud.langfuse.com` for US residency alignment (currently defaults to EU). | | **HIPAA — Google Workspace Vendor BAA** (45 CFR 164.502(e), 164.308(b)(1); Google Workspace/Cloud Identity HIPAA terms) | Before PHI-capable Workspace features enabled per tenant | 🏗️ Scaffolded | **PF-101** — [PF-101 Google Workspace Integration](https://github.com/Encore-OS/encoreos/blob/development/specs/pf/specs/PF-101-google-workspace-integration.md) · [Integration doc](/architecture/integrations/google-workspace-integration-integration) | Compliance Officer | — | PF-101 connector (38/44 tasks; tables baselined) enforces a fail-closed BAA gate: PHI-capable Gmail/Calendar/Drive/Chat/Meet operations are blocked unless `pf_google_workspace_connections.baa_attested_at` is set and the capability flag is enabled (`assertCapabilityAllowed`). Chat PHI is always blocked in MVP. Third-party apps are not automatically covered by Google's BAA — Encore maintains its own vendor posture (see `docs/integrations/GOOGLE_WORKSPACE_COMPLIANCE.md`, security review `docs/integrations/GOOGLE_WORKSPACE_SECURITY_REVIEW.md`, ✅ approved for staging 2026-04-28). Interim: existing Gmail/Calendar flows use non-PHI data until tenant BAA attestation is recorded. | | **HIPAA — AI Coding Assistant** (45 CFR 164.312 Security; 164.514 De-identification; 42 CFR Part 2 §2.31 SUD consent; HHS healthcare AI guidance; NIST AI RMF) | Before Phase 1 go-live | 📋 Specification | **PM-64** — [PM-64 AI Coding Assistant](https://github.com/Encore-OS/encoreos/blob/development/specs/pm/specs/PM-64-ai-coding-assistant.md) | Compliance Officer / Security / IT | — | PM-64 AI-powered coding assistant: PHI-redacted (Safe Harbor 18 identifiers) note metadata to LLM; fail-closed redaction; suggest-not-execute mandate; immutable audit trail (DELETE forbidden, 7-year retention); SUD consent check (FR-009, 42 CFR Part 2 §2.31); fairness monitoring (PM-50-EN-01); jurisdiction-specific coding rules via PF-96. Tables: `pm_ai_coding_suggestions`, `pm_ai_coding_suggestion_audits`. Compliance sign-off: [PM-64-COMPLIANCE-SIGNOFF.md](https://github.com/Encore-OS/encoreos/blob/development/specs/pm/reviews/PM-64-COMPLIANCE-SIGNOFF.md). | | **HIPAA — Telehealth Vendor BAA** (45 CFR 164.502(e), 164.308(b)(1), 164.312(e)) | Before PHI-bearing telehealth go-live | 🟡 Partial / Pending sign-off | **PM-13**, **[CL-24](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-24-telehealth-documentation-compliance.md)** (clinical compliance wrapper — does NOT replace BAA boundary; links UUID-only PM-13 session references), **CL-55** | Security / Compliance Officer | — | PM-13 owns telehealth vendor configuration, durable join URLs, session lifecycle, and platform credentials. **CL-24** adds per-session compliance metadata (consent, safety checklist, jurisdiction, connectivity) on top of the PM-13 vendor session; CL-24 does **not** store vendor join URLs and references PM-13 sessions only by UUID. CL-55 may link UUID-only PM-13 session references but must not enable PHI-bearing virtual group or multi-party video workflows until vendor BAA coverage and encrypted transmission controls are verified in `specs/cl/reviews/CL-55-COMPLIANCE-SIGNOFF.md`. Interim: do not use unverified telehealth vendors for CL-55 PHI-bearing sessions. | | **HIPAA — WENO EZ e-Prescribing Vendor BAA** (45 CFR 164.502(e), 164.504(e); 45 CFR 164.308/310/312; 42 CFR Part 2 SUD gating) | Before production enablement | 📋 Risk Assessment Complete (BAA pending) | **CL-06-EN-23** — [CL-06-EN-23 WENO EZ Integration Adapter](/architecture/integrations/CL-06-EN-23-weno-ez-adapter-INTEGRATION); [Spec](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-06-EN-23-weno-ez-integration-adapter.md) | Compliance Officer / Security | — | **Risk Assessment:** [WENO-HIPAA-RISK-ASSESSMENT.md](/compliance/WENO-HIPAA-RISK-ASSESSMENT.md) documents threat/safeguard mapping per HIPAA Security Rule (45 CFR §164.308/310/312) and satisfies Test Plan §10. **BAA Prerequisite:** Signed HIPAA BAA with WENO Online, Inc. required before `weno_adapter_enabled = true` in production; BAA execution date recorded in `cl_module_settings.custom_fields.weno_baa_executed_date`. **Technical Controls:** Server-side credential vault (SECURITY DEFINER RPCs), AES-256-CBC payload encryption, 42 CFR Part 2 SUD consent gating via `cl_check_sud_consent()`, immutable audit trails (2-year PF-04 retention), multi-tenant RLS. **Residual Risks:** Per-prescriber credential audit trail missing (post-MVP); breach escalation SOP not yet in UI; fixed IV + shared EZ key (vendor constraint; post-MVP annual rotation). **Interim:** All WENO operations blocked by production gate `weno_adapter_enabled = false`. | | **Joint Commission** CAMBHC | Survey cycle | 🟡 Partial | CL-01, CL-07, **CL-07-EN-01**, **[CL-24](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-24-telehealth-documentation-compliance.md)** (NPSG.15.01.01 — pre-session safety checklist for 1:1 telehealth: patient-current-location verification, local-emergency-number capture, disconnect-protocol acknowledgement; ✅ Phase 1 shipped 2026-05-28), **CL-55**, etc. | — | — | Align documentation and safety (NPSG.15.01.01) per CL specs. **CL-24** adds the per-session safety record for 1:1 telehealth (audit-immutable connectivity issues + safety-checklist completion event; jurisdiction-mismatch banner). CL-07-EN-01 adds Zero Suicide Framework lethal means assessment and safety plan sharing per NPSG.15.01.01. **CL-55** adds virtual group technology contingency, backup site, and emergency contact verification requirements. | | **EEOC UGESP** (29 CFR 1607) — Internal selection / promotion audit trail | Ongoing | ✅ Implemented (Phase 1, 2026-05-22) | **HR-35** — [HR-35 Internal Mobility & Talent Marketplace](https://github.com/Encore-OS/encoreos/blob/development/specs/hr/specs/HR-35-internal-mobility-talent-marketplace.md) | HR Director | — | HR-35 Phase 1 ships `hr_internal_applications`, `hr_internal_application_stage_audit`, `hr_employee_transfers` with RLS + `WITH CHECK`; manager-notify defaults OFF for employee privacy; disposition codes bound to PF-15 picklist `hr_application_disposition` (8 EEOC-aligned defaults seeded via `pf_picklist_default_definitions` on 2026-05-22); transfer execution requires approved HR-15 `pay_change_id` when `internal_mobility_require_pay_approval_before_transfer = true` (CAC-006). PHI-free domain events (`hr.internal_application.submitted`, `hr.internal_application.advanced`, `hr.employee.transferred`) registered in `KnownEventName`. Evidence: `docs/compliance/evidence/HR-35-eeo-internal-selection-EVIDENCE.md`. Deferred: US-4 compliance CSV export, adverse-impact (4/5ths rule) reporting. HR Director sign-off pending (`specs/hr/reviews/HR-35-COMPLIANCE-SIGNOFF.md`). | | **HTI-2 TEFCA** | Emerging (2027) | ⏳ Not Started | CL-16, CL-16-EN-01 | — | — | TEFCA/QHIN enhancement scoped in CL-16-EN-01; continue CL-16 baseline interoperability controls until TEFCA transport and policy gates are implemented. | | **42 CFR Part 8 (OTP)** | Ongoing | ✅ Core Complete \| Event consumers pending \| PM-31 billing 📋 Specification \| CL-34 UDS workflow 📋 Specification \| CL-55 virtual OTP group documentation 📋 Specification | CL-21, **CL-34**, **CL-55**, PM-31 | — | — | MAT implemented; event consumers (cl\_moud\_monitoring\_overdue, cl\_moud\_adherence\_risk) pending — see High-priority event consumers below. Full OTP standards via enhancement EN-51 (CL-21). **CL-34** adds dedicated UDS workflow with chain-of-custody (§8.12(f)(1): ≥8 tests/year/patient), presumptive/definitive ordering, and OTP rolling-year count reporting (Phase 3). **CL-55** documents OTP-relevant virtual group modality, participant evidence, and contingency requirements when the virtual group is OTP-related. **PM-31** adds OTP/MAT-specific billing (G2067–G2080, G2215/G2216, H0020, T1012; Medicare + AHCCCS billing periods); status: 📋 Specification. Compliance sign-off: [PM-31-COMPLIANCE-SIGNOFF.md](https://github.com/Encore-OS/encoreos/blob/development/specs/pm/reviews/PM-31-COMPLIANCE-SIGNOFF.md). | | **AHCCCS IAD dual-track** | Ongoing | 🟡 Partial | CL-15, **CL-15-P2-3** (Phase 2.1) | — | — | AZDHS deadlines implemented (Phase 1); AHCCCS Policy 961 dual-track specified in CL-15 Phase 2.1 (`CL-15-PHASE-2-3-EXPANSION.md`): org-configurable track selection (AZDHS/AHCCCS/dual), business-day definitions, sentinel classification. Compliance sign-off: `specs/cl/reviews/CL-15-PHASE-2-3-COMPLIANCE-SIGNOFF.md`. | | **NCQA HEDIS FUH/FUM/FUA/FUI** (Follow-Up After Hospitalization / ED Visit for Mental Illness — MY 2025; ED-for-SUD / High-Intensity-SUD follow-up — MY 2025 + MY 2026) | 2026-03-31 17:00 MST (submission). Escalation: 2026-03-24 12:00 MST | 📋 Specification (plan + tasks ready for EN-65; EN-66 compliance\_reviewed) | **CL-29-EN-65** (FUH/FUM), **CL-29-EN-66** (FUA/FUI MY2025+MY2026 via PF-96; compliance\_reviewed 2026-05-28; consumes `PF-108` Contexture ADT for out-of-network ED denominator), CL-15, CL-35 | Quality Team / Revenue Cycle | 2026-03-24 12:00 MST | **Final MY 2025 reporting deadline:** June 15, 2026 (9:00 PM ET). **42 CFR Part 2 implementation:** 0% until consent/QSOA logic enforced and verified. **CL-29-EN-65 status:** Spec complete; plan + tasks ready; 13 tasks across 4 phases; \~9 days effort. **CL-29-EN-66 status:** compliance\_reviewed 2026-05-28; awaiting AC-draft / plan. **Interim:** (1) June 1 plan-locked data snapshot; audit-ready manual extraction methodology. (2) Confirm HOQ (House of Quality) submission with Revenue Cycle/Contracts. (3) Enforce Part 2 compliance before payer-facing export. (4) Per-MY NCQA value-set OIDs require NCQA-portal acquisition at CL-29-EN-66 plan stage. ⚠️ 42 CFR Part 2 review required before enabling payer-facing SUD-diagnosis-based export (authorization or QSOA) — applies to both EN-65 and EN-66. Specs: [CL-29-EN-65](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-29-EN-65-hedis-fuh-fum-tracking.md), [CL-29-EN-66](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-29-EN-66-fua-fui-followup-measures.md). | | **CMS Medicaid Adult Core Set — FUA-AD mandatory reporting** (SUPPORT Act §5001; FFY 2024+ mandatory for 50 states + DC + territories) | Annual FFY reporting cycle | 📋 Specification | **CL-29-EN-66** (compliance\_reviewed 2026-05-28) | Quality Team / Compliance | — | FUA-AD is on the mandatory Adult Core Set starting FFY 2024 per SUPPORT Act §5001. CL-29-EN-66 produces the data side (CL-51 eCQM engine registration + dashboard); state submission cadence + format owned by Quality Team operationally. **Interim:** manual extraction for any FFY reporting window before CL-29-EN-66 implementation. | | **NCQA HEDIS FUA/FUI — CL-29-EN-66 (SUD ED & high-intensity follow-up)** (NCQA HEDIS FUA/FUI MY2025 + MY2026; CMS Medicaid Adult Core Set / SUPPORT Act §5001; 42 CFR Part 2; HIPAA 45 CFR 164; AHCCCS DAP; Information Blocking / 21st Century Cures) | FFY Adult Core Set reporting cycle; AHCCCS DAP per payment year | 🏗️ Scaffolded — implementation complete on branch `feat/cl-29-en-66-fua-fui`; spec stays `draft`; **human-merge, NEVER auto-merge** (regulated CL/SUD core) | **CL-29-EN-66** ([integration](/architecture/integrations/CL-29-EN-66-FUA-FUI-INTEGRATION), [DS4P trace](/architecture/integrations/CL-29-EN-66-DS4P-PROPAGATION), [admin guide](/cl/cl-29-en-66-fua-fui-admin-guide), [spec](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-29-EN-66-fua-fui-followup-measures.md), [sign-off](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/reviews/CL-29-EN-66-COMPLIANCE-SIGNOFF.md)), CL-51, CL-35, PF-96, PF-108 | Quality Team / Compliance / CL | — | FUA/FUI 7-day + 30-day rates; MY2025↔MY2026 selected from PF-96 at evaluation time; FUA from `crisis`/`evaluation` (+SUD) + PF-108 ADT, FUI from `residential_daily` — **interim proxy** behind PF-96, canonical PM-03 path stubbed `TODO(PM-03)`. **Four human-verify-open gates — fail-closed-shipped** (sign-off items 6 / 10a-b / 10c / 8): (1) **Gate 6 (item 6):** ships a CL-51 measure-spec loader with zero NCQA codes inline (NFR-config-1); human must load per-MY (MY2025 + MY2026) NCQA value-set OIDs from the licensed NCQA portal into the CL-51 registry before denominator logic ships to prod. (2) **Gate 10a-b (item 10a-b):** `cl_fua_payer_export_gate()` fail-closes any payer/AHCCCS-facing SUD export at the DB unless active `cl_check_sud_consent()` + org-enabled payer export, writing the CL-11 redisclosure log on every permitted disclosure; internal org-scoped computation allowed, **payer-facing export disabled until live**; human must confirm a valid TPO consent / authorization / QSOA basis and that ADT events are not stored with identifiable SUD dx absent active Part 2 consent. (3) **Gate 10c (item 10c):** DS4P label propagation is now **documented** (T2/T4.2 trace [CL-29-EN-66-DS4P-PROPAGATION](/architecture/integrations/CL-29-EN-66-DS4P-PROPAGATION) — DB fail-close `ds4p_security_label = 42CFRPart2,ETH\|NORDSLCD`, TS↔DB SSOT drift-trap, BLOCKING-before-payer-export); **live PF-108 / Contexture feed end-to-end propagation remains human-verify-open** (PF-108 is a planning stub). (4) **Gate 8 (item 8):** per-year AHCCCS DAP FUA/FUI measure weighting externalized to PF-96; human must obtain AHCCCS QM-team confirmation and record it here before the first DAP submission using platform rates. **Closed residual:** FUI age-floor ≥13 is **enforced** in code (`FUA_MIN_AGE = FUI_MIN_AGE = 13`, sign-off residual item 4). **Interim (until gates clear):** manual FUA/FUI rate extraction for any reporting window; maintain the same 42 CFR Part 2 payer-export gate as CL-29-EN-65. Sign-off: [CL-29-EN-66-COMPLIANCE-SIGNOFF.md](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/reviews/CL-29-EN-66-COMPLIANCE-SIGNOFF.md) (Approved with Conditions). | | **CMS Care-Management Billing** (BHI 99484; CoCM 99492/99493/99494/G2214; CCM 99490/99439/99491 + complex 99487/99489; PCM 99424–99427; SDOH G0136; MLN909432, MLN909188) | Ongoing | 📋 Specification (compliance\_reviewed 2026-05-28; conditional pass) | **PM-75** — [PM-75 Care-Management Billing Engine](https://github.com/Encore-OS/encoreos/blob/development/specs/pm/specs/PM-75-care-management-billing-engine.md) | Billing Compliance / PM | — | PM-75 implements per-code-family time-threshold + credential gates with **auto-post on gate-pass** (per-org/per-payer kill switch + 100% immutable gate-evaluation audit with rule snapshot per NFR-audit-1/NFR-determinism-1). CMS mutually-exclusive-billing rules (no CoCM + BHI same month) enforced via concurrent-billing guardrail. CoCM auto-post requires active `CL-54-EN-01` registry membership AND psychiatric-consultant evidence (US-7). AHCCCS / MCO coverage variance via payer-policy table consumed through PF-96 (no hardcoded constants). ONC §170.315(b)(11) DSI documented **N/A** (deterministic rule engine, not predictive). **Conditions (before implementation plan):** (1) human extraction of MLN909432 / MLN909188 verbatim thresholds from canonical PDFs to close `[HUMAN-VERIFY]` items in research appendix §5; (2) AZ MCO payer-policy seed accuracy is the deploying org's operational responsibility per Admin Guide. Sign-off: [PM-75-COMPLIANCE-SIGNOFF.md](https://github.com/Encore-OS/encoreos/blob/development/specs/pm/reviews/PM-75-COMPLIANCE-SIGNOFF.md). | | **Psychotherapy notes (HIPAA 45 CFR 164.501)** | Ongoing | ⏳ Not Started | CL-30 (proposed) | — | — | Do not document psychotherapy process notes in the EHR; maintain separate locked paper/electronic files with restricted access and exclusion from exports until CL-30 is implemented. **Enforced by:** Compliance/Privacy Officer. | | **21 CFR Part 1304** (Controlled substance recordkeeping) | Ongoing | ✅ Compliant | CL-06 EN-21 | — | — | Implemented via `cl_controlled_substance_inventory` table: Schedule II-V tracking, transaction types (receive/dispense/adjust/count/return/destroy), witness requirement for Schedule II dispensing, lot/expiration tracking, audit trail. Route: `/cl/controlled-substances`. | | **21 USC § 827 / DEA ARCOS** (Automation of Reports) | Ongoing | ✅ Compliant | CL-06 EN-22 | — | — | Implemented via `cl_arcos_report_view` mapping inventory transactions to ARCOS categories (Receipt/Distribution/Return to Supplier/Destruction). CSV export with date range filter, permission-gated to `cl.inventory.admin`, audit-logged to `pf_audit_logs`. | | **Telehealth compliance** | Ongoing | 🟡 Partial | **[CL-24](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-24-telehealth-documentation-compliance.md)** (clinical compliance layer — consent, safety checklist, jurisdiction, connectivity; ✅ Phase 1 shipped 2026-05-28 — stage-1 surface-only rollout), **CL-55** (virtual group / multi-party telehealth, 📋 Specification), PM-13 (session lifecycle) | — | — | Basic modality in CL-04; **CL-24 Phase 1 shipped 2026-05-28** with `cl_telehealth_consents`, `cl_telehealth_sessions`, daily expiry cron, and four PHI-free domain events ([CL-24 integration contract](/architecture/integrations/telehealth-documentation-compliance-integration), [user guide](/cl/telehealth-documentation-user-guide), [admin guide](/cl/telehealth-documentation-admin-guide)). Currently in stage-1 (surface-only); stage-3 hard-block on consent gated on AZ ARS 13-3005 template sign-off. **CL-55** extends telehealth controls to virtual groups and multi-party encounters while PM-13 owns vendor/session lifecycle, durable join URLs, platform credentials, and BAA boundary. Interim (CL-55 only): manually document virtual group modality, contingency plan, and recording consent until CL-55 ships; do not store durable join URLs or recording URLs in CL tables. | | **AHCCCS Telehealth — CBHSG Chapter** (Oct 2025 update; consent, originating site, audio-only modifier FQ, jurisdiction) | Ongoing | 🟡 Partial | **[CL-24](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-24-telehealth-documentation-compliance.md)** (✅ Phase 1 shipped 2026-05-28 — per-patient consent with annual renewal, audio-only consent distinct from general consent, jurisdiction-mismatch banner, compliance dashboard), PM-13 (session lifecycle), PM-07 (modifier FQ from `clinical_note_finalized`) | Compliance / Clinical | — | **CL-24 Phase 1 shipped 2026-05-28** addresses the consent-capture and per-session evidence requirements of the AHCCCS CBHSG Oct 2025 telehealth chapter. Two consent types (`telehealth_general`, `audio_only`); annual renewal default 365 days (org-configurable via `telehealth_consent_validity_days`); audit-immutable revocation via trigger; consent-language version lineage. The **FQ modifier** is still emitted by PM-07 from CL-04's `clinical_note_finalized` event — CL-24 does not publish modifier data ([CL-PM-TELEHEALTH](/architecture/integrations/CL-PM-TELEHEALTH), [CL-24 integration contract](/architecture/integrations/telehealth-documentation-compliance-integration)). Stage-3 hard-block on consent gated on AHCCCS Policy 320-O reconciliation and AZ ARS 13-3005 template sign-off. | | **CCBHC v2 telehealth** (SAMHSA CCBHC Certification Criteria v2 — telehealth as a same-day-access modality with documented modality and connectivity per encounter) | Per grant cycle | 🟡 Partial | **[CL-24](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-24-telehealth-documentation-compliance.md)** (✅ Phase 1 shipped 2026-05-28 — per-session modality + connectivity-issue log + jurisdiction), CL-04, **CL-55** (virtual group / multi-party CCBHC services; 📋 Specification), CL-51-EN-01 (CCBHC-E quality measures) | CCBHC Lead / Quality | — | **CL-24 Phase 1 shipped 2026-05-28** records the per-session modality (`synchronous_video`, `synchronous_audio_only`, `asynchronous`, `remote_monitoring`), connectivity issues (JSONB append-only), and patient/provider state on `cl_telehealth_sessions`. Compliance dashboard surfaces audio-only ratio and connectivity-issue counts at the org level for CCBHC v2 evidence ([admin guide § compliance dashboard](/cl/telehealth-documentation-admin-guide#compliance-dashboard-interpretation)). CCBHC-E quality measures consumed from **CL-51-EN-01** (no recomputation in CL-24). **CL-55** extends to virtual group / multi-party CCBHC services. | | **Arizona recording notice / ARS 13-3005** | Per recording | 📋 Specification / Pending sign-off | **[CL-24](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-24-telehealth-documentation-compliance.md)** (1:1 telehealth consent language with versioned `consent_language_version` lineage; ✅ Phase 1 shipped 2026-05-28), **CL-55** (virtual group / multi-party recordings; 📋 Specification), CE-10 | Compliance / Privacy Officer | — | **CL-24** stores `consent_language_version` per consent row (audit-immutable lineage) and inherits the active AZ template from `pf_organizations.state = 'AZ'` orgs. Stage-3 rollout (consent hard-block) is gated on AZ template sign-off in `specs/cl/reviews/CL-24-COMPLIANCE-SIGNOFF.md` — see [admin guide § ARS 13-3005 sign-off](/cl/telehealth-documentation-admin-guide#ars-13-3005-language-template-sign-off). **CL-55** requires ARS 13-3005 recording-notice language and participant sign-off evidence for virtual group recordings, but final user-facing copy remains pending in `specs/cl/reviews/CL-55-COMPLIANCE-SIGNOFF.md`. Interim: do not enable CL-55 recording unless notice/sign-off evidence is manually documented and approved by compliance/privacy. | | **Information blocking (21st Century Cures)** | Ongoing | Escalated / In Progress | CL-16, CL-26, **CL-48** (C-CDA document generation and Direct messaging transmission to external providers; Part 2 SUD exclusion documented as §171.202 privacy exception; 📋 Specification) | Compliance / Health Information | 2026-06-30 | **Risk:** Potential civil penalties and CMS implications if blocking occurs. **Interim:** Manual approval workflow for patient data requests; designate a point-of-contact (e.g. ROI/Health Information); provide/redact data per request (paper, secure portal, or encrypted copy) until FHIR/portal are live. Document requests and fulfillment. **CL-48 planned:** C-CDA generation provides machine-readable document exchange via Direct messaging; Part 2 SUD data exclusion is a recognized privacy exception per 45 CFR §171.202. | | **Restraint/seclusion (42 CFR 482.13(e))** | Ongoing | ⏳ Not Started | CL-13 | — | — | **Interim:** Staff must document every restraint/seclusion per facility forms; retain records per state/facility policy (e.g. 5+ years). Report incidents per facility policy to designated contacts (e.g. Risk Management, State survey agency). Implement CL-13 Crisis Intervention Documentation when spec is implemented. | | **TCPA / FDCPA / PCI DSS — Patient Collections** (47 USC § 227 automated SMS; 15 USC § 1692 debt collection; PCI DSS SAQ-A) | Ongoing | 📋 Specification | **PM-45** — [PM-45 Patient Payment Plans & Collections](https://github.com/Encore-OS/encoreos/blob/development/specs/pm/specs/PM-45-patient-payment-plans-collections.md) | Revenue Cycle / Compliance | — | PM-45 specifies TCPA-compliant opt-out tracking (`pm_patient_communication_preferences`), FDCPA-required notice content per aging tier, and PCI compliance (no card data in PM-45 tables; tokenized payment method references only). **Pending:** FDCPA notice template content review by compliance officer before collections reminders are enabled. Compliance sign-off: [PM-45-COMPLIANCE-SIGNOFF.md](https://github.com/Encore-OS/encoreos/blob/development/specs/pm/reviews/PM-45-COMPLIANCE-SIGNOFF.md). | | **No Surprises Act / Good Faith Estimate** | January 1, 2022 | ✅ Complete | PM-20 | Revenue Cycle | 2026-02-28 | GFE generation from appointment type + CPT + fee schedule; 1/3-business-day delivery compliance; acknowledgment tracking; \$400+ dispute workflow. Implemented 2026-02-28. | | **HIPAA — PF PHI-bearing tables** | Ongoing | ✅ Compliant | PF-71 | — | — | `pf_patient_identities` stores MRN (HIPAA PHI per 45 CFR 164.514). Protected by org-scoped RLS (`pf_has_org_access`), admin-only DELETE (`pf_is_org_admin`), and audit columns (`created_by`/`updated_by`). Data minimization: only id + org\_id + mrn stored. | | **HIPAA Security Rule — Contingency Plan** (45 CFR 164.308(a)(7): backup, disaster recovery, emergency mode, testing) | Ongoing | ⏳ Not Started | **PF-90** — [PF-90 DR & BCP](https://github.com/Encore-OS/encoreos/blob/development/specs/pf/specs/PF-90-disaster-recovery-business-continuity.md) | Platform / Compliance | — | **Interim:** Rely on Supabase project backups and provider runbooks; document manual recovery steps. **Target:** PF-90 application-layer RTO/RPO policies, encrypted offsite artifacts, tenant-scoped restore workflows, quarterly drills, and compliance evidence packages. Integration: [PF-90 Integration](/architecture/integrations/disaster-recovery-business-continuity-integration). | \| **Multi-State Medicaid Compliance** (state-specific Medicaid rules for CL/PM) | Ongoing | 📋 Specification | **PF-96** — [PF-96 Medicaid State Compliance Configuration](https://github.com/Encore-OS/encoreos/blob/development/specs/pf/specs/PF-96-medicaid-state-compliance-configuration.md); **CL-55** consumer | Platform / Compliance | — | **Current state:** AHCCCS (Arizona Medicaid) is hardcoded as the only Medicaid profile. CL/PM behavior, UI labels, filing deadlines, assessment requirements, and billing rules assume Arizona. **Target:** PF-96 jurisdiction profile system with state-specific rule packs (clinical, billing, compliance) inheriting from a federal baseline. Org-level and site-level profile assignment enables multi-state operations. Arizona ships as the first fully-defined profile with zero regression. **CL-55 consumer requirement:** virtual group modifier suggestions must resolve through PF-96/PF-70; Arizona `95 + HQ` is a profile result, not a universal constant. | \| **CL-35 Population Health & Care Gap Management** (AHCCCS VBP; NCQA HEDIS AMM/IET; CMS MA STARS BH; SAMHSA CCBHC; CARF; HIPAA Privacy 45 CFR 164.514(b); 42 CFR Part 2) | Ongoing | ✅ Implemented | **CL-35** — [CL-35 Population Health](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-35-population-health-care-gap-management.md); FUH/FUM consumed from **CL-29-EN-65** | CL / Quality Team | — | **AHCCCS VBP:** population dashboards + `cl-vbp-export` CSV with required aggregate columns (org/measure/period/denominator/numerator/rate). **NCQA HEDIS:** AMM/IET implemented per MY 2026 thresholds (84/180/14/2 days), versioned JSON seed definitions under `supabase/seeds/cl_hedis_measure_definitions/`, calculator edge function `cl-hedis-calculator` UPSERTs into `cl_quality_measure_periods` and emits `cl_quality_measure_period_calculated`. FUH/FUM owned by CL-29-EN-65 (no duplicate logic). **CMS MA STARS:** separate MA\_STARS variants in seed files; Quality Measures page renders dedicated MA STARS tab. **SAMHSA CCBHC:** systematic care gap work list, clinician panels, supervisor view, proactive identification of overdue assessments / missing follow-ups / due screenings. **CARF:** aggregate population dashboard with risk-tier distribution and outcome trends for data-driven program evaluation. **HIPAA Privacy:** `applySmallCellSuppression` (n \< 5 → `<5`) on every aggregate hook + edge function; CSV export contains no chart\_id/patient\_id/mrn; logger sanitization verified statically. **42 CFR Part 2:** `calculateRiskScore` excludes the MOUD component and proportionally redistributes weight when `cl_check_sud_consent` is false; MOUD never exposed as a dashboard disaggregation dimension. **Tests:** 30 + integration tests under `tests/integration/cl/cl35-compliance-*.test.ts`. **User guide:** [`docs/cl/population-health-user-guide.md`](/cl/population-health-user-guide). **Admin guide:** [`docs/cl/population-health-admin-guide.md`](/cl/population-health-admin-guide). **Integration:** [CL-35](/architecture/integrations/population-health-integration), [CL–FA VBP](/architecture/integrations/CL-FA-VBP-QUALITY-DATA-PIPELINE), [CL–FW Events](/architecture/integrations/CL-FW-EVENT-AUTOMATION-INTEGRATION). | ### High-priority event consumers (patient safety / compliance) | Item | Responsible Spec | Status | Owner | Target date | Notes | | ------------------------------------- | ------------------------- | ------------------------------------------------------------------------------- | ---------------- | ----------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `cl_moud_monitoring_overdue` | CL-21 | ⏳ No consumer | Engineering / CL | 2026-05-31 | Implement reliable consumer/alerting (test cases, monitoring/SLAs); cron or event consumer; verify in REGULATORY\_COMPLIANCE\_TRACKER and ARCH-NOTES. | | `cl_moud_adherence_risk` | CL-21 | ⏳ No consumer | Engineering / CL | 2026-05-31 | Same as above; prioritize with cl\_moud\_monitoring\_overdue. | | `cl_assessment_completed` (PM-07) | CL-02, PM-07 | ⏳ Consumer not verified | PM / Billing | 2026-06-30 | Next priority after MOUD events; verify consumer for charge-capture; prevents silent charge-capture failures. | | `cl_group_session_documented` (PM-07) | CL-14, CL-14-EN-01, PM-07 | 🟡 CL-14-EN-01 adds new subscriber for encounter generation; PM-07 consumer TBD | PM / Billing | 2026-06-30 | CL-14-EN-01 subscribes to `cl_group_session_documented` for encounter generation; PM-07 consumer still needs verification. Event name corrected from `cl_group_session_completed` per CL-PM-GROUP-SESSIONS.md contract. | *** ## HR module — Human Resources Workforce Compliance **Status:** Tracked below. Detailed requirements, spec mapping, and authoritative references: [HR\_WORKFORCE\_COMPLIANCE\_TRACKING.md](/compliance/HR_WORKFORCE_COMPLIANCE_TRACKING). FCRA/TCPA gates: [FCRA\_TCPA\_COMPLIANCE\_TRACKING.md](/compliance/FCRA_TCPA_COMPLIANCE_TRACKING). | Regulation | Deadline | Status | Responsible Spec | Owner | Escalation date | Interim Procedures | | ----------------------------------------------------------------------------------------------------------------- | ----------------------------------- | ---------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----- | --------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **FLSA** (minimum wage, overtime, classification) | Ongoing | 🟡 Partial | HR-05, **HR-05-EN-10**, HR-07, **HR-29** | — | — | Time tracking and payroll in place; **HR-05-EN-10** adds employer-initiated correction audit trail (PF-04 `punch_correction` / `punch_insert` / `timesheet_admin_override`) satisfying 29 CFR §516 correction recordkeeping. **HR-29** provides FLSA classification engine (exempt/non-exempt per 29 CFR 541), duties test documentation, salary threshold monitoring, reclassification workflow, and DOL audit reports. Arizona minimum wage tracking needed in HR-07. | | **State privacy — precise geolocation retention** (CPRA §1798.121 sensitive PI; state comprehensive privacy laws) | Before prod-at-scale | ⏳ Not Started | HR-05 | — | — | **HR-05** clock-in captures precise geolocation (lat/lng) as sensitive PII. NFR-misc-5 declares 90-day retention but **no purge job exists** — coordinates retained indefinitely. **Interim:** RLS-restricted (employee/manager/HR-admin only); coordinates never written to audit logs ("location captured: yes/no" only). **Required before scale:** a data-lifecycle cron nulling `location_lat/lng` past the org-configured window (default 90 days). Surfaced by the HR-05 #1443 compliance review. | | **Arizona Wage Payment Act** (ARS 23-353 final pay) | Ongoing | 🟡 Partial | **HR-30** | — | — | **HR-30** specifies final-paycheck automation and deadline tracking per ARS 23-353 (7 working days involuntary; next payday or 3 working days after demand for voluntary). | | **Arizona Earned Paid Sick Time** (ARS 23-371) | Ongoing | ⏳ Not Started | Pending spec | — | — | **Interim:** Track accrual manually; implement dedicated spec/workflow for ARS 23-371 accrual and usage tracking. | | **FMLA** (family/medical leave) | Ongoing | ⏳ Not Started | HR-06 | — | — | **Interim:** Track FMLA requests manually; maintain eligibility records (12 months / 1,250 hours). Implement HR-06 leave management for automated eligibility and tracking. | | **ERISA / COBRA** (benefits, continuation coverage) | Ongoing | ⏳ Not Started | HR-11 | — | — | **Interim:** Benefits administered externally; COBRA notices managed by TPA. Implement HR-11 benefits module for tracking. | | **ACA employer mandate** (1095-C, FTE tracking) | Annual (Jan 31) | ⏳ Not Started | HR-11 | — | — | **Interim:** FTE count managed via payroll; 1095-C prepared by benefits administrator. | | **I-9 / E-Verify** (employment eligibility) | Within 3 days of hire | 🟡 Partial | HR-01, HR-03, HR-26 | — | — | **Interim:** HR-03 EN-3 implements I-9/W-4 forms in onboarding; E-Verify integration pending (**HR-26**). Manual E-Verify submission per Arizona mandate (ARS 23-214) until integration live. | | **FCRA** (background checks) | Per-hire | 🟡 Partial | HR-09, HR-09-P5 | — | — | Detailed tracking in FCRA\_TCPA\_COMPLIANCE\_TRACKING.md. Checkr integration designed; sign-off gates pending. | | **TCPA** (SMS consent) | Per-message | 🟡 Partial | HR-09-P5 | — | — | Detailed tracking in FCRA\_TCPA\_COMPLIANCE\_TRACKING.md. Consent framework designed; sign-off gates pending. | | **DOL / workforce policy communication** (employee handbook distribution) | Ongoing | 📋 Spec complete | **HR-43**, GR-01 | — | — | **HR-43** handbook hub, new-hire bundles, compliance dashboard; GR-01 system of record for acknowledgments. **Interim (until HR-43 implemented):** HR will maintain signed/manual acknowledgment log with electronic export and backup. **PII/PHI handling requirements:** (1) Minimum required fields: employee full name, employee ID, timestamp, acknowledgment method, signature/hash; (2) Role-restricted access: HR-only write, read access limited to HR and Compliance roles, Admins for emergency/legal only; (3) Retention boundary and storage: encrypted-at-rest location, retention period and deletion policy documented; (4) Export constraints: PII-safe export format, redaction or tokenization where applicable, audit-safe logging; (5) Verification and audit: periodic export cadence defined, verification responsibility assigned, required audit checklist entry. GR-01 remains system of record for acknowledgments; interim owner: HR; HR-43 rollout dependency tracked. | | **EEOC / Title VII / ADA / GINA** (anti-discrimination) | Ongoing | 📋 Policy | HR-01, HR-14, [HR-14-ENHANCEMENTS](https://github.com/Encore-OS/encoreos/blob/development/specs/hr/specs/HR-14-ENHANCEMENTS.md) (HR-14 EN-1), [HR-09-ENHANCEMENTS](https://github.com/Encore-OS/encoreos/blob/development/specs/hr/specs/HR-09-ENHANCEMENTS.md) (HR-09 EN-1) | — | — | Organizational policy; hiring workflows in HR-01. **HR-14 EN-1** (when implemented): ADA interactive process, accommodations, and HIPAA-aligned medical file handling per spec. **HR-09 EN-1:** structured interview scorecards for documented, consistent selection criteria (Uniform Guidelines). EEO-1 data export for applicable employers. | | **HIPAA Privacy Rule — workforce training documentation** (45 CFR 164.530(b)) | Ongoing | ⏳ Not Started | **GR-01**, **HR-43**, HR-03 | — | — | **Interim:** Paper sign-off or LMS exports. **Target:** [GR-01](https://github.com/Encore-OS/encoreos/blob/development/specs/gr/specs/GR-01-policy-management.md) acknowledgments + [HR-43](https://github.com/Encore-OS/encoreos/blob/development/specs/hr/specs/HR-43-employee-handbook-policy-distribution.md) handbook bundles/onboarding assign (HR-31 consolidated into GR-01). See [HR\_WORKFORCE\_COMPLIANCE\_TRACKING.md](/compliance/HR_WORKFORCE_COMPLIANCE_TRACKING) §3.3. | | **OSHA / ADOSH** (workplace safety) | Ongoing | ⏳ Not Started | HR-01 (incidents), **GR-01** / **HR-43** (policy acknowledgments) | — | — | **Interim:** Manual OSHA 300 log; safety programs per ADOSH requirements. Implement incident tracking in HR-01. **GR-01** tracks acknowledgments; **HR-43** adds handbook bundles and HR compliance reporting (HR-31 consolidated into GR-01, 2026-03-26). | | **EEOC / Title VII / ADA / GINA** (anti-discrimination) | Ongoing | 📋 Policy | HR-01, HR-42, HR-14, [HR-14-ENHANCEMENTS](https://github.com/Encore-OS/encoreos/blob/development/specs/hr/specs/HR-14-ENHANCEMENTS.md) (HR-14 EN-1), [HR-09-ENHANCEMENTS](https://github.com/Encore-OS/encoreos/blob/development/specs/hr/specs/HR-09-ENHANCEMENTS.md) (HR-09 EN-1) | — | — | Organizational policy; hiring workflows in HR-01. **HR-42:** workforce EEO-1 Component 1 scheduled export (distinct from HR-09 applicant/hiring EEO). **HR-14 EN-1** (when implemented): ADA interactive process, accommodations, and HIPAA-aligned medical file handling per spec. **HR-09 EN-1:** structured interview scorecards for documented, consistent selection criteria (Uniform Guidelines). | | **HIPAA Privacy Rule — workforce training documentation** (45 CFR 164.530(b)) | Ongoing | ⏳ Not Started | **HR-31**, HR-03 | — | — | **Interim:** Paper sign-off or LMS exports. **Target:** [HR-31](https://github.com/Encore-OS/encoreos/blob/development/specs/hr/specs/HR-31-employee-document-policy-acknowledgment.md) electronic acknowledgments, versioning, audit exports. See [HR\_WORKFORCE\_COMPLIANCE\_TRACKING.md](/compliance/HR_WORKFORCE_COMPLIANCE_TRACKING) §3.3. | | **OSHA / ADOSH** (workplace safety) | Ongoing | ⏳ Not Started | HR-01 (incidents), **HR-31** (policy acknowledgments) | — | — | **Interim:** Manual OSHA 300 log; safety programs per ADOSH requirements. Implement incident tracking in HR-01. **HR-31** provides acknowledgment evidence for safety-related HR policies (complements operational programs). | | **Credentialing** (state licensure, NPI, payer, AZ fingerprint clearance) | Ongoing | 🟡 Partial | HR-02, **HR-28** | — | — | Credential tracking in HR-02; **AZ fingerprint clearance (ARS 36-425.03):** [HR-28](https://github.com/Encore-OS/encoreos/blob/development/specs/hr/specs/HR-28-fingerprint-clearance-card-management.md). Payer credentialing and other gaps remain tracked under HR-02. | | **Workers' compensation** (ARS 23-961) | Ongoing | 📋 External | HR-11 | — | — | Insurance carrier manages claims; system tracks incident data. | | **IRS worker classification / 1099-NEC** (independent contractors) | Ongoing (tax year reporting Jan 31) | ⏳ Not Started | HR-34, HR-PAY-04 | — | — | **Interim:** Maintain IC agreements, factor tests, and W-9s outside the system; finance aggregates pay for 1099-NEC per existing FA-10/HR processes. **Target:** HR-34 for contractor records, classification documentation, and approved time → HR-PAY-04 for 1099-NEC inputs. See [HR-34 spec](https://github.com/Encore-OS/encoreos/blob/development/specs/hr/specs/HR-34-contractor-contingent-workforce-management.md). | *** ## RH module — Recovery Housing Compliance **Status:** Tracked below. Detailed requirements, spec mapping, and authoritative references: [RH\_RECOVERY\_HOUSING\_COMPLIANCE\_TRACKING.md](/compliance/RH_RECOVERY_HOUSING_COMPLIANCE_TRACKING). | Regulation | Deadline | Status | Responsible Spec | Owner | Escalation date | Interim Procedures | | ---------------------------------------------------------------------------- | ------------------------------------------ | ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----- | --------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Arizona DHS sober living home licensure** (ARS 36-2062, AAC Title 9 Ch 12) | Before operation | 🟡 Partial | RH-06, RH-01, **RH-UX-10** | — | — | License application and renewal tracked in RH-06; inspection tracking partial. **RH-UX-10** adds auditable intake provenance (`custom_fields.admission_source`) for resident-record traceability (DHS-06). **Distinct from BHRF below:** sober living = non-clinical recovery housing. | | **Arizona BHRF licensure** (A.A.C. R9-10-701 to R9-10-722, adult subclass) | Before operation / per AZDHS renewal cycle | ⏳ Not Started | **CL-68** (clinical residential lifecycle), **GR-27** (facility licensure, staffing minimums, incident timeframes, retention), **PM-74** (per-diem billing & BHRF prior authorization) | — | — | BHRF is a **licensed clinical residential level of care** — distinct from recovery housing. Clinical lifecycle (15-day comprehensive assessment, LOC at admission, treatment-plan cadence, restraint linkage, discharge) reuses CL-02/03/04/13-EN-01/29 via CL-68. Licensure/staffing(awake/on-call/BHP/RN/clinical-director≥10)/incident timeframes (death 1 working day, self-injury 2 working days, abuse immediate per ARS 46-454/13-3620, sentinel 6 hours, restraint-injury 24 hours)/retention (adult 6 years, A.R.S. § 12-2297) in GR-27. Per-diem (H0018/H0019/T2048, POS 56) + AHCCCS 5-day urgent exemption + continued-stay PA in PM-74. Cross-core lifecycle: [CL-GR-PM-BHRF-EPISODE-LIFECYCLE](https://github.com/Encore-OS/encoreos/blob/development/docs/architecture/integrations/CL-GR-PM-BHRF-EPISODE-LIFECYCLE.md). State-variable values via PF-96. **Interim:** manual licensure/clinical-timeliness/per-diem tracking until specs implemented. | | **NARR National Standard 3.0** (Levels I–IV) | Ongoing | ⏳ Not Started | RH-01, RH-05, **RH-11** | — | — | **Interim:** Self-classify recovery homes per NARR levels; document governance structure. AzRHA certification recommended. Spec: [RH-11](https://github.com/Encore-OS/encoreos/blob/development/specs/rh/specs/RH-11-narr-level-azrha-certification.md). | | **Fair Housing Act** (disability, group homes) | Ongoing | 📋 Policy | RH-01, RH-02, **RH-UX-10** | — | — | Organizational policy; system must not discriminate in waitlist/placement. **RH-UX-10:** admission prefill must not apply discriminatory defaults; all prefilled fields editable (spec: [RH-UX-10-COMPLIANCE-SIGNOFF.md](https://github.com/Encore-OS/encoreos/blob/development/specs/reviews/RH-UX-10-COMPLIANCE-SIGNOFF.md)). Reasonable accommodation tracking needed. | | **Fire and life safety** (local codes, NFPA) | Ongoing | ⏳ Not Started | RH-01, RH-06, **RH-10** | — | — | **Interim:** Manual fire inspection tracking per property; ensure posted evacuation plans and working detectors. Spec: [RH-10](https://github.com/Encore-OS/encoreos/blob/development/specs/rh/specs/RH-10-fire-life-safety-compliance.md). | | **Arizona Title 36** (patient rights, grievances) | Ongoing | 📋 Policy | **RH-09**, RH-02, **RH-UX-10** | — | — | Resident rights via residency agreements; grievance workflow: [RH-09](https://github.com/Encore-OS/encoreos/blob/development/specs/rh/specs/RH-09-resident-grievance-management.md). **RH-UX-10:** prefill does not bypass RH-UX-00 documentation/rights attestations. | | **HIPAA / 42 CFR Part 2** (resident SUD data) | Ongoing | 🟡 Partial | CL-11, RH-04, **RH-04-EN-4**, **RH-UX-10** | — | — | CL-11 consent management covers Part 2; UDS access controls: [RH-04-EN-4](https://github.com/Encore-OS/encoreos/blob/development/specs/rh/specs/RH-04-EN-4-uds-part2-access-controls.md). **RH-UX-10:** v1 excludes SUD clinical fields from cross-core prefill; CE-65 insurance permission gates. Sign-off: [RH-UX-10-COMPLIANCE-SIGNOFF.md](https://github.com/Encore-OS/encoreos/blob/development/specs/reviews/RH-UX-10-COMPLIANCE-SIGNOFF.md). | | **Zoning compliance** (per property) | Before operation | ⏳ Not Started | RH-01 | — | — | **Interim:** Zoning attestation provided at DHS licensing; track per property. | *** ## FA module — Finance & Accounting compliance **Status:** Tracked below. Detailed deadlines, spec mapping, and authoritative references: [FA\_FINANCIAL\_COMPLIANCE\_TRACKING.md](/compliance/FA_FINANCIAL_COMPLIANCE_TRACKING). | Regulation | Deadline | Status | Responsible Spec | Owner | Escalation date | Interim Procedures | | --------------------------------------------------------- | ------------------------------------------- | --------------- | -------------------- | ----- | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **IRS 1099-MISC/NEC** (vendor payments) | Jan 31 annually | 🟡 Partial | FA-10 (85%) | — | — | Generate forms via FA-10; file paper or use IRS FIRE/IRIS when e-file enhancement is implemented. Ensure W-9 collection per FA-03. | | **IRS W-2** (employee wages) | Jan 31 annually | 🟡 Partial | FA-10 + HR-07 | — | — | Generate W-2 via FA-10 from HR-07 payroll data; distribute to employees by Jan 31. File with SSA per current process until e-file live. | | **IRS Form 941** (quarterly payroll tax) | Quarterly (last day of month after quarter) | 🟡 Partial | FA-10 | — | — | Prepare 941 from FA-10/HR-07 data; file and pay by deadline. Use IRS e-file when enhancement implemented. | | **IRS Form 940** (annual FUTA) | Jan 31 annually | 🟡 Partial | FA-10 | — | — | Prepare 940 from payroll data; file by Jan 31. | | **FASB ASC 958** (nonprofit financial statements) | Ongoing (annual audit) | ✅ Compliant | FA-23 | — | — | Use FA-23 Statement of Financial Position, Statement of Activities, Statement of Functional Expenses; FA-07 for trial balance and fund-based reporting. | | **GAAP revenue timing / multi-period & deferred revenue** | Ongoing (month-close, audit) | ⏳ Not Started | **FA-18** | — | — | **Interim:** Manual recognition schedules and journal entries; reconcile deferred balances outside the module. **Target:** [FA-18](https://github.com/Encore-OS/encoreos/blob/development/specs/fa/specs/FA-18-revenue-recognition-advanced.md) straight-line schedules, period recognition runs, GL linkage, and audit trail. See [FA\_FINANCIAL\_COMPLIANCE\_TRACKING.md](/compliance/FA_FINANCIAL_COMPLIANCE_TRACKING) §2. | | **OMB Uniform Guidance (2 CFR 200)** | Ongoing (grant lifecycle) | ⏳ Not Started | FA-13 (spec only) | — | — | **Interim:** Track grant budgets and expenditures in spreadsheets or external tools; document allowable costs and procurement per 2 CFR 200. Implement FA-13 (Project Accounting & Grant Tracking) for system support. | | **Single Audit (2 CFR 200 Subpart F)** | Annual (if federal awards > \$750K) | ⏳ Not Started | No spec | — | — | **Interim:** Prepare Schedule of Expenditures of Federal Awards (SEFA) and support single audit via external auditor and manual data export until dedicated spec is implemented. | | **Federal Financial Report (FFR/SF-425)** | 90 days after budget period; 120 days final | ⏳ Not Started | FA-13 (data support) | — | — | **Interim:** Prepare from project/GL data; submit via PMS. Implement FA-13 to improve data availability. | | **Financial internal controls** (SOX-analogous) | Ongoing | ⏳ Not Started | FA-25 (spec only) | — | — | **Interim:** Enforce segregation of duties via role assignments; retain GL audit trail (FA-02 append-only ledger). Implement FA-25 audit log viewer, segregation-of-duties report, and export-to-auditor when spec is implemented. | | **IRS Form 990 data preparation** | Annual (May 15 for calendar-year) | 📋 Out of scope | FA-10 (deferred) | — | — | Tax return preparation (990) handled by external CPA. Functional expense categorization (Program/G\&A/Fundraising) supported in FA-23 for 990 reporting input. | | **State nonprofit (Arizona)** | Ongoing | 📋 N/A | No spec | — | — | **Arizona Corporation Commission annual report:** File by formation anniversary date (ARS 10-11622). Include directors/officers, principal office, activities, certificate of disclosure, statement that tax returns have been filed. Extension up to 6 months available. Use org profile/board data for content; no system automation. See [azcc.gov](https://azcc.gov/corporations/forms) and [ARS 10-11622](https://www.azleg.gov/ars/10/11622.htm). | *** ## GR module — Governance & Risk Compliance **Status:** Tracked below. Detailed requirements, spec mapping, and authoritative references: [GR\_GOVERNANCE\_COMPLIANCE\_TRACKING.md](/compliance/GR_GOVERNANCE_COMPLIANCE_TRACKING). | Regulation | Deadline | Status | Responsible Spec | Owner | Escalation date | Interim Procedures | | -------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------- | --------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **CARF Behavioral Health** accreditation | Survey cycle | ⏳ Not Started | GR-08, CL-10, CL-15, **CL-15-P2-3** (Phase 3.3) | — | — | **Interim:** Manual survey preparation; policy library and QIP outside system. Implement GR-08 for survey readiness. **CL-15 Phase 3.3** adds CARF survey readiness dashboard with pre-survey checklist and readiness scoring (consumes GR-08 data via platform layer). | | **Joint Commission CAMBHC** accreditation | Survey cycle | ⏳ Not Started | GR-08, CL-07, CL-15 | — | — | **Interim:** Manual NPSG compliance tracking; tracer preparation outside system. | | **NCQA HEDIS** behavioral health measures | Annual | ⏳ Not Started | CL-15, CL-10, **CL-15-P2-3** (Phase 3.2) | — | — | **Interim:** Manual measure calculation; implement CL-15 reporting for automated HEDIS calculation. **CL-15 Phase 3.2** adds automated QM calculation from CL-10 outcomes for HEDIS/CARF measures (FUH, FUM, IET, AMM). Part 2 consent gating required for IET/SUD measures per compliance sign-off. | | **SAMHSA SUPRT-A/C + NOMs** (Unified Performance Reporting Tools; replaces GPRA effective 2025-10-01; CMHS NOMs 10-domain framework) | Per grant (intake / 6-month / annual / discharge) | 📋 Specification (compliance\_reviewed 2026-05-28; approved with conditions) | **CL-69** (SUPRT-A/C + NOMs capture spine, instruments via `CL-47` library, profile-driven via `PF-96`; emits `clinical.outcome_assessment.recorded`); **CL-10** (generic outcomes substrate — extended, not replaced) | Quality Team / Clinical | — | **CL-69 status:** compliance\_reviewed 2026-05-28. **Conditions before Phase 1:** (1) grant manager validates `CL-47` SUPRT-A/C seed definitions against the SAMHSA published codebook; (2) clinical lead reconciles 2 missing NOMs domains in spec FR-6 (8 of 10 named) against the official SAMHSA NOMs PDF; (3) clinical compliance extracts AHCCCS AMPM 320-O cadence verbatim and verifies PF-96 AZ profile values; (4) CL-63 DS4P labeling must be active before CL-69 Phase 1 production PHI deployment (high-severity dependency). Sign-off: [CL-69-COMPLIANCE-SIGNOFF.md](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/reviews/CL-69-COMPLIANCE-SIGNOFF.md). **Interim:** Manual outcome data collection and reporting per grant requirements until CL-69 implemented. | | **SAMHSA SPARS / PPR / CCBHC-E grant reporting** (Performance Accountability and Reporting System; CCBHC-Expansion grant terms; CAA 2024 §209 expansion) | Per grant reporting cadence (SPARS rolling; PPR semi-annual) | 📋 Specification (compliance\_reviewed 2026-05-28; approved with conditions) | **GR-28** — [GR-28 SAMHSA Grant Performance Reporting](https://github.com/Encore-OS/encoreos/blob/development/specs/gr/specs/GR-28-samhsa-grant-performance-reporting-spars.md); upstream from **CL-69** (SUPRT capture) and **CL-51-EN-01** (CCBHC-E quality-measure computation) | Grant Manager / Compliance | — | **GR-28 status:** compliance\_reviewed 2026-05-28. GR-28 packages SPARS submissions (CSV batch-upload v1, **no direct API**), assembles structured PPR drafts, and surfaces per-grant follow-up-rate dashboard with SPARS-submission-risk signal (≥80% threshold sourced from PF-96, not hardcoded). CCBHC-E quality-measure values consumed from `CL-51-EN-01` (no recomputation in GR). Per-receiving-entity 42 CFR Part 2 consent enforced server-side before SPARS package generation (FR-8); non-overridable `consent_missing` error per row. **Conditions before Phase 1:** (1) document HIPAA disclosure pathway for mandatory grant reporting in `docs/architecture/integrations/GR-28-SPARS-REPORTING-INTEGRATION.md` — likely **§164.512(a) "required by law"** rather than §164.508 authorization; (2) pin SAMHSA SPARS CSV column list (from canonical SAMHSA codebook PDF) into PF-96 seed before implementation. Sign-off: [GR-28-COMPLIANCE-SIGNOFF.md](https://github.com/Encore-OS/encoreos/blob/development/specs/gr/reviews/GR-28-COMPLIANCE-SIGNOFF.md). | | **Arizona mandatory reporting** (ARS 46-454, ARS 13-3620) | Immediately upon knowledge | 📋 Specification | GR-09 (intake), GR-14 (automation), GR-08, CL-13 | — | — | **Interim:** Staff trained on mandatory reporting obligations; manual reporting to APS/DCS/law enforcement. GR-09 provides incident intake; GR-14 automates obligation creation and deadline tracking. | | **AHCCCS critical incident reporting** (AMPM 1620-O) | Per policy timeline (verbal: 8 business hrs, written: 40 business hrs) | 📋 Specification | GR-09 (intake), GR-14 (automation) | — | — | **Interim:** Manual AHCCCS critical incident reporting per policy. GR-09 captures incident; GR-14 generates AHCCCS report package with business-day deadline calculator. | | **Nonprofit governance** (SOX whistleblower/document retention, COI) | Ongoing | ⏳ Not Started | GR-03 | — | — | **Interim:** Board maintains policies manually; whistleblower and COI policies in place per IRS best practice. | *** ## IT module — Information Security Compliance **Status:** Tracked below. Detailed requirements, spec mapping, and authoritative references: [IT\_SECURITY\_COMPLIANCE\_TRACKING.md](/compliance/IT_SECURITY_COMPLIANCE_TRACKING). | Regulation | Deadline | Status | Responsible Spec | Owner | Escalation date | Interim Procedures | | -------------------------------------------------- | ------------------------- | -------------------- | --------------------------------- | ----- | --------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **HIPAA Security Rule** (45 CFR 164 Subpart C) | Ongoing | 🟡 Partial | IT-05, PF-30, PF-01, PF-40 | — | — | Auth (PF-01), RBAC (PF-30), audit logging (PF-40), TLS in place. Risk analysis, training, incident response, contingency planning needed. | | **HITECH Act** (breach notification) | Within 60 days of breach | ⏳ Not Started | IT-05, PF-44 | — | — | **Interim:** Manual breach assessment and notification. Implement IT-05 breach response workflow. | | **NIST CSF 2.0** (cybersecurity framework) | Best practice | ⏳ Not Started | IT-05 | — | — | **Interim:** Align security program with NIST CSF functions; formal maturity assessment needed. | | **CIS Controls v8** (critical security controls) | Best practice | 🟡 Partial | IT-05 | — | — | Some controls in place (access management, data protection); formal CIS assessment needed. | | **Arizona ARS 18-552** (data breach notification) | 45 days from breach | 📋 HIPAA exemption | IT-05 | — | — | HIPAA-covered entities following HIPAA breach rules are exempt; ensure HIPAA compliance. | | **SOC 2 Type II** | If required by customers | ⏳ Not Started | IT-05 | — | — | **Interim:** Evaluate need based on payer/customer requirements. Supabase has SOC 2; Encore OS readiness pending. | | **PCI DSS** (if payment processing) | Ongoing | 📋 Assessment needed | IT-05 | — | — | **Interim:** If using Stripe tokenization, SAQ-A scope; assess and document. | | **OAuth/API credentials at rest** (HIPAA §164.312) | Before production go-live | ⏳ Deferred (E-2) | IT-05, FA-30, CE-07, HR-09, CE-03 | — | — | **Tracking (Security Audit F4):** `fa_ramp_connections` (access\_token, refresh\_token), `ce_email_accounts` (OAuth tokens), `hr_job_board_integrations` (API keys), `ce_ringcentral_subscriptions` (webhook tokens) currently store credentials as plaintext TEXT. Supabase Vault is installed; migration plan exists but implementation deferred. **Interim:** Restrict access via RLS; no new plaintext credential columns. Target: migrate to `vault.create_secret()` and store only vault secret IDs in tables. | *** ## PF module — Platform Foundation Compliance **Status:** PF implements HIPAA technical safeguards (auth, RBAC, audit logging, encryption) tracked under the IT section above. Accessibility compliance tracked below. | Regulation | Deadline | Status | Responsible Spec | Owner | Escalation date | Interim Procedures | | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------- | --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **WCAG 2.1 AA / Section 504** (web accessibility, HHS rule) | May 11, 2026 (15+ employees) | ⏳ In Progress | **PF-93** (platform a11y infra, axe CI); CL-26, EN-64 (multi-language portal) | Accessibility Lead | 2026-02-27 | **Interim:** Follow WCAG 2.1 AA guidelines in new development; audit existing UI. HHS rule applies to all organizations receiving federal funding (Medicare/Medicaid). Phased: 15+ employees by May 2026; \<15 by May 2027.
**Actions:** Assign leadership escalation; run rapid WCAG 2.1 AA gap analysis; prioritize keyboard, screen-reader, form-labels, and contrast fixes; engage accessibility consultant.
**Cadence:** Weekly status updates until May 11, 2026 deadline. | | **HIPAA technical safeguards** (§164.312) | Ongoing | 🟡 Partial | PF-01, PF-30, PF-40, **PF-91** | — | — | Auth (PF-01), RBAC (PF-30), audit logging (PF-40), TLS in place. **PF-91** (📋 Specification): continuous compliance dashboard, PHI column classification, RLS/audit drift detection, evidence packages — see [PF-91](https://github.com/Encore-OS/encoreos/blob/development/specs/pf/specs/PF-91-compliance-automation-regulatory-dashboard.md). See IT section for full HIPAA Security Rule tracking. | | **HIPAA audit controls & activity review** (§164.312(b), §164.308(a)(1)(ii)(D)) | Ongoing | ⏳ Not Started | **PF-91**, PF-04, PF-40 | — | — | **Interim:** RLS and audit coverage proven at CI; manual evidence assembly for surveys. **Target:** PF-91 automates control status, access patterns, and downloadable audit evidence (ZIP/PDF/CSV) per org. [PF-91 spec](https://github.com/Encore-OS/encoreos/blob/development/specs/pf/specs/PF-91-compliance-automation-regulatory-dashboard.md), [integration doc](/architecture/integrations/compliance-automation-regulatory-dashboard-integration). | | **42 CFR Part 2 — platform monitoring & evidence** | Ongoing | ⏳ Not Started | CL-11 (consent), **PF-91** (dashboard/enforcement layer) | — | — | CL-11 implements consent capture and disclosure logging (✅). PF-91 adds SUD-tagged column classification, drift alerts, and audit packages; does not replace CL-11 storage. | | **MFA (multi-factor authentication)** (§164.312(d), NIST SP 800-66r2) | Before production go-live | ⏳ Deferred (W-3) | PF | — | — | **Tracking (Security Audit F8):** MFA not yet enforced on Supabase project. Enable TOTP in Supabase Dashboard: Authentication → Providers → enable MFA; require for platform\_admin and org\_admin roles where possible. Document in IT\_SECURITY\_COMPLIANCE\_TRACKING.md when enabled. | | **ONC Certification** (45 CFR Part 170) | Per ONC timeline | 🟡 Partial | PF, CL-16, PM-01 | — | — | Tracked in ONC\_CERTIFICATION\_ROADMAP.md. | | **Data retention** (per data type) | Ongoing | ⏳ Not Started | PF | — | — | **Interim:** Retention policies documented per module; automated enforcement needed. | | **HIPAA §164.312(a)/(b), §164.502(b), §164.514; 42 CFR Part 2 §§2.12–2.35; HITECH §13401 — Embedded Analytics** (PHI-adjacent marts; external signed-embed; SUD-aggregate) | Before external-embed go-live (no regulatory due date) | ⏳ Not Started (spec `pipeline_status: reviewed`; compliance sign-off DRAFT) | **PF-123** — [Embedded Analytics Platform](https://github.com/Encore-OS/encoreos/blob/development/specs/pf/specs/PF-123-embedded-analytics-platform.md) | Platform / Compliance Officer | — | Sign-off DRAFT at [PF-123-COMPLIANCE-SIGNOFF.md](https://github.com/Encore-OS/encoreos/blob/development/specs/pf/reviews/PF-123-COMPLIANCE-SIGNOFF.md) — 14 reviewer items unsigned; must clear before `pipeline_status` → `compliance_reviewed` and before external-embed go-live. **Open conditions:** (1) AC-010 SUD-embed gate verified server-side via `@/platform/clinical` consent seam; (2) complementary suppression verified (NFR-priv-1 differencing-recovery test); (3) PF-96 `min_cell_size` federal baseline n=11 (HIPAA Safe Harbor + SAMHSA NOMs); (4) `applySmallCellSuppression()` parameterized to PF-96 threshold; (5) per-recipient Part 2 consent seam confirmed; (6) `pf_analytics_query_log` audit on all 5 paths. **MotherDuck cloud tier is a hard-gated Phase-2 target — requires a signed HIPAA BAA + 42 CFR Part 2 posture review before any PHI-derived data leaves the perimeter** (§164.502(e)). The BAA-free in-perimeter `postgres_mv` tier ships first. | | **HIPAA §164.312(a)/(b), §164.502(b); 42 CFR Part 2 §§2.12–2.35; HITECH §13401 — Agentic Workspace (cowork)** (multi-participant visibility re-scope over PHI-bearing `pf_ai_conversations`; AI agents as first-class participants under scoped principals) | Before the cowork RLS re-scope / agent participation reaches production (no regulatory due date) | 🟡 Partial — Phase 1A schema + RLS authored; spec `pipeline_status: tasks_generated`; compliance sign-off **CONDITIONAL**, owner countersigned 2026-06-25 | **PF-124** — [Agentic Workspace](https://github.com/Encore-OS/encoreos/blob/development/specs/pf/specs/PF-124-agentic-workspace.md) | Platform / Compliance Officer | — | CONDITIONAL sign-off at [PF-124-COMPLIANCE-SIGNOFF.md](https://github.com/Encore-OS/encoreos/blob/development/specs/pf/reviews/PF-124-COMPLIANCE-SIGNOFF.md). Phase 1A ships DDL + RLS for `pf_agents`/`pf_threads`/`pf_thread_agents`, re-scopes `pf_ai_conversations` RLS, and seals shared visibility behind a **temporary `visibility='private'` CHECK** + migration drift-guard. **5 blocking go-live conditions** (verified before production, not before implementation): (1) PF-30-EN-01 `pf_agent_can(p_org_id, p_agent_principal_id, p_scope)` principal/delegation contract callable before Phase 1B agent-participation RPCs; (2) **PF-126 pre-disclosure consent gate live before any SUD-derived `pf_ai_conversations` row flips `private`→`shared_thread`/`shared_org`** (Part 2); (3) service-role denial test (AC-11) in the regression suite; (4) migration drift-guard `RAISE EXCEPTION` test (AC-12); (5) audit-coverage exactly-once test on thread-create / agent-join / agent-leave (AC-10, Phase 1B). Agents act under scoped `AgentPrincipal` — never `service_role`, never `auth.uid()`; delegated-and-attributed (every agent message records the agent principal + authorizing human, bounded to ≤ that human's permissions). Phase gates tracked in `specs/pf/plans/PF-124-agentic-workspace-PLAN.md`; epic #1779. | *** ## CE module — Community Engagement Communications Compliance **Status:** Tracked below. Detailed requirements: [CE\_COMMUNICATIONS\_COMPLIANCE\_TRACKING.md](/compliance/CE_COMMUNICATIONS_COMPLIANCE_TRACKING). | Regulation | Deadline | Status | Responsible Spec | Owner | Escalation date | Interim Procedures | | -------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------- | ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------- | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **CAN-SPAM Act** (commercial email) | Ongoing | ⏳ Not Started | CE-09, **CE-16** | — | — | **Interim:** Manual compliance with CAN-SPAM in email campaigns. CE-09 implements headers, subject lines, ad identification, physical address, unsubscribe link. **CE-16** centralizes email suppression registry (`ce_suppressions`) and consent evidence for opt-out list management (CS-05, CS-06). | | **TCPA** (SMS messaging) | Per-message | ⏳ Not Started | CE-08, **CE-16** | — | — | **Interim:** No automated SMS until consent framework implemented. CE-08 owns consent collection UI/flow, business hours, sender ID, 10DLC. **CE-16** stores consent evidence (`ce_consent_evidence`), manages suppression registry, and enforces pre-send validation (TC-01–TC-04). | | **Arizona call recording** (ARS 13-3005, HB 2038) | Per-call | ⏳ Not Started | CE-10 | — | — | **Interim:** Play recording notice at call start; obtain consent for interstate calls. | | **FCC Do Not Call** (telemarketing) | Per-campaign | ⏳ Not Started | CE-10, **CE-16** | — | — | **Interim:** Manual DNC list check before outbound marketing calls. **CE-16** owns DNC registry import (`ce-import-dnc-registry` edge function) and internal DNC list via `ce_suppressions` (FCC-01, FCC-02). CE-10 consumes suppression check before outbound calls. | | **Federal Anti-Kickback Statute (AKS) / Stark Law (referral relationships)** | Ongoing | ⏳ Not Started | CE-53 | Compliance / Legal | — | **Interim:** Referral influence analytics remain informational only; no compensation-based referral recommendations or inducement workflows until legal review and controls are implemented. | | **HIPAA Privacy/Security + 42 CFR Part 2 (contact document upload and AI extraction)** | Ongoing (Phase 2 go-live gate) | 📋 Specification | **CE-59** — [CE-59 Contact Document Management & AI Extraction](https://github.com/Encore-OS/encoreos/blob/development/specs/ce/specs/CE-59-contact-document-management-ai-extraction.md) | CE / Compliance / Security | — | CE-59 adds contact-level document storage with potential PHI/SUD content. Phase 2 AI extraction remains blocked until redaction/no-disclosure controls and compliance sign-off are complete. Sign-off artifact path: `specs/ce/reviews/CE-59-COMPLIANCE-SIGNOFF.md`. Interim: manual review only; no outbound AI extraction for unapproved SUD-sensitive content. | | **HIPAA Privacy/Security for contact history audit trail** (45 CFR 164.312(a),(b); 45 CFR 164.502 minimum-necessary) | Before CE-60 production go-live | 📋 Specification | **CE-60** — [CE-60 Contact Activity History & Audit Trail](https://github.com/Encore-OS/encoreos/blob/development/specs/ce/specs/CE-60-contact-activity-history-audit-trail.md) | CE Product / Security / Compliance | — | CE-60 adds immutable contact history events and profile-change tracking. Required controls: org-scoped RLS, split permissions (`ce.contacts.history.view`, `ce.contacts.history.sensitive_view`), and default masking/redaction for sensitive values. Interim: rely on existing CE access controls; do not expose unredacted historical value details outside explicitly authorized views. | | **HIPAA Privacy/Security for intake insurance identifiers** (45 CFR 164.502, 164.514, 164.312) | Before CE-65 production go-live | 📋 Specification | **CE-65** — [CE-65 Pipeline Tile Customization & Dashboard Embeds](https://github.com/Encore-OS/encoreos/blob/development/specs/ce/specs/CE-65-pipeline-tile-customization-dashboard-embeds.md) | CE Product / Security / Compliance | — | CE-65 adds `insurance_carrier` and `insurance_member_id` capture/display in CE contacts and pipeline contexts. Interim controls until implementation complete: (1) enforce org-scoped access only, (2) mask member IDs outside authorized detail views, (3) prohibit cleartext IDs in telemetry/logs/events, (4) require permission-gated unmasked access. Platform-wide HIPAA safeguards remain tracked in IT/PF rows. | | **HIPAA Privacy/Security for lead urgency + requested services metadata** (45 CFR 164.502 minimum-necessary; 45 CFR 164.312 audit/access controls) | Before CE-58 production go-live | 📋 Specification | **CE-58** — [CE-58 Lead Creation Enhancements — Urgency Visibility & Requested Services](https://github.com/Encore-OS/encoreos/blob/development/specs/ce/specs/CE-58-lead-creation-enhancements-urgency-services.md) | CE Product / Security / Compliance | — | CE-58 introduces lead-level urgency/service-intent metadata surfaced in pipeline UI. Required controls: org-scoped access, non-color-only urgency rendering, sanitized error/log payloads, audit coverage for `urgency`/`requested_services` changes, and CE-16 consent/suppression boundary for any downstream outreach usage. Compliance sign-off: [CE-58-COMPLIANCE-SIGNOFF.md](https://github.com/Encore-OS/encoreos/blob/development/specs/reviews/CE-58-COMPLIANCE-SIGNOFF.md). | *** ## Modules with dedicated sections above * **CL/PM:** Clinical and Practice Management compliance tracked in the main Tracker Table above. See also ONC\_CERTIFICATION\_ROADMAP.md, [PHI\_CLASSIFICATION.md](/compliance/PHI_CLASSIFICATION). * **HR:** Dedicated section above. Details: [HR\_WORKFORCE\_COMPLIANCE\_TRACKING.md](/compliance/HR_WORKFORCE_COMPLIANCE_TRACKING), [FCRA\_TCPA\_COMPLIANCE\_TRACKING.md](/compliance/FCRA_TCPA_COMPLIANCE_TRACKING). * **RH:** Dedicated section above. Details: [RH\_RECOVERY\_HOUSING\_COMPLIANCE\_TRACKING.md](/compliance/RH_RECOVERY_HOUSING_COMPLIANCE_TRACKING). * **GR:** Dedicated section above. Details: [GR\_GOVERNANCE\_COMPLIANCE\_TRACKING.md](/compliance/GR_GOVERNANCE_COMPLIANCE_TRACKING). * **FA:** Dedicated section above. Details: [FA\_FINANCIAL\_COMPLIANCE\_TRACKING.md](/compliance/FA_FINANCIAL_COMPLIANCE_TRACKING). * **IT:** Dedicated section above. Details: [IT\_SECURITY\_COMPLIANCE\_TRACKING.md](/compliance/IT_SECURITY_COMPLIANCE_TRACKING). * **PF:** Dedicated section above (accessibility, HIPAA technical safeguards, ONC). * **CE:** Dedicated section above. Details: [CE\_COMMUNICATIONS\_COMPLIANCE\_TRACKING.md](/compliance/CE_COMMUNICATIONS_COMPLIANCE_TRACKING). ## Low-regulation modules (FW, FM, LO) These modules have minimal or no direct regulatory exposure. Compliance requirements are inherited from other modules. * **FW (Forms & Workflow):** Infrastructure module. No direct regulatory obligations. PHI handling inherited from PF (HIPAA technical safeguards) and CL (42 CFR Part 2). Form content validation and access controls enforced by the platform layer. No dedicated compliance tracking needed. * **FM (Facilities Management):** Building and facility operations. Potential OSHA workplace safety requirements (tracked under HR for employer obligations) and ADA physical accessibility (operational, not system-level). Fire code compliance tracked under RH for recovery housing properties. No direct FM-specific regulations requiring system-level compliance tracking. * **LO (Logistics & Inventory):** Supply chain and inventory management. Controlled substance inventory management (DEA, 21 CFR Part 1304) is owned by CL-06, not LO. General inventory has no specific regulatory requirements. No dedicated compliance tracking needed. *** ## Interim Procedures (42 CFR Part 2) Until CL-11 is fully implemented: 1. **Consent:** Obtain and file written consent for TPO and any SUD-specific disclosure per organization policy. Do not rely on system to enforce; manual checklist. 2. **Disclosure log:** Maintain a log (spreadsheet or document) of all disclosures with date, recipient, purpose, and consent reference. 3. **Redisclosure:** Include notice that redisclosure is prohibited on any disclosed information. 4. **Training:** Ensure staff trained on Part 2 requirements and interim process. *** ## New Regulatory Requirements (May 2026 Analysis) The following requirements were identified in the May 2026 ONC Certification Strategy & Regulatory Readiness analysis. See `docs/compliance/ONC_REGULATORY_READINESS_IMPLEMENTATION_PLAN.md` for full implementation plan. | Regulation | Requirement | Deadline | Owning Spec | Status | Priority | | -------------------------------- | --------------------------------------------------------- | ------------------------------- | -------------- | ------------------------------------------------------------------------------------------------------------------- | -------- | | DEA EPCS (21 CFR 1311) | Third-party audit for controlled substance e-prescribing | Before MAT prescribing launch | CL-64 | ⏳ Not Started | P1 | | EKRA (18 U.S.C. § 220) | Anti-kickback compliance for NorthSight relationship | Immediate | PF-107 | ⏳ Not Started | **P0** | | HITRUST e1 | Security assessment by authorized external assessor | 12 months | PF-109 | ⏳ Not Started | P2 | | Section 1557 ACA | Language access, TTY, nondiscrimination in patient portal | Ongoing | PF-93 (update) | 🟡 Partially Covered | P2 | | ADA Title III / DOJ Rule | WCAG 2.1 AA for patient-facing web properties | HHS May 2026 | PF-93 | 🟡 In Progress | P2 | | SAMHSA SUPTRS/TEDS | Treatment episode reporting for block-grant compliance | Per grant cycle | GR-26 | ⏳ Not Started | P3 | | USCDI+ BH | FHIR BH profiles mapping | Proactive alignment | CL-16-EN-03 | ⏳ Not Started | P2 | | DS4P §170.315(b)(7)/(b)(8) | Privacy segmentation for SUD data in FHIR/C-CDA | Before production FHIR exchange | CL-63 | ⏳ Not Started | P1 | | HTI-4 NCPDP SCRIPT 2023011 | E-prescribing standard upgrade | Jan 1, 2028 | CL-06 (update) | ⏳ Not Started | P2 | | DEA Telemedicine Registration | MAT-via-telehealth prescribing rules | Pending final rule (2026?) | CL-64 | 📋 Monitoring | P2 | | Contexture Participation | HIE connectivity for AHCCCS DAP/TI 2.0 | 30 days (business) | PF-108 | ⏳ Not Started | P1 | | OIG Info Blocking CMP | \$1M per violation for HIT developers | Live since Sept 2023 | PM-55 | 🟡 In Progress | P1 | | ONC API Conditions | Terms, fees, transparency governance for FHIR APIs | Before API publication | PM-72 | ⏳ Not Started | P2 | | DSI Transparency §170.315(b)(11) | Source attribute disclosures for AI features | Before AI ships | CL-65 | 🟡 In Progress — Phase A schema committed (cl\_dsi\_disclosures + opt-out); public registry route app-layer pending | P2 | | Surescripts Certification | Production e-prescribing staged onboarding | Before eRx launch | PM-73 | ⏳ Not Started | P3 | *** ## References * [CL-11 Consent Management](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-11-consent-management-42cfr-part2.md) * [CL-11 Integration (interim controls, action checklist)](/architecture/integrations/consent-management-42cfr-part2-integration) * [ehr\_research\_updated.md](https://github.com/Encore-OS/encoreos/blob/development/docs/archive/ehr_pm/ehr_research_updated.md) * ONC\_CERTIFICATION\_ROADMAP.md * [ONC\_CERTIFICATION\_GAP\_MATRIX.md](/compliance/ONC_CERTIFICATION_GAP_MATRIX) * [ONC\_REGULATORY\_READINESS\_IMPLEMENTATION\_PLAN.md](/compliance/ONC_REGULATORY_READINESS_IMPLEMENTATION_PLAN) * [PHI\_CLASSIFICATION.md](/compliance/PHI_CLASSIFICATION) * [FA\_FINANCIAL\_COMPLIANCE\_TRACKING.md](/compliance/FA_FINANCIAL_COMPLIANCE_TRACKING) * [HR\_WORKFORCE\_COMPLIANCE\_TRACKING.md](/compliance/HR_WORKFORCE_COMPLIANCE_TRACKING) * [FCRA\_TCPA\_COMPLIANCE\_TRACKING.md](/compliance/FCRA_TCPA_COMPLIANCE_TRACKING) * [RH\_RECOVERY\_HOUSING\_COMPLIANCE\_TRACKING.md](/compliance/RH_RECOVERY_HOUSING_COMPLIANCE_TRACKING) * [GR\_GOVERNANCE\_COMPLIANCE\_TRACKING.md](/compliance/GR_GOVERNANCE_COMPLIANCE_TRACKING) * [IT\_SECURITY\_COMPLIANCE\_TRACKING.md](/compliance/IT_SECURITY_COMPLIANCE_TRACKING) * [CE\_COMMUNICATIONS\_COMPLIANCE\_TRACKING.md](/compliance/CE_COMMUNICATIONS_COMPLIANCE_TRACKING) ### Enhancement references (internal RFC) * **EN-51:** [CL-21 § Future Enhancements](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-21-medication-assisted-treatment-moud-tracking.md) — OTP Federal Guidelines (42 CFR Part 8). * **EN-42:** [CL-15 § Future Enhancements](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-15-clinical-reporting-quality-measures.md) — AHCCCS IAD dual-track (Policy 961). * **CL-25 Clinical Audit & Compliance Dashboard:** [User Guide](/cl/clinical-audit-compliance-dashboard-user-guide) | [Admin Guide](/cl/clinical-audit-compliance-dashboard-admin-guide) # Regulatory Monitoring & Automation Source: https://docs.encoreos.io/compliance/REGULATORY_MONITORING Runbook for how Encore OS detects regulatory change: Federal Register and curated AZ/AHCCCS/CMS/ONC source watchers, deadline alerts, and a deep-dive agent. This is the operating manual for how we detect regulatory change and keep our compliance system of record current. It ties together the scripts, the weekly GitHub Actions job, the deep-dive agent, and the artifacts they read and write. *** ## The picture Three automated tripwires run weekly (Mon 09:00 UTC, `.github/workflows/regulatory-watch.yml`), plus one human-driven deep-dive agent: | Layer | What it watches | How | Output | | ---------------------------- | ----------------------------------------------------- | ------------------------------------------------------------ | --------------------------------------- | | **Federal Register watcher** | New federal RULE / PRORULE documents | FR API, keyword + optional AI semantic match to tracked regs | One GitHub issue per material new rule | | **Curated source watcher** | AZ/AHCCCS, CMS sub-regulatory, ASTP/ONC, SAMHSA pages | Fetch + content-hash diff | One GitHub issue per changed source | | **Deadline alerts** | Known compliance deadlines | Calendar diff (≤60 days / overdue) | One rolling GitHub issue, kept current | | **Deep-dive agent** | Anything the above can't reason about | `regulatory-change-watcher` agent (WebSearch/WebFetch) | Prioritized impact analysis (read-only) | Every issue is labeled `regulatory,compliance` and links back to the affected specs from `REGULATORY_COMPLIANCE_TRACKER.md`. *** ## 1. Federal Register watcher `scripts/audit/check-regulatory-changes.ts` (`npm run audit:regulatory-changes`). * Pulls FR documents published in the lookback window (`--days=7` in CI). * Maps each to tracked regulations via distinctive CFR/CMS tokens parsed from `REGULATORY_COMPLIANCE_TRACKER.md`. * **AI semantic fallback (optional):** when `AI_GATEWAY_API_KEY` is set, documents that the keyword matcher misses get a semantic pass (`scripts/audit/lib/ai-spec-matcher.ts`) routed through the PF-111 Vercel AI Gateway — one gateway/secret shared with the runtime edge functions + eval harness, so no per-feature Anthropic key is needed (#1125). Degrades to keyword-only if the key is absent or the call fails. Model is `anthropic/claude-sonnet-4.6` by default (the GR standard lane; `REGULATORY_AI_MODEL` to override). * Files an issue per material new document and records it in `REGULATORY_CHANGES_LOG.json` so it's never re-filed. **Coverage limit:** Federal Register only. State, AHCCCS, and CFR-codification events are the curated watcher's and the agent's job. ## 2. Curated source watcher `scripts/audit/check-source-regulatory-changes.ts` (`npm run audit:regulatory-sources`). * Watch list lives in `REGULATORY_SOURCES.json` — AHCCCS policy manuals, AZ ADHS licensing, Arizona CSPMP, CMS BH/prior-auth pages, ASTP/ONC certification, SAMHSA Part 2. Each entry maps to the specs it affects. * Fetches each page, normalizes to text (strips scripts/styles/markup), and content-hashes it. A changed hash files one issue; the first observation only records a baseline (no issue), so adding a source doesn't spam. * State lives in `SOURCE_REGULATORY_CHANGES_LOG.json`. A content-hash change is a **tripwire, not a diff** — it means "this page moved, look at it", not "rule X changed". Triage the page, then act. **Adding a source:** append to `REGULATORY_SOURCES.json` with `id`, `name`, `jurisdiction`, `url`, and the mapped `specIds`. Next run baselines it. ## 3. Deadline alerts `scripts/audit/check-regulatory-deadlines.ts` (`npm run audit:regulatory-deadlines:ci`). * Reads `REGULATORY_DEADLINE_CALENDAR.json`. * In CI (`--file-issue`) it upserts a single rolling issue, "Upcoming & overdue compliance deadlines", listing everything overdue or due within 60 days. The issue is closed automatically when nothing is overdue or upcoming. * Locally, run without flags for a console report, or `--fail-on-overdue` to gate. **Keeping it accurate:** when a deadline is met or slips, update both `REGULATORY_DEADLINE_CALENDAR.json` and `REGULATORY_COMPLIANCE_TRACKER.md`. ## 4. Deep-dive agent `automation/agents/regulatory-change-watcher.md` (Sonnet; WebSearch/WebFetch). For interactive investigation the scripts can't do — reasoning about a specific rule's impact, researching an AHCCCS policy change, or scoping a new deadline. Read-only: it surfaces a prioritized impact analysis; it does not file issues or edit specs. *** ## State persistence (why the workflow commits back) The two watchers keep "what have I already seen" state in `REGULATORY_CHANGES_LOG.json` and `SOURCE_REGULATORY_CHANGES_LOG.json`. The weekly workflow runs with `contents: write` and **commits those logs back** after each run. Without that, every run would start blind and re-file duplicate issues. The commit uses `[skip ci]` so it doesn't trigger other workflows. ## Optional configuration | Secret / env | Effect | | --------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `AI_GATEWAY_API_KEY` | Enables the AI semantic-match fallback in the FR watcher, routed through the PF-111 Vercel AI Gateway (shared with the runtime + eval harness). Without it, keyword matching only. | | `REGULATORY_AI_MODEL` | Override the matcher model (default `anthropic/claude-sonnet-4.6`, the GR standard lane). | ## Artifacts at a glance | File | Role | Maintained by | | ------------------------------------ | ---------------------------------------- | -------------------------------- | | `REGULATORY_COMPLIANCE_TRACKER.md` | System of record (regs → specs → status) | Humans | | `REGULATORY_DEADLINE_CALENDAR.json` | Machine-readable deadlines | Humans | | `REGULATORY_SOURCES.json` | Curated watch list | Humans | | `REGULATORY_CHANGES_LOG.json` | FR watcher seen-state | FR watcher (committed by CI) | | `SOURCE_REGULATORY_CHANGES_LOG.json` | Source watcher seen-state | Source watcher (committed by CI) | *** ## Running locally ```bash theme={null} # Federal Register (dry-run files nothing) npm run audit:regulatory-changes -- --days=30 --dry-run # Curated sources (dry-run) npm run audit:regulatory-sources -- --dry-run # Deadlines (console report) npm run audit:regulatory-deadlines ``` Filing issues requires the `gh` CLI authenticated (`GH_TOKEN`); dry-run and the plain deadline report need no auth. # RH Recovery Housing Compliance Tracking Source: https://docs.encoreos.io/compliance/RH_RECOVERY_HOUSING_COMPLIANCE_TRACKING This document tracks regulatory compliance obligations for recovery housing operations in Arizona. Recovery residences (sober living homes) are subject to Ariz… > **Cross-References:** > > * [REGULATORY\_COMPLIANCE\_TRACKER.md](/compliance/REGULATORY_COMPLIANCE_TRACKER) — Master compliance tracker > * `docs/compliance/AUTHORITATIVE_REFERENCES.md` — Authoritative External References — Recovery Housing and Governance *** ## Overview This document tracks regulatory compliance obligations for recovery housing operations in Arizona. Recovery residences (sober living homes) are subject to Arizona DHS licensure, NARR quality standards, Fair Housing Act protections, fire/safety codes, and data privacy requirements (HIPAA / 42 CFR Part 2) when handling resident SUD records. *** ## 1. Arizona DHS Licensure (ARS 36-2061 through 36-2068, AAC Title 9 Chapter 12) | # | Requirement | Responsible Spec | Status | Notes | | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------- | ------------- | ---------------------------------------------------------------------- | | DHS-01 | **Licensure before operation** — Obtain DHS sober living home license before accepting residents | RH-06 | ⏳ Not Started | Application: $500 + $100/bed; floor plans, zoning attestation required | | DHS-02 | **Minimum standards (AAC R9-12-201 through R9-12-207)** — Comply with administration, residency agreements, resident rights, records, services, emergency/safety, and physical plant | RH-01, RH-06 | 🟡 Partial | RH-01 tracks property and bed inventory; RH-06 tracks inspections | | DHS-03 | **Substance-free environment** — Maintain alcohol-free and drug-free housing; mandatory resident abstinence | RH-04 | 🟡 Partial | Drug testing tracking in RH-04; policy enforcement | | DHS-04 | **Medication-assisted treatment (MAT)** — Cannot prohibit residents from continuing MAT per ARS 36-2062 | RH-01 | 📋 Policy | Organizational policy; system must not flag MAT as violation | | DHS-05 | **Residency agreements** — Written agreement covering house rules, fees, discharge conditions | RH-02 | 🟡 Partial | Resident agreement templates in RH-02 | | DHS-06 | **Resident records** — Maintain intake records, emergency contacts, discharge information | RH-02 | 🟡 Partial | Resident profile data in RH-02 | | DHS-07 | **DHS inspections** — Submit to routine and complaint-driven inspections | RH-06 | 🟡 Partial | Inspection tracking in RH-06; license renewal workflow | | DHS-08 | **Civil penalties** — Up to \$500/day per violation for noncompliance; license suspension/revocation | RH-06 | 📋 Awareness | Track inspection findings and corrective actions | *** ## 2. NARR Quality Standards (National Alliance for Recovery Residences) | # | Requirement | Responsible Spec | Status | Notes | | ------- | -------------------------------------------------------------------------------------------------------------------------------- | ---------------- | -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | NARR-01 | **Level classification (I–IV)** — Self-classify home per NARR National Standard 3.0 based on staffing, governance, and services | RH-01, **RH-11** | ⏳ Not Started | Store NARR level in property record; affects compliance requirements — see [RH-11](https://github.com/Encore-OS/encoreos/blob/development/specs/rh/specs/RH-11-narr-level-azrha-certification.md) | | NARR-02 | **AzRHA certification** — Optional Arizona Recovery Housing Association certification (expedites DHS licensing) | RH-06, **RH-11** | ⏳ Not Started | Track AzRHA certification status and renewal — see [RH-11](https://github.com/Encore-OS/encoreos/blob/development/specs/rh/specs/RH-11-narr-level-azrha-certification.md) | | NARR-03 | **Peer-operated governance** — Resident participation in house governance (Levels I-II); professional management (Levels III-IV) | RH-01 | 📋 Operational | Document governance structure per level | | NARR-04 | **Recovery support** — Provide or facilitate access to recovery support services per level | RH-05 | 🟡 Partial | Recovery program tracking in RH-05 | | NARR-05 | **Administrative standards** — Policies for admission, discharge, grievance, safety | RH-01, RH-02 | 🟡 Partial | Policies managed in system; ensure NARR alignment | *** ## 3. Fair Housing Act / ADA | # | Requirement | Responsible Spec | Status | Notes | | ----- | --------------------------------------------------------------------------------------------------------- | ---------------- | ------------- | ------------------------------------------------------------------------- | | FH-01 | **Non-discrimination** — Cannot deny housing based on disability (including SUD recovery status) | RH-02 | 📋 Policy | Organizational policy; system must not discriminate in waitlist/placement | | FH-02 | **Reasonable accommodations** — Modify policies/practices to accommodate disabled residents | RH-02 | 📋 Policy | Track accommodation requests and outcomes | | FH-03 | **Zoning protection** — Local governments cannot apply zoning to exclude group homes for disabled persons | RH-01 | 📋 Awareness | Document zoning compliance per property; track any challenges | | FH-04 | **ADA physical accessibility** — Common areas and a proportion of units must be accessible per ADA | RH-01 | ⏳ Not Started | Track accessibility features per property in RH-01 | *** ## 4. Fire and Life Safety | # | Requirement | Responsible Spec | Status | Notes | | ----- | ------------------------------------------------------------------------------------------------ | ----------------------- | -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | FS-01 | **Local fire codes** — Comply with municipal fire codes; submit floor plans showing egress | RH-01, RH-06, **RH-10** | ⏳ Not Started | Track fire inspection dates and findings per property — see [RH-10](https://github.com/Encore-OS/encoreos/blob/development/specs/rh/specs/RH-10-fire-life-safety-compliance.md) | | FS-02 | **Smoke/CO detectors** — Install and maintain per Arizona building code | RH-01 | 📋 Operational | Maintenance tracking in RH-01 | | FS-03 | **Emergency evacuation plan** — Posted evacuation plan; periodic fire drills | RH-06 | ⏳ Not Started | Track drill dates; inspection readiness | | FS-04 | **NFPA compliance** — National Fire Protection Association standards for residential occupancies | RH-01 | 📋 Operational | Existing building compliance; document per property | *** ## 5. Arizona Title 36 (Public Health and Safety) | # | Requirement | Responsible Spec | Status | Notes | | ------ | ---------------------------------------------------------------------------------------------------- | ---------------- | ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | | T36-01 | **Patient rights (ARS 36-504 et seq.)** — Rights to privacy, dignity, least restrictive treatment | RH-02 | 📋 Policy | Applies when housing intersects with behavioral health treatment | | T36-02 | **Voluntary vs involuntary status** — Residents are voluntary; cannot restrict departure | RH-02 | 📋 Policy | System must not enforce involuntary retention | | T36-03 | **Grievance procedures** — Residents have right to file grievances without retaliation | **RH-09** | ⏳ Not Started | Implement grievance tracking workflow — see [RH-09](https://github.com/Encore-OS/encoreos/blob/development/specs/rh/specs/RH-09-resident-grievance-management.md) | | T36-04 | **Personal property rights** — Residents retain rights to personal property and financial management | RH-02 | 📋 Policy | Fee structure transparency; no property seizure | *** ## 6. Data Privacy (HIPAA / 42 CFR Part 2) | # | Requirement | Responsible Spec | Status | Notes | | ----- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------- | ------------- | ------------------------------------------------------------------------------------------------- | | DP-01 | **HIPAA applicability** — If housing entity is a covered entity or business associate, HIPAA applies to resident health data | RH-02, PF-44 | 📋 Depends | Determined by organizational structure; pure housing without clinical services may not be covered | | DP-02 | **42 CFR Part 2** — SUD treatment records require specific consent for disclosure; redisclosure prohibited | CL-11, RH-02 | 🟡 Partial | CL-11 consent management implements Part 2; RH must respect consent boundaries | | DP-03 | **Resident SUD data** — Drug test results and SUD treatment status are Part 2 protected | RH-04 | ⏳ Not Started | Implement access controls on drug test data; audit trail | | DP-04 | **Minimum necessary** — Share only minimum necessary resident information for housing operations | RH-02 | 📋 Policy | Organizational policy; system enforces role-based access | *** ## 7. Zoning and Land Use | # | Requirement | Responsible Spec | Status | Notes | | ----- | ------------------------------------------------------------------------------------------------------------------ | ---------------- | ------------- | ------------------------------------------------------------- | | ZN-01 | **Local zoning compliance** — Attestation of zoning compliance required for DHS licensure | RH-01 | ⏳ Not Started | Track zoning status per property; store attestation documents | | ZN-02 | **Municipal group home limits** — Some municipalities limit number of unrelated persons; Fair Housing may override | RH-01 | 📋 Awareness | Track applicable municipal ordinances per property location | | ZN-03 | **Neighborhood notification** — Some municipalities require notification for group home operations | RH-01 | 📋 Awareness | Document notification status per property if applicable | *** ## 8. Authoritative External References | Source | URL | Used By | | --------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ | | Arizona DHS: Sober Living Home Licensing | [https://www.azdhs.gov/licensing/special/sober-living-homes/index.php](https://www.azdhs.gov/licensing/special/sober-living-homes/index.php) | RH-06, RH-01 | | Arizona DHS: Behavioral Health Facilities Licensing | [https://www.azdhs.gov/licensing/bbbl-facilities/index.php](https://www.azdhs.gov/licensing/bbbl-facilities/index.php) | RH-06, RH-03 | | Arizona DHS: Residential Facilities Licensing | [https://www.azdhs.gov/licensing/residential-facilities/](https://www.azdhs.gov/licensing/residential-facilities/) | RH-01, RH-06 | | ARS 36-2061 through 36-2068 (Sober Living Homes) | [https://www.azleg.gov/arsDetail/?title=36](https://www.azleg.gov/arsDetail/?title=36) | RH-06 | | AAC Title 9, Chapter 12 (Sober Living Home Rules) | [https://apps.azsos.gov/public\_services/Title\_09/9-12.htm](https://apps.azsos.gov/public_services/Title_09/9-12.htm) | RH-01, RH-06 | | NARR: National Standard for Recovery Residences 3.0 | [https://narronline.org/standards/](https://narronline.org/standards/) | RH-01, RH-06 | | Arizona Recovery Housing Association (AzRHA) | [https://www.myazrha.org/](https://www.myazrha.org/) | RH-06 | | HUD/DOJ: Fair Housing Act — Group Homes for Persons with Disabilities | [https://www.justice.gov/opa/file/912366/dl](https://www.justice.gov/opa/file/912366/dl) | RH-01, RH-02 | | Fair Housing Act | [https://www.hud.gov/program\_offices/fair\_housing\_equal\_opp/fair\_housing\_act\_overview](https://www.hud.gov/program_offices/fair_housing_equal_opp/fair_housing_act_overview) | RH-01, RH-02 | | Arizona Title 36 (Public Health and Safety) | [https://www.azleg.gov/arsDetail/?title=36](https://www.azleg.gov/arsDetail/?title=36) | RH-02 | | NFPA: Life Safety Code | [https://www.nfpa.org/codes-and-standards/nfpa-101-standard-development/101](https://www.nfpa.org/codes-and-standards/nfpa-101-standard-development/101) | RH-01 | *** ## 9. Periodic Review Schedule | Review | Frequency | Next Due | Owner | | ------------------------------ | ---------------- | ------------ | ------------------- | | DHS license renewal | Per license term | `YYYY-MM-DD` | Operations Director | | AzRHA certification renewal | Annually | `YYYY-MM-DD` | Operations Director | | Fire inspection compliance | Annually | `YYYY-MM-DD` | Property Manager | | NARR level reassessment | Annually | `YYYY-MM-DD` | Program Director | | Fair Housing policy review | Annually | `YYYY-MM-DD` | Compliance Officer | | Drug testing data access audit | Quarterly | `YYYY-MM-DD` | Privacy Officer | *** ## Version History ### 1.0.0 (2026-02-27) * Initial comprehensive RH recovery housing compliance document * Covers Arizona DHS licensure, NARR standards, Fair Housing, fire/safety, Arizona Title 36, data privacy, zoning * 35+ compliance requirements tracked across 7 categories *** **Last Updated:** 2026-02-27 **Next Review:** 2026-05-27 # WENO EZ Integration HIPAA/HITECH Risk Assessment Source: https://docs.encoreos.io/compliance/WENO-HIPAA-RISK-ASSESSMENT HIPAA Security Rule risk assessment for the WENO EZ e-prescribing adapter: BA relationship, threat/safeguard analysis, residual risks, and §10 attestation. # WENO Online EZ e-Prescribing Integration — HIPAA/HITECH Risk Assessment **Assessment Date:** 2026-06-28\ **Reviewed By:** Security & Compliance (Jeremy Bloom, Project Owner)\ **Scope:** CL-06-EN-23 WENO EZ Integration Adapter (Encore OS v0.1.0-beta)\ **Regulatory Framework:** 45 CFR Part 160 (General Rules), Part 164 (Administrative, Physical, Technical Safeguards)\ **Related Documents:** * `docs/weno/WENO_EZ_Integration_Context.md` — vendor implementation context * `docs/architecture/integrations/CL-06-EN-23-weno-ez-adapter-INTEGRATION.md` — integration contract * `specs/cl/specs/CL-06-EN-23-weno-ez-integration-adapter.md` — owning specification * `docs/weno/WENO_LIVE_VERIFICATION_RUNBOOK.md` — operational runbook *** ## Executive Summary **WENO Online, Inc.** is a DEA 1311.105-compliant e-prescribing application and a **HIPAA Business Associate** under 45 CFR §164.502(e) and §164.504(e). Encore OS integrates WENO's EZ Integration via encrypted, authenticated requests; WENO processes prescribing data and returns operational results. This assessment documents the threat/safeguard mapping, control attestations, and residual risks. **Production enablement is gated: the `weno_adapter_enabled` flag remains `false` until a HIPAA Business Associate Agreement (BAA) is executed and recorded.** *** ## 1. Scope & Data Flow ### 1.1 Integration Surfaces The WENO EZ adapter exposes five operational surfaces, each with distinct PHI/operational scope: | Surface | Initiated by | PHI elements sent | Returned data | Risk profile | | ------------------------------- | -------------- | ------------------------------------------ | --------------------------------------------------- | ------------------------------------- | | **Pharmacy Directory download** | Cron or admin | None (metadata only) | Excel LITE file (pharmacy names, NCPDPs, locations) | Low — no PHI | | **ComposeRx iFrame** | Prescriber | Patient demographics + current medications | iFrame URL | Medium — patient PII/clinical context | | **RxLog iFrame** | Prescriber | Prescriber credentials only | iFrame URL | Low — prescriber PII only | | **NewRx Sync Report** | Cron or admin | None (server-side) | CSV/JSON with Rx status, NDC, delivery status | Medium — prescription metadata | | **Manage API** (optional) | Admin (future) | User/location metadata | success/error | Low — organizational config | ### 1.2 PHI Definition Per 45 CFR §164.501, PHI in this integration includes: * Patient name, date of birth, gender, address, phone, email (`ComposeRx` surface only) * Prescription details: drug name, NDC, RXCui, quantity, days supply, refills, diagnosis code (ICD-10), directions * DEA prescriber license numbers, pharmacy NCPDPs * Status/delivery metadata (timing, method, pharmacy note) * Allergy information (narrative, not coded) **42 CFR Part 2 consideration:** SUD-related prescriptions (Schedule II–V controlled substances) carry additional confidentiality protection. Encore OS gates ComposeRx launch with `cl_check_sud_consent()` (CL-11) to verify 42 CFR Part 2 consent before patient data is transmitted to WENO. ### 1.3 Data Flows ``` 1. ComposeRx Launch: Prescriber → Encore OS (CL-06 UI) → Edge function cl-weno-launch (verify org/user, SUD consent, credentials) → Resolve EZ key + user credentials from pf_credential_vault (SECURITY DEFINER) → Encrypt patient payload (AES-256-CBC) → Return iFrame URL Prescriber → WENO (browser iframe) → Compose/sign/send Rx 2. NewRx Sync (background): Cron trigger (scheduled daily or on-demand) → Edge function cl-weno-newrx-sync → Retrieve admin credentials from vault → Request sync report (GET to WENO with encrypted payload) → Parse CSV/JSON, dedupe on (org_id, vendor_report_id, rx_reference_number) → Emit WenoMedicationUpdateEvent to CL-05 (med reconciliation) → Log sync run to cl_weno_newrx_sync_runs (metadata: counts, dedup, vendor ID) 3. Directory Ingest (background): Cron trigger (daily delta + weekly full) → Edge function cl-weno-directory-ingest → Request pharmacy ZIP (GET with encrypted admin payload) → Unzip + parse Excel LITE file → Upsert cl_weno_pharmacies (org-scoped, RLS enforced) → Log ingest run to cl_weno_directory_ingest_runs (metadata: count, hash, drift columns) ``` All inter-system transfers use **HTTPS/TLS 1.2+** (enforced by Supabase edge function environment and WENO's endpoint HSTS headers). *** ## 2. Business Associate Relationship & BAA Requirement ### 2.1 WENO as a Business Associate **Determination:** WENO qualifies as a Business Associate under 45 CFR §164.501(b): * WENO receives, maintains, and processes ePrescription data on behalf of Encore OS (a Covered Entity). * WENO performs functions or activities involving access to PHI: prescription signing, dispensing coordination, pharmacy network transmission. * WENO is not an agent of Encore OS (WENO is an independent vendor with its own legal entity and data handling practices). **HIPAA Obligations:** * Encore OS (Covered Entity) must have a signed BAA with WENO before any PHI is transmitted (45 CFR §164.504(e)(1)(ii)). * WENO must implement administrative, physical, and technical safeguards (45 CFR §164.308, .310, .312) equivalent to Encore OS's safeguards. * WENO must comply with 42 CFR Part 2 (Confidentiality of Alcohol and Drug Abuse Patient Records) for any SUD-related prescriptions. * WENO must report any breaches involving Encore OS data per 45 CFR §164.410 and the Breach Notification Rule (45 CFR §164.400 et seq.). ### 2.2 BAA Status & Production Gate **Current Status:** No BAA has been executed or recorded as of 2026-06-28. **Production Enablement Gate:** The WENO adapter is architecturally gated by the boolean flag `weno_adapter_enabled` in `cl_module_settings.custom_fields`. This flag: * Defaults to `false` in all environments (dev, staging, production). * Is checked by all WENO cron dispatchers (`cl_weno_dispatch_*`) before initiating background jobs. * Returns `ADAPTER_DISABLED` error code if any client attempts to launch ComposeRx/RxLog. * Prevents **any** outbound WENO request (cryptographic key check, credential resolution, HTTPS transmission) until an organization explicitly enables it and a BAA is countersigned. **Prerequisite for enabling `weno_adapter_enabled = true` in production:** 1. Signed WENO BAA recorded in `cl_module_settings.custom_fields.weno_baa_executed_date` (timestamp). 2. WENO BAA reviewed and approved by Encore OS Compliance Officer. 3. Organization's legal/compliance team confirms BAA aligns with state Medicaid and other applicable regulations (CL-15 for Arizona; PF-96 for multi-state profiles). *** ## 3. Threat & Safeguard Analysis Mapped to HIPAA Security Rule framework: 45 CFR §164.308 (Administrative), §164.310 (Physical), §164.312 (Technical). ### 3.1 Administrative Safeguards (45 CFR §164.308) | Safeguard | Threat | Control | Status | Residual Risk | | ------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **§164.308(a)(1) Information Access Mgmt** — Limit access to PHI based on role and need-to-know | Unauthorized prescriber views patient PHI; rogue staff access | `cl_weno_launch` edge function verifies prescriber role + organization via Supabase RLS. Credential vault (SECURITY DEFINER RPC `cl_weno_get_user_cred`) only returns credentials if user has `cl.prescription.write` permission. `cl_module_settings.custom_fields.weno_adapter_enabled` gated on organization. | ✅ Implemented | Permission escalation in Supabase auth layer not independently audited; reliance on PF-30 RBAC signal. | | **§164.308(a)(2) Safeguards of Workforce** — Formalize workforce security policies; PHI handling training | Untrained staff with PHI access; no documented responsibilities | Interim: Encore OS must document WENO integration in workforce onboarding / employee handbook (HR-43 pending). WENO prescriber/admin roles assigned per WenoCredentialsCard UI (admin-only). BAA signature binds WENO to workforce security standards. | 🟡 Partial | Documentation deferred to HR-43 implementation; interim manual onboarding log required. | | **§164.308(a)(3) Information Access Audit & Accountability** — Audit mechanisms for PHI access; account review procedures | Undetected unauthorized access or misuse of WENO credentials | `cl_weno_launch_attempts` table logs every ComposeRx/RxLog launch: endpoint\_type, status, error\_code, metadata (field count only, no PII). Audit immutable (INSERT only, no UPDATE/DELETE). `cl_weno_newrx_sync_runs` logs every sync with count metrics. 2-year retention enforced via `pf_audit_logs` lifecycle (PF-04). RLS restricts reads to org-admins + compliance roles. | ✅ Implemented | Audit logs store user\_id, endpoint, status; no per-credential usage attribution (shared credentials); follow-up: per-prescriber credential audit trail (CL-06-EN-23 enhancement). | | **§164.308(a)(4) Security Awareness** — Training on information security; sanctions for policy violations | Prescriber/admin sends PHI to WENO without understanding confidentiality scope | Onboarding material per WenoCredentialsCard: "WENO is a HIPAA Business Associate. Prescriptions and patient data are encrypted in transit and covered by BAA." Explain WENO Online feature (Test Plan item §10.9). | 🟡 Partial | Onboarding UI text drafted; compliance-approved wording pending sign-off on CL-06 spec review. | | **§164.308(a)(5) Security Incident Procedures** — Breach response, logging, notification | WENO suffers breach; Encore OS unaware or fails to notify affected patients | WENO BAA obligates WENO to notify Encore OS within contractually-agreed timeframe (typically 48–72 hours per Surescripts precedent). Encore OS CSO / Legal must have escalation protocol. Test Plan §10: document WENO contact + escalation SOP in WENO Integration Page. | ⚠️ Partial | Breach escalation SOP not yet written; WENO contact details ([admin@wenoexchange.com](mailto:admin@wenoexchange.com)) documented in WENO\_EZ\_Integration\_Context.md but not surfaced in admin UI. | | **§164.308(a)(6) Sanction Policy** — Consequences for workforce violating security policies | Employee intentionally discloses patient Rx data via WENO to unauthorized parties | Disciplinary action governed by HR-43 workforce policies and employee handbook (deferred). WENO BAA does not govern Encore OS internal sanctions. | 📋 Deferred | Interim: refer to corporate disciplinary procedures and HIPAA breach response protocol. | | **§164.308(a)(7) Contingency Planning** — Disaster recovery; business continuity | WENO unavailable (outage, bankruptcy, service termination); prescribing halted | Edge function `cl-weno-launch` fails gracefully: returns `{ ok: false, code: 'VENDOR_UNREACHABLE' }` with friendly error message. Prescriber UI shows "WENO is currently unavailable. Try again or use manual entry." No data loss; fallback is manual prescription entry. Recurring sync jobs (NewRx import) skip if WENO is unreachable; sync is not mandatory for chart updates. | ✅ Implemented | Contingency relies on prescriber manually entering Rx data; no automated failover to alternate e-prescribing vendor (Surescripts CL-06-P1 separate). | | **§164.308(a)(8) Evaluation** — Periodic assessment of security measures | Risk assessment never performed; controls drift undetected | This assessment serves as the baseline. Security team must re-assess annually or after material integration changes (e.g., new WENO surface, credential model changes). | ✅ This assessment | Annual re-assessment schedule and ownership not yet assigned (CSO responsibility). | ### 3.2 Technical Safeguards (45 CFR §164.312) | Safeguard | Threat | Control | Status | Residual Risk | | ---------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | **§164.312(a)(1) Access Controls** — User/emergency access, automatic logoff | Stolen WENO password; rogue prescriber composing Rxs | WENO credentials stored **server-side only** in `pf_credential_vault` (encrypted-at-rest, Supabase-managed KMS). Plaintext passwords never stored — only MD5(UTF-8) hash. Client never receives credentials; `cl-weno-launch` edge function reads vault, constructs encrypted request, returns iFrame URL only. Encore OS session timeout (PF-28) auto-logs off prescriber; session token stored in secure httpOnly cookie. WENO session is independent; WENO enforces its own session timeout. | ✅ Implemented | Credential theft requires Supabase vault compromise (same as all platform secrets); password reuse risk (MD5 hash, not bcrypt — acceptable for WENO's API layer but not credential storage best practice). | | **§164.312(a)(2) Audit Controls & Accountability** — Audit logs, log review | Unauthorized access to vault; sync job tampering | `cl_weno_launch_attempts` and sync run logs are **immutable** (INSERT only; DELETE forbidden by RLS policy). Logs timestamp every operation, associate with organization + user\_id. All vault reads are logged to `pf_audit_logs.event = 'credential_vault_read'`. Log retention: 2 years (enforced by PF-04 cron). Compliance/CSO role can read audit logs; organization admins cannot delete/modify logs (RLS `pf_is_org_admin` cannot write audit tables). | ✅ Implemented | Audit log volume not monitored for anomalies (spike in launch attempts, sync failures); alerting deferred (FW-26 automation pending). | | **§164.312(a)(2)(i) User Identification** — Unique user IDs; access logging | User spoofing; false audit trail | Supabase auth enforces unique email per user; each user has a stable `user_id` (UUID). All RLS policies filter on `auth.uid()` (Supabase-managed). Audit logs always reference `user_id` from `auth.jwt()->>'sub'`. WENO credentials are per-user (`cl_weno_get_user_cred(p_org, p_user)` RPC); prescriber cannot access another prescriber's WENO login. | ✅ Implemented | Account takeover via phishing (Supabase 2FA not enforced org-wide; PF-28 supports optional MFA but not mandated). | | **§164.312(a)(2)(ii) Emergency Access Procedure** — Provision for access when normal mechanism fails | Vault key/credential inaccessible; prescriber cannot launch Rx; patient care delayed | CSO/Platform Admin can directly update `pf_credential_vault` via Supabase dashboard (break-glass). Edge function checks key existence; if absent, returns `ADAPTER_DISABLED`. No automatic fallback. Interim: ensure at least 2 CSOs have Supabase access + vault update capability. Documentation: WENO\_LIVE\_VERIFICATION\_RUNBOOK.md describes reset procedure. | ⚠️ Partial | Break-glass procedure relies on Supabase admin access; no per-org emergency override. Runbook not surfaced in prescriber UI; support ticket required. | | **§164.312(a)(2)(iii) Encryption & Decryption** — Encryption key mgmt; TLS for transmission | Eavesdropping on patient PHI; key compromise | **Key Derivation:** EZ key (stored in vault as plaintext text in encrypted KMS) → SHA-256 hash → 32-byte AES key. **Encryption:** AES-256-CBC, PKCS7 padding, fixed 16-byte zero IV (per WENO spec). Implemented in `src/cores/cl/integrations/weno/crypto.ts` (unit-tested). **Transmission:** HTTPS only (enforced by Supabase edge function runtime and WENO's endpoint HSTS). TLS 1.2+ enforced by browser + Supabase infrastructure. No HTTP fallback. Certificates verified by client. | ✅ Implemented | Fixed IV + deterministic padding are WENO vendor constraints (not a choice). Security implication: if plaintext+key are known, all ciphertexts are recoverable (no semantic security). Acceptable for request-response (not stream) use; IV cannot be reused per AES design. ⚠️ EZ key is a shared org secret (not per-request nonce). Compromise of single EZ key affects all org's Rx traffic. | | **§164.312(b) Integrity** — Mechanism to verify PHI has not been improperly altered | Pharmacy injects false Rx data; newrx sync corrupted | Pharmacy data is WENO's responsibility (outside Encore OS control). NewRx sync data is returned via HTTPS (TLS provides integrity). Encore OS validates CSV/JSON structure on ingest; malformed rows are skipped with logged error. Sync is idempotent (dedupe on sync run ID + rx reference). No alteration by Encore OS. Sync data is **immutable** in charts (clinical notes authored by providers, not overwritten by sync data; sync creates separate `ce_medication_update` event). | ✅ Implemented | No HMAC or signature on WENO response; reliance on TLS only. WENO response integrity depends on WENO's internal controls (BAA requirement). | | **§164.312(e)(1) Transmission Security** — Mechanism to protect PHI in transit | MITM attack; PHI exposed in HTTP | All WENO requests use HTTPS with TLS 1.2+ (enforced by browser + Supabase runtime). Supabase edge function environment uses only HTTPS outbound (no HTTP). Patient payload is encrypted (AES-256) **inside** the HTTPS request (defense-in-depth). Credentials are never transmitted (server-side construction only). | ✅ Implemented | TLS relies on browser's certificate pinning (standard; not custom). No additional encryption layer beyond TLS (AES-256 is application-layer; TLS is transport-layer). | | **§164.312(e)(2)(i) Encryption** — Encryption of ePHI at rest and in transit | ePHI stored unencrypted in operational logs; breach leaks patient data | Operational tables (`cl_weno_*_runs`) store **metadata only** (counts, field counts, hashes, correlation IDs). NO patient names, Rxs, or diagnoses in logs. Audit logs (`pf_audit_logs`) are encrypted-at-rest by Supabase KMS. Per 45 CFR §164.514(b)(2), `metadata` field in launch logs must not contain Safe Harbor identifiers. Policy enforced via code review + static analysis (not automated enforcement). | ✅ Intended | Metadata field is a JSONB string; static analysis (e.g., PII regex) would strengthen enforcement. Currently: code-review gate only. | ### 3.3 Physical Safeguards (45 CFR §164.310) **Determination:** Not Encore OS's responsibility — WENO and Supabase own physical security. | Area | Control | Owner | | ------------------------- | -------------------------------------------------------------------------------------------- | ------------------------ | | **Facility Access** | Supabase data centers (SOC 2 Type II certified); WENO offices (WENO responsibility) | Supabase + WENO | | **Workstation Policy** | Prescriber workstations are Encore OS client environments; not regulated by this integration | Client / End-user org IT | | **Device/Media Controls** | No removable media involved in WENO integration; network traffic only | N/A | *** ## 4. 42 CFR Part 2 Safeguards (SUD Confidentiality) **Scope:** Controlled substances (Schedule II–V), including MOUD (opioid agonists/antagonists) and psychiatric medications used for SUD, are subject to 42 CFR Part 2 extra confidentiality protection. | Control | Mechanism | Status | | ------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------- | | **Consent before SUD Rx disclosure** | `cl_weno_launch` calls `cl_check_sud_consent(chart_id)` before transmitting patient data. If no valid consent, returns `SUD_CONSENT_REQUIRED` error; ComposeRx iFrame not launched. | ✅ Implemented (CL-11) | | **No SUD inferences from data** | Patient data sent to WENO does not include SUD flag or diagnosis. WENO infers SUD based on drug NDC only (vendor responsibility). | ✅ Design (no SUD context sent) | | **Redisclosure gating** | WENO does not re-disclose Rx data to third parties without consent (BAA requirement §2.32). | BAA requirement — WENO responsibility | | **Disclosure logging** | Sync data that updates CL charts is logged as a PHI access/update event in `pf_audit_logs` with consent reference. | Pending (CL-05 finalization) | *** ## 5. Audit Trail Immutability & Retention **Requirement:** 45 CFR §164.312(a)(2) and 42 CFR Part 2 §2.31 mandate immutable audit logs for a minimum retention period. | Table | Immutability | Retention | Owner | | ---------------------------------------- | ----------------------------------------------------------- | ------------------------- | --------- | | `cl_weno_launch_attempts` | INSERT only (RLS DELETE forbidden); trigger prevents UPDATE | 2 years (PF-04 lifecycle) | Encore OS | | `cl_weno_directory_ingest_runs` | INSERT only | 2 years (PF-04 lifecycle) | Encore OS | | `cl_weno_newrx_sync_runs` | INSERT only | 2 years (PF-04 lifecycle) | Encore OS | | `pf_audit_logs` (credential vault reads) | INSERT only | 2 years (PF-04 lifecycle) | Encore OS | **2-Year Retention Enforcement:** PF-04 (audit trail system) implements a cron job that purges audit rows older than 2 years. HIPAA requires 6 years for some records (e.g., breach notification); PF-04 is configurable per organization via `audit_retention_days` in `pf_organizations.custom_fields`. **Compliance action:** Ensure `audit_retention_days >= 2190` (6 years) for organizations handling SUD data or covered under state Medicaid (CL-15 requirement). *** ## 6. Breach Notification & Incident Response **HIPAA Breach Definition** (45 CFR §164.400): Unauthorized acquisition, access, use, or disclosure of PHI that reasonably compromises confidentiality or integrity. ### 6.1 Detection & Escalation | Event | Detection Method | Escalation Path | Timeline | | ------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------- | --------------------------------------------------------- | | WENO system breach (affects Encore OS data) | WENO security team notifies Encore OS CSO | CSO → Compliance Officer → Legal → Affected Patients | WENO contractually obligated to notify within 48–72 hours | | Credential theft (WENO password accessed) | Unusual launch attempt pattern (spike in errors, failed auth); manual review of `cl_weno_launch_attempts` | Support ticket → CSO → Breach assessment | Immediate (upon detection) | | Sync data corruption (malformed Rx in newrx-sync) | Audit log anomaly; sync run with unusually high skip/error count | Data integrity review; restore from clean sync | Within 24 hours | | Unauthorized vault access (EZ key compromise) | Supabase audit log indicates vault update by unauthorized role | CSO escalates to Supabase Security; reset key; notify WENO | Immediate (upon detection) | ### 6.2 Breach Risk Determination **Low Risk** (no notification required per 45 CFR §164.404): Unauthorized access where person is unlikely to have obtained, accessed, or acquired PHI (e.g., log file accessed but inaccessible without decryption key). **High Risk** (notification required): Unauthorized access where person could have obtained PHI (e.g., vault key exposed in code repository; credentials sent in plaintext). **Actions upon high-risk breach:** 1. Immediate: Disable affected credentials; rotate EZ key; stop all WENO traffic. 2. Within 24 hours: Notify CSO, Compliance Officer, Legal. 3. Within 30 days: Notify affected patients (per 45 CFR §164.404(b)(1)). 4. Within 60 days: Notify relevant media (if ≥500 residents affected per 45 CFR §164.404(c)). 5. Within 60 days: Notify HHS Office for Civil Rights (OCR) (per 45 CFR §164.406). *** ## 7. Residual Risks & Mitigations | Risk | Severity | Mitigation | Owner | Timeline | | --------------------------------------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------- | ---------------------------- | | **No BAA executed** | Critical | Gate `weno_adapter_enabled` flag (already implemented). Legal must negotiate + sign WENO BAA before enabling in production. | Legal + CSO | Before production enablement | | **Per-prescriber credential audit trail missing** | Medium | Audit logs associate launches with user\_id but not which WENO credential was used (shared credentials). Follow-up: CL-06-EN-23 enhancement to track per-credential usage. | CL-06 owner | Post-MVP enhancement | | **Breach escalation SOP not documented** | Medium | Create WENO\_INCIDENT\_RESPONSE.md with CSO/Legal/Compliance escalation contacts, notification timelines, and patient notification template. | CSO + Compliance | Before production enablement | | **Fixed IV + shared EZ key** | Medium | WENO vendor constraint (not Encore OS choice). Compromise of EZ key affects all org's Rxs for its validity period. Mitigation: annual key rotation (add to PF-96 jurisdiction compliance config); immediate key rotation on suspicion of compromise. | Platform / Security | Post-MVP enhancement | | **Metadata validation not automated** | Low | `metadata` field in audit logs must not contain Safe Harbor identifiers. Currently: code-review gate. Add static analysis (PII regex) to CI/CD to flag violations. | Engineering / Security | Post-MVP enhancement | | **Emergency credential access procedure not in UI** | Low | Runbook exists (WENO\_LIVE\_VERIFICATION\_RUNBOOK.md) but not surfaced in admin UI. Add "Reset WENO Encryption Key" action to WenoCredentialsCard. | CL-06 owner | Post-MVP enhancement | | **NewRx sync not mandatory** | Low | Sync job can fail silently (vendor unreachable). No alert if sync is stale. Mitigation: FW-26 (automation) adds sync-failure alerting when implemented. | FW-26 owner | Q3 2026 | | **Supabase vault compromise** | High | Same as all platform secrets (organization credentials, API keys). Reliance on Supabase SOC 2 Type II certification and KMS. No Encore OS-layer mitigation; architectural assumption. | Platform / Security | Architectural baseline | *** ## 8. Attestation ### 8.1 Risk Assessment Completed **Attestation:** A formal HIPAA Security Rule risk assessment of the WENO Online EZ e-prescribing integration has been completed as of 2026-06-28. The assessment: * ✅ Identifies WENO as a HIPAA Business Associate. * ✅ Documents all PHI data elements and flows (§1). * ✅ Maps threats to HIPAA Administrative, Technical, and Physical Safeguards (§3). * ✅ Confirms 42 CFR Part 2 (SUD) gating controls are in place (§4). * ✅ Verifies audit trail immutability and retention (§5). * ✅ Establishes breach detection and incident response procedures (§6). * ✅ Identifies residual risks and mitigation timelines (§7). This document is the baseline for ongoing compliance monitoring and annual re-assessment. ### 8.2 Production Enablement Gate **Critical Prerequisite:** Before `weno_adapter_enabled` is set to `true` in any production environment: 1. **Business Associate Agreement:** A signed HIPAA BAA with WENO Online, Inc. must be on file with Encore OS Legal/Compliance, reviewed by CSO, and documented in `cl_module_settings.custom_fields.weno_baa_executed_date`. 2. **Compliance Review:** Encore OS Compliance Officer confirms BAA compliance with 45 CFR §164.504(e) and state-specific Medicaid regulations (per PF-96 jurisdiction profile). 3. **Incident Response Plan:** WENO\_INCIDENT\_RESPONSE.md exists and defines breach escalation, notification timelines, and organizational contacts. **Responsibility:** Compliance Officer (annually) + CSO (on material integration changes). ### 8.3 WENO EZ Integration Test Plan §10 Compliance This risk assessment satisfies Test Plan item §10 ("**HIPAA/HITECH attestation** — risk assessment done? BA-compliance statement.") with: * Formal risk assessment document (this file). * Business Associate status determination (§2.1). * Threat/safeguard mapping per HIPAA Security Rule (§3). * Residual risk acknowledgment (§7). * BAA prerequisite gate (§8.2). * Production enablement conditions (§8.2). **Evidence artifacts:** * This document: `docs/compliance/WENO-HIPAA-RISK-ASSESSMENT.md` * Integration contract: `docs/architecture/integrations/CL-06-EN-23-weno-ez-adapter-INTEGRATION.md` * Implementation context: `docs/weno/WENO_EZ_Integration_Context.md` * RLS/audit controls: `src/cores/cl/integrations/weno/` code + test suite * BAA placeholder: `cl_module_settings.custom_fields.weno_baa_executed_date` (to be populated upon BAA execution) *** ## 9. References ### Regulatory Citations * **45 CFR Part 160** — General Administrative and Procedural Requirements. * **45 CFR Part 164** — Security and Privacy Rule. * §164.308 — Administrative Safeguards. * §164.310 — Physical Safeguards. * §164.312 — Technical Safeguards. * §164.502(e) — Permitted uses and disclosures by a covered entity — Business Associates. * §164.504(e) — Business Associate Contracts or Other Arrangements. * §164.514(b) — De-identification Standard (Safe Harbor). * **45 CFR §164.400 et seq.** — Breach Notification Rule. * **42 CFR Part 2** — Confidentiality of Alcohol and Drug Abuse Patient Records (42 CFR §2.31 disclosure logging; §2.32 redisclosure restriction). * **21 CFR Part 1311** — DEA e-Prescribing for Controlled Substances (EPCS) compliance (WENO requirement). ### Encore OS Documents * `constitution.md` §4 (Data, Security & Privacy). * `docs/COMPLIANCE_STANDARDS.md` (if exists; placeholder for global compliance framework). * `docs/weno/WENO_EZ_Integration_Context.md` — vendor implementation guide. * `docs/weno/WENO_LIVE_VERIFICATION_RUNBOOK.md` — operational procedures. * `specs/cl/specs/CL-06-EN-23-weno-ez-integration-adapter.md` — owning specification. * `specs/cl/specs/CL-11-consent-management-42cfr-part2.md` — 42 CFR Part 2 consent controls. * `specs/cl/specs/CL-04-EN-66-note-quality-pre-submission-validation.md` — Policy 940 validation (Medicaid context). * `specs/pf/specs/PF-04-audit-trail-system.md` — audit trail lifecycle and retention. * `specs/pf/specs/PF-96-medicaid-state-compliance-configuration.md` — jurisdiction profile system. *** **Document Version:** 1.0\ **Last Updated:** 2026-06-28\ **Next Review Date:** 2027-06-28 (or upon material integration changes) # 42 CFR Part 2 Gating for Trauma Assessments — Compliance Evidence Source: https://docs.encoreos.io/compliance/evidence/42cfr-part2-evidence-cl-02-en-58 Evidence that trauma assessments on SUD-flagged charts are consent-gated per 42 CFR Part 2, with controls and verification. **Feature ID:** CL-02-EN-58\ **Regulation:** 42 CFR Part 2 (Confidentiality of SUD Patient Records)\ **Date:** 2026-03-04\ **Status:** ✅ Compliant *** ## Requirement Trauma assessment data for patients with SUD (substance use disorder) indicators must be consent-gated per 42 CFR Part 2. Access to create, view, or save trauma assessments on SUD-flagged charts requires active consent verification. ## Implementation Evidence ### 1. Consent Gating * **Hook:** `useConsentCheck(chartId, 'trauma_assessment')` from `@/platform/clinical/consent/useConsentCheck.ts` * **RPC:** `cl_check_sud_consent(p_chart_id, p_record_type, p_requesting_user)` — SECURITY DEFINER function * **Behavior:** When `cl_patient_charts.flags.sud_indicated = true` and consent is not active, the `TraumaAssessmentForm` displays an inline block message: "Consent required to view or save trauma assessment. Please obtain consent in the consent module." * **Non-SUD charts:** Consent check is bypassed (no consent required for non-SUD patients per 21st Century Cures Act). ### 2. Psychotherapy Notes Exclusion * Trauma assessment narrative fields (clinician observations for LEC-5/BTQ) are stored in assessment result JSONB (`cl_assessment_sections.responses`), NOT in a separate psychotherapy notes table. * No psychotherapy notes (as defined by HIPAA §164.501) are created by this feature. * Future CL-30 (Psychotherapy Notes Protection) will address separate psychotherapy note storage if needed. ### 3. Disclosure Auditing * Disclosure logging via `cl_disclosure_log` is handled by the existing CL-11 infrastructure when SUD records are accessed. * No additional disclosure logging was required for EN-58. ### 4. Permission Controls * Trauma assessment access requires `cl.assessment.create` (start) and `cl.assessment.manage` (save/edit). * View access requires `cl.assessment.view`. * All permission checks use `useHasPermission` / `PermissionGate` — no hardcoded role checks. ## Test Coverage * Unit tests: `tests/unit/cl/traumaScoring.test.ts` — scoring accuracy with de-identified data * Consent gating verified via `useConsentCheck` integration in `TraumaAssessmentForm` ## References * CL-11 Consent Management spec: `specs/cl/specs/CL-11-consent-management-42cfr-part2.md` * CL-02-EN-58 spec: `specs/cl/specs/CL-02-EN-58-trauma-informed-assessments.md` * Integration doc: `docs/architecture/integrations/CL-02-EN-58-trauma-informed-assessments-INTEGRATION.md` # 42 CFR Part 2 Electronic Consent & Redisclosure — Compliance Evidence Source: https://docs.encoreos.io/compliance/evidence/42cfr-part2-evidence-cl-11-en-01 Evidence for electronic consent capture and redisclosure controls under 42 CFR Part 2. **Feature ID:** CL-11-EN-01\ **Regulation:** 42 CFR Part 2 (Confidentiality of SUD Patient Records)\ **Status:** ✅ Implemented\ **Date:** 2026-04-10\ **Spec:** [CL-11-EN-01](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-11-EN-01-electronic-consent-42cfr-redisclosure.md) *** ## 1. Regulatory Requirements Addressed ### § 2.31 — Consent Requirements | Requirement | Implementation | Evidence | | -------------------------------------- | ------------------------------------------------------------------------------- | ----------------------------------------------------- | | Written consent with specific elements | `ConsentCaptureSheet` wizard with Zod validation (`consent-capture-schema.ts`) | Schema enforces all required fields before submission | | Granular consent categories | `consent_categories` JSONB: treatment, payment, operations, providers, research | `ConsentCategories` type in `electronic-consent.ts` | | Patient identification | `patient_id` UUID required on all consent records | DB NOT NULL constraint | | Purpose specification | Category-level granularity (treatment/payment/operations/providers/research) | Checkbox UI with at-least-one validation | | Expiration date | `expiration_date DATE` column with 30/14/7-day alert thresholds | `consent-expiration.ts` utility | | Right to revoke | `RevokeConsentDialog` with irreversibility warning; status → 'revoked' | Permission-gated (`cl.electronic-consent.revoke`) | ### § 2.32 — Prohibition on Redisclosure | Requirement | Implementation | Evidence | | ------------------------------------------------ | --------------------------------------------------------------- | ------------------------------------------------------- | | Notice must accompany disclosures | `generateRedisclosureNotice()` in `redisclosure-notice.ts` | Full federal prohibition language generated | | Notice includes federal confidentiality citation | Notice text references "42 CFR Part 2" and prohibition language | Unit tests verify presence of key phrases | | Notice includes recipient, date, purpose | Parameterized notice generation with all fields | `RecordDisclosureSheet` shows preview before submission | ### § 2.13(d) — Accounting of Disclosures | Requirement | Implementation | Evidence | | -------------- | -------------------------------------------- | ------------------------------------------ | | Who disclosed | `disclosed_by UUID` in `cl_redisclosure_log` | NOT NULL FK to `pf_profiles` | | When disclosed | `disclosed_at TIMESTAMPTZ` | NOT NULL, set at creation | | To whom | `recipient TEXT` | NOT NULL | | Purpose | `purpose TEXT` | NOT NULL | | What records | `records_disclosed JSONB` | Structured record type/date range metadata | *** ## 2. Data Model Evidence ### Tables Created | Table | Purpose | Immutability | | ------------------------ | ------------------------------------------------------ | -------------------------------------------- | | `cl_electronic_consents` | Signed consent records with e-signature and categories | Standard CRUD (revocation via status change) | | `cl_redisclosure_log` | Append-only disclosure audit trail | UPDATE/DELETE revoked + immutability trigger | ### RLS Enforcement * Both tables use `cl_has_org_access()` SECURITY DEFINER helper * `cl_redisclosure_log`: SELECT + INSERT only policies; no UPDATE/DELETE policies * Privilege revocation: `REVOKE UPDATE, DELETE ON cl_redisclosure_log FROM authenticated` * Defense-in-depth: `trg_cl_redisclosure_log_immutable` trigger raises exception on UPDATE/DELETE *** ## 3. Permission Controls | Permission Key | Purpose | Roles | | ------------------------------ | --------------------------- | -------------------------- | | `cl.electronic-consent.view` | View consent records | org\_admin, manager, staff | | `cl.electronic-consent.create` | Create new consents | org\_admin, manager, staff | | `cl.electronic-consent.revoke` | Revoke active consents | org\_admin only | | `cl.redisclosure-log.view` | View disclosure audit trail | org\_admin, manager, staff | | `cl.redisclosure-log.create` | Record new disclosures | org\_admin, manager, staff | | `cl.compliance_report.view` | View compliance dashboard | org\_admin | *** ## 4. UI Controls | Component | Permission Gate | Description | | ------------------------------ | ------------------------------ | ----------------------------------------------- | | `ElectronicConsentPage` | `cl.electronic-consent.view` | Two-tab layout (Consents + Redisclosure Audit) | | `ConsentCaptureSheet` | `cl.electronic-consent.create` | Wizard with e-signature and attestation | | `RevokeConsentDialog` | `cl.electronic-consent.revoke` | Destructive action with irreversibility warning | | `RecordDisclosureSheet` | `cl.redisclosure-log.create` | Disclosure recording with § 2.32 notice preview | | `Part2ComplianceDashboardPage` | `cl.compliance_report.view` | Aggregate-only statistics (no patient IDs) | *** ## 5. Test Evidence | Test Suite | Tests | Coverage | | --------------------------------------- | ------ | ------------------------------------------------------------ | | `consent-expiration.test.ts` | 12 | 30/14/7-day thresholds, status logic | | `redisclosure-notice.test.ts` | 8 | § 2.32 prohibition language validation | | `electronic-consent-workflow.test.ts` | 16 | Full lifecycle: draft → active → revoke; disclosure blocking | | `electronic-consent-compliance.test.ts` | 20 | § 2.31 elements, § 2.32 notices, § 2.13(d) accounting | | **Total** | **56** | All passing | *** ## 6. Route Registration * Path: `/cl/electronic-consents` * Lazy loaded via `React.lazy` * Permission guard: `RequirePermission('cl.electronic-consent.view')` *** ## 7. References * [42 CFR Part 2 Final Rule](https://www.hhs.gov/hipaa/part-2/index.html) * [CL-11-EN-01 Spec](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-11-EN-01-electronic-consent-42cfr-redisclosure.md) * [CL-11-EN-01 Integration](/architecture/integrations/electronic-consent-42cfr-redisclosure-integration) # EEO Internal Selection — Compliance Evidence Source: https://docs.encoreos.io/compliance/evidence/HR-35-eeo-internal-selection-EVIDENCE Evidence for EEO-compliant internal selection under Title VII, the EEOC Uniform Guidelines, and OFCCP recordkeeping rules. **Regulations:** Title VII (42 U.S.C. §2000e), EEOC Uniform Guidelines on Employee Selection Procedures (29 CFR Part 1607), OFCCP recordkeeping (41 CFR 60-1.12) **Date:** 2026-05-22 **Status:** ✅ Phase 1 Implemented *** ## 1. Regulatory Context Internal job postings, applications, dispositions, and transfers constitute "employee selection procedures" under the EEOC Uniform Guidelines (§1607.2(B)) and must be: * **Job-related and consistent with business necessity** (§1607.3) * **Applied uniformly** across all eligible internal applicants * **Documented** with sufficient records to support adverse-impact analysis for at least two years (§1607.4(A)) * **Free from retaliatory exposure** — current managers should not learn of an employee's interest in another role before the employee elects to disclose it (Title VII §704(a) anti-retaliation) *** ## 2. Controls Implemented (Phase 1) ### 2.1 Privacy Default (Anti-Retaliation) | Control | Implementation | Evidence | | ---------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------ | | `notify_current_manager` defaults to **false** at apply time | `hr_internal_applications.notify_current_manager BOOLEAN NOT NULL DEFAULT FALSE` | Migration `20260522033003_*.sql` | | Current manager cannot see the application until either the employee opts in OR status advances to `shortlisted` | SECURITY DEFINER helper `hr_internal_application_visible(p_application_id, p_user_id)` consulted by SELECT RLS policy | Migration `20260522033003_*.sql` (helper + policy) | | Apply UI surfaces the privacy toggle prominently with explanatory copy | `` in `src/cores/hr/components/internal-mobility/` | Component test: `useSubmitInternalApplication.test.ts` | ### 2.2 Standardized Disposition Codes (Adverse-Impact Analysis) | Control | Implementation | Evidence | | ------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------- | | Terminal status (`rejected` / `declined` / `withdrawn`) requires a `disposition_code` | Trigger `trg_hr_internal_apps_validate_disposition` (BEFORE INSERT/UPDATE) raises `hr.internal_application.disposition_required` | Migration `20260522033003_*.sql` | | Disposition values constrained to EEOC-aligned picklist `hr_application_disposition` | PF-15 picklist seeded per-org by `hr_35_seed_disposition_picklist_for_org()` | Migration `_hr_35_seed_disposition_picklist_for_org.sql` (T1.7) | | Seeded codes | `selected_other_candidate`, `not_qualified`, `withdrew_application`, `position_closed`, `did_not_respond`, `failed_background_check`, `failed_reference_check`, `other` | Same migration; `metadata` extensible per tenant | | New orgs auto-receive picklist | AFTER INSERT trigger `trg_hr_35_seed_disposition_picklist` on `pf_organizations` | Same migration | ### 2.3 Audit Trail (29 CFR 1607.4(A)) | Control | Implementation | Evidence | | --------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | ------------------------------------------------------------ | | Every status transition recorded with actor + timestamp + disposition | `hr_internal_application_stage_audit` table (append-only) populated by `transitionStatus()` library | `src/cores/hr/lib/internal-applications/transitionStatus.ts` | | Append-only enforcement | RLS denies UPDATE/DELETE on `hr_internal_application_stage_audit` | Migration `20260522033003_*.sql` | | Tenant isolation | `organization_id` + `FORCE ROW LEVEL SECURITY` on all three HR-35 tables | Same migration | | Retention | Records retained indefinitely (no scheduled purge); satisfies 2-year minimum | N/A | ### 2.4 Compliance Export | Control | Implementation | Evidence | | ------------------------------------------------------------------------------------------- | ------------------------------------------- | --------------------------------------- | | Permission-gated CSV export of internal applicant pool | `hr.internal_application.report` permission | `src/platform/permissions/constants.ts` | | Export **excludes** narrative `cover_note` (subjective text not used in selection analysis) | Export builder field allow-list | (Implementation pending T13 — tracked) | ### 2.5 Event Publishing (Downstream Audit) | Event | Payload | PHI? | | ----------------------------------- | ------------------------------------------------------------------------ | ---- | | `hr_internal_application_submitted` | `application_id`, `employee_id`, `position_id`, `notify_current_manager` | No | | `hr_internal_application_advanced` | `application_id`, `from_status`, `to_status`, `disposition_code` | No | | `hr_employee_transferred` | `employee_id`, `from_position_id`, `to_position_id`, `effective_date` | No | All three events are registered in `KnownEventName` (`src/platform/events/types.ts`) for type-safe publishing. *** ## 3. Open Items * **T13 Compliance CSV export** — endpoint exists in plan, full builder pending. * **HR-15 pay-preview integration** — promotion pay-change preview deferred to Phase 2. * **Adverse-impact reporting widget** — deferred (recruiter dashboard surfaces raw counts only in Phase 1). *** ## 4. References * Spec: [`specs/hr/specs/HR-35-internal-mobility-talent-marketplace.md`](https://github.com/Encore-OS/encoreos/blob/development/specs/hr/specs/HR-35-internal-mobility-talent-marketplace.md) * Integration: [`docs/architecture/integrations/HR-35-internal-mobility-INTEGRATION.md`](https://github.com/Encore-OS/encoreos/blob/development/docs/architecture/integrations/HR-35-internal-mobility-INTEGRATION.md) * Implementation log: [`specs/hr/IMPLEMENTATION_LOG.md`](https://github.com/Encore-OS/encoreos/blob/development/specs/hr/IMPLEMENTATION_LOG.md) (2026-05-22 entry) * EEOC Uniform Guidelines: [https://www.ecfr.gov/current/title-29/subtitle-B/chapter-XIV/part-1607](https://www.ecfr.gov/current/title-29/subtitle-B/chapter-XIV/part-1607) # EEOC / Title VII Compliance Evidence Source: https://docs.encoreos.io/compliance/evidence/en1-eeoc-title-vii-evidence Evidence that interview scorecards and selection procedures align with Title VII and the EEOC Uniform Guidelines. **Regulations:** Title VII of the Civil Rights Act, EEOC Uniform Guidelines on Employee Selection Procedures\ **Date:** 2026-03-25\ **Status:** ✅ Implemented *** ## 1. Regulatory Context Title VII and the EEOC Uniform Guidelines require that employee selection procedures (including interviews) be: * **Job-related and consistent with business necessity** (§1607.3) * **Applied uniformly** to all candidates for a given position * **Free from discriminatory bias** in both design and application * **Documented** with sufficient records for adverse impact analysis (§1607.4) Structured interviews with standardized scoring criteria are recognized best practice for demonstrating compliance. *** ## 2. Controls Implemented ### 2.1 Standardized Evaluation Criteria | Control | Implementation | Evidence | | ------------------------------------- | ---------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | | Pre-defined competencies per position | `hr_interview_scorecard_templates.competencies` JSONB with name, description, weight, category | Migration: `20260325132353_ebf0fec5-db63-41ec-9656-95b6b12e9bb4.sql` creates table with NOT NULL competencies | | Consistent rating scale | `hr_interview_scorecard_templates.rating_scale` JSONB with min, max, labels | Zod schema validation: `ratingScaleSchema` in `ats-scorecards.ts` | | Template assignment to job postings | `hr_job_postings.default_scorecard_template_id` FK | All candidates for a posting use the same template | | Weighted scoring formula | `computeOverallScore()` in `interviewScorecard.ts` | Unit tested (13 tests in `interviewScorecard.test.ts`) | ### 2.2 Blind Evaluation (Bias Prevention) | Control | Implementation | Evidence | | -------------------------------------------------------- | ----------------------------------------------------------------------------------- | ------------------------------------------------------------ | | Interviewers cannot see others' scores before submitting | RLS policy using `hr_scorecard_interviewer_has_submitted()` SECURITY DEFINER helper | Migration lines 92-101: SELECT policy restricts visibility | | Submission lock | `is_submitted` flag; once true, scorecard is immutable | CHECK constraint + application-level enforcement | | Independent evaluation | Each interviewer completes their own scorecard independently | No shared editing; individual `interviewer_id` per scorecard | ### 2.3 Audit Trail | Control | Implementation | Evidence | | ------------------------------------ | --------------------------------------------------- | ------------------------------------------ | | Scorecard creation/update timestamps | `created_at`, `updated_at` columns with defaults | Standard audit columns in migration | | Actor tracking | `created_by`, `updated_by` UUID FK to `pf_profiles` | Tracks who created/modified each scorecard | | Submission timestamp | `completed_at` timestamp set on submission | Immutable after submission | | Tenant isolation | RLS + `organization_id` on all tables | Prevents cross-org data leakage | ### 2.4 Recommendation Constraints | Control | Implementation | Evidence | | ---------------------------------- | -------------------------------------------------------------------- | ---------------------------------------------- | | Standardized recommendation values | CHECK constraint: `strong_hire`, `hire`, `no_hire`, `strong_no_hire` | Migration CHECK constraint on `recommendation` | | Aggregate recommendation view | `countRecommendations()` utility + Comparison Grid | Shows distribution across all interviewers | *** ## 3. Documentation & Recordkeeping Per EEOC §1607.15, organizations must maintain records of selection procedures and their impact: * **Scorecard data** is retained indefinitely in `hr_interview_scorecards` (no TTL/purge) * **Template history** preserved via `is_active` soft-disable (templates are not deleted) * **PDF export** capability allows generation of compliance-ready documentation * **Comparison Grid** provides aggregate view for adverse impact analysis *** ## 4. Gaps and Recommendations | Item | Status | Notes | | --------------------------------------------- | ------------------------- | ------------------------------------------------------------------- | | Adverse impact ratio calculator (4/5ths rule) | 🔲 Not implemented | Recommended for Phase 2; can be built from scorecard aggregate data | | Competency validation against job analysis | 🔲 Manual process | Templates should be reviewed by HR/Legal to ensure job-relatedness | | Interviewer calibration training | 🔲 Organizational process | Not a system feature; recommended as operational procedure | | Retention policy documentation | 🔲 Pending | Define retention periods per state/federal requirements | *** ## 5. Testing Evidence * **Unit tests:** 13 tests covering `computeOverallScore`, `countRecommendations`, `averageOverallScores` * **RLS tests:** `hr-interview-scorecard-templates.rls.test.ts`, `hr-interview-scorecards.rls.test.ts` — tenant isolation, cross-org blocking * **E2E tests:** `ats-scorecard-workflow.spec.ts` — route rendering, skeleton loading, breadcrumbs *** ## 6. References * [EEOC Uniform Guidelines on Employee Selection Procedures](https://www.eeoc.gov/laws/guidance/uniform-guidelines-employee-selection-procedures-1978) * [Title VII of the Civil Rights Act](https://www.eeoc.gov/statutes/title-vii-civil-rights-act-1964) * [HR-09-ENHANCEMENTS Spec](https://github.com/Encore-OS/encoreos/blob/development/specs/hr/specs/HR-09-ENHANCEMENTS.md) * [REGULATORY\_COMPLIANCE\_TRACKER.md](/compliance/REGULATORY_COMPLIANCE_TRACKER) # HIPAA & CMS VBP Compliance Evidence Source: https://docs.encoreos.io/compliance/evidence/hipaa-cms-vbp-evidence All UPDATE policies include WITH CHECK to prevent organization_id modification. **Date:** 2026-03-01\ **Status:** ✅ Complete *** ## RLS Coverage | Table | RLS Enabled | FORCE RLS | SELECT | INSERT | UPDATE (WITH CHECK) | DELETE | | --------------------------- | :---------: | :-------: | :--------------------: | :--------------------: | :--------------------: | :--------------------: | | `pm_vbp_programs` | ✅ | ✅ | ✅ pm\_has\_org\_access | ✅ pm\_has\_org\_access | ✅ pm\_has\_org\_access | ❌ (soft delete) | | `pm_vbp_measures` | ✅ | ✅ | ✅ pm\_has\_org\_access | ✅ pm\_has\_org\_access | ✅ pm\_has\_org\_access | ✅ pm\_has\_org\_access | | `pm_vbp_incentive_payments` | ✅ | ✅ | ✅ pm\_has\_org\_access | ✅ pm\_has\_org\_access | ✅ pm\_has\_org\_access | ✅ pm\_has\_org\_access | All UPDATE policies include `WITH CHECK` to prevent `organization_id` modification. ## Permission Coverage | Key | Category | Seeded | UI Gates | | --------------- | -------- | :----: | -------------------------------------------------------------------------- | | `pm.vbp.view` | view | ✅ | Program list, detail, measures tab, incentives tab | | `pm.vbp.manage` | edit | ✅ | Add/Edit/Archive program, Add/Edit/Delete measure, Add/Edit/Delete payment | ## Audit Columns All three tables include: `created_at`, `updated_at`, `created_by`, `updated_by`. Programs also include `deleted_at` for soft delete audit trail. All tables have `pm_set_updated_at` triggers. ## Multi-Tenant Isolation * All mutations include `.eq('organization_id', orgId)` defense-in-depth filtering. * RLS uses `pm_has_org_access(organization_id, auth.uid())` SECURITY DEFINER helper. * No direct queries to `pf_user_role_assignments` in RLS policies. ## PHI Considerations * VBP program and measure data does not contain direct PHI. * Future gap identification (patient attribution) will require PHI access controls per CL-10/CL-15 integration specs. * No PHI is used in test data; all test values are synthetic. # HIPAA EDI Compliance Evidence Source: https://docs.encoreos.io/compliance/evidence/hipaa-edi-evidence Regulation: HIPAA EDI (45 CFR 162), HIPAA Security Rule (45 CFR 164) **Regulation:** HIPAA EDI (45 CFR 162), HIPAA Security Rule (45 CFR 164) *** ## 1. X12 5010 Transaction Support | Transaction | Standard | Implementation | Status | | ----------- | ------------ | ------------------ | ------------- | | 837P | 005010X222A1 | `generate-837p.ts` | ✅ Implemented | | 835 | 005010X221A1 | `parse-835.ts` | ✅ Implemented | | 270 | 005010X279A1 | `generate-270.ts` | ✅ Implemented | | 271 | 005010X279A1 | `parse-271.ts` | ✅ Implemented | | 999 | 005010X231A1 | `parse-999.ts` | ✅ Implemented | | 277CA | 005010X214 | `parse-277ca.ts` | ✅ Implemented | ## 2. Credential Security (45 CFR 164.312(a)(2)(iv)) * Credentials stored as Edge Function Secrets (Deno.env.get) * No credentials in database, logs, or application state * Vault references in `pm_clearinghouse_config` are logical pointers only * OAuth2 tokens are short-lived and not persisted ## 3. Transport Security (45 CFR 164.312(e)(2)(ii)) * All Waystar API communication uses HTTPS (TLS 1.2+) * REST transport enforced; no unencrypted channels * SFTP deferred (would also require TLS/SSH encryption) ## 4. Audit Trail (45 CFR 164.312(b)) * All transactions logged to `pm_transaction_log` (append-only) * Metadata captured: timestamp, transaction type, direction, status, trace number, batch\_id * Batch lifecycle tracked in `pm_transaction_batches` * No PHI in log entries (trace numbers and status only) ## 5. Tenant Isolation (Constitution §5.1) * All clearinghouse tables scoped by `organization_id` * RLS with FORCE prevents cross-tenant access * Edge functions validate `organization_id` on all operations ## 6. Test Evidence * Unit tests: `tests/unit/pm/x12/` (envelope, 837P, 835, 270/271, 999, 277CA) * Component tests: `tests/unit/pm/components/ClearinghouseHealthBadge.test.tsx` *** ## Sign-Off Status See `specs/pm/PM-15-P2-COMPLIANCE-SIGNOFF.md` for compliance sign-off checklist. # Multi-Vendor Clearinghouse Failover — Compliance Evidence Source: https://docs.encoreos.io/compliance/evidence/hipaa-edi-failover-evidence The X12 5010 transaction inventory (837P, 835, 270/271, 999, 277CA) is unchanged and remains the canonical evidence for transport conformance. **Plan:** [PM-15-P2-EN-01-PLAN](https://github.com/Encore-OS/encoreos/blob/development/specs/pm/plans/PM-15-P2-EN-01-clearinghouse-multi-vendor-failover-PLAN.md) **Tasks:** [PM-15-P2-EN-01-TASKS](https://github.com/Encore-OS/encoreos/blob/development/specs/pm/tasks/PM-15-P2-EN-01-TASKS.md) **Context:** [PM-15-P2-EN-01-CONTEXT](https://github.com/Encore-OS/encoreos/blob/development/specs/pm/specs/PM-15-P2-EN-01-CONTEXT.md) **Implementation Log:** [specs/pm/IMPLEMENTATION\_LOG.md](https://github.com/Encore-OS/encoreos/blob/development/specs/pm/IMPLEMENTATION_LOG.md) → PM-15-P2-EN-01 entry **Sign-Off:** [PM-15-P2-EN-01-COMPLIANCE-SIGNOFF.md](https://github.com/Encore-OS/encoreos/blob/development/specs/pm/reviews/PM-15-P2-EN-01-COMPLIANCE-SIGNOFF.md) **Regulations:** * 45 CFR 162 — X12 5010 transaction continuity * 45 CFR 164.308(b)(1), 164.502(e) — Business Associate Agreement (BAA) controls * 45 CFR 164.312(a)(2)(iv) — Credential encryption at rest * 45 CFR 164.312(b) — Audit controls * 45 CFR 164.312(e)(2)(ii) — PHI encryption in transit *** ## 1. Scope PM-15-P2-EN-01 extends the PM-15-P2 single-vendor (Waystar) baseline with: * Secondary clearinghouse adapters (Availity, Change Healthcare) gated behind a recorded BAA approval per organization. * Per-payer route overrides (`pm_payer_clearinghouse_routes`). * Health-aware failover with a configurable degradation threshold (`pm_clearinghouse_config.failover_*`). * Audited failover transitions (config changes + runtime route flips) written to `pm_audit_log`. The PM-15-P2 X12 5010 transaction inventory (837P, 835, 270/271, 999, 277CA) is unchanged and remains the canonical evidence for transport conformance. ## 2. Vendor Adapter Inventory | Vendor | Adapter | Source | Status | | ----------------- | -------------------------------------- | ------------------------------------------------------------------ | ----------------------- | | Waystar | `WaystarClearinghouseAdapter` | `src/cores/pm/services/clearinghouse/waystar-adapter.ts` | ✅ Production (PM-15-P2) | | Availity | `AvailityClearinghouseAdapter` | `src/cores/pm/services/clearinghouse/availity-adapter.ts` | 🟡 Stub — gated by BAA | | Change Healthcare | `ChangeHealthcareClearinghouseAdapter` | `src/cores/pm/services/clearinghouse/change-healthcare-adapter.ts` | 🟡 Stub — gated by BAA | Stubs MUST NOT carry PHI until the secondary's BAA gate (§4) is satisfied **and** transport hardening is signed off. ## 3. Routing Precedence (Continuity — 45 CFR 162) Implemented by `resolveVendorRoute()` (`src/cores/pm/services/clearinghouse/router.ts`). Pure, deterministic, unit-tested. 1. Per-payer override (`pm_payer_clearinghouse_routes.preferred_vendor`). 2. Configured primary vendor (`pm_clearinghouse_config.clearinghouse_provider`). 3. Configured secondary vendor — only when failover is enabled, secondary is configured, and the primary has been continuously unhealthy for ≥ `failover_threshold_minutes`. In-flight transactions are never re-routed; the router is consulted at submission time only. **Tests:** `src/cores/pm/services/clearinghouse/router.test.ts` (6 cases — payer override, disabled failover, no secondary, healthy primary, threshold-not-met, threshold-met failover). ## 4. BAA Gate (45 CFR 164.308(b)(1), 164.502(e)) * The Failover Settings UI (`src/cores/pm/components/clearinghouse/FailoverSettingsCard.tsx`) reads `pm_clearinghouse_config.custom_fields.baa_approved_vendors: string[]`. * The **Save** action and the failover-enabled toggle are blocked when the chosen secondary vendor is not present in the approved list. * User-visible copy when blocked: *"This vendor cannot be enabled until compliance approval is recorded."* (per `PM-15-P2-EN-01-CONTEXT.md` §Example Phrasing). * Storage location is interim — a dedicated `pm_clearinghouse_baa_approvals` table is tracked as a follow-up in `specs/pm/IMPLEMENTATION_LOG.md`. ## 5. Audit Controls (45 CFR 164.312(b)) Two complementary audit paths, both PHI-free: | Trigger | Action | Source | | ----------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------- | | Admin saves failover settings | `pm_audit_log.action = 'failover_config_change'` with prior/new `secondary_vendor`, `failover_enabled`, `failover_threshold_minutes` | `useUpdateFailoverConfig()` in `src/cores/pm/hooks/useClearinghouseFailover.ts` | | Runtime router flips vendor for an (org, payer) scope | `pm_audit_log.action = 'clearinghouse_route_failover'` with prior vendor, new vendor, routing reason, payer scope, actor | `resolveVendorRouteWithAudit()` in `src/cores/pm/services/clearinghouse/audit.ts` | Runtime emission is deduplicated by an in-memory (org, payer) cache so steady-state routing does not spam the audit log; only transitions are written. Failures are sent to Sentry and never block transaction submission. **Tests:** `src/cores/pm/services/clearinghouse/audit.test.ts` (4 cases — first decision, dedupe on no-op, transition row, payer scoping). ## 6. Credential & Transport Security (45 CFR 164.312(a)(2)(iv), 164.312(e)(2)(ii)) Inherits all PM-15-P2 controls. No additional credential surface is introduced by EN-01: * Vendor credentials remain in Edge Function Secrets (`Deno.env.get`); no credentials in DB, logs, or app state. * All vendor traffic is HTTPS (TLS 1.2+); REST-only transport (SFTP deferred). * Failover settings store only vendor codes, booleans, and integer thresholds — no credentials, no PHI. ## 7. Tenant Isolation (Constitution §5.1) * `pm_clearinghouse_config`, `pm_payer_clearinghouse_routes`, and `pm_audit_log` are all `organization_id`-scoped with `FORCE ROW LEVEL SECURITY`. * All hooks scope reads/writes by `useOrganization()` and filter mutations on `organization_id`. * RLS test: `tests/rls/pm/pm-clearinghouse-failover.test.ts`. ## 8. Test Inventory | Layer | Path | | ---------------------- | ---------------------------------------------------- | | Router unit | `src/cores/pm/services/clearinghouse/router.test.ts` | | Runtime audit unit | `src/cores/pm/services/clearinghouse/audit.test.ts` | | RLS / tenant isolation | `tests/rls/pm/pm-clearinghouse-failover.test.ts` | ## 9. Seed Test Data Synthetic, PHI-free fixtures scoped to NorthSight Recovery: `supabase/seeds/pm/pm-15-p2-en-01-test-data.sql` (`Test-PM-15-P2-EN-01-Normal`, `-Edge`, `-Empty`). Apply via Supabase Studio SQL editor against the dev project. ## 10. Open Follow-Ups Tracked in `specs/pm/IMPLEMENTATION_LOG.md` → PM-15-P2-EN-01: * Mobile Sheet variant for `PayerRoutesTable` add/edit flows. * Replace ad-hoc empty-state copy with shared ``. * Edge-function (server-side) clearinghouse transport for the secondary adapters. * Dedicated `pm_clearinghouse_baa_approvals` table to replace the JSONB interim store. * Server-side router-driven audit emission once submission moves to edge functions (current emission is client-side only). *** ## Sign-Off Status See [PM-15-P2-EN-01-COMPLIANCE-SIGNOFF.md](https://github.com/Encore-OS/encoreos/blob/development/specs/pm/reviews/PM-15-P2-EN-01-COMPLIANCE-SIGNOFF.md) for the compliance officer checklist. # HIPAA / 42 CFR Part 2 / AHCCCS 320-O Compliance Evidence Source: https://docs.encoreos.io/compliance/evidence/hipaa-part2-320o-evidence Evidence for the lead-to-patient conversion pipeline under HIPAA, 42 CFR Part 2, and AHCCCS 320-O. ## 1. HIPAA (45 CFR 164.502, 164.312(b)) ### Controls | Control | Implementation | Evidence | | --------------------- | ---------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | | PHI in transit | TLS enforced by Supabase platform (default) | Platform infrastructure | | PHI in event payloads | IDs only — no names, DOB, SSN, or clinical data in `publishEvent` payloads | `src/cores/ce/hooks/useLeadMutations.ts` — payload contains `lead_id`, `contact_id`, `organization_id`, `correlation_id`, `converted_by` only | | PHI in logs | No PHI in `logger.info/error` calls; structured IDs only | `supabase/functions/event-consumer/index.ts` — logs use `correlationId`, `patientId` (UUID), never names | | PHI in toasts | Static toast messages ("Lead converted successfully") with no dynamic PHI | `src/cores/ce/hooks/useLeadMutations.ts` — toast text is static | | PHI in errors | `sanitizeErrorMessage(error)` used for all user-facing error display | CE hook error handlers | | Audit trail | `ce_lead_conversions` table — INSERT-only, no UPDATE/DELETE policies | Migration + RLS policies | | Retention | 7-year minimum per HIPAA; enforced by org retention policy alignment (PF-46) | Documented in spec; table has no auto-deletion | ### Test Coverage * RLS tests: `tests/rls/ce-lead-conversions.rls.test.ts` — org isolation, immutability * Payload audit: Event payload verified IDs-only in code review *** ## 2. 42 CFR Part 2 (SUD Confidentiality) ### Controls | Control | Implementation | Evidence | | ------------------------ | -------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | | SUD data in payloads | Not transmitted — `substance_use_history` and `clinical_flags` are NOT included in event payloads | `useLeadMutations.ts` payload construction — only IDs | | SUD data in audit | `data_mapping` JSONB field can store consent references if org configures SUD gating | Schema supports it; no SUD data stored by default | | Consent verification | Chart-scoped per CL-11 (`cl_check_sud_consent(chart_id, ...)`) when SUD data is involved | Noted in spec Clarifications; consent gating required when CE-28 wires screening data into conversion flow | | Re-disclosure prevention | No PHI/SUD data leaves CE core in events; PM subscriber fetches data server-side with service role | `event-consumer/index.ts` — server-side fetch | ### Notes * CE-29 events carry zero clinical content — they are ID-based pointers only * The PM subscriber (`handleLeadConvertedToPatient`) reads contact data server-side, never exposing it in event payloads * Full Part 2 consent enforcement is deferred to CL-11 integration per spec Clarifications *** ## 3. AHCCCS 320-O (Screening Documentation) ### Controls | Control | Implementation | Evidence | | ----------------------- | ---------------------------------------------------------------------------------------------- | ------------------------------------------------------- | | Screening date in audit | `custom_fields` JSONB on `ce_lead_conversions` supports `screening_date` storage | Schema design | | Screener identification | `converted_by` UUID identifies the user who triggered conversion | Column in `ce_lead_conversions` | | Documentation trail | Immutable audit record links lead → conversion → patient/resident | `ce_lead_conversions` INSERT-only with `correlation_id` | | CE-28 alignment | CE-28 screening disposition triggers CE-29 conversion; screening data flows via `data_mapping` | Spec integration pattern | ### Notes * AHCCCS 320-O requires 18 assessment elements documented in the clinical record * CE-29 captures the conversion decision point; full clinical documentation is CL-02/CL-04 responsibility * The `data_mapping` JSONB field provides extensibility for org-specific screening fields *** ## 4. Cross-Reference | Regulation | Spec Section | Task | Status | | ---------------- | ------------- | -------- | ---------- | | HIPAA 164.502 | §5 Regulatory | T-COMP-1 | ✅ Complete | | HIPAA 164.312(b) | §5 Regulatory | T-COMP-1 | ✅ Complete | | 42 CFR Part 2 | §5 Regulatory | T-COMP-2 | ✅ Complete | | AHCCCS 320-O | §5 Regulatory | T-COMP-3 | ✅ Complete | *** ## 5. References * **Spec:** `specs/ce/specs/CE-29-lead-to-patient-conversion-pipeline.md` * **Tasks:** `specs/ce/tasks/CE-29-TASKS.md` * **Compliance Tracker:** `docs/compliance/CE_COMMUNICATIONS_COMPLIANCE_TRACKING.md` * **Regulatory Tracker:** `docs/compliance/REGULATORY_COMPLIANCE_TRACKER.md` * **RLS Tests:** `tests/rls/ce-lead-conversions.rls.test.ts` # HIPAA & 42 CFR Part 2 Compliance Evidence Source: https://docs.encoreos.io/compliance/evidence/hipaa-part2-evidence Evidence for intake screening and triage safeguards under HIPAA and 42 CFR Part 2. **Date:** 2026-03-28\ **Reviewer:** AI Agent (post-implementation review) *** ## 1. PHI Handling | Control | Implementation | Evidence | | ------------- | ----------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | | PHI at rest | Supabase encryption; screening data in `ce_screening_attempts` and `ce_screening_results` | Tables created via migration with RLS | | PHI in events | Event payloads contain only IDs and flags; no free-text clinical data | `useCreateScreening.ts` — payload construction excludes `chief_complaint`, `notes` | | PHI in logs | No PHI logged; synthetic data in tests | Test files use `Test-CE-28-*` naming | | PHI in errors | `sanitizeErrorMessage()` used in all user-facing error handlers | Component files use sanitized errors | ## 2. 42 CFR Part 2 Consent Gating | Control | Implementation | Evidence | | -------------------------- | ---------------------------------------------------------------------------------------------- | --------------------------------------------- | | Consent capture | `consent_obtained`, `consent_method`, `consent_recorded_at` columns on `ce_screening_attempts` | Migration file | | Consent gating on events | `ce_screening_completed` only published when `consent_obtained === true` | `useCreateScreening.ts` — conditional publish | | Consent metadata in events | `consent_recorded_at` included in event metadata | Event payload construction | | Consent UI | Form requires consent checkbox before submission | `ScreeningForm.tsx` — consent fields | ## 3. Tenant Isolation | Control | Implementation | Evidence | | ------------------------ | --------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------- | | RLS on all tables | `ce_screening_attempts`, `ce_screening_results`, `ce_screening_questionnaires`, `ce_screening_sla_config` | Migration with `ENABLE ROW LEVEL SECURITY` + `FORCE ROW LEVEL SECURITY` | | SECURITY DEFINER helpers | `ce_can_view_screening()` with REVOKE/GRANT pattern | Migration file | | org\_id on mutations | All hooks use `.eq('organization_id', orgId)` | Hook files | | RLS tests | 4 test files covering all tables | `tests/rls/ce-screening-*.rls.test.ts` | ## 4. Access Control | Control | Implementation | Evidence | | ------------------ | ----------------------------------------------------------------- | ------------------------------------- | | Permission gating | `ce.screening.view`, `ce.screening.create`, `ce.screening.manage` | Permission constants + seed migration | | Route-level guards | `` on screening route | Route configuration | | No hardcoded roles | Permission hooks used throughout | Component files | *** ## Summary CE-28 meets HIPAA Privacy Rule and 42 CFR Part 2 requirements for: * PHI protection (encryption at rest, no PHI in events/logs) * SUD consent gating (3-field consent capture, event-level enforcement) * Tenant isolation (RLS + application-level org\_id filtering) * Access control (permission-based, not role-based) **Status:** ⚠️ Implementation complete for Phase 1+1.5 scope — formal compliance sign-off pending # Compliance Evidence Packages Source: https://docs.encoreos.io/compliance/evidence/index This directory contains compliance evidence packages — documents that tie specific feature implementations to their regulatory requirements. Evidence packages… This directory contains compliance evidence packages — documents that tie specific feature implementations to their regulatory requirements. Evidence packages are required for any feature that touches a regulated area (CL, PM, HR, RH, GR, FA, IT, CE, PF). ## What is a Compliance Evidence Package? A compliance evidence package proves that a specific implementation satisfies a specific regulatory requirement. It contains: 1. **Regulatory requirements table** — the specific clauses/requirements from the regulation 2. **Implementation evidence** — code references, schema elements, UI components, test names that satisfy each requirement 3. **Test evidence** — unit/integration/RLS test names that verify the implementation 4. **Gaps** — any requirements not yet implemented (with tracking references) ## When to Create an Evidence Package Create an evidence package when: * A spec targets a regulated requirement (42 CFR Part 2, HIPAA Security Rule, AHCCCS 320-O, FLSA, etc.) * The feature is marked "implemented" or "partial" in the relevant compliance tracker * Preparing for an audit, accreditation survey, or compliance review * A regulator or payer requests documentation of compliance Reference `docs/compliance/REGULATORY_COMPLIANCE_TRACKER.md` to find requirements that need evidence packages. ## How to Create an Evidence Package 1. **Identify the requirement:** Find the row in the relevant compliance tracker (e.g., `REGULATORY_COMPLIANCE_TRACKER.md`). 2. **Copy the template:** Use `specs/_templates/COMPLIANCE_SIGNOFF_TEMPLATE.md` as a starting point. For detailed evidence, use the `CL-11-EN-01-42cfr-part2-EVIDENCE.md` file in this directory as a model. 3. **Name the file:** `{SPEC-ID}-{REGULATION-ABBREVIATION}-EVIDENCE.md` (e.g., `CL-11-EN-01-42cfr-part2-EVIDENCE.md`) 4. **Complete each section:** * Regulatory requirements addressed (table with: Requirement, Implementation, Evidence) * Test coverage (list of test files/names) * Gaps (requirements not yet implemented, with spec/task references) 5. **Link from the compliance tracker:** Add a link to the evidence file in the corresponding tracker row. ## Coverage Audit Run the evidence coverage audit to see which implemented/partial requirements lack evidence packages: ```bash theme={null} npx tsx scripts/audit/audit-compliance-evidence.ts ``` This script cross-references the compliance tracker against existing evidence files and reports gaps. ## Priority: High-Risk Requirements (Create These First) Based on audit risk and regulatory penalty severity, create evidence packages for these areas first: | Priority | Regulation | Tracker | Required Evidence | | -------- | ------------------------------------------ | -------------------------------------- | ------------------------------------------------ | | 1 | 42 CFR Part 2 (SUD data) | REGULATORY\_COMPLIANCE\_TRACKER.md | Consent, disclosure, gating | | 2 | HIPAA Security Rule technical safeguards | IT\_SECURITY\_COMPLIANCE\_TRACKING.md | Access control, audit logging, encryption, MFA | | 3 | AHCCCS Policy 320-O (clinical assessments) | REGULATORY\_COMPLIANCE\_TRACKER.md | 18 required assessment elements | | 4 | HIPAA Privacy Rule PHI handling | REGULATORY\_COMPLIANCE\_TRACKER.md | PHI classification, access controls, disclosures | | 5 | FCRA adverse action notices | FCRA\_TCPA\_COMPLIANCE\_TRACKING.md | Background check workflow, adverse action | | 6 | FLSA overtime tracking | HR\_WORKFORCE\_COMPLIANCE\_TRACKING.md | Time/attendance, overtime calculation | ## Current Evidence Packages | File | Feature | Regulation | Status | | ---------------------------------------------------------------------------------------------------------------- | --------------------------------- | --------------------- | ---------- | | [CL-11-EN-01-42cfr-part2-EVIDENCE.md](/compliance/evidence/42cfr-part2-evidence-cl-11-en-01) | Electronic consent & redisclosure | 42 CFR Part 2 | ✅ Complete | | [CL-02-EN-58-42cfr-part2-EVIDENCE.md](/compliance/evidence/42cfr-part2-evidence-cl-02-en-58) | CL-02 Part 2 compliance | 42 CFR Part 2 | ✅ Complete | | [PM-15-P2-HIPAA-EDI-EVIDENCE.md](/compliance/evidence/hipaa-edi-evidence) | HIPAA EDI / clearinghouse | HIPAA EDI (X12) | ✅ Complete | | [PM-25-HIPAA-CMS-VBP-EVIDENCE.md](/compliance/evidence/hipaa-cms-vbp-evidence) | CMS Value-Based Purchasing | CMS-0057-F | ✅ Complete | | [CE-28-HIPAA-PART2-EVIDENCE.md](/compliance/evidence/hipaa-part2-evidence) | CE HIPAA/Part 2 | HIPAA + 42 CFR Part 2 | ✅ Complete | | [CE-29-HIPAA-PART2-320O-EVIDENCE.md](/compliance/evidence/hipaa-part2-320o-evidence) | CE HIPAA/Part 2 320-O | HIPAA + AHCCCS 320-O | ✅ Complete | | [HR-09-EN1-EEOC-TITLE-VII-EVIDENCE.md](/compliance/evidence/en1-eeoc-title-vii-evidence) | EEOC Title VII compliance | Title VII, ADA, GINA | ✅ Complete | | [HR-34-IRS-worker-classification-1099-EVIDENCE.md](/compliance/evidence/irs-worker-classification-1099-evidence) | IRS 1099 worker classification | IRS (26 USC) | ✅ Complete | ## Related * `docs/compliance/REGULATORY_COMPLIANCE_TRACKER.md` — master compliance status * `specs/_templates/COMPLIANCE_SIGNOFF_TEMPLATE.md` — sign-off template * `scripts/audit/audit-compliance-evidence.ts` — coverage audit script * `.cursor/rules/regulatory-compliance.md` — what regulations apply to each core # IRS Worker Classification & 1099-NEC — Compliance Evidence Source: https://docs.encoreos.io/compliance/evidence/irs-worker-classification-1099-evidence Controls: Uses createNotificationIfNew for 24h deduplication; no tax IDs in payloads; service-role only. **Created:** 2026-03-25\ **Status:** Pre-Production Review\ **Owner:** HR (Workforce & HRIS) *** ## 1. Regulatory References | Regulation | Citation | HR-34 Control | | ------------------------------------------- | ----------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | IRS Worker Classification (20-factor test) | IRS Rev. Rul. 87-41; Pub 15-A | `hr_contractor_classification_tests` table with `behavioral_control`, `financial_control`, `relationship_type` JSONB fields; mandatory `rationale` text; `overall_classification` result | | 1099-NEC Reporting Threshold | 26 USC §6041A; IRS Form 1099-NEC | `hr_get_contractor_1099_totals` RPC aggregates approved time entries; `useContractor1099Export` hook applies \$600 filing threshold | | Arizona Independent Contractor (ARS 23-902) | ARS §23-902 (worker classification for workers' comp) | Classification test UI captures all IRS factors; results stored with `reviewed_by` audit trail | | Tax ID Protection | IRS Pub 1281; HIPAA analog for financial PII | `tax_id_encrypted` column; `hr.contractor.tax_id.read` permission gate; no tax IDs in notification payloads | *** ## 2. Database Controls ### 2.1 Classification Documentation | Control | Implementation | Evidence | | -------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | | Structured IRS factor test | `hr_contractor_classification_tests` with `behavioral_control`, `financial_control`, `relationship_type` JSONB columns | Migration exists; RLS test: `tests/rls/hr/hr-contractor-classification-tests.rls.test.ts` | | Mandatory rationale | `rationale TEXT NOT NULL` on classification tests | Schema constraint; unit test validates non-empty | | Audit trail | `reviewed_by`, `created_by`, `updated_by`, `created_at`, `updated_at` columns | Standard audit columns on all 6 tables | | Organization isolation | RLS via `hr_has_org_access` SECURITY DEFINER | 18 RLS tests across 6 tables | ### 2.2 Financial Data Protection | Control | Implementation | Evidence | | ------------------------------ | -------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ | | Tax ID access restriction | `hr.contractor.tax_id.read` permission key | Permission seeded in `pf_module_permissions`; gated in UI via `useHasPermission` | | Approved-only 1099 aggregation | `hr_get_contractor_1099_totals` RPC filters `approval_status = 'approved'` | RPC is SECURITY DEFINER; unit test: `tests/unit/cores/hr/contractor-1099-export.test.ts` | | Amount calculation integrity | `calculateTimeEntryAmount(hours, rate)` with rounding | Unit test: `tests/unit/cores/hr/contractor-workforce-utils.test.ts` (5 cases including float rounding) | | Notification payload safety | No tax IDs in `pf_notifications.data` | Code review: `contractorNotifications.ts` uses only `contractor_id`, `contract_id`, `due_date` | *** ## 3. RLS Test Evidence | Table | Test File | Tests | Isolation Verified | | ------------------------------------ | ------------------------------------------------------------- | ------ | ---------------------------------- | | `hr_staffing_agencies` | `tests/rls/hr/hr-staffing-agencies.rls.test.ts` | 3 | ✅ Own-org CRUD + cross-org blocked | | `hr_contractors` | `tests/rls/hr/hr-contractors.rls.test.ts` | 3 | ✅ Own-org CRUD + cross-org blocked | | `hr_contractor_contracts` | `tests/rls/hr/hr-contractor-contracts.rls.test.ts` | 3 | ✅ Own-org CRUD + cross-org blocked | | `hr_contractor_classification_tests` | `tests/rls/hr/hr-contractor-classification-tests.rls.test.ts` | 3 | ✅ Own-org CRUD + cross-org blocked | | `hr_contractor_time_entries` | `tests/rls/hr/hr-contractor-time-entries.rls.test.ts` | 3 | ✅ Own-org CRUD + cross-org blocked | | `hr_contractor_credentials` | `tests/rls/hr/hr-contractor-credentials.rls.test.ts` | 3 | ✅ Own-org CRUD + cross-org blocked | | **Total** | 6 files | **18** | **All pass** | *** ## 4. Unit & Integration Test Evidence | Suite | File | Tests | Coverage | | -------------------- | ---------------------------------------------------------- | ------ | --------------------------------------------------------------------------------- | | Utility functions | `tests/unit/cores/hr/contractor-workforce-utils.test.ts` | 17 | Amount calc, renewal window, expiry, formatters, badges | | 1099 export logic | `tests/unit/cores/hr/contractor-1099-export.test.ts` | 10 | Filing threshold (\$600), edge cases, RPC coercion | | Notification helpers | `tests/unit/cores/hr/contractorNotifications.test.ts` | 10 | Window logic for renewals and credentials | | Integration CRUD | `tests/integration/hr/contractor-crud.integration.test.ts` | 7 | Full lifecycle: agency → contractor → contract → time → classification → approval | | **Total** | 4 files | **44** | | *** ## 5. SECURITY DEFINER Helpers | Function | Purpose | Recursion-Safe | | ------------------------------------------------------------------ | ---------------------------- | --------------------------------------------------- | | `hr_has_org_access(org_id, user_id)` | Org membership check for RLS | ✅ Queries `pf_user_role_assignments` directly | | `hr_contractor_manager_can_see_contractor(contractor_id, user_id)` | Department-scoped visibility | ✅ Joins via non-RLS path | | `hr_get_contractor_1099_totals(org_id, tax_year)` | Approved payment aggregation | ✅ SECURITY DEFINER; service-role or org-access gate | *** ## 6. Permission Keys | Key | Purpose | Seeded | | ---------------------------- | ------------------------------ | ------ | | `hr.contractor.view` | View contractor profiles | ✅ | | `hr.contractor.manage` | Create/edit/delete contractors | ✅ | | `hr.contractor.tax_id.read` | View encrypted tax IDs | ✅ | | `hr.contractor.time.approve` | Approve/reject time entries | ✅ | | `hr.contractor.classify` | Perform classification tests | ✅ | | `hr.staffing_agency.manage` | Manage staffing agencies | ✅ | *** ## 7. Edge Function (Batch Reminders) | Function | Purpose | Deployed | | --------------------------------- | ---------------------------------------------------------------- | -------- | | `contractor-compliance-reminders` | Cron-triggered batch scan for expiring contracts and credentials | ✅ | **Controls:** Uses `createNotificationIfNew` for 24h deduplication; no tax IDs in payloads; service-role only. *** ## 8. Open Items | Item | Status | Risk | | --------------------------------------------------- | -------------------------------------------- | ------------------------------------------------- | | `tax_id_encrypted` actual encryption implementation | Deferred to HR-PAY-04 Phase 2 | Medium — column exists but encryption at-rest TBD | | HR-PAY-04 1099-NEC filing automation | Stub + export hook complete; filing deferred | Low — manual export available | | Admin guide documentation | T-DOC-ADMIN recommended, not MVP-blocking | Low | *** ## 9. Sign-Off * [ ] Security review: RLS + permission gates verified * [ ] Compliance review: Classification UI captures IRS factors * [ ] Tax data review: No tax IDs in notifications or client logs * [ ] Test evidence: 62 total tests (18 RLS + 44 unit/integration) # Trust & Compliance Source: https://docs.encoreos.io/compliance/index How Encore OS approaches HIPAA, SOC 2 Type II, and 42 CFR Part 2 — regulatory posture, module compliance trackers, ONC certification, and audit evidence. Encore OS is built for regulated behavioral-health operations. Every module, integration, and audit trail is designed against three frameworks from day one: Administrative, physical, and technical safeguards for ePHI across every workflow. Trust Services Criteria for security, availability, processing integrity, confidentiality, and privacy. Heightened protections for substance use disorder records, with application-level consent and SUD tagging built in. ## Start here Platform-wide regulatory compliance status across all applicable frameworks. How protected health information is classified, tagged, and handled. Part 2 consent gating and DS4P labeling for substance use disorder records. The external regulatory sources our compliance documentation is grounded in. ## Module compliance trackers Per-module trackers map each domain's regulatory obligations to implementation status: FLSA, FMLA, ERISA, COBRA, ACA, I-9, OSHA, EEOC, and credentialing. IRS, GAAP/FASB, grant/OMB requirements, and internal controls. DHS licensure, NARR standards, Fair Housing, fire safety, and zoning. CARF, Joint Commission, HEDIS, NOMs, incident reporting, and nonprofit governance. HIPAA Security Rule, HITECH, NIST CSF, CIS Controls, and breach notification. CAN-SPAM, TCPA, call recording, and telemarketing rules. FCRA background-check and TCPA messaging compliance. ## ONC certification The path to ONC Health IT certification. Current criteria gaps and their status. Implementation plan for regulatory readiness. ## Audit evidence Per-feature [compliance evidence packages](/compliance/evidence/index) tie specific implementations to specific regulatory requirements; they are used during audits and accreditation surveys. For day-to-day governance operations — policy library, accreditation cycles, audits, risk register, and training — see the [Governance & Compliance module](/gr/overview). # SUD Data Segmentation (42 CFR Part 2 / DS4P) Source: https://docs.encoreos.io/compliance/sud-data-segmentation How Encore OS segments substance-use and PHI fields on export — the enforced rule set, generated from code, plus the regulatory rationale. Encore OS treats substance-use disorder (SUD) records as a privacy-segmented class under **42 CFR Part 2** and DS4P. When data leaves the system through an export, the platform applies a field-level treatment to PII/PHI before the row is written. This page documents both halves of that control: the **enforced rule set** (generated from the code that runs it) and the **rationale** for why each field is treated the way it is (hand-written, and the part an auditor reads). This is a **hybrid page** (PF-113). The table below is generated from `DEFAULT_PII_FIELDS` in code and cannot drift from what actually runs; the surrounding rationale is authored by the compliance owner. The two are composed, not copied. ## Enforced rule set Exports run each row through [`applyPiiPhiFilter`](/api/platform#function-applypiiphifilter), which applies a per-field treatment. With no tenant override, the platform falls back to the defaults below — the literal, current contents of the enforcing constant: | Field | Default treatment | Effect | | ----------------- | ----------------- | -------------------------- | | `date_of_birth` | `redact` | Replaced with `[REDACTED]` | | `diagnosis` | `remove` | Field removed entirely | | `email` | `redact` | Replaced with `[REDACTED]` | | `mobile_phone` | `redact` | Replaced with `[REDACTED]` | | `mrn` | `redact` | Replaced with `[REDACTED]` | | `phone` | `redact` | Replaced with `[REDACTED]` | | `ssn` | `remove` | Field removed entirely | | `treatment_notes` | `remove` | Field removed entirely | *8 fields are segmented by default; 3 are removed outright (`diagnosis`, `ssn`, `treatment_notes`) rather than masked.* ## Why removed vs. redacted Two treatments appear above, and the distinction is deliberate: * **`redact`** replaces a value with `[REDACTED]` but keeps the field present. This suits contact/identity fields (`email`, `phone`, `mrn`, `date_of_birth`) where an export consumer may need to know a value *existed* without seeing it. * **`remove`** drops the field entirely so its presence is not even signalled. This is reserved for the most sensitive clinical content — `diagnosis` and `treatment_notes` — and for `ssn`. For SUD records, the diagnosis and clinical notes are exactly the data **42 CFR Part 2 §2.31** governs on re-disclosure; removing rather than masking them is defense-in-depth so a redacted-but-present field can never leak the existence of an SUD condition without a valid Part 2 consent and re-disclosure notice. This control is one layer of the broader Part 2 posture (consent gating, disclosure logging, emergency override under **§2.13**). For the authoritative regulatory mapping, owners, and status, see the [42 CFR Part 2 entry in the Regulatory Compliance Tracker](/compliance/REGULATORY_COMPLIANCE_TRACKER#cl-11-42-cfr-part-2--implemented). The defaults are a floor, not the whole control. Per-entity export configuration can tighten (never loosen below) these treatments, and SUD re-disclosure additionally requires consent verification upstream of export. This page documents the default segmentation only. # 1099 Forms Source: https://docs.encoreos.io/fa/1099-forms List, manage, and view individual 1099 vendor tax reporting forms including box-level breakdown and correction workflow. List and manage all 1099 vendor tax reporting forms for the organization at the in-app route `/fa/tax/forms/1099`. ## Overview This screen displays all 1099 forms for the current organization in a data table. Each row shows the vendor name (linked to the detail page), form type (defaulting to `1099-NEC`), total amount, and status. A "New 1099 Form" button navigates to the form creation route. The table shows an empty state of "No 1099 forms created yet" when no records exist. ## Who it's for Required permission: `fa.tax.view` (enforced at the route via `RequirePermission`). The "Create 1099-COR Correction" action additionally requires `fa.tax.generate`. ## Before you start * An organization must be selected. * Vendors should be set up in the Vendors section before creating 1099 forms. ## Steps Go to `/fa/tax/forms/1099` via the Finance & Revenue navigation. The table lists all 1099 forms with vendor name, form type, amount, and status columns. Click a vendor name link or the View button to open the 1099 Form Details page. Click "New 1099 Form" to navigate to the form creation screen. ## Key concepts * `form_type` — IRS form variant (defaults to `1099-NEC` when not specified) * `status` — lifecycle state of the form record (`draft`, `generated`, `filed`) * `total_amount` — total dollar amount displayed using `formatCurrency` ## Viewing a 1099 form Selecting a form opens its detail view at `/fa/tax/forms/1099/:id` (permission: `fa.tax.view`). The page shows vendor details (vendor name, vendor ID, total amount), the current form status (`draft`, `generated`, or `filed`), and a box-level breakdown of IRS form box amounts keyed by identifiers such as `box_1` through `box_15`. Users with the `fa.tax.generate` permission can create a correction form (1099-COR) when the form status is `generated` or `filed`. A "Create Distribution" action is available via `CreateDistributionDialog` for distributing the form to the recipient. Key concepts for the detail view: * `is_correction` — boolean flag set to `true` on correction forms * `corrects_form_id` — links a correction form back to the original form * `box_amounts` — JSON object storing per-box dollar values 1. Navigate to the form via the 1099 Forms list. 2. Review the Vendor Details card: vendor name, vendor ID, and total amount. 3. Review the Box-Level Breakdown card for all non-zero IRS box amounts. 4. Click the Create Distribution action to open the distribution dialog (optional). 5. When status is `generated` or `filed`, click "Create 1099-COR Correction" to create a linked correction form (requires `fa.tax.generate`). ## Related Finance & Revenue core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/Form1099ListPage.tsx * src/cores/fa/pages/Form1099DetailPage.tsx * src/cores/fa/hooks/use1099Forms.ts # 1099 Reporting Source: https://docs.encoreos.io/fa/1099-reporting Summary report listing vendors with total payments meeting the $600 threshold for 1099 filing by tax year. Summary report listing vendors with total payments meeting the reporting threshold for a selected tax year at the in-app route `/fa/reports/1099`. ## Overview This screen shows a 1099 reporting summary grouped by vendor for a selectable tax year (defaults to the prior calendar year). Three summary cards display the count of vendors requiring 1099 reporting, total payments for the selected year, and total transaction count. The main table lists each vendor with their `vendor_number`, name, `form_1099_type`, `total_payments`, and `payment_count`. An Export CSV button downloads the summary data. A notes section in the UI states that actual 1099 forms must be filed through official IRS channels or an approved e-filing service. ## Who it's for Access follows your organization's role and module configuration. The route is registered without a `RequirePermission` wrapper in fa.tsx. ## Before you start * An organization must be selected. * Vendors must be marked as "Requires 1099" in vendor settings to appear in this report. ## Steps Use the year selector dropdown to choose the tax year (defaults to prior calendar year). The table shows all 1099-reportable vendors with total payments and payment counts. Click "Export CSV" to download the summary data (button is disabled when no data is available). ## Key concepts * `form_1099_type` — the IRS form type assigned to the vendor (e.g., `1099-NEC`) * `total_payments` — sum of payments to the vendor for the selected tax year * `payment_count` — number of individual payment transactions counted ## Related Finance & Revenue core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/Report1099Page.tsx * src/cores/fa/hooks/use1099Summary.ts # Plaid Bank Integration Setup Guide Source: https://docs.encoreos.io/fa/PLAID_SETUP Related **Related Spec:** FA-20 ## Quick Start ### Choose Your Environment | Environment | Data | Cost | Limit | Use Case | | --------------- | ---------- | ---- | --------- | ----------------------- | | **Sandbox** | Simulated | Free | Unlimited | UI testing, development | | **Development** | Real banks | Free | 100 Items | Integration testing | | **Production** | Real banks | Paid | Unlimited | Live users | **Recommendation:** Start with `sandbox` to test the flow, then move to `development` for real bank testing. *** ## Step 1: Get Plaid Credentials 1. Sign up at [Plaid Dashboard](https://dashboard.plaid.com/signup) 2. Go to **Team Settings** → **Keys** in Dashboard 3. Note your: * **Client ID** (e.g., `5f8c1b2a3d4e5f6a7b8c9d0e`) * **Secret** (per environment - sandbox, development, production) 4. Go to **Developers** → **Webhooks** 5. Add a webhook endpoint: `https://your-project.supabase.co/functions/v1/plaid-webhook` *** ## Step 2: Configure Supabase Secrets ### Option A: Using Lovable Cloud (Recommended) 1. Go to your Lovable project → **Settings** → **Cloud** → **Secrets** 2. Add the following secrets: | Secret Name | Value | | ------------------- | -------------------------------------------- | | `PLAID_CLIENT_ID` | Your client ID from Plaid Dashboard | | `PLAID_SECRET` | Your secret (use sandbox secret for testing) | | `PLAID_ENVIRONMENT` | `sandbox` (or `development` / `production`) | ### Option B: Using CLI ```bash theme={null} # Set secrets individually supabase secrets set PLAID_CLIENT_ID=your_client_id supabase secrets set PLAID_SECRET=your_secret supabase secrets set PLAID_ENVIRONMENT=sandbox ``` ### Verify Secrets ```bash theme={null} supabase secrets list ``` You should see: ```text theme={null} NAME | DIGEST ---------------------|-------- PLAID_CLIENT_ID | abc123... PLAID_SECRET | def456... PLAID_ENVIRONMENT | ghi789... ``` *** ## Step 3: Enable Feature Flag 1. Navigate to **Finance & Accounting** → **Settings** 2. Go to the **Integrations** tab 3. Toggle **Enable Plaid Integration** to ON 4. Click **Save Changes** The Plaid option will now appear in the bank connection flow. *** ## Step 4: Test the Connection 1. Navigate to **Finance** → **Bank Accounts** 2. Click **Connect Bank Account** 3. If both Teller and Plaid are enabled, select **Plaid** from the provider dialog 4. Plaid Link modal opens 5. In Sandbox mode: * Select any institution (e.g., "First Platypus Bank") * Use test credentials (see below) * Select accounts to connect 6. Verify the account appears with a "Plaid" provider badge ### Sandbox Test Credentials Use these credentials when connecting banks in sandbox mode: | Username | Password | Behavior | | --------------------------- | ----------- | -------------------------------- | | `user_good` | `pass_good` | Standard successful login | | `user_transactions_dynamic` | `pass_good` | Generates new transactions daily | | `user_bad` | `pass_bad` | Invalid credentials error | **Test Institution ID:** `ins_109508` (First Platypus Bank) For MFA testing: * **Username:** `user_good` * **Password:** `mfa_device` (triggers device-based MFA) * **Code:** `1234` (any 4-digit code works in sandbox) *** ## Step 5: Sync Transactions 1. After connecting, click the **Sync** button on the account card 2. Transactions will be imported into Bank Statement Lines 3. A toast notification shows the sync results: * Transactions added * Transactions modified * Transactions removed For Plaid sandbox accounts, use `user_transactions_dynamic` credentials to generate new transactions daily. *** ## Troubleshooting ### 🚨 "Invalid client\_id" Error **Cause:** PLAID\_CLIENT\_ID secret not configured or incorrect. **Fix:** 1. Verify the secret exists: `supabase secrets list` 2. Check the value matches your Plaid Dashboard 3. Secrets are case-sensitive ### 🚨 "Plaid integration is not enabled" **Cause:** Feature flag not enabled in FA Module Settings. **Fix:** 1. Navigate to Finance → Settings → Integrations 2. Enable "Plaid Integration" 3. Save changes ### 🚨 Plaid Link Modal Doesn't Open **Cause:** Link token creation failed. **Check:** 1. Browser console for errors 2. Edge function logs in Supabase Dashboard 3. Verify all three secrets are set (CLIENT\_ID, SECRET, ENVIRONMENT) ### 🚨 "Institution not supported" **Cause:** The selected institution isn't available in sandbox mode. **Fix:** * Use sandbox-supported institutions (any from the Plaid Link flow) * Switch to `development` environment for real institutions ### 🚨 Webhook Events Not Processing **Cause:** Webhook endpoint not configured or signature verification failing. **Check:** 1. Webhook URL is correct in Plaid Dashboard 2. Edge function logs for signature errors 3. Function is deployed: `supabase functions list` ### 🚨 Rate Limiting (429 Error) **Cause:** Too many API requests in a short period. **Fix:** * Wait 60 seconds and retry * Plaid has rate limits per client ID * The edge functions have built-in exponential backoff *** ## Environment-Specific Setup ### Sandbox Mode (Recommended for Development) ```bash theme={null} # Supabase secrets PLAID_ENVIRONMENT=sandbox ``` * Uses simulated bank data * No real bank connections * Test credentials work (see above) * Transactions are generated synthetically ### Development Mode (Real Banks, Limited) ```bash theme={null} # Supabase secrets PLAID_ENVIRONMENT=development ``` * Connects to real bank OAuth flows * Limited to 100 Items (bank connections) * Free tier * Real transaction data ### Production Mode ```bash theme={null} # Supabase secrets PLAID_ENVIRONMENT=production ``` * Full production access * Requires Production access approval from Plaid * Paid based on usage * Contact Plaid for pricing *** ## Webhook Events Handled The `plaid-webhook` edge function processes these events: | Event Type | Description | Action | | ------------------------ | ------------------------- | -------------------------------- | | `SYNC_UPDATES_AVAILABLE` | New transactions ready | Triggers sync | | `TRANSACTIONS_REMOVED` | Transactions were removed | Updates affected records | | `ERROR` | Item has an error | Sets status to `error` | | `PENDING_EXPIRATION` | Credentials expiring | Sets status to `reauth_required` | | `LOGIN_REPAIRED` | User fixed login issue | Sets status to `connected` | *** ## Required Secrets Summary | Secret | Required | Description | | ------------------- | -------- | ----------------------------------------- | | `PLAID_CLIENT_ID` | ✅ | Your Plaid client ID | | `PLAID_SECRET` | ✅ | Environment-specific secret | | `PLAID_ENVIRONMENT` | ✅ | `sandbox`, `development`, or `production` | *** ## Provider Comparison | Feature | Plaid | Teller | | ------------------------- | ----------------------- | -------------------------- | | **Institution Coverage** | 11,000+ globally | US only | | **Auth Method** | OAuth (browser-based) | OAuth + mTLS | | **Transaction Sync** | Sync API (cursor-based) | Polling | | **Webhooks** | JWT-verified | HMAC-SHA256 | | **International Support** | ✅ (CA, UK, EU) | ❌ | | **Setup Complexity** | Low | Medium (mTLS for dev/prod) | *** ## See Also * [Plaid Documentation](https://plaid.com/docs/) * [Plaid Link for Web](https://plaid.com/docs/link/web/) * [Plaid Sandbox Guide](https://plaid.com/docs/sandbox/) * [FA-20 Specification](https://github.com/Encore-OS/encoreos/blob/development/specs/fa/specs/FA-20-plaid-bank-integration.md) * Teller Setup Guide # Account Mapping Source: https://docs.encoreos.io/fa/account-mapping Map external accounting system accounts to your Encore chart of accounts using the Account Mapping Editor. Map external accounting system accounts to your Encore chart of accounts at the in-app route `/fa/accounts/mapping`. ## Overview This screen hosts the `AccountMappingEditor` component, which provides a UI for mapping accounts from an external accounting system to the Encore Finance & Revenue chart of accounts. The page header describes the purpose as "Map external accounting system accounts to your Encore chart of accounts." The page applies an internal permission check via `RequirePermission permission="fa.accounts.admin"` rendered inside the page component itself, in addition to the route-level access. ## Who it's for Required permission: `fa.accounts.admin` (enforced inside the page component via `RequirePermission`). Access follows your organization's role and module configuration. at the route level in fa.tsx for this path. ## Before you start * Chart of Accounts must already be set up in Encore Finance & Revenue. * External system account data must be available for mapping. ## Steps Go to `/fa/accounts/mapping` via the Finance & Revenue Accounts section. The `AccountMappingEditor` component presents accounts from the external system alongside Encore accounts. Use the editor controls to assign external accounts to Encore chart of accounts entries. ## Key concepts * `AccountMappingEditor` — component that provides the mapping interface * `fa.accounts.admin` — required permission to view and use this screen ## Related Finance & Revenue core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/AccountMappingPage.tsx # Finance & Accounting - Accounts Payable Guide Source: https://docs.encoreos.io/fa/accounts-payable-guide The Accounts Payable (AP) module manages vendor relationships, bill entry, approval workflows, payment processing, and 1099 reporting for behavioral health org… Accounts Payable bills surface listing vendor bills ## Overview The Accounts Payable (AP) module manages vendor relationships, bill entry, approval workflows, payment processing, and 1099 reporting for behavioral health organizations. The system integrates with the General Ledger for automatic posting and supports multi-level approval workflows based on configurable amount thresholds. ## Table of Contents 1. [Vendor Management](#vendor-management) 2. [Bill Entry](#bill-entry) 3. [Bill Approval Workflow](#bill-approval-workflow) 4. [Payment Processing](#payment-processing) 5. [1099 Reporting](#1099-reporting) 6. [AP Aging Reports](#ap-aging-reports) 7. [Approval Thresholds Configuration](#approval-thresholds-configuration) *** ## Quick Reference | I need to... | Pattern | Location | | ----------------------------- | --------------------------------- | ----------------------------------------------------------------------- | | Create a new vendor | Vendor Management | [Vendor Management](#vendor-management) | | Enter a bill | Bill Entry | [Bill Entry](#bill-entry) | | Approve a bill | Bill Approval Workflow | [Bill Approval Workflow](#bill-approval-workflow) | | Process payments | Payment Processing | [Payment Processing](#payment-processing) | | Generate 1099s | 1099 Reporting | [1099 Reporting](#1099-reporting) | | Configure approval thresholds | Approval Thresholds Configuration | [Approval Thresholds Configuration](#approval-thresholds-configuration) | *** ## Vendor Management ### Creating Vendors 1. Navigate to **Finance** → **Vendors** 2. Click **New Vendor** 3. Fill in required fields: * **Vendor Number**: Unique identifier (auto-generated or manual) * **Vendor Name**: Legal business name * **Address**: Complete mailing address * **Contact Information**: Phone, email, website 4. **W-9 Information** (for 1099 reporting): * **Tax ID (TIN)**: Encrypted storage of vendor tax identification number * **Requires 1099**: Check if vendor requires 1099 reporting * **1099 Type**: Select 1099-MISC or 1099-NEC * **W-9 Document**: Upload W-9 form (stored securely) 5. **Payment Configuration**: * **Payment Terms**: Net 15, Net 30, Net 60, Net 90, or Due on Receipt * **Default GL Account**: Default expense account for bill entry * **Bank Account** (optional): For ACH payments * Bank account name * Routing number (encrypted) * Account number (encrypted) 6. **Status**: Active or Inactive ### Vendor Best Practices * **Unique Vendor Numbers**: Use consistent numbering scheme (e.g., V-001, V-002) * **Complete W-9 Data**: Collect W-9 forms before first payment to ensure 1099 accuracy * **Payment Terms**: Set appropriate terms based on vendor agreements * **Default Accounts**: Configure default GL accounts to speed up bill entry * **Vendor Inactivation**: Mark vendors as inactive instead of deleting (preserves history) ### Searching and Filtering Vendors * **Search**: By vendor name, number, or contact information * **Filter**: By active/inactive status, 1099 requirement * **Sort**: By name, number, or last bill date *** ## Bill Entry ### Creating Bills 1. Navigate to **Finance** → **Bills** 2. Click **New Bill** 3. **Bill Header**: * **Vendor**: Select from vendor list (required) * **Invoice Number**: Vendor's invoice number (required, must be unique per vendor) * **Invoice Date**: Date on vendor invoice * **Due Date**: Payment due date (defaults based on vendor payment terms) * **Description**: Optional bill description or memo 4. **Bill Lines** (add unlimited lines): * **GL Account**: Select expense or asset account (required) * **Fund**: Select fund for fund accounting (if required) * **Department**: Select department (optional) * **Program**: Select program (optional) * **Description**: Line item description * **Amount**: Line amount (required) * **Amount Paid**: Auto-calculated from payment applications 5. **Bill Total**: Auto-calculated from line items 6. **Save Options**: * **Save as Draft**: Save for later editing * **Submit for Approval**: Submit to approval workflow (if over threshold) ### Bill Status Workflow **Draft** → **Pending Approval** → **Approved** → **Paid** * **Draft**: Bill is being entered or edited * **Pending Approval**: Submitted and awaiting approver action * **Approved**: Approved and posted to GL (journal entry created) * **Paid**: Fully paid (all lines paid) * **Cancelled**: Bill cancelled (cannot be paid) ### Bill Entry Best Practices * **Verify Invoice Numbers**: System prevents duplicate invoice numbers per vendor * **Accurate GL Coding**: Code each line to appropriate expense/asset account * **Fund Allocation**: Assign to correct fund for fund accounting compliance * **Attach Invoices**: Upload invoice PDFs for audit trail * **Review Totals**: Verify bill total matches vendor invoice before submission ### Editing Bills * **Draft Bills**: Can be edited freely * **Pending Approval**: Cannot be edited (must reject first) * **Approved Bills**: Cannot be edited (create credit memo or reversing entry) * **Paid Bills**: Cannot be edited (immutable for audit trail) *** ## Bill Approval Workflow ### Approval Process 1. **Submit for Approval**: * Click **Submit for Approval** on draft bill * Bill status changes to "Pending Approval" * System checks approval thresholds (if configured) 2. **Threshold-Based Routing**: * Bills under threshold: Auto-approved (if configured) * Bills over threshold: Route to designated approver * Multiple thresholds: Route to highest required approver 3. **Approver Actions**: * **Approve**: Approves bill and posts to GL * Creates journal entry (DR Expense/Asset, CR Accounts Payable) * Updates bill status to "Approved" * Sends notification to bill submitter * **Reject**: Returns bill to draft with rejection reason * Bill status reverts to "Draft" * Rejection reason appended to bill description * Sends notification to bill submitter ### Approval Indicators * **GL Posting Indicator**: Shows on approved bills * Journal entry number * Posting date * Link to journal entry detail * **Approval History**: Timeline of approval actions * Approver name and date * Rejection reasons (if applicable) ### Approval Best Practices * **Review Before Approving**: Verify GL coding, amounts, and vendor * **Document Rejections**: Provide clear rejection reasons * **Timely Approvals**: Approve within 2 business days (SLA target) * **Delegate When Needed**: Use approval delegation for absences *** ## Payment Processing ### Creating Payment Batches 1. Navigate to **Finance** → **Payment Batches** 2. Click **New Payment Batch** 3. **Batch Configuration**: * **Payment Date**: Date payments will be processed * **Bank Account**: Select bank account for payment * **Payment Method**: Check, ACH, or Wire * **Description**: Optional batch description 4. **Select Bills to Pay**: * Filter by vendor, due date, amount, or status * Select bills from list * System shows total batch amount 5. **Payment Application**: * For each bill, specify payment amount: * **Full Payment**: Pay entire bill balance * **Partial Payment**: Pay specific amount * System validates payment doesn't exceed bill balance 6. **Generate Payments**: * System creates individual payment records * Assigns check numbers (if check payment) * Creates payment applications linking payments to bills 7. **Post Batch**: * Posts payments to GL (DR Accounts Payable, CR Cash) * Updates bill status to "Paid" (if fully paid) * Updates bill balances * Batch status changes to "Posted" ### Payment Methods **Check Payments:** * Check numbers auto-generated sequentially * Check printing integration (deferred) * Manual check number entry supported **ACH Payments:** * ACH file generation (NACHA format) * Bank account information from vendor record * Batch file export for bank upload **Wire Payments:** * Manual wire processing * Wire confirmation tracking ### Payment Application * **Automatic Application**: Payments automatically applied to bills * **Partial Payments**: Support for paying bills in installments * **Line-Level Application**: Payments can be applied to specific bill lines * **Balance Tracking**: System tracks: * Bill total * Amount paid * Balance due ### Payment Best Practices * **Batch Processing**: Process payments in batches for efficiency * **Verify Before Posting**: Review batch totals before posting * **Timely Payments**: Process payments by due date * **Reconcile Regularly**: Reconcile payments with bank statements * **Document Wire Payments**: Record wire confirmation numbers *** ## 1099 Reporting ### Generating 1099 Reports 1. Navigate to **Finance** → **Reports** → **1099 Reporting** 2. **Select Tax Year**: Choose year for 1099 reporting (defaults to prior year) 3. **Filter Options**: * **1099 Type**: Filter by 1099-MISC, 1099-NEC, or All * **Vendor**: Filter by specific vendor (optional) 4. **Report Display**: * **Vendor Information**: Name, vendor number, masked TIN * **Total Payments**: Sum of all 1099-eligible payments for year * **Payment Count**: Number of payments * **1099 Type**: Form type (MISC or NEC) 5. **Export**: Download report for 1099 filing ### 1099 Eligibility **Vendors Requiring 1099:** * Must have `requires_1099 = true` in vendor record * Must have 1099 type selected (MISC or NEC) * Must have valid TIN on file **Payment Eligibility:** * Only payments to 1099-eligible vendors included * Minimum \$600 threshold (IRS requirement) * Excludes reimbursements and non-1099 payments ### 1099 Best Practices * **Collect W-9s Early**: Get W-9 forms before first payment * **Verify TINs**: Ensure accurate tax ID numbers * **Annual Review**: Generate 1099 report annually (January) * **Export for Filing**: Use export function for 1099 filing software * **Retain Records**: Keep 1099 records for 7 years (IRS requirement) *** ## AP Aging Reports ### Viewing AP Aging 1. Navigate to **Finance** → **Reports** → **AP Aging** 2. **Report Options**: * **As-of Date**: Select date for aging calculation * **Vendor Filter**: Filter by specific vendor (optional) * **Status Filter**: Show only approved, pending, or all bills 3. **Aging Buckets**: * **Current (0-30 days)**: Bills not yet due * **31-60 days**: Bills 31-60 days past due * **61-90 days**: Bills 61-90 days past due * **91-120 days**: Bills 91-120 days past due * **120+ days**: Bills over 120 days past due 4. **Report Details**: * Vendor name and number * Bill number and invoice number * Invoice date and due date * Bill total and balance due * Days past due * Aging bucket ### AP Aging Best Practices * **Regular Review**: Run aging report weekly or monthly * **Prioritize Old Bills**: Focus on 90+ day bills first * **Contact Vendors**: Reach out to vendors with overdue bills * **Cash Flow Planning**: Use aging report for cash flow forecasting * **Vendor Relations**: Maintain good relationships with timely payments *** ## Approval Thresholds Configuration ### Setting Approval Thresholds 1. Navigate to **Finance** → **Settings** → **Approval Thresholds** 2. Click **New Threshold** 3. **Threshold Configuration**: * **Module**: Select "AP Bills" * **Threshold Amount**: Minimum bill amount requiring approval * **Approver Role**: Select approver role (e.g., finance\_admin, manager) * **Approver User**: Select specific user (optional, overrides role) * **Description**: Optional threshold description 4. **Multiple Thresholds**: Create multiple thresholds for different amount ranges * Example: $0-$1,000 (auto-approve), $1,000-$10,000 (manager approval), \$10,000+ (CFO approval) ### Threshold Logic * **Highest Threshold Wins**: Bills route to approver for highest applicable threshold * **Role-Based**: Bills route to users with specified role * **User-Specific**: User selection overrides role-based routing * **Auto-Approve**: Bills under lowest threshold auto-approved (if configured) ### Approval Threshold Best Practices * **Start Conservative**: Set lower thresholds initially, adjust based on experience * **Document Rationale**: Document why thresholds are set at specific amounts * **Review Regularly**: Review and adjust thresholds quarterly * **Consider Cash Flow**: Factor in cash flow impact of approval delays * **Delegate Authority**: Use delegation for approver absences *** ## Common Tasks ### Finding a Bill 1. Navigate to **Finance** → **Bills** 2. Use search or filters: * **Search**: By bill number, invoice number, or vendor name * **Filter**: By status, vendor, date range, or amount 3. Click bill to view detail ### Viewing Bill History 1. Navigate to vendor detail page 2. Click **Bills** tab 3. View all bills for vendor with status and amounts ### Processing a Single Payment 1. Navigate to bill detail page 2. Click **Create Payment** 3. Enter payment details: * Payment date * Payment amount (full or partial) * Payment method 4. Click **Process Payment** 5. System creates payment and applies to bill ### Rejecting a Bill 1. Navigate to bill detail page (must be pending approval) 2. Click **Reject** 3. Enter rejection reason (required) 4. Click **Confirm Rejection** 5. Bill returns to draft status with rejection reason ### Exporting 1099 Data 1. Navigate to **Finance** → **Reports** → **1099 Reporting** 2. Select tax year 3. Apply filters (if needed) 4. Click **Export** 5. Download CSV or Excel file for 1099 filing software *** ## Troubleshooting ### Bill Won't Submit for Approval **Possible Causes:** * Bill is missing required fields (vendor, invoice number, lines) * Bill total is zero * Bill has validation errors **Solution:** * Review bill form for missing required fields * Add at least one bill line with amount * Check for validation error messages ### Payment Application Fails **Possible Causes:** * Payment amount exceeds bill balance * Bill is not approved * Payment batch is already posted **Solution:** * Verify payment amount doesn't exceed bill balance * Ensure bill is approved before payment * Create new payment batch if needed ### 1099 Report Missing Vendors **Possible Causes:** * Vendor doesn't have `requires_1099` checked * Vendor payments are under \$600 threshold * Payments are in different tax year **Solution:** * Verify vendor 1099 configuration * Check payment totals meet \$600 threshold * Verify tax year selection matches payment dates ### GL Posting Not Appearing **Possible Causes:** * Bill not yet approved * Journal entry creation failed * GL period is closed **Solution:** * Verify bill status is "Approved" * Check GL posting indicator on bill detail * Verify fiscal period is open for posting *** ## Security & Compliance ### Data Protection * **Tax ID Encryption**: Vendor TINs encrypted at rest * **Bank Account Encryption**: Bank account numbers encrypted * **Access Control**: Role-based access (finance\_admin, finance\_staff) * **Audit Trail**: All bill and payment changes logged ### Compliance Requirements * **1099 Reporting**: IRS-compliant 1099 generation * **Payment Records**: 7-year retention (IRS requirement) * **Audit Trail**: Complete audit trail for all transactions * **Multi-Tenancy**: Strict organization isolation (RLS) ### Best Practices * **Regular Backups**: Ensure regular database backups * **Access Reviews**: Review user access quarterly * **Document Retention**: Follow IRS 7-year retention policy * **Security Updates**: Keep system updated with security patches *** ## Related Documentation * [Chart of Accounts Guide v1.0](/fa/chart-of-accounts-guide) - GL account setup * [General Ledger Guide v1.0](/fa/general-ledger-guide) - Journal entry management *** **Last Updated:** 2026-01-27\ **Version:** 1.0.0 # Accounts Receivable User Guide Source: https://docs.encoreos.io/fa/accounts-receivable-guide The Accounts Receivable module manages customer invoicing, payment collection, credit memos, and aging analysis. It integrates with the General Ledger for auto… Accounts Receivable surface listing customer invoices ## Overview The Accounts Receivable module manages customer invoicing, payment collection, credit memos, and aging analysis. It integrates with the General Ledger for automatic revenue posting. **Navigation:** Finance & Accounting → Accounts Receivable (`/fa/accounts-receivable`) ## Permissions | Permission | Description | | ---------------- | ---------------------------------- | | `fa.ar.view` | View invoices, payments, and aging | | `fa.ar.create` | Create invoices and credit memos | | `fa.ar.edit` | Edit draft invoices | | `fa.ar.payments` | Record and apply payments | ## Customer Management Customers are managed within the AR module: 1. Navigate to **Customers** tab 2. Click **New Customer** 3. Enter customer details: name, contact info, billing address 4. Set **payment terms** (Net 30, Net 60, etc.) 5. Optionally assign a default **revenue account** ## Creating an Invoice 1. Click **New Invoice** from the invoices list 2. Select a **Customer** 3. Set the **Invoice Date** and **Due Date** (auto-calculated from payment terms) 4. Add **Line Items**: * Description of service or product * GL revenue account * Quantity and unit price * Fund, department, and program coding 5. Review the **Invoice Total** 6. **Save as Draft** or **Post** the invoice ### Invoice Statuses ```text theme={null} Draft → Posted → Partially Paid → Paid → Void ``` * **Draft**: Editable, no GL impact * **Posted**: Creates GL journal entry (debit AR, credit Revenue) * **Partially Paid**: One or more payments applied, balance remaining * **Paid**: Fully settled * **Void**: Reversed; creates reversing GL entry ## Recording Payments 1. Open a posted invoice (or go to **Payments** tab) 2. Click **Record Payment** 3. Enter payment details: * **Amount** received * **Payment Date** * **Payment Method** (check, ACH, wire, credit card, cash) * **Reference Number** (check number, transaction ID) 4. **Apply** the payment to one or more open invoices 5. The system creates a GL entry: debit Cash, credit AR ### Partial Payments * Apply any amount less than the invoice balance * Remaining balance stays open on the invoice * Invoice status changes to **Partially Paid** ### Overpayments * If payment exceeds invoice balance, the excess creates a **credit balance** on the customer account * Credits can be applied to future invoices ## Credit Memos Credit memos reduce a customer's outstanding balance: 1. Click **New Credit Memo** 2. Select the **Customer** and optionally link to the original invoice 3. Enter credit line items with amounts 4. **Post** the credit memo 5. Apply the credit to open invoices or leave as customer credit ## AR Aging The **Aging Report** shows outstanding balances by age bucket: | Bucket | Description | | ---------- | --------------------- | | Current | Not yet due | | 1-30 Days | 1-30 days past due | | 31-60 Days | 31-60 days past due | | 61-90 Days | 61-90 days past due | | 90+ Days | Over 90 days past due | * Filter by customer, date range, or aging bucket * Export to CSV or PDF for collections follow-up ## GL Integration All AR transactions automatically create GL journal entries: | Transaction | Debit | Credit | | ---------------- | ------------------- | ------------------------------ | | Post Invoice | Accounts Receivable | Revenue | | Record Payment | Cash/Bank | Accounts Receivable | | Post Credit Memo | Revenue (or contra) | Accounts Receivable | | Void Invoice | Revenue | Accounts Receivable (reversal) | ## Tips * Set up **payment terms** on customers to auto-calculate due dates * Use the **aging report** weekly to identify overdue accounts * Apply payments promptly to keep aging accurate * Credit memos linked to invoices provide better audit trail # Aging Reports Source: https://docs.encoreos.io/fa/aging-reports Tabbed hub combining AR Aging and AP Aging reports in a single URL-synced view. Tabbed hub combining AR Aging and AP Aging reports at the in-app route `/fa/reports/aging`. ## Overview This screen is a tabbed hub page that presents AR Aging and AP Aging reports side by side using URL-synced tab state (via `useTabUrlState`). The active tab is controlled by the `?tab=` query parameter — valid values are `ar-aging` and `ap-aging`. The default tab on first load is `ar-aging`. Each tab lazily loads its respective report component (`ARAgingReportPage` and `APAgingReportPage`). A loading skeleton is shown during tab content hydration. ## Who it's for Required permission: `fa.reports.aging.view` (enforced at the route via `RequirePermission`). ## Before you start * Invoices (for AR) and bills (for AP) must exist with open balances. * An organization must be selected. ## Steps Go to `/fa/reports/aging` or use the Finance & Revenue Reports menu. Click the "AR Aging" or "AP Aging" tab. The URL updates to reflect the active tab. Each tab shows aging buckets, summary cards, and a detail table. See AR Aging and AP Aging individual screens for full step documentation. ## Key concepts * `ar-aging` tab — loads `ARAgingReportPage` (accounts receivable aging by invoice due date) * `ap-aging` tab — loads `APAgingReportPage` (accounts payable aging by bill due date) * URL tab state — the `?tab=` query parameter persists the active tab across page refreshes ## Related Finance & Revenue core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/AgingReportsHubPage.tsx # AI-Powered Bank Reconciliation Source: https://docs.encoreos.io/fa/ai-reconciliation-guide Guide to AI categorization, smart matching, anomaly detection, and the reconciliation dashboard > **Cross-References:** > > * [Bank Reconciliation Wizard](/fa/bank-reconciliation-wizard-user-guide) - Base reconciliation workflow > * [FA Module Settings](/fa/module-settings) - Configuration reference > * [FA Security Considerations](/fa/security-considerations) - PHI/PII protection *** ## Overview FA-28 extends the bank reconciliation module with AI-powered features that automate transaction categorization, suggest matches between bank and GL lines, detect anomalies, and provide a reconciliation dashboard. All AI features are **disabled by default** and create **draft journal entries only** — never auto-post. ### Feature Summary | Feature | Description | Permission Required | | ----------------- | ------------------------------------------------------------ | -------------------------- | | AI Categorization | Suggests GL accounts for unmatched bank lines | `fa.reconciliation.ai.use` | | AI Smart Matching | Pairs unmatched bank lines with GL entries | `fa.reconciliation.ai.use` | | Anomaly Detection | Flags duplicate payments, unusual amounts, unknown merchants | `fa.anomalies.view` | | AI Assistant | Contextual help within reconciliation detail | `fa.reconciliation.ai.use` | | Dashboard | Aggregated reconciliation metrics and status | `fa.reconciliation.view` | *** ## Enabling AI Features ### Prerequisites * **Org Admin** or user with `fa.reconciliation.ai.configure` permission * AI Gateway enabled (LOVABLE\_API\_KEY provisioned) ### Configuration 1. Navigate to **Finance > Settings** 2. Click the **Matching & AI** tab 3. Toggle features on/off: * **AI Categorization** — Automatically suggest GL accounts for bank lines * **AI Smart Matching** — Pair unmatched bank and GL lines using AI * **Anomaly Detection** — Flag suspicious transactions 4. Adjust confidence thresholds: * **Categorization Auto-Apply Threshold** (default: 0.85) — Suggestions above this create draft JEs automatically * **Matching Auto-Apply Threshold** (default: 0.90) — Matches above this are applied automatically 5. Click **Save** *** ## AI Transaction Categorization When enabled, AI categorization runs automatically after the deterministic rule engine during Plaid sync. It processes unmatched bank lines that were not caught by existing rules. ### How It Works 1. Unmatched bank lines (no rule match, no existing JE) are batched 2. AI analyzes transaction descriptions, amounts, dates, and Plaid categories 3. Each line receives a suggested debit/credit account with a confidence score (0-1) 4. Lines above the auto-apply threshold get draft journal entries created automatically 5. Lines below the threshold show as suggestions for manual review ### Reviewing AI Suggestions In the **Unmatched Bank Lines** table: * Lines with AI suggestions show a **sparkle icon** and confidence percentage * Hover to see the AI's reasoning * Click **Accept** to create a draft journal entry * Click **Create Rule** to create a reusable transaction rule from the suggestion * Click **Reject** to clear the suggestion ### Security * Only transaction descriptions, amounts, dates, and Plaid categories are sent to AI * **No account numbers, names, SSNs, or other PHI/PII** are included in AI requests * All created entries are drafts requiring manual posting *** ## AI Smart Matching AI matching pairs unmatched bank lines with unmatched GL entries using pattern recognition. ### How It Works 1. After deterministic matching completes, AI analyzes remaining unmatched items 2. AI considers descriptions, amounts, dates, and patterns to suggest pairings 3. High-confidence matches (above threshold) are applied automatically as `ai_auto` 4. Lower-confidence suggestions appear as `ai_suggested` for manual review ### Reviewing Match Suggestions In the **Unmatched Transactions** tab of reconciliation detail: * AI-suggested matches appear in the **AI Match Suggestions** section * Each shows the bank line, matched GL entry, confidence score, and reasoning * Click **Accept** to confirm the match * Click **Reject** to remove the suggestion * Use **AI Match All (N)** button to bulk-accept all suggestions above 80% confidence *** ## Anomaly Detection Statistical analysis flags potentially suspicious transactions. ### Detection Types | Type | Description | Severity | | ----------------- | ------------------------------------------------------- | --------------- | | Duplicate Payment | Same vendor + amount within 7 days | High (red) | | Unusual Amount | >2 standard deviations from merchant historical average | Medium (yellow) | | Unknown Merchant | First-time merchant with no transaction history | Low (blue) | ### Viewing Anomalies * Flagged transactions show a warning badge with severity color * Hover for detailed anomaly information * Anomaly scores range from 0-100 (higher = more suspicious) *** ## AI Reconciliation Assistant The inline AI assistant provides contextual help within the reconciliation detail view. ### Using the Assistant 1. Open a reconciliation detail page 2. The AI assistant panel appears below the header (when enabled) 3. Type questions or use quick prompts: * "Why is this unmatched?" * "Show bank fees" * "Explain the difference" 4. The assistant has context about the reconciliation's balances, status, and discrepancies ### Privacy * Only aggregated balances, counts, and descriptions are shared with AI * No PHI/PII is included in assistant context *** ## Reconciliation Dashboard The dashboard provides aggregated metrics across all reconciliations. ### Dashboard Cards | Card | Description | | ------------------- | --------------------------------------------------------------------- | | Status Distribution | Pie chart of reconciliation statuses (draft, in\_progress, completed) | | Automation Rate | Percentage of transactions matched automatically vs. manually | | Outstanding Items | Count and total of unmatched bank and GL lines | | Anomaly Alerts | Number of flagged transactions requiring review | ### Accessing the Dashboard * Navigate to **Finance > Reconciliations** * The dashboard appears at the top of the page (collapsible) * Click **Show/Hide Dashboard** to toggle visibility *** ## Troubleshooting ### AI Features Not Working 1. Verify AI features are enabled in **Finance > Settings > Matching & AI** 2. Confirm you have `fa.reconciliation.ai.use` permission 3. Check that the AI Gateway is provisioned (LOVABLE\_API\_KEY) 4. AI features degrade gracefully — the deterministic pipeline is unaffected ### No AI Suggestions Appearing * AI only processes lines not already matched by rules or manual matching * Check that bank lines exist without `rule_id` or `auto_journal_entry_id` * AI categorization runs during Plaid sync; manual trigger available via hook ### Anomaly Scores Seem Incorrect * Anomaly detection uses statistical analysis based on historical transaction data * New organizations with limited history may see more "unknown merchant" flags * Scores improve as more transaction history accumulates *** ## Related Documentation * [Bank Reconciliation Wizard](/fa/bank-reconciliation-wizard-user-guide) - Base reconciliation workflow * [Plaid Setup](/fa/PLAID_SETUP) - Bank connection configuration * [FA Module Settings](/fa/module-settings) - All FA configuration options * [FA Security](/fa/security-considerations) - Security and compliance *** ## Version History ### 1.0.0 (2026-02-16) * Initial release: AI categorization, smart matching, anomaly detection, assistant, dashboard *** **Last Updated:** 2026-02-16 # All Expense Reports Source: https://docs.encoreos.io/fa/all-expense-reports View and manage all employee expense reports and reimbursements across the organization. View and manage all employee expense reports and reimbursements across the organization at the in-app route `/fa/expenses/reports`. All expense reports surface listing employee expense reports ## Overview This screen renders `ExpenseReportsPage` with `filter="all"`, showing all expense reports across the organization (not filtered to the current user). The page title is "All Expense Reports" and the description reads "Manage all employee expense reports and reimbursements." A "New Report" button links to `/fa/expenses/new`. The table supports viewing, editing, submitting for approval, and soft-deleting individual reports. A confirmation dialog is presented before deletion. ## Who it's for Required permission: `fa.expenses.view` (enforced at the route via `RequirePermission`). ## Before you start * An organization must be selected. * Expense reports are submitted by employees and then reviewed here by managers or finance staff. ## Steps Go to `/fa/expenses/reports` via the Finance & Revenue Expenses section. The table shows report number, name, date range, total amount, status, created date, and employee. Click View on a row to open `ExpenseReportDetailPage` at `/fa/expenses/:id`. Click Edit to open `ExpenseReportEditPage` at `/fa/expenses/:id/edit`. Click Submit on a `draft` report. A toast confirms submission with the `report_number`. Click Delete; confirm in the dialog. The report is soft-deleted. ## Key concepts * `filter="all"` — this page shows all organization reports, unlike "My Expenses" which filters to the current user * `report_number` — the display identifier for an expense report * Soft delete — deleted reports are marked inactive, not permanently removed ## Related Finance & Revenue core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/ExpenseReportsPage.tsx * src/cores/fa/hooks/useExpenseReports.ts # Finance & Revenue Analytics Source: https://docs.encoreos.io/fa/analytics The path /fa/analytics has no standalone registered route and redirects or falls through to Not Found. The path `/fa/analytics` is not a standalone registered screen in `src/routes/fa.tsx`. ## Overview This path does not resolve to a standalone screen. The registered analytics routes are `/fa/analytics/dashboard` (Financial Dashboard), `/fa/analytics/kpis` (KPIs), `/fa/analytics/trends` (Trend Analysis), and `/fa/analytics/variance` (Variance Analysis). Navigating directly to `/fa/analytics` will render the Not Found page unless a redirect is added. ## Who it's for Access follows your organization's role and module configuration. — this path has no registered route. ## Related Finance & Revenue core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx # AP Aging Source: https://docs.encoreos.io/fa/ap-aging Accounts payable aging report showing outstanding vendor bills bucketed by days past due. Accounts payable aging report showing outstanding vendor bills bucketed by days past due at the in-app route `/fa/reports/ap-aging`. ## Overview This screen shows outstanding vendor bills organized into four aging buckets: Current (0–30 days), 31–60 days, 61–90 days, and Over 90 days. Each bucket displays a card with the number of bills and total amount. A "Total Outstanding" card shows the aggregate balance across all unpaid bills. A detail table below lists each unpaid bill with vendor name (linked to the bill detail), invoice number, due date, days past due, balance due, and aging bucket badge (destructive color for buckets over 60 days). The component fetches bills using `useBillList`. ## Who it's for Access follows your organization's role and module configuration. The route is registered without a `RequirePermission` wrapper in fa.tsx. ## Before you start * An organization must be selected. * Bills must exist with `status === 'approved'` and an outstanding `balance_due`. ## Steps Go to `/fa/reports/ap-aging` via the Finance & Revenue Reports menu, or use the Aging Reports hub tab. Four cards show the bill count and total per aging bucket. The Total Outstanding card shows the aggregate balance and count of unpaid bills. Click a vendor name in the detail table to open the bill detail page at `/fa/bills/:id`. ## Key concepts * Aging buckets: Current (0–30), 31–60, 61–90, Over 90 days — based on `differenceInDays(today, bill.due_date)` * Only bills with `status === 'approved'` and `balance_due > 0` are included * `balance_due` — the remaining unpaid amount on the bill ## Related Finance & Revenue core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/APAgingReportPage.tsx * src/cores/fa/hooks/useVendorBills.ts # Approval Settings Source: https://docs.encoreos.io/fa/approval-settings Configure approval thresholds for accounts payable bills based on bill amounts. Configure approval thresholds for accounts payable bills based on bill amounts at the in-app route `/fa/settings/approvals`. ## Overview This screen allows administrators to configure bill approval thresholds for the organization. It renders the `ApprovalThresholdsTable` component within a card titled "Bill Approval Thresholds." The card description reads: "Define approval requirements based on bill amounts. Bills above these thresholds require approval before posting to the general ledger." The page title is "Approval Settings" and it loads the organization via `useOrganization`. ## Who it's for Required permission: `FA_PERMISSIONS.APPROVAL_SETTINGS_ADMIN` which resolves to `fa.approval-settings.admin` (enforced at the route via `RequirePermission`). ## Before you start * You must have the `fa.approval-settings.admin` permission. * An organization must be selected and loaded. ## Steps Go to `/fa/settings/approvals` via Finance & Revenue Settings. The `ApprovalThresholdsTable` displays existing threshold rules for the organization. Use the table controls to add new thresholds or edit existing ones. ## Key concepts * `ApprovalThresholdsTable` — component rendering the threshold configuration UI * `FA_PERMISSIONS.APPROVAL_SETTINGS_ADMIN` (`fa.approval-settings.admin`) — required permission * Bill approval threshold — a dollar amount above which a bill requires approval before GL posting ## Related Finance & Revenue core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/ApprovalThresholdsPage.tsx # AR Aging Source: https://docs.encoreos.io/fa/ar-aging Accounts receivable aging analysis showing open invoices bucketed by days past due with DSO metric. Accounts receivable aging analysis showing open invoices bucketed by days past due at the in-app route `/fa/reports/ar-aging`. AR aging report surface with aging buckets and total outstanding AR ## Overview This screen provides a full accounts receivable aging analysis. It supports filters for customer type, customer, and as-of date. Key metrics displayed include Total Outstanding AR, Days Sales Outstanding (DSO), and Critical (120+ days). Aging buckets are shown in five cards: current, 31–60, 61–90, 91–120, and 120+ days. A "AR by Customer Type" breakdown and a detail table with all open invoices are also shown. The detail table links to individual invoice detail pages. An Export CSV button downloads all aging data. ## Who it's for Access follows your organization's role and module configuration. The route is registered without a `RequirePermission` wrapper in fa.tsx. ## Before you start * An organization must be selected. * Invoices must exist with open `balance_due` amounts. ## Steps Go to `/fa/reports/ar-aging` via Finance & Revenue Reports, or use the Aging Reports hub. Filter by customer type, specific customer, or as-of date. Check Total Outstanding AR, DSO, and the 120+ critical bucket. Five cards show invoice counts and totals per aging tier. The AR by Customer Type section shows totals per type. Click a customer link in the detail table to open the invoice detail page. Click "Export CSV" to download the full aging detail. ## Key concepts * DSO — Days Sales Outstanding, as computed by `useARAgingReport` * Aging buckets: current, 31–60, 61–90, 91–120, 120+ days — based on `invoice.due_date` * Customer types: `resident`, `insurance`, `government`, `grant`, `other` * `ARAgingFilters` — filter object with `customerType`, `customerId`, and `asOfDate` ## Related Finance & Revenue core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/ARAgingReportPage.tsx * src/cores/fa/hooks/useARAgingReport.ts # Asset Disposals Source: https://docs.encoreos.io/fa/asset-disposals The path /fa/disposals redirects to the Assets hub at /fa/assets?tab=disposals. The path `/fa/disposals` redirects to the Assets hub at `/fa/assets?tab=disposals` and is not a standalone screen. ## Overview This path is a legacy redirect. The route `/fa/disposals` is registered in fa.tsx as ``. Navigating to this URL will immediately redirect the browser to `/fa/assets?tab=disposals`, which opens the Assets Hub with the disposals tab active. The disposals tab content is rendered by `AssetDisposalsPage`, which shows a history of disposed assets with gain/loss tracking, year and method filters, and summary stats for total disposals, proceeds, gains, and losses. ## Who it's for Access follows your organization's role and module configuration. The Assets Hub at `/fa/assets` requires `fa.assets.view`. ## Related Finance & Revenue core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/AssetDisposalsPage.tsx # Audit Log Viewer Source: https://docs.encoreos.io/fa/audit-log-viewer Search and review all journal entry activity across the organization with date, entry number, and status filters. Search and review all journal entry activity across the organization at the in-app route `/fa/audit`. Audit log viewer listing journal entry activity ## Overview This screen provides a searchable and filterable log of all journal entry activity for the organization. Filters include date range (From/To), entry number search, and status (`draft`, `pending_approval`, `posted`, `reversed`). Results are displayed in a data table with columns for entry number, transaction date, description, status badge, source type, created-by user name, created at, and updated at. A count of returned entries is shown below the table. The page wraps its content in a `PermissionGate` requiring `FA_PERMISSIONS.AUDIT_VIEW` (`fa.audit.view`). ## Who it's for Required permission: `fa.audit.view` (enforced at the route via `RequirePermission` and also via `PermissionGate` inside the component). ## Before you start * An organization must be selected. * Journal entries must exist to appear in the log. ## Steps Go to `/fa/audit` via Finance & Revenue audit/compliance section. Enter optional date range, entry number, and status filters. Click the Search button to execute the query. Results populate the table. Each row shows entry number, date, description, status, source, and user details. ## Key concepts * `entry_number` — the journal entry identifier (displayed in monospace) * `status` values: `draft`, `pending_approval`, `posted`, `reversed` * `source_type` — the origin system or process that created the journal entry * `AuditLogFilters` — filter object with `dateFrom`, `dateTo`, `entryNumber`, `status` ## Related Finance & Revenue core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/AuditLogViewerPage.tsx * src/cores/fa/hooks/useAuditLogViewerData.ts # Bad Debt Reserves Source: https://docs.encoreos.io/fa/bad-debt-reserves Track and manage allowance for doubtful accounts with reserve calculations and write-off tracking. Track and manage allowance for doubtful accounts with reserve calculations and write-off tracking at the in-app route `/fa/bad-debt-reserves`. ## Overview This screen displays a summary of bad debt reserves and a table of all reserve records for the organization. Three summary cards show Current Reserve Balance (with last calculated date), Total Written Off YTD, and Reserve Utilization percentage. The data table shows reserve date, amount, method badge (`Percentage of Sales`, `Aging Analysis`, `Specific Identification`), linked journal entry (or "—"), and notes. A "Calculate Reserve" button opens the `CreateBadDebtReserveDialog` to create a new reserve entry. ## Who it's for Required permission: `fa.bad_debt.view` (enforced at the route via `RequirePermission`). ## Before you start * An organization must be selected. * AR invoices and customer data should exist to support reserve calculations. ## Steps Go to `/fa/bad-debt-reserves` via Finance & Revenue. Check Current Reserve Balance, Total Written Off YTD, and Reserve Utilization. The table lists past reserve entries with dates, amounts, methods, and linked journal entries. Click "Calculate Reserve" to open the dialog and create a new reserve record. ## Key concepts * `reserve_method` values: `percentage_of_sales`, `aging_analysis`, `specific_identification` * `currentReserveBalance` — current total reserve balance from `useBadDebtSummary` * `totalWrittenOffYTD` — year-to-date write-off total * `reserveUtilization` — percentage of the current reserve that has been used ## Related Finance & Revenue core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/BadDebtReservesPage.tsx * src/cores/fa/hooks/useBadDebtReserves.ts # Balance Definitions Source: https://docs.encoreos.io/fa/balance-definitions Reference page explaining the four balance types (GL, Fund, Bank, Cash Position) used across the Finance module. Reference page explaining the four balance types used across the Finance module at the in-app route `/fa/balance-definitions`. ## Overview This screen is a reference page presenting side-by-side comparison cards for the four balance types: GL Balance, Fund Balance, Bank Balance, and Cash Position. Each card shows a full description, data source, and freshness information drawn from the `BALANCE_TERMS` configuration. An animated `BalanceFlowDiagram` shows how the four balance types relate to each other. A "Why Balances May Differ" section explains common reconciliation scenarios (GL vs Bank, Fund vs GL, Cash Position vs Bank). A "Common Questions" FAQ section explains when to use each balance type and what "stale data" means. ## Who it's for Required permission: `fa.balance_definitions.view` (enforced at the route via `RequirePermission`). ## Before you start * No data entry required — this is a read-only reference page. ## Steps Go to `/fa/balance-definitions` via Finance & Revenue. The animated diagram shows how GL, Fund, Bank, and Cash Position balances relate. Each card explains a balance type's data source and freshness. The "Why Balances May Differ" section explains common causes of discrepancies. ## Key concepts * GL Balance — based on posted journal entries in the general ledger * Fund Balance — a subset view of the GL grouped by fund * Bank Balance — from bank account records linked to GL accounts * Cash Position — a calculated allocation snapshot; may not reflect the latest bank sync ## Related Finance & Revenue core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/BalanceDefinitionsPage.tsx * src/cores/fa/hooks/useBalanceTerminology.ts # Balance Reconciliation Source: https://docs.encoreos.io/fa/balance-reconciliation Side-by-side view of GL, Fund, Bank, and Cash Position totals with pairwise reconciliation status and CSV/PDF export. Side-by-side view of GL, Fund, Bank, and Cash Position totals with pairwise reconciliation status at the in-app route `/fa/balance-reconciliation`. ## Overview This screen provides a pairwise reconciliation view across four balance types. Four balance cards (GL Balance, Fund Balance, Bank Balance, Cash Position) display current totals with tooltip explanations. A Reconciliation Status card lists three pairwise comparisons (GL vs Bank, Fund vs GL, Cash vs Bank) with Matched/Variance/Not Configured badges. Variance rows show action buttons linking to resolution screens. A Troubleshooting Guide accordion expands for each variance with common causes and a link to the relevant workflow. A bank account selector enables a historical variance trend sparkline. CSV and PDF export are available via a dropdown. Fund and Cash Position comparisons show "Not Configured" when no funds or cash position exist. ## Who it's for Required permission: `fa.reconciliations.view` (enforced at the route via `RequirePermission`). ## Before you start * An organization must be selected with financial data loaded. * Configure Funds and Cash Position to enable those comparisons. ## Steps Go to `/fa/balance-reconciliation` via Finance & Revenue. Four cards show GL, Fund, Bank, and Cash Position totals with data freshness indicators. The Reconciliation Status card shows Matched or Variance for each pairwise comparison. Expand the Troubleshooting Guide accordion for variance pairs and follow the resolve link. Select a bank account to view the historical variance trend sparkline. Click Export and choose CSV or PDF to download the reconciliation report. ## Key concepts * GL vs Bank — compares GL total to bank-linked GL total * Fund vs GL — only shown when funds are configured (`data.fundCount > 0`) * Cash vs Bank — only shown when a cash position exists (`data.cashPosition !== null`) * `BalanceSourceIndicator` — shows data source and last sync timestamp * `ReconciliationVarianceTrend` — historical variance chart per bank account ## Related Finance & Revenue core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/BalanceReconciliationPage.tsx * src/cores/fa/hooks/useFinancialBalances.ts * src/cores/fa/hooks/useBankAccounts.ts # Balance Sheet Source: https://docs.encoreos.io/fa/balance-sheet GL-based snapshot of assets, liabilities, and net assets at a specific fiscal period with fund and entity filters. GL-based snapshot of assets, liabilities, and net assets at a specific fiscal period at the in-app route `/fa/reports/balance-sheet`. ## Overview This screen presents the Balance Sheet report for the current organization. Report filters include fiscal period, fund, and entity consolidation (multi-site selector). A Report Basis toggle defaults to `gaap`. A refresh button invalidates the cached query. When a period is selected, the report renders with organization name, report title, period name, and fund name in a `ReportHeader`. Account data is grouped by `account_type` (asset, liability, equity) and rendered in `BalanceSheetReport`. Export options include PDF (via `useFinancialStatementPdf`) and CSV/print via `ReportExportButtons`. A "Save Report" dialog allows saving the current filter configuration. ## Who it's for Access follows your organization's role and module configuration. The route is registered without a `RequirePermission` wrapper in fa.tsx. ## Before you start * Fiscal periods must be configured. * Journal entries must be posted to the selected period. * An organization must be selected. ## Steps Go to `/fa/reports/balance-sheet` via Finance & Revenue Reports. Choose a period from the Report Filters dropdown. The report renders once a period is selected. Filter by fund or select specific entity/site consolidation. Assets, liabilities, and equity accounts are grouped and displayed with ending balances. Click Export PDF or use ReportExportButtons for CSV export. Click Save in ReportExportButtons to open the Save Report dialog. ## Key concepts * `account_type` values: `asset`, `liability`, `equity` — used to group balance sheet lines * `ending_balance` — the balance for each account at the end of the selected period * `reportBasis` — toggle value (`gaap` default); SME should confirm effect on data * `EntityConsolidationSelector` — allows multi-site/entity filtering ## Related Finance & Revenue core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/BalanceSheetPage.tsx * src/cores/fa/hooks/useBalanceSheet.ts * src/cores/fa/hooks/useReportFilters.ts # Bank Accounts Source: https://docs.encoreos.io/fa/bank-accounts View, manage, and add bank accounts with transaction history, Plaid sync controls, and balance trend charts in the Banking hub. The path `/fa/bank-accounts` redirects to the Banking hub at `/fa/banking?tab=accounts` and is not a standalone screen. ## Overview This path is a legacy redirect. The route `/fa/bank-accounts` is registered in fa.tsx as ``. Navigating to this URL will immediately redirect the browser to the Banking Hub with the accounts tab active. The Banking Hub (`BankingHubPage`) at `/fa/banking` hosts four tabs: Accounts, Statements, Reconciliations, and Transactions. ## Who it's for Access follows your organization's role and module configuration. The Banking Hub has no top-level `RequirePermission` wrapper. ## Viewing a bank account Selecting an account opens its detail view at `/fa/bank-accounts/:id`. The header shows the account name, masked account number, bank name, and active/inactive status badge. An Account Details card shows account type, routing number (or "—"), linked GL account and number, GL balance, and bank balance (when available). For Plaid-connected accounts (`bank_provider === 'plaid'` and `plaid_connection_status === 'connected'`), Sync Now, Fetch History, and Reconcile buttons appear. Charts show transaction category breakdown and balance trend when transaction data is available. A Recent Transactions section lists up to 100 transactions (paginated by "Load More") with date, type, check number, and amount — negative amounts appear in destructive color. Filters for date range, amount range, and transaction type are available. Key concepts: * `plaid_connection_status` — `connected` enables Plaid sync controls * `maskAccountNumber` — masks the account number for display * `transaction_type` — used for the type filter dropdown * `fa_bank_statement_lines` — transaction records sourced from bank statements 1. Open the Banking Hub at `/fa/banking` and click an account, or navigate directly to `/fa/bank-accounts/:id`. 2. Review the Account Details card: type, routing number, GL account, and balances. 3. Review balance trend and category breakdown charts when transaction data exists. 4. Use date, amount, and type filters to narrow the transactions list. 5. For Plaid-connected accounts: click Sync Now to trigger a transaction sync, Fetch History to open `HistoricalSyncDialog`, or Reconcile to navigate to `/fa/reconciliations/new?accountId=...`. 6. Click "Load More" to fetch additional transactions in increments of 100. ## Creating a bank account The `/fa/bank-accounts` route redirects to `/fa/banking?tab=accounts`. Bank account creation is expected to occur within the Banking Hub tab. **Bank provider support:** `plaid` (confirmed in `BankAccountDetailPage` — checks `bank_provider === 'plaid'`) Before you start: * Navigate to the Banking Hub at `/fa/banking?tab=accounts` to access bank account management. 1. Navigate to `/fa/banking?tab=accounts`. 2. Use the Banking Hub interface to add a new bank account. SME: The creation interface within `BankingHubPage` is not fully observable from the `BankAccountDetailPage` component. Confirm the creation flow with the implementation team. ## Related Finance & Revenue core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/BankingHubPage.tsx * src/cores/fa/pages/BankAccountDetailPage.tsx * src/cores/fa/hooks/useBankAccounts.ts # Bank Reconciliation Wizard Source: https://docs.encoreos.io/fa/bank-reconciliation-wizard-user-guide Step-by-step guide for reconciling bank accounts ## Overview The Bank Reconciliation Wizard guides you through reconciling your bank accounts in 5 easy steps. It automates transaction matching, highlights discrepancies, and ensures your books match your bank statements. :::tip Before You Begin * You must have **fa.reconciliation.create** permission * Have an active bank account with a linked GL account * Download your bank statement file (CSV or OFX format) ::: ## Quick Reference | Task | Navigation Path | | ------------------------- | ------------------------------------------ | | Start New Reconciliation | **Finance > Reconciliations > New Wizard** | | View Past Reconciliations | **Finance > Reconciliations** | | Manage Bank Accounts | **Finance > Bank Accounts** | ## Step-by-Step Guide ### Step 1: Select Bank Account 1. Navigate to **Finance > Reconciliations** 2. Click **New Reconciliation** button 3. Select the bank account to reconcile from the dropdown 4. Choose the **Reconciliation Date** (typically end of statement period) 5. Set the **Period Start Date** and **Period End Date** to match your statement :::note The period dates determine which GL transactions are considered for matching. ::: ### Step 2: Import Bank Statement 1. Click or drag to upload your bank statement file 2. Select the **File Format**: * **CSV** - Comma-separated values (most common) * **OFX** - Open Financial Exchange format 3. Wait for the file to be parsed and validated 4. Review the import summary showing: * Number of transactions imported * Total debits and credits * Beginning and ending balances The system automatically triggers **auto-matching** after import. ### Step 3: Review Auto-Matches After import, the wizard automatically matches bank transactions to GL entries based on: * Amount (exact or tolerance-based) * Date proximity * Description/reference similarity Review the matches: * **High Confidence (≥70%)**: Shown in green - usually correct * **Medium Confidence (50-69%)**: Shown in yellow - verify manually * **Low Confidence (\<50%)**: Shown in red - likely needs manual attention To **remove an incorrect match**: 1. Find the match in the list 2. Click the **Remove** button 3. The transaction returns to the unmatched pool ### Step 4: Manual Match Exceptions For transactions that weren't auto-matched: 1. Select one or more **Bank Transactions** from the left column 2. Select corresponding **GL Entries** from the right column 3. Verify the totals match (shown at bottom of each column) 4. Click **Create Match** **Matching Rules:** * 1:1 match - One bank transaction to one GL entry * 1:many match - One bank transaction to multiple GL entries * many:1 match - Multiple bank transactions to one GL entry Repeat until all transactions are matched or accounted for. ### Step 5: Complete Reconciliation Review the final summary: | Item | Description | | ------------------- | --------------------------------------- | | Bank Ending Balance | Ending balance from your statement | | GL Ending Balance | Calculated balance from matched entries | | Outstanding Checks | Uncleared check amounts | | Deposits in Transit | Uncleared deposit amounts | | **Difference** | Must be \$0.00 to complete | If the difference is **\$0.00**: 1. Click **Complete Reconciliation** 2. The reconciliation is finalized and locked If there's a difference: 1. Review unmatched transactions 2. Check for missing GL entries 3. Verify statement balances are correct 4. Create adjusting entries if needed ## CSV File Format Expected CSV columns: | Column | Description | Required | Example | | ------------ | ----------------------------- | -------- | ------------------------ | | Date | Transaction date | Yes | 2026-01-15 | | Description | Transaction description | Yes | Direct Deposit - Payroll | | Amount | Transaction amount | Yes | -1,250.00 | | Check Number | Check number if applicable | No | 1234 | | Reference | Reference/confirmation number | No | TRN-9876543 | **Amount Notes:** * Negative amounts = debits (withdrawals, checks, fees) * Positive amounts = credits (deposits, transfers in) **Example CSV:** ```csv theme={null} Date,Description,Amount,Check Number,Reference 2026-01-02,Opening Balance,10000.00,, 2026-01-05,Check - Vendor Payment,-500.00,1001, 2026-01-10,Direct Deposit Payroll,5000.00,,DEP001 2026-01-15,Bank Fee,-25.00,,FEE-JAN ``` ## Tips & Best Practices * **Reconcile Monthly**: Don't let statements accumulate * **Check Dates First**: Ensure period dates capture all relevant transactions * **Review Low Confidence Matches**: Auto-matching isn't perfect * **Document Discrepancies**: Add notes for future reference * **Save Progress**: Use "Save and Exit" for complex reconciliations ## Troubleshooting ### Issue: Reconciliation Not Balanced **Symptoms**: The difference is not \$0.00 **Solutions**: 1. Check for unmatched transactions in both lists 2. Verify beginning balance matches prior reconciliation 3. Look for duplicate matches (same transaction matched twice) 4. Check for missing GL entries (timing differences) 5. Review bank fees that may need separate entries ### Issue: Auto-Match Not Finding Matches **Symptoms**: Many transactions show as unmatched despite existing GL entries **Solutions**: 1. Verify GL entries exist for the reconciliation period 2. Check that amounts match exactly (including sign) 3. Ensure dates are within the matching tolerance (typically ±3 days) 4. Look for amount rounding differences 5. Use manual matching for unusual transactions ### Issue: Cannot Complete - "Not Balanced" Error **Symptoms**: Complete button is disabled or shows balance error **Solutions**: 1. The difference must be ≤ \$0.01 to complete 2. Check for outstanding items not yet accounted for 3. Create adjusting journal entries if needed 4. Contact your accounting team for large discrepancies ### Issue: CSV Import Fails **Symptoms**: Error message during file upload **Solutions**: 1. Verify file is saved as UTF-8 CSV format 2. Check column headers match expected format 3. Ensure dates are in YYYY-MM-DD format 4. Remove any special characters from amounts 5. Try OFX format if available from your bank ## Related Guides * Bank Accounts Setup * [General Ledger Guide](/fa/general-ledger-guide) * [Chart of Accounts Guide](/fa/chart-of-accounts-guide) # Bank Statements Source: https://docs.encoreos.io/fa/bank-statements View bank statement records with statement date, lines preview, and delete option via the Banking hub. The path `/fa/bank-statements` redirects to the Banking hub at `/fa/banking?tab=statements` and is not a standalone screen. ## Overview This path is a legacy redirect. The route `/fa/bank-statements` is registered in fa.tsx as ``. Navigating to this URL will immediately redirect the browser to the Banking Hub with the statements tab active. Individual statement detail pages remain accessible at `/fa/bank-statements/:id`. ## Who it's for Access follows your organization's role and module configuration. The Banking Hub has no top-level `RequirePermission` wrapper. ## Viewing a bank statement Selecting a statement opens its detail view at `/fa/bank-statements/:id`. The page header shows the statement date formatted as "Statement - Month DD, YYYY". Statement details include the masked account number. A delete button opens a `ConfirmationDialog`; on confirmation, the statement is deleted via `useDeleteBankStatement` and the user is navigated back to `/fa/bank-statements`. The `StatementLinesPreview` component renders the transaction lines for the statement. The breadcrumb shows the formatted statement date. Before you start: * The bank statement must already exist. * An organization must be selected. Key concepts: * `maskAccountNumber` — masks the bank account number for display * `StatementLinesPreview` — component showing transaction lines for the statement * `statement_date` — the date of the bank statement record 1. Open the Banking Hub at `/fa/banking?tab=statements` and click a statement row, or navigate to `/fa/bank-statements/:id` directly. 2. Review the statement header: date and masked account number. 3. Review the transaction lines in `StatementLinesPreview`. 4. Click Delete and confirm in the dialog to delete the statement. You will be redirected to the statements list. ## Related Finance & Revenue core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/BankingHubPage.tsx * src/cores/fa/pages/BankStatementDetailPage.tsx * src/cores/fa/hooks/useBankStatements.ts # Bank Transactions User Guide Source: https://docs.encoreos.io/fa/bank-transactions-user-guide The Transactions tab in the Banking Hub provides a QuickBooks-style view for reviewing, categorizing, and posting bank transaction lines. It surfaces AI-sugges… Bank transactions surface listing pending and posted bank lines ## Overview The **Transactions** tab in the Banking Hub provides a QuickBooks-style view for reviewing, categorizing, and posting bank transaction lines. It surfaces AI-suggested categorizations and match suggestions inline, enabling rapid bookkeeping. *** ## Permissions | Permission | Key | Who Has It | | ----------------- | --------------------------- | ---------------------------------------- | | View Transactions | `fa.bank-transactions.view` | org\_admin, site\_admin, staff, readonly | | Post Transactions | `fa.bank-transactions.post` | org\_admin, site\_admin, staff | Users without `fa.bank-transactions.view` will not see the Transactions tab. *** ## Navigating to Transactions 1. Go to **Finance → Banking** 2. Click the **Transactions** tab 3. You'll see two sub-tabs: **Pending** and **Posted** *** ## Pending Tab Shows all unmatched bank transaction lines (imported from bank statements). ### Columns | Column | Description | | --------------------- | ---------------------------------------------------------- | | **Date** | Transaction date from the bank | | **Description** | Bank-provided description and check number | | **Amount** | Transaction amount (red = debit, green = credit) | | **Type** | Transaction type (debit, credit, check, etc.) | | **From/To** | Assignable vendor or customer (persisted in custom fields) | | **AI Categorization** | Confidence percentage with reasoning tooltip | | **Action** | Post button to mark as matched | ### Filtering * **Date range:** Set From and To dates to narrow results * **Account:** Filter by specific bank account * **Clear:** Reset all filters ### From/To Assignment Click the "Assign..." button in the From/To column to: 1. Search vendors and customers by name 2. Select the appropriate party 3. The selection is saved immediately A sparkle (✨) icon appears when AI has account suggestions you should review. ### AI Categorization When the AI categorization engine has processed a transaction: * A confidence percentage appears (green ≥85%, yellow ≥60%, gray \<60%) * Hover to see the AI's reasoning * Use Accept (✓) or Reject (✗) to train the system ### Posting Transactions **Single post:** Click the "Post" button on any row. **Bulk post:** 1. Check the boxes next to transactions you want to post 2. Click "Post Selected (N)" in the toolbar 3. All selected transactions are marked as matched Posted transactions move to the Posted tab. ### AI Match Suggestions When a reconciliation has been started for the transaction's account: * Match suggestions appear inline with confidence scores * Accept or reject suggestions to improve future accuracy > **Note:** Match suggestions are only available for lines that have been part of a reconciliation. Lines in accounts where no reconciliation has been started will show "No suggestions." This is a Phase 1 limitation. *** ## Posted Tab Shows all matched/posted transactions (read-only view). * Same columns as Pending (minus the action column) * Useful for reviewing what has already been processed * Filterable by date range and account *** ## Tips * **Fill out From/To** for every transaction to improve future AI suggestions * **Review AI categorizations** before posting to ensure accuracy * **Use date filters** to focus on specific periods during month-end close * **Bulk post** saves time when you've reviewed multiple transactions at once *** ## Related Features * **Bank Accounts:** Manage connected bank accounts * **Bank Statements:** Import and view statement files * **Reconciliations:** Full bank-to-GL reconciliation workflow * **AI Categorization (FA-28):** Automatic transaction categorization # Banking Source: https://docs.encoreos.io/fa/banking Tabbed hub for managing bank accounts, statements, reconciliations, and transactions in one URL-synced view. Tabbed hub for managing bank accounts, statements, reconciliations, and transactions at the in-app route `/fa/banking`. Banking hub showing bank accounts and the Plaid connect entry point ## Overview This screen is the Banking Hub, a tabbed page combining four sections: Accounts, Statements, Reconciliations, and Transactions. The active tab is controlled by the `?tab=` query parameter — valid values are `accounts`, `statements`, `reconciliations`, and `transactions`. The default tab is `accounts`. Each tab lazy-loads its respective page component. Users with `fa.banking.admin` permission see a Plaid API Usage link in the header. The hub title is "Banking" and the description is "Manage bank accounts, statements, reconciliations, and transactions." The legacy routes `/fa/bank-accounts`, `/fa/bank-statements`, and `/fa/reconciliations` all redirect to this hub with the appropriate `?tab=` parameter. ## Who it's for Access follows your organization's role and module configuration. Individual tabs and child routes may require specific permissions. `fa.banking.admin` users additionally see a Plaid API Usage link. ## Before you start * At least one bank account should be configured to see data in the Accounts tab. * An organization must be selected. ## Steps Go to `/fa/banking` via Finance & Revenue navigation. Click Accounts, Statements, Reconciliations, or Transactions. The URL updates to reflect the active tab. The Accounts tab shows all bank accounts for the organization. The Statements tab shows uploaded bank statement records. The Reconciliations tab lists reconciliation records. The Transactions tab shows transaction-level data. ## Key concepts * Tab URL state — `?tab=accounts|statements|reconciliations|transactions` persists the active tab * Legacy redirects: `/fa/bank-accounts` → `?tab=accounts`, `/fa/bank-statements` → `?tab=statements`, `/fa/reconciliations` → `?tab=reconciliations` * `fa.banking.admin` — permission that unlocks the Plaid API Usage link ## Related Finance & Revenue core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/BankingHubPage.tsx # Banking Rules Source: https://docs.encoreos.io/fa/banking-rules Manage transaction classification rules for automatic categorization of bank transactions. Manage transaction classification rules for automatic categorization of bank transactions at the in-app route `/fa/banking/rules`. ## Overview This screen renders `TransactionRulesPage`, which provides the interface for managing transaction classification rules in the Finance & Revenue banking module. Rules are used to automatically categorize bank transactions. The route requires the `fa.transaction-rules.view` permission. ## Who it's for Required permission: `fa.transaction-rules.view` (enforced at the route via `RequirePermission`). ## Before you start * Bank accounts must be connected or configured. * Chart of accounts must be set up to serve as rule targets. ## Steps Go to `/fa/banking/rules` via Finance & Revenue Banking section. The `TransactionRulesPage` lists current transaction classification rules. Use the page controls to create new rules or modify existing ones. ## Key concepts * Transaction classification rules — patterns used to auto-categorize bank transaction imports * `fa.transaction-rules.view` — required permission ## Related Finance & Revenue core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/TransactionRulesPage.tsx # Batch Processing Source: https://docs.encoreos.io/fa/batch-processing Process multiple approved expense reports for reimbursement in a single batch payment operation. Process multiple approved expense reports for reimbursement in a single batch payment operation at the in-app route `/fa/expenses/batch-process`. ## Overview This screen allows finance staff to batch-process pending expense reimbursements. It displays all pending reimbursement reports with filters for search (by report number, name, or employee name) and employee selector. Summary cards show total pending count, total pending amount, selected count, and selected amount. Reports are selected via checkboxes in the data table (maximum 100 per batch). The "Process Batch" button opens `BatchReimbursementDialog` to complete the payment. The table shows report number, name, date range, total amount, status, and employee columns. ## Who it's for Required permission: `fa.expenses.process` (enforced at the route via `RequirePermission`). ## Before you start * Expense reports must be in "approved" status to appear as pending reimbursements. * An organization must be selected. ## Steps Go to `/fa/expenses/batch-process` via Finance & Revenue Expenses section. All reports awaiting reimbursement are listed with totals. Use the search input or employee selector to narrow the list. Check the reports to include in this batch (maximum 100). Click "Process Batch" to open the `BatchReimbursementDialog` and complete the payment. ## Key concepts * `MAX_BATCH_SIZE = 100` — maximum reports per batch * `usePendingReimbursements` — fetches reports in pending reimbursement status * `BatchReimbursementDialog` — dialog for completing the batch payment * `selectedAmount` — running total of selected report amounts ## Related Finance & Revenue core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/BatchReimbursementPage.tsx * src/cores/fa/hooks/useReimbursementPayments.ts # Bills Source: https://docs.encoreos.io/fa/bills View, create, and manage vendor bills with line items, GL posting status, and approval actions in the Payables hub. The path `/fa/bills` redirects to the Payables hub at `/fa/payables?tab=bills` and is not a standalone screen. ## Overview This path is a legacy redirect. The route `/fa/bills` is registered in fa.tsx as ``. Navigating to this URL will immediately redirect the browser to the Payables Hub with the bills tab active. Individual bill create and detail routes remain available at `/fa/bills/new` and `/fa/bills/:id`. ## Who it's for Access follows your organization's role and module configuration. The Payables Hub has no top-level `RequirePermission` wrapper. ## Viewing a bill Selecting a bill opens its detail view at `/fa/bills/:id`. The header shows the bill status badge (`draft`, `pending_approval`, `approved`, `paid`, `cancelled`) and an edit button navigating to the edit route. A `BillApprovalActions` component provides approval/rejection controls. A `GLPostingIndicator` shows the GL posting state for the bill. Bill line items are displayed in a data table with columns for line number, PO line reference, account, fund, department, description, quantity billed, unit price, and amount. The breadcrumb is set to the bill's identifying fields. Before you start: * The bill must already exist (created at `/fa/bills/new`). * An organization must be selected. Key concepts: * `status` values: `draft`, `pending_approval`, `approved`, `paid`, `cancelled` * `BillApprovalActions` — approval/rejection controls component * `GLPostingIndicator` — shows GL posting state * `balance_due` — remaining unpaid amount on the bill 1. Open the Payables Hub at `/fa/payables?tab=bills` and click a bill, or navigate to `/fa/bills/:id` directly. 2. Review the bill header: status badge and edit button. 3. Use `BillApprovalActions` to approve or reject the bill if in `pending_approval` status. 4. Check the `GLPostingIndicator` to see whether the bill has been posted to the general ledger. 5. Review line items: account, fund, department, and amount details per line. ## Creating a bill The New Bill page (`/fa/bills/new`) creates a vendor bill in the accounts payable module. The page renders `BillForm` with data loaded for vendors (active only), accounts (active, ordered by account\_number), funds (active, ordered by fund\_number), departments (type `cost_center` or `both`, active), and programs (active). On submit, `useCreateBill` is called with bill header fields (including `organization_id` and `created_by`) and an array of `BillLine` items. On success, navigates to `/fa/bills/:id`. Before you start: * At least one active vendor must exist. * GL accounts should be configured. * Optionally: funds, departments, and programs for line-item coding. 1. Navigate to `/fa/bills/new`. 2. Complete the **Bill Details** card using `BillForm`: vendor, bill date, due date, bill number (or reference), notes. 3. Add line items with description, account, quantity, amount, and optional fund/department/program coding. 4. Submit. On success, you are redirected to the new bill's detail page. SME: The exact bill header fields and their validation rules are encapsulated in `BillForm`. Confirm required fields with the implementation team. ## Related Finance & Revenue core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/BillDetailPage.tsx * src/cores/fa/pages/BillCreatePage.tsx * src/cores/fa/hooks/useVendorBills.ts * src/cores/fa/hooks/useBillLines.ts * src/cores/fa/hooks/useVendors.ts * src/cores/fa/components/BillForm.tsx * src/cores/fa/components/BillLineEditor.tsx # Budget Alerts Source: https://docs.encoreos.io/fa/budget-alerts The path /fa/budgets/alerts redirects to the Budgeting hub at /fa/budgeting?tab=alerts. The path `/fa/budgets/alerts` redirects to the Budgeting hub at `/fa/budgeting?tab=alerts` and is not a standalone screen. ## Overview This path is a legacy redirect. The route `/fa/budgets/alerts` is registered in fa.tsx as ``. Navigating to this URL will immediately redirect the browser to the Budgeting Hub with the alerts tab active. The `BudgetAlertsPage` component (shown in the alerts tab) displays budget alerts with a summary card, alerts table, and a "Check Now" button to trigger `useCheckBudgetAlerts`. A threshold input allows configuring the variance percentage before checking. ## Who it's for Access follows your organization's role and module configuration. The Budgeting Hub has no top-level `RequirePermission` wrapper. ## Related Finance & Revenue core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/BudgetAlertsPage.tsx # Budget Creation Wizard - Admin Guide Source: https://docs.encoreos.io/fa/budget-creation-wizard-admin-guide This guide covers configuration and administration for the Budget Creation Wizard. ## Overview This guide covers configuration and administration for the FA-UX-03 Budget Creation Wizard. ## Permission Requirements | Permission | Description | Required For | | ------------------- | ------------------ | --------------------------- | | `fa.budget.create` | Create new budgets | Accessing the wizard | | `fa.budget.view` | View budgets | Viewing budget list | | `fa.budget.edit` | Edit budgets | Modifying draft budgets | | `fa.budget.approve` | Approve budgets | Approving submitted budgets | | `fa.budget.delete` | Delete budgets | Removing draft budgets | ### Assigning Permissions 1. Navigate to **Platform Settings → Roles & Permissions** 2. Select or create a role (e.g., "Budget Manager") 3. Enable the `fa.budget.*` permissions as needed 4. Assign the role to appropriate users *** ## Configuration ### Module Settings The wizard uses PF-41 Configurable Module Wizards infrastructure. No separate module settings are required. Standard FA module settings that affect budgets: * **Default Budget Version Type**: Set in FA Module Settings * **Fiscal Year Configuration**: Required before creating budgets ### Wizard Template The wizard template is stored in `pf_wizard_templates` with: * **Module**: `fa` * **Wizard Type**: `budget_creation` * **Steps**: 4 steps (header, template, lines, review) *** ## Customization (Future) Once PF-41 wizard builder is fully deployed, organizations can customize: | Customization | Status | Description | | ---------------- | ---------- | ---------------------------------- | | Step order | 🔜 Planned | Reorder or hide steps | | Required fields | 🔜 Planned | Mark additional fields as required | | Validation rules | 🔜 Planned | Add custom validation | | Default values | 🔜 Planned | Pre-populate fields | *** ## Monitoring ### Viewing Wizard Drafts Wizard drafts are stored in the PF-41 infrastructure: 1. Navigate to **Platform Admin → Wizards** 2. Filter by module: `fa` 3. View active drafts and their status ### Draft Expiration * **Default expiration**: 30 days * Drafts older than 30 days are automatically cleaned up * Users will see a resume prompt when returning to the wizard ### Audit Trail Budget creation actions are logged: | Event | Log Location | Details | | ---------------------- | ------------------------- | --------------------- | | Wizard started | `fa_activity_log` | User, timestamp | | Draft saved | `pf_wizard_drafts` | Step progress, values | | Budget created | `fa_budgets` | Full record | | Lines created | `fa_budget_lines` | Line items | | Submitted for approval | `fa_budgets.submitted_at` | Submission timestamp | *** ## Best Practices ### Before Budget Season 1. **Configure Fiscal Years** * Ensure next fiscal year is created in FA-01 * Verify fiscal periods are generated 2. **Approve Prior Year Budgets** * Only approved budgets can be used as templates * Review and approve any pending budgets 3. **Verify Chart of Accounts** * Ensure all needed accounts are active * Add any new expense/revenue accounts ### Training Recommendations 1. **For Finance Controllers** * Template copying with growth percentages * Scenario planning (Best Case / Worst Case) * Multi-department budget entry 2. **For Department Managers** * Basic budget line entry * Saving and resuming drafts * Understanding approval workflow ### Performance Considerations For large budgets (500+ lines): * Consider using the bulk import feature (FA-08) instead * Template copying is optimized for large line counts * Growth calculations happen on the server side *** ## Troubleshooting ### Common Admin Issues #### Users Can't Access Wizard **Check:** 1. User has `fa.budget.create` permission 2. User is in the correct organization context 3. Route is properly configured in navigation #### Template Budgets Not Appearing **Check:** 1. Source budgets have status `approved` 2. Source budgets belong to the same organization 3. RLS policies are correctly configured #### Approval Submission Fails **Check:** 1. FW-03 approval workflow is configured 2. Budget approvers are assigned 3. User has `fa.budget.approve` or is in approval chain ### Database Verification ```sql theme={null} -- Check wizard template exists SELECT * FROM pf_wizard_templates WHERE module = 'fa' AND wizard_type = 'budget_creation'; -- Check approved budgets available as templates SELECT id, version_name, status, fiscal_year_id FROM fa_budgets WHERE organization_id = '' AND status = 'approved'; -- Check recent wizard drafts SELECT * FROM pf_wizard_drafts WHERE module = 'fa' ORDER BY updated_at DESC LIMIT 10; ``` *** ## Security Considerations ### Data Access * All budget queries include `organization_id` filter (defense-in-depth) * RLS policies enforce tenant isolation * Template copying only works within same organization ### PHI/PII * Budget data does not contain PHI * User IDs are stored for audit (created\_by, approved\_by) * No external data transmission ### Audit Requirements For SOX compliance: 1. All budget modifications are timestamped 2. Approval chain is documented in `fa_budgets` 3. Changes after approval require new version *** ## Integration Points ### FA-01: Chart of Accounts * Provides accounts, funds, departments, programs * Fiscal year and period definitions ### FA-08: Budget Management * `useCreateBudget` hook for budget creation * `useBulkCreateBudgetLines` for line insertion * `useSubmitBudgetForApproval` for workflow ### FW-03: Approval Workflows * Budget submission triggers approval workflow * Approvers receive notifications * Status updates flow back to budget ### PF-41: Configurable Wizards * Step rendering and navigation * Draft persistence * Progress tracking *** ## Related Documentation * [Budget Creation Wizard - User Guide](/fa/budget-creation-wizard-user-guide) * [FA Module Settings](/fa/module-settings) * [Chart of Accounts Guide](/fa/chart-of-accounts-guide) * [FA Security Considerations](/fa/security-considerations) # Budget Creation Wizard - User Guide Source: https://docs.encoreos.io/fa/budget-creation-wizard-user-guide The Budget Creation Wizard guides you through creating an annual budget in 4 simple steps. You can create budgets from scratch or copy from prior approved budg… ## Overview The Budget Creation Wizard guides you through creating an annual budget in 4 simple steps. You can create budgets from scratch or copy from prior approved budgets with automatic growth adjustments. ## Prerequisites Before using the wizard, ensure: * **Permission**: You have the `fa.budget.create` permission * **Fiscal Year**: A fiscal year is configured in FA-01 Settings * **Chart of Accounts**: Accounts are set up in FA-01 ## Accessing the Wizard 1. Navigate to **Finance & Accounting → Budgets** 2. Click **Create Budget** or navigate directly to `/fa/budgets/wizard` *** ## Step-by-Step Workflow ### Step 1: Budget Header Enter the basic budget information: | Field | Description | Required | | ---------------- | --------------------------------------------------------------------- | -------- | | **Fiscal Year** | Select the fiscal year for this budget | ✅ Yes | | **Version Name** | Unique name (e.g., "FY2026 Baseline", "Q2 Revised") | ✅ Yes | | **Version Type** | Budget category - Baseline, Revised, Worst Case, Best Case, or Custom | ✅ Yes | | **Description** | Optional notes about this budget version | No | **Tips:** * Use descriptive version names that include the fiscal year * Choose "Baseline" for initial budgets, "Revised" for updates * Use "Worst Case" and "Best Case" for scenario planning ### Step 2: Copy Template (Optional) Optionally copy budget lines from a prior approved budget: 1. **Check "Copy from prior budget"** to enable template copying 2. **Select Source Budget** from the dropdown (only approved budgets appear) 3. **Apply Growth Percentage** (-50% to +100%): * Positive values increase all amounts (e.g., 5% for inflation) * Negative values decrease all amounts (e.g., -10% for cost reduction) * Leave at 0 to copy amounts unchanged **When to use:** * Annual budget planning where costs increase predictably * Creating scenario variations from a base budget * Rolling forward prior year budgets **Skipping this step:** * Leave the checkbox unchecked to enter lines manually in Step 3 ### Step 3: Enter Budget Lines Add, edit, and remove budget line items: | Column | Description | Required | | ---------------- | -------------------------------------- | -------- | | **Account** | GL account to budget against | ✅ Yes | | **Fund** | Fund restriction (for fund accounting) | No | | **Department** | Department allocation | No | | **Period Start** | Budget period start date | ✅ Yes | | **Period End** | Budget period end date | ✅ Yes | | **Amount** | Budgeted amount in dollars | ✅ Yes | **Actions:** * Click **Add Line** to add a new budget line * Click the **trash icon** to remove a line * The running total displays at the top **Tips:** * Period dates should fall within the selected fiscal year * Use funds and departments for segment-level budget tracking * Group similar expenses under the same account ### Step 4: Review & Submit Review your budget before submission: 1. **Verify Header Information** * Check version name and type are correct * Confirm fiscal year selection 2. **Check Totals** * Review total budget amount * Verify line count matches expectations 3. **Submission Options** * **Submit for approval immediately**: Budget goes directly to approval workflow * **Save as draft**: Budget is saved but not submitted (default) 4. Click **Create Budget** to complete the wizard *** ## Common Tasks ### Creating a Budget from Scratch 1. In Step 2, **leave the template checkbox unchecked** 2. In Step 3, manually add all budget lines 3. Review and submit ### Copying a Prior Year Budget with Growth 1. In Step 2, **check "Copy from prior budget"** 2. Select the source budget 3. Enter growth percentage (e.g., 5% for 5% increase) 4. In Step 3, review copied lines and adjust as needed 5. Submit ### Saving Progress for Later 1. Complete any steps you can 2. Click **Save and Exit** 3. Return to `/fa/budgets/wizard` to resume 4. Your draft will be preserved for 30 days ### Creating Multiple Budget Scenarios 1. Create your baseline budget first 2. Copy the baseline using different growth percentages: * "FY2026 Best Case" with +10% growth * "FY2026 Worst Case" with -15% growth 3. Submit each scenario for comparison *** ## Troubleshooting ### Budget Not Saving **Symptoms:** Changes aren't persisted after refresh **Solutions:** 1. Check your internet connection 2. Verify you have `fa.budget.create` permission 3. Try clicking "Save and Exit" explicitly ### Template Not Available **Symptoms:** No budgets appear in the template dropdown **Causes:** * Only **approved** budgets can be used as templates * Budgets in draft or pending status don't appear **Solution:** Contact your finance admin to approve the needed budget ### Validation Errors **Symptoms:** Red error messages appear **Common errors:** * "At least one budget line required" → Add lines in Step 3 * "Account is required" → Select an account for each line * "Amount must be greater than 0" → Enter a positive budget amount ### Growth Percentage Not Applied **Symptoms:** Copied lines have original amounts **Solution:** 1. Return to Step 2 2. Verify growth percentage is entered 3. Re-advance to Step 3 *** ## FAQ **Q: Can I edit a budget after creation?** A: Yes, navigate to the budget detail page and click "Edit" (if the budget is not locked). **Q: What happens if I submit for approval?** A: The budget enters the FW-03 approval workflow. Approvers will receive notifications. **Q: Can I delete a submitted budget?** A: Only draft budgets can be deleted. Submitted budgets must be rejected or withdrawn first. **Q: How long are drafts saved?** A: Wizard drafts are saved for 30 days in the PF-41 wizard infrastructure. *** ## Related Documentation * [Chart of Accounts Guide](/fa/chart-of-accounts-guide) * Budget Management (FA-08) * [Fiscal Period Management](/fa/chart-of-accounts-guide#fiscal-periods) # Budget Scenarios Source: https://docs.encoreos.io/fa/budget-scenarios The path /fa/budget-scenarios redirects to the Budgeting hub at /fa/budgeting?tab=scenarios. The path `/fa/budget-scenarios` redirects to the Budgeting hub at `/fa/budgeting?tab=scenarios` and is not a standalone screen. ## Overview This path is a legacy redirect. The route `/fa/budget-scenarios` is registered in fa.tsx as ``. Navigating to this URL will immediately redirect the browser to the Budgeting Hub with the scenarios tab active. Individual scenario detail, create, and edit routes remain available at `/fa/budget-scenarios/:id`, `/fa/budget-scenarios/new`, and `/fa/budget-scenarios/:id/edit`. Detail pages use `BudgetScenarioDetailPage` which shows scenario lines, comparison view (`ScenarioComparisonView`), and status/type badges. ## Who it's for Access follows your organization's role and module configuration. Scenario detail routes require `fa.budget_scenarios.view`. ## Related Finance & Revenue core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/BudgetScenarioDetailPage.tsx # Budget Templates Source: https://docs.encoreos.io/fa/budget-templates The path /fa/budget-templates redirects to the Budgeting hub at /fa/budgeting?tab=templates. The path `/fa/budget-templates` redirects to the Budgeting hub at `/fa/budgeting?tab=templates` and is not a standalone screen. ## Overview This path is a legacy redirect. The route `/fa/budget-templates` is registered in fa.tsx as ``. The route `/fa/template-library` also redirects to the same destination. Navigating to either URL will redirect to the Budgeting Hub with the templates tab active. Individual template detail, create, and edit routes remain available at `/fa/budget-templates/:id`, `/fa/budget-templates/new`, and `/fa/budget-templates/:id/edit`. Template detail pages use `BudgetTemplateDetailPage`, which shows template structure, sharing badge, apply template dialog, and export dialog. ## Who it's for Access follows your organization's role and module configuration. Template detail routes require `fa.budget_templates.view`; create requires `fa.budget_templates.create`. ## Related Finance & Revenue core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/BudgetTemplateDetailPage.tsx # Budget vs Actual Source: https://docs.encoreos.io/fa/budget-vs-actual View a side-by-side comparison of a budget's planned amounts against actual GL activity, with variance drill-down and CSV export. Budget vs Actual displays the planned budget amounts for a selected budget record alongside the actual general-ledger activity posted to date, highlighting variances. Route: `/fa/reports/budget-vs-actual/:id` ## Overview The Budget vs Actual page loads a budget record by its `:id` URL parameter and fetches two datasets: line-level variance data and a rollup summary. Filters for period, fund, and department can be applied interactively. A YTD toggle is available. Users can export the displayed variance data to CSV. ## Who it's for Access follows your organization's role and module configuration. ## Before you start * A budget record must already exist. Navigate via `/fa/budgets/:id` or the Budgets list. * Ensure GL entries for the relevant period have been posted so actuals are reflected. ## Steps Navigate to `/fa/budgets/:id` and select the Budget vs Actual action, or go directly to `/fa/reports/budget-vs-actual/:id`. Use the filter controls to narrow by period, fund, or department. Toggle YTD on or off as needed. The report table shows budget amounts, actual amounts, and variance per line. The summary section shows rollup totals. Click the download button. The export is named `budget-vs-actual-`. The button is disabled when no data rows are loaded. ## Key concepts * **`version_name`** — The budget record's human-readable label, used in breadcrumbs and the CSV filename. * **YTD** — Year-to-date mode; affects how the variance query aggregates actuals. * **`useBudgetVsActual` / `useBudgetVsActualSummary`** — Primary data hooks; both accept `budgetId`, `organizationId`, and filter parameters. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/BudgetVsActualPage.tsx * src/cores/fa/hooks/useBudgetVsActual.ts * src/cores/fa/hooks/useBudgets.ts * src/cores/fa/utils/exportReportCsv.ts # Budget Wizard Source: https://docs.encoreos.io/fa/budget-wizard Step-by-step wizard for creating a new budget, including header setup, optional template copy, line entry, and review before submission. Budget Wizard is a multi-step wizard that guides authorized users through creating a new budget record, optionally copying from an existing template. Route: `/fa/budgets/wizard` ## Overview The wizard uses the platform `ModuleWizardRenderer` infrastructure. It reads optional pre-populated state passed via `location.state` (e.g., when launching from the Template Library with `fromTemplate: true`). The four documented steps are: Budget Header, Copy Template (optional), Enter Budget Lines, and Review & Submit. On completion the user is navigated to the new budget detail page. On abandonment the user is returned to the budgets list. Alternate entry: `/fa/budgets/new` redirects here. ## Who it's for Requires permission: `fa.budgets.create` ## Before you start * You must hold the `fa.budgets.create` permission. * Fiscal periods and funds should already be configured so they are available during line entry. * Optionally, budget templates can be pre-created to speed up line population. ## Steps Go to `/fa/budgets/wizard` or click **Create Budget** from the Budgets list. Enter required header information for the budget record. Select an existing budget template to pre-populate budget lines. Skip this step to enter lines manually. Add or edit individual line items. Review the complete budget. Submit to trigger the approval workflow, or save as draft. ## Key concepts * **`ModuleWizardRenderer`** — Platform wizard infrastructure that manages step navigation and validation. * **`BudgetVersionType`** — Type discriminator for the budget record created by this wizard. * **`useSubmitBudgetForApproval`** — Hook called on final submission to route the budget through the approval flow. * **`location.state.fromTemplate`** — When `true`, pre-populates `budget_lines` from the passed template structure. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/wizards/budget-creation/BudgetCreationWizardPage.tsx * src/cores/fa/wizards/budget-creation/types.ts * src/cores/fa/hooks/useBudgets.ts # Budgets Source: https://docs.encoreos.io/fa/budgets Create, view, and manage organization budgets with line items, approval history, variance analysis, and forecast tabs. The `/fa/budgets` route redirects to the Budgets & Forecasts hub at `/fa/budgeting?tab=budgets`. Route: `/fa/budgets` ## Overview `/fa/budgets` is a legacy route that now redirects to `/fa/budgeting?tab=budgets` (the Budgets & Forecasts hub, Budgets tab). The hub displays the budget list, active-alert summary card, and pending approvals. Users can create a new budget (launches the Budget Wizard) or navigate to an existing budget's detail page. See [Budgets & Forecasts](/fa/budgets-forecasts) for the hub documentation. ## Who it's for Access follows your organization's role and module configuration. Creating budgets requires permission `fa.budgets.create`. ## Before you start * Any existing bookmarks or links to `/fa/budgets` will land on the Budgets tab of the hub automatically. * Know the budget name, fiscal period, and version type (`annual`, `revised`, `forecast`, etc.) before creating. * Have GL accounts, funds, departments, and programs ready for line-item coding. ## Steps Visit `/fa/budgets` — the browser is redirected to `/fa/budgeting?tab=budgets`. Click **Create Budget** to open the Budget dialog, or use the wizard at `/fa/budgets/wizard`. Click a budget row to navigate to `/fa/budgets/:id`. ## Viewing a budget Selecting a budget opens its detail view at `/fa/budgets/:id`. Five URL-synced tabs are available: Overview, Lines, Approval, Variance, and Forecast. The Overview tab shows a `BudgetSummaryCard`. The Lines tab displays `BudgetLineGrid` with an option to add new lines via `BudgetLineForm`. The Approval tab shows `BudgetApprovalHistory`. Active alerts are shown via `BudgetAlertCard`. When the budget status is `pending_approval`, Approve and Reject buttons open `BudgetApprovalDialog`. A `BudgetActionsMenu` provides additional actions. A `BudgetAllocationDialog` is accessible for allocation operations. The breadcrumb is set from `budget.version_name`. Before you start: * The budget must already exist (created via the Budget Creation Wizard at `/fa/budgets/wizard`). * An organization must be selected. Key concepts: * `version_name` — the display name of the budget version * `status` — budget lifecycle state; `pending_approval` enables approval actions * `BudgetLineGrid` — component rendering budget line items * `BudgetApprovalDialog` — approval/rejection modal with action type `approve` or `reject` * Tab URL state — `?tab=overview|lines|approval|variance|forecast` 1. Open the Budgeting Hub at `/fa/budgeting?tab=budgets` and click a budget row, or navigate to `/fa/budgets/:id` directly. 2. Review the **Overview** tab: the budget summary card shows key metrics. 3. Review or edit **Lines**: the Lines tab shows all budget line items. Click Add Line to open `BudgetLineForm`. 4. Review **Approval** history in the Approval tab. 5. When status is `pending_approval`, use the Approve or Reject buttons to open `BudgetApprovalDialog`. 6. Use **Variance** and **Forecast** tabs for variance analysis and forecast data. ## Creating a budget New budget creation is handled by the Budget Creation Wizard. The route `/fa/budgets/new` redirects to `/fa/budgets/wizard`. The wizard is rendered by `BudgetCreationWizardPage` using the `ModuleWizardRenderer` infrastructure. The wizard supports 4 steps: 1. **Budget Header** — form step for budget metadata 2. **Copy Template** — optional step; pre-populates budget lines from a template (triggered when navigated from Template Library with `location.state.fromTemplate`) 3. **Enter Budget Lines** — custom step for line-item entry 4. **Review & Submit** — summary and submission step On completion: a `fa_budgets` record is created via Supabase direct insert, budget lines are created, and `useSubmitBudgetForApproval` handles approval workflow submission. **Permission gate:** `fa.budgets.create` (wizard route level) Optionally: select a budget template from the Template Library before creating. 1. Navigate to `/fa/budgets/new` (redirected to `/fa/budgets/wizard`), or click **New Budget** from the Budgeting Hub. 2. Complete each wizard step. 3. On the Review & Submit step, submit the budget. The wizard triggers the approval workflow via `useSubmitBudgetForApproval`. SME: The exact fields for each wizard step are implemented in wizard step components not fully readable from the page wrapper alone. Confirm step-by-step field requirements with the implementation team. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/BudgetsPage.tsx * src/cores/fa/pages/BudgetingHubPage.tsx * src/cores/fa/pages/BudgetDetailPage.tsx * src/cores/fa/wizards/budget-creation/BudgetCreationWizardPage.tsx * src/cores/fa/hooks/useBudgets.ts * src/cores/fa/hooks/useBudgetAlerts.ts * src/platform/wizards/ModuleWizardRenderer.tsx # Budgets & Forecasts Source: https://docs.encoreos.io/fa/budgets-forecasts Tabbed hub for managing budgets, budget alerts, scenarios, rolling forecasts, and budget templates in one place. Budgets & Forecasts is the central hub for all budgeting and forecasting activity, presenting five tabs: Budgets, Alerts, Scenarios, Forecasts, and Templates. Route: `/fa/budgeting` Budgeting hub listing organization budgets ## Overview The hub uses `useTabUrlState` to sync the active tab with the URL query parameter `?tab=` (valid values: `budgets`, `alerts`, `scenarios`, `forecasts`, `templates`). Each tab lazy-loads its content. Legacy direct routes (`/fa/budgets`, `/fa/budget-scenarios`, `/fa/rolling-forecasts`, `/fa/budget-templates`, `/fa/template-library`) redirect here with the appropriate `?tab=` value. ## Who it's for Access follows your organization's role and module configuration. ## Before you start * No prerequisites for viewing. Creating or modifying records within each tab may require additional permissions. ## Steps Go to `/fa/budgeting` or follow a redirect from any legacy budget route. Choose from Budgets, Alerts, Scenarios, Forecasts, or Templates. The selected tab is reflected in the URL. Each tab provides its own list view, actions, and navigation to detail pages. ## Key concepts * **`useTabUrlState`** — Platform hook that reads and writes the `?tab=` query parameter for shareable, bookmarkable tab state. * **Tabs**: `budgets`, `alerts`, `scenarios`, `forecasts`, `templates`. ## Viewing a budget scenario The Scenario Details page at `/fa/budget-scenarios/:id` shows a single budget scenario's lines and comparisons. (The list path `/fa/budget-scenarios` redirects to `/fa/budgeting?tab=scenarios`.) Permission required: `fa.budget_scenarios.view`. The page uses a tabbed layout (default: `lines`), loading the scenario via `useBudgetScenario` and its lines via `useScenarioBudgetLines`: * **Lines tab** — `ScenarioBudgetLineEditor` for editing per-account budget amounts. * **Comparison tab** — `ScenarioComparisonView` for viewing differences. Actions include activating the scenario (sets `status` to `'active'`) and deleting it. The scenario name is shown in the breadcrumb. 1. Navigate to `/fa/budgeting?tab=scenarios` and click a scenario, or go directly to `/fa/budget-scenarios/:id`. 2. Review the **Lines** tab to see the budget line editor. 3. Click the **Comparison** tab to review `ScenarioComparisonView`. 4. To activate, click the **Activate** action (requires appropriate permission). Status is updated to `active`. 5. To delete, use the delete action and confirm the dialog. ## Creating a budget scenario The New Scenario page at `/fa/budget-scenarios/new` creates a what-if budget scenario. Permission required: `fa.budget_scenarios.create`. The form uses `BudgetScenarioForm`. On submit, `useCreateBudgetScenario` is called followed by `useCreateScenarioBudgetLine` (batch) for any lines. The scenario is created with `status: "draft"`. On success you are redirected to `/fa/budget-scenarios/:id`. Before you start: determine the scenario name, type, and optional description; know which base budget (if any) you are modeling from; prepare any scenario assumptions and notes. 1. Navigate to `/fa/budgeting?tab=scenarios` and select **New Scenario**, or go to `/fa/budget-scenarios/new`. 2. Fill in the scenario name, type, description, and optional base budget. 3. Add scenario lines if applicable (account, period, budget amount per line). 4. Select **Create**. Scenario header and lines are saved in a single batch operation. 5. You are redirected to the new scenario's detail page. **Key concepts:** `scenario_type` controls categorization; `assumptions` is a JSON field; scenario lines are individual budget amounts per account/period/dimension. ## Editing a budget scenario The Edit Scenario page at `/fa/budget-scenarios/:id/edit` updates an existing scenario's header and period-level budget lines. Permission required: `fa.budget_scenarios.edit`. `BudgetScenarioEditPage` fetches the scenario via `useBudgetScenario` and its lines via `useScenarioBudgetLines`. On submit: (1) updates the header (`scenario_name`, `scenario_type`, `scenario_description`, `base_budget_id`, `assumptions`, `notes`) via `useUpdateBudgetScenario`; (2) creates new lines, updates changed lines, and deletes removed lines. On success, navigates to `/fa/budget-scenarios/:id`. | Concept | Description | | ------------------------ | ------------------------------------------------------- | | `BudgetScenarioForm` | Shared form for scenario header and budget lines | | `useBudgetScenario` | Hook fetching the existing scenario header | | `useScenarioBudgetLines` | Hook fetching budget lines for the scenario | | `assumptions` | JSON field; SME: confirm schema and interpretation | | `base_budget_id` | Optional reference to a budget the scenario is based on | 1. From the Budgeting Hub scenarios tab, open the scenario and click **Edit** to go to `/fa/budget-scenarios/:id/edit`. 2. Update header fields (name, type, description, base budget, assumptions, notes). 3. Add, update, or remove period budget lines as needed. 4. Click **Save**. On success the page navigates to the scenario detail. ## Viewing a budget template The Template Details page at `/fa/budget-templates/:id` shows a budget template's structure, line items, and sharing configuration. (The list path `/fa/budget-templates` and `/fa/template-library` redirect to `/fa/budgeting?tab=templates`.) Permission required: `fa.budget_templates.view`. The page loads the template via `useBudgetTemplateById` and enriched lines via `useTemplateWithEnrichedLines`. Components include `ApplyTemplateDialog`, `TemplateExportDialog`, `TemplateSharingBadge`, and a `DataTable` of line items (account number, name, budget amount, notes). Actions: edit, delete, apply, and export. 1. Navigate to `/fa/budgeting?tab=templates` and click a template, or go to `/fa/budget-templates/:id`. 2. Review the line items table and sharing badge. 3. Click **Apply** to open `ApplyTemplateDialog` and apply the template to a budget. 4. Click **Export** to open `TemplateExportDialog`. 5. Click **Edit** to navigate to the edit route (requires `fa.budget_templates.edit`). 6. Click **Delete** and confirm the alert dialog to remove the template. **Key concepts:** Template lines have `account_id`, `budget_amount`, and optional `notes`; sharing level is displayed via `TemplateSharingBadge`. ## Creating a budget template The New Template page at `/fa/budget-templates/new` creates a reusable budget template. Permission required: `fa.budget_templates.create`. (Note: the alternate route `/fa/reports/statements/templates/new` opens the Statement Template Designer Wizard — a separate 5-step wizard for financial statement layouts requiring `fa.statement-templates.create`.) `BudgetTemplateNewPage` renders `BudgetTemplateForm` with fields for template name, description, category, sharing level, and notes. `CreateFromBudgetDialog` is available to seed the template from an existing budget. On submit, `useCreateBudgetTemplate` saves the record with an empty `template_structure` and redirects to `/fa/budget-templates`. Before you start: know the template name and category; optionally have an existing budget to use as a starting point. 1. Navigate to `/fa/budgeting?tab=templates` and select **New Template**, or go to `/fa/budget-templates/new`. 2. Fill in template name, description, category, sharing level, and notes. 3. Optionally use **Create from Budget** to seed lines from an existing budget. 4. Select **Create**. The template is saved and you return to the template list. **Key concepts:** `template_structure` is a JSON object (`{ lines: [], metadata: null }`) initialized on creation; `sharing_level` controls visibility scope. ## Editing a budget template The Edit Template page at `/fa/budget-templates/:id/edit` updates an existing budget template's name, description, category, sharing level, and notes. Permission required: `fa.budget_templates.edit`. (Note: the alternate route `/fa/reports/statements/templates/:templateId/edit` opens `StatementTemplateWizardPage` requiring `fa.statement-templates.update` — a separate flow.) `BudgetTemplateEditPage` fetches the template via `useBudgetTemplateById` and renders `BudgetTemplateForm` pre-populated. On submit, `useUpdateBudgetTemplate` is called with `template_name`, `template_description`, `template_category`, `sharing_level`, and `notes`. On success, navigates to `/fa/budget-templates/:id`. | Concept | Description | | ----------------------------- | ---------------------------------------------------- | | `BudgetTemplateForm` | Form for budget template metadata | | `useBudgetTemplateById` | Hook fetching the existing budget template | | `useUpdateBudgetTemplate` | Mutation hook persisting budget template edits | | `StatementTemplateWizardPage` | Wizard for statement template edit (alternate route) | | `sharing_level` | SME: confirm allowed values and access scope | 1. From the Budgeting Hub templates tab, open the budget template and click **Edit** to go to `/fa/budget-templates/:id/edit`. 2. Update `template_name`, `template_description`, `template_category`, `sharing_level`, and `notes`. 3. Click **Save**. On success you navigate to the template detail view. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/BudgetingHubPage.tsx * src/cores/fa/pages/BudgetScenarioDetailPage.tsx * src/cores/fa/pages/BudgetScenarioNewPage.tsx * src/cores/fa/pages/BudgetScenarioEditPage.tsx * src/cores/fa/pages/BudgetTemplateDetailPage.tsx * src/cores/fa/pages/BudgetTemplateNewPage.tsx * src/cores/fa/pages/BudgetTemplateEditPage.tsx * src/cores/fa/hooks/useBudgetScenarioDetail.ts * src/cores/fa/hooks/useBudgetScenarioMutation.ts * src/cores/fa/hooks/useBudgetTemplateDetail.ts * src/cores/fa/hooks/useBudgetTemplateMutation.ts * src/cores/fa/components/BudgetScenarioForm.tsx * src/cores/fa/components/BudgetTemplateForm.tsx * src/cores/fa/components/ScenarioBudgetLineEditor.tsx * src/cores/fa/components/ApplyTemplateDialog.tsx * src/cores/fa/wizards/statement-template/StatementTemplateWizardPage.tsx # Card Transactions Source: https://docs.encoreos.io/fa/card-transactions View and manage Ramp corporate card transactions including GL coding and connection status for the Ramp integration. Card Transactions displays the Ramp corporate card connection status and a table of card transactions for GL coding. Route: `/fa/card-transactions` ## Overview The page renders two components: `RampConnectionCard` (shows the current Ramp integration connection state) and `CardTransactionsTable` (lists imported card transactions). The page header reads "Corporate Card Transactions — Manage Ramp corporate card transactions and GL coding." ## Who it's for Requires permission: `fa.ramp.view_transactions` ## Before you start * The Ramp integration must be configured. Contact your administrator if the connection card shows an error state. * You must hold the `fa.ramp.view_transactions` permission. ## Steps Go to `/fa/card-transactions`. The Ramp Connection Card at the top shows whether the Ramp integration is active. The transactions table lists imported card transactions. Use any available filters to narrow the list. Select a transaction and assign GL codes as needed. ## Key concepts * **`RampConnectionCard`** — Component showing Ramp integration status. * **`CardTransactionsTable`** — Component listing imported corporate card transactions. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/CardTransactionsPage.tsx * src/cores/fa/components/CardTransactionsTable.tsx * src/cores/fa/components/RampConnectionCard.tsx # Cash Flow Source: https://docs.encoreos.io/fa/cash-flow Generate and view a cash flow statement report for a selected fiscal period, with export and save-as-definition options. Cash Flow generates a cash flow statement report filtered by fiscal period, with export capabilities and the ability to save the report definition for reuse. Route: `/fa/reports/cash-flow` ## Overview The page uses `useReportFilters` to manage filter state (period, fund, department) and `useCashFlow` to fetch the statement data. Fiscal periods are loaded via `useFiscalPeriods`. The report displays the `CashFlowReport` component. Users can export via `ReportExportButtons` and save the current filter configuration as a named report definition via `useSaveReportDefinition`. Report type is `cash_flow`. ## Who it's for Access follows your organization's role and module configuration. ## Before you start * Fiscal periods must be configured and GL entries posted for the desired period. * The reports hub at `/fa/reports` provides navigation to this page. ## Steps Go to `/fa/reports/cash-flow` or click the link from the Reports hub. Use the report filters to choose the period. Additional filters may be available. The `CashFlowReport` renders the statement for the selected period. Use export buttons to download. Click Save to open the Save Report dialog and persist the filter configuration as a named report definition. ## Key concepts * **`useCashFlow`** — Primary data hook; accepts `organizationId` and `periodId`. * **`useReportFilters`** — Hook managing filter state with `filters` and `updateFilter`. * **`useSaveReportDefinition`** — Persists a named report definition of type `cash_flow`. * **`ReportExportButtons`** — Component providing export actions. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/CashFlowPage.tsx * src/cores/fa/hooks/useCashFlow\.ts * src/cores/fa/hooks/useFiscalPeriods.ts * src/cores/fa/hooks/useReportDefinitions.ts * src/cores/fa/components/CashFlowReport.tsx # Cash Flow Forecast Source: https://docs.encoreos.io/fa/cash-flow-forecast View projected cash inflows and outflows by period, generate new forecasts using configurable assumptions, and export forecast data to CSV. Cash Flow Forecast shows projected cash positions by period (daily, weekly, or monthly), visualized in a chart and detailed in a data table, with the ability to generate new forecasts using configurable assumptions. Route: `/fa/cash-forecasts` ## Overview The page fetches the current cash position via `useLatestCashPosition` and a list of cash forecasts filtered by the selected period via `useCashForecastList`. A period selector (daily / weekly / monthly) controls both the chart and table. Forecast assumptions (horizon, growth rates, budget weight, period adjustments) are configurable in a dialog. Users can generate a new forecast and export results to CSV. ## Who it's for Requires permission: `fa.cash_management.view` ## Before you start * Cash positions must have been calculated (via the Cash Management dashboard or automated process). * You must hold the `fa.cash_management.view` permission. ## Steps Go to `/fa/cash-forecasts`. Choose Daily, Weekly, or Monthly from the period selector to change the chart and table granularity. The `CashFlowForecastChart` visualizes projected cash positions. The data table shows period-by-period detail. Click the settings icon to open the Forecast Assumptions dialog. Adjust the forecast horizon, growth rates, and budget weight, then click Generate. Click the download button to export the current forecast data. ## Key concepts * **`ForecastAssumptions`** — Object containing `forecastHorizon`, `inflowGrowthRate`, `outflowGrowthRate`, `budgetWeight`, and `periodAdjustments`. * **`useGenerateForecast`** — Hook that triggers forecast generation based on current assumptions. * **`useCashForecastList`** — Primary data hook; accepts `organizationId` and `{ period }`. * **`CashFlowForecastChart`** — Chart component rendering the forecast visualization. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/CashFlowForecastPage.tsx * src/cores/fa/hooks/useCashForecasts.ts * src/cores/fa/hooks/useCashPositions.ts * src/cores/fa/components/CashFlowForecastChart.tsx * src/cores/fa/components/ForecastAssumptionsDialog.tsx # Cash Management Source: https://docs.encoreos.io/fa/cash-management Dashboard showing the organization's current cash position, 30-day trend chart, and per-fund cash breakdown with drill-down to bank accounts. Cash Management is a dashboard displaying the latest cash position, a 30-day historical trend chart, and a per-fund breakdown, with navigation to bank account details. Route: `/fa/cash-management` Cash management dashboard with total cash position and trend ## Overview The dashboard fetches the latest cash position via `useLatestCashPosition` and historical positions for the past 30 days via `useCashPositionList`. The `CashPositionTrendsChart` renders the trend. A data table breaks down cash by fund (`CashByFundRow`). Clicking on a bank account row navigates to the bank account detail page. The refresh button calls `useCalculateCashPosition`. ## Who it's for Requires permission: `fa.cash_management.view` ## Before you start * Bank accounts must be configured and linked. * You must hold the `fa.cash_management.view` permission. ## Steps Go to `/fa/cash-management`. Stat cards show the latest total cash and related metrics from `useLatestCashPosition`. The `CashPositionTrendsChart` shows cash position history over the past 30 days. The per-fund table shows cash allocated by fund. Click a bank account row to navigate to its detail page. Click Refresh to trigger `useCalculateCashPosition` and update the displayed data. ## Key concepts * **`useLatestCashPosition`** — Hook fetching the most recent cash position record. * **`useCashPositionList`** — Hook fetching historical positions; accepts a `startDate` filter. * **`useCalculateCashPosition`** — Hook triggering a cash position recalculation. * **`CashPositionTrendsChart`** — Chart component for the 30-day trend visualization. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/CashManagementDashboard.tsx * src/cores/fa/hooks/useCashPositions.ts * src/cores/fa/components/CashPositionTrendsChart.tsx # Finance & Accounting - Chart of Accounts Guide Source: https://docs.encoreos.io/fa/chart-of-accounts-guide The Chart of Accounts (CoA) module provides comprehensive fund accounting capabilities for behavioral health organizations, including fund tracking, department… Chart of Accounts surface listing the general-ledger accounts ## Overview The Chart of Accounts (CoA) module provides comprehensive fund accounting capabilities for behavioral health organizations, including fund tracking, department hierarchies, program management, and fiscal period control. ## Table of Contents 1. [Chart of Accounts Setup](#chart-of-accounts-setup) 2. [Fund Management](#fund-management) 3. [Department Hierarchy](#department-hierarchy) 4. [Programs Configuration](#programs-configuration) 5. [Fiscal Period Management](#fiscal-period-management) 6. [Starter Chart of Accounts](#starter-chart-of-accounts) *** ## Chart of Accounts Setup ### Creating Accounts 1. Navigate to **Finance** → **Chart of Accounts** 2. Click **New Account** 3. Fill in required fields: * **Account Number**: Unique identifier (e.g., `1000`) * **Account Name**: Descriptive name (e.g., `Cash - Operating`) * **Account Type**: Asset, Liability, Equity, Revenue, or Expense * **Account Subtype**: Specific classification within type * **Normal Balance**: Debit or Credit 4. Optional configuration: * **Parent Account**: Create hierarchical structure * **Default Fund**: Assign to specific fund * **Requires Fund**: Force fund selection on transactions * **Requires Department**: Force department selection * **Allows Posting**: Enable direct journal entries ### Account Hierarchy Accounts support multi-level hierarchies: * **Control Accounts**: Summary accounts (e.g., `1000 - Assets`) * **Sub-Accounts**: Detail accounts (e.g., `1010 - Cash`, `1020 - A/R`) * **Level**: Auto-calculated based on parent relationships *** ## Fund Management ### Fund Types **Unrestricted Funds** * General operating funds * No donor restrictions * Maximum flexibility in usage **Temporarily Restricted Funds** * Donor-imposed restrictions * Released when conditions met * Time or purpose-based **Permanently Restricted Funds** * Endowments * Principal permanently restricted * Only earnings may be spent **Special Purpose Funds** * Designated for specific programs * Board-restricted or donor-restricted **Capital Funds** * Building and equipment purchases * Major capital improvements **Operating Funds** * Day-to-day operations * Program-specific operating expenses ### Creating Funds 1. Navigate to **Finance** → **Funds** 2. Click **New Fund** 3. Configure: * **Fund Number**: Unique code * **Fund Name**: Descriptive name * **Fund Type**: Select from types above * **Restrictions** (if applicable): * Donor restrictions * Purpose restrictions * Time restrictions ### Fund Tracking Best Practices * Create separate funds for each grant/contract * Use descriptive names (e.g., `SAMHSA-BH-2024`) * Document all restrictions in the system * Review fund balances monthly * Track restriction releases *** ## Department Hierarchy ### Creating Departments 1. Navigate to **Finance** → **Departments** 2. Click **New Department** 3. Fill in: * **Department Code**: Short identifier (e.g., `ADMIN`) * **Department Name**: Full name * **Parent Department**: Create hierarchy * **Cost Center**: Accounting reference * **Is Clinical**: Flag for clinical departments ### Hierarchical Organization Example structure: ``` Administration (ADMIN) ├── Finance (FIN) ├── HR (HR) └── IT (IT) Clinical Services (CLIN) ├── Residential Treatment (RES) ├── Outpatient (OP) └── Case Management (CM) Support Services (SUPP) ├── Facilities (FAC) └── Maintenance (MAINT) ``` ### Department Reporting * Cost center tracking * Department-level P\&L * Budget vs. actual by department * Cross-department allocations *** ## Programs Configuration ### Creating Programs 1. Navigate to **Finance** → **Programs** 2. Click **New Program** 3. Configure: * **Program Code**: Unique identifier * **Program Name**: Service line name * **Department**: Link to owning department * **Revenue Generating**: Yes/No flag ### Program Types **Revenue-Generating Programs** * Direct client service programs * Track program-specific revenue * Allocate costs appropriately **Non-Revenue Programs** * Administrative functions * Support services * Overhead allocation targets ### Program Tracking Use programs to: * Track service line profitability * Allocate indirect costs * Report to funders by program * Analyze program efficiency *** ## Fiscal Period Management ### Creating Fiscal Years 1. Navigate to **Finance** → **Fiscal Periods** 2. Click **New Fiscal Year** 3. Enter: * **Year Code**: e.g., `FY2024` * **Start Date**: Fiscal year start * **End Date**: Fiscal year end * **Is Current**: Mark as active year 4. System auto-generates 12 monthly periods ### Period Status **Closed** (Default) * No journal entries allowed * Safe state for future periods **Open** * Posting enabled * Current working period * Can close/reopen as needed **Locked** * Permanently closed * Prevents any changes * Used after audit/finalization * Requires confirmation to lock ### Period Controls **Opening a Period:** 1. Select period 2. Click **Open Period** 3. Begin posting transactions **Closing a Period:** 1. Verify all entries posted 2. Run month-end reports 3. Click **Close Period** 4. Optional: Lock if finalized **Locking a Period:** 1. Ensure period is closed 2. Complete audit/review 3. Click **Lock Period** 4. Confirm warning dialog 5. ⚠️ **This cannot be easily reversed** ### Best Practices * Open only current period * Close previous period before opening next * Lock periods only after final audit * Maintain clear period boundaries * Document period-end procedures *** ## Chart of Accounts Templates Encore OS ships a **Template Library** of pre-configured chart-of-accounts templates. Applying a template creates the template's accounts in your current organization in a single action and is safe to re-run — accounts whose numbers already exist are skipped. ### Available Templates | Template ID | Name | Source | Best for | | ----------------------------- | ------------------------------------ | --------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `samhsa-behavioral-health` | SAMHSA Behavioral Health | SAMHSA | Grant-funded behavioral-health organizations reporting against SAMHSA grant cost categories (personnel, fringe, travel, equipment, supplies, contractual, occupancy, indirect, other direct). | | `behavioral-health-baseline` | Behavioral Health Baseline | Encore | General-purpose CoA for BH and recovery-housing organizations. Includes payer-split AR (Medicaid / Commercial / Self-Pay), payroll clearing, employer-tax and benefit-withholding payables, Resident Trust (PNA) liability, contractual adjustments (contra-revenue), and bad debt. | | `hrsa-fqhc-behavioral-health` | HRSA / FQHC Behavioral Health | HRSA Bureau of Primary Health Care UDS Manual | HRSA Section 330 grantees, FQHCs, and FQHC look-alikes operating BH programs. Includes HRSA grants receivable, sliding-fee discounts (contra-revenue), 340B drug program revenue and inventory, in-kind contributions, and HRSA UDS Table 5 personnel categories (clinical / enabling services / administrative). | | `recovery-housing-narr` | Recovery Housing (NARR-aligned) | NARR National Standard 3.0 | Recovery housing operators across NARR Levels I–IV. Includes per-level program-fee revenue, scholarship income / scholarships granted (contra-revenue), security/move-in deposits payable, Resident Trust (PNA) liability, occupancy by site, food/household, peer-support stipends, and house-manager compensation. Add jurisdiction-specific certification (e.g., AzRHA in Arizona) via PF-96. | | `medicaid-bh-practice` | Medicaid Behavioral Health Practice | Encore (PM-aligned) | Outpatient BH practices billing state Medicaid (e.g., AHCCCS in Arizona via PF-96), Medicare, and commercial insurance. Includes payer-split AR, allowance for doubtful accounts (contra-asset), capitation/PMPM revenue (PM-33 aligned), service-line FFS revenue (OP/IOP/PHP/MAT/Telehealth), contractual adjustments and charity-care write-offs (contra-revenue), clearinghouse/EDI fees, EHR/PM software, credentialing. | | `nonprofit-ucoa-baseline` | Nonprofit Baseline (UCOA-aligned) | NCCS Unified Chart of Accounts | Any 501(c)(3) starting from a Form-990-mappable baseline. Account `description`s reference the corresponding Form 990 lines (Part VIII Statement of Revenue and Part IX Statement of Functional Expenses). | | `sober-living-single-house` | Sober Living - Single House Operator | Encore | Single-house sober living operators not yet operating with formal nonprofit fund accounting. Minimal \~17 accounts including PNA liability and security deposits payable. Migrate to `recovery-housing-narr` as the operator grows into multi-house, certified, or licensed status. | > All built-in templates use **FASB ASU 2016-14 (ASC 958-205)** net-asset terminology — *Net Assets Without Donor Restrictions* and *Net Assets With Donor Restrictions* — rather than the legacy "Unrestricted / Temporarily Restricted / Permanently Restricted" classes. ### Applying a Template 1. Navigate to **Finance** → **Chart of Accounts**. 2. Open the **Templates** action. 3. Review each template card: name, source badge, account count, description. 4. Click **Apply**. 5. Confirm in the dialog. The system inserts the template's accounts into your organization in chunks and reports the result as a toast: `Template applied. N accounts created. M already existed.` The apply flow is org-scoped, runs as a finance-admin action, and writes audit fields (`created_by`, `created_at`) on every new account. ### Idempotency * Re-running **Apply** on the same template is safe — accounts whose `account_number` already exists are skipped. * This makes templates safe to use both for greenfield setup and for incrementally extending an existing CoA with template-aligned accounts. ### Customizing After Applying After applying a template: 1. Add organization-specific accounts. 2. Create additional sub-accounts. 3. Link accounts to funds. 4. Configure department requirements. 5. Set up default posting rules. ### Saving Your CoA as a Custom Template Once you've configured your chart of accounts the way you want it, you can save the current state as a **custom template** that other users in your organization can apply to bring up new tenants, sites, or test environments quickly. 1. Navigate to **Finance** → **Chart of Accounts**. 2. Open the **Templates** action. 3. Click **Save current CoA as template**. 4. Enter a name (and optional description); choose whether to include active funds and active programs alongside the accounts. 5. Click **Save template**. The new custom template appears in the same Apply Template list, distinguished from built-ins by a **"Custom"** badge. Custom templates are scoped to your organization (other organizations cannot see or apply them). They capture only **active** items — inactive accounts, funds, and programs are excluded so saved templates don't carry stale entries. ### Apply-Template Audit Trail Every Apply Template action — for both built-in and custom templates — writes one row to the `fa_template_applications` audit table recording the template id, name, source, who applied it, when, and counts of accounts/funds/programs created and skipped. Built-in template applies use the template's kebab-case id (e.g., `samhsa-behavioral-health`); custom-template applies use the `db:` id prefix so reports can cleanly distinguish source. ### Quick Reference — Standard Number Ranges | Range | Account class | Examples | | --------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | 1000–1999 | Assets | Cash (operating, payroll, restricted, reserve), AR (Medicaid / Commercial / Self-Pay), fixed assets, accumulated depreciation (contra-asset) | | 2000–2999 | Liabilities | AP, accrued payroll, **Resident Trust (PNA)**, payroll clearing, employer payroll tax payable, health-insurance payable, 401(k) withholding payable, refunds payable, long-term debt | | 3000–3999 | Net assets | Net Assets Without Donor Restrictions, Net Assets With Donor Restrictions | | 4000–4999 | Revenue | Resident program fees, insurance reimbursements, **contractual adjustments (contra-revenue)**, grants, donations | | 5000–5999 | Expenses | Salaries, benefits, occupancy, utilities, food/supplies, transportation, professional services, depreciation, **1099 contractor expense**, **bad debt expense** | *** ## Integration with Other Modules ### Forms & Workflow (FW) * Use forms for budget requests * Workflow approvals for large expenses * Automated posting from form submissions ### Recovery Housing (RH) * Bill resident fees by program * Track revenue by site/facility * Allocate operating costs ### Workforce & HR (HR) * Payroll expense allocation * Department-based labor costs * Employee benefit tracking *** ## Troubleshooting ### Common Issues **Can't Post to Account** * Check `allows_posting` is enabled * Verify period is open * Ensure account is active **Fund Required Error** * Account has `requires_fund` enabled * Select fund on transaction * Or update account settings **Period Locked** * Period has been permanently locked * Contact admin to review * Post to current period instead **Department Not Available** * Department may be inactive * Check parent department is active * Verify organizational hierarchy *** ## Reporting ### Standard Reports * **Trial Balance**: All account balances * **Fund Balance Report**: By fund type * **Department P\&L**: Revenue and expenses by dept * **Program Analysis**: Program-level profitability * **Period Comparison**: Month-over-month trends ### Custom Reports Use the **Reports** module to create custom financial reports with: * Account filters * Fund groupings * Department breakdowns * Program summaries * Date range comparisons *** ## Security & Permissions ### Role-Based Access **Finance Admin** (`finance_admin`) * Full CoA management * Create/edit accounts, funds, departments * Manage fiscal periods * Lock/unlock periods **Finance Staff** (`finance_staff`) * View all financial data * Post journal entries * Run reports * Cannot modify structure **Staff** (`staff`) * View assigned accounts * Department-level access * Limited reporting **Org Admin** (`org_admin`) * All finance permissions * System configuration * User management *** ## Next Steps 1. **Set up your Chart of Accounts** * Load starter CoA or create custom * Configure account hierarchy * Link to funds and departments 2. **Create Funds** * Add grants and contracts * Document restrictions * Set up default accounts 3. **Build Department Structure** * Organize hierarchically * Assign cost centers * Link programs 4. **Configure Fiscal Periods** * Create fiscal years * Open current period * Establish close procedures 5. **Ready for FA-02: Journal Entries** * Begin posting transactions * Track account balances * Run financial reports *** **For Technical Support:** Contact your system administrator **For Training:** See FA module documentation in `docs/fa/` **For API Access:** See FA module specifications in `specs/fa/` ## Creating a new account (inline dialog) New account creation is handled through an inline dialog on the Accounts (Chart of Accounts) page at `/fa/accounts`. No separate route exists for account creation. The **New Account** button opens `AccountDialog` in create mode (`accountId={undefined}`). The same dialog is accessible via row edit actions. Account type options visible in the page filter: `asset`, `liability`, `equity`, `revenue`, `expense`. The **Import** and **Export** buttons within the page are gated to `fa.accounts.admin`; the New Account button itself is visible to all users with access to the Accounts page. SME: The exact fields and validation rules in `AccountDialog` are not fully observable from the page component alone. Confirm required fields with the implementation team. Before you start: determine the account type, account number, and name before opening the dialog. 1. Navigate to `/fa/accounts`. 2. Click **New Account** (top right). 3. Complete the `AccountDialog` form fields. 4. Save to create the account. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/AccountsPage.tsx * src/cores/fa/components/AccountDialog.tsx # Checklist Templates Source: https://docs.encoreos.io/fa/checklist-templates Admin page for creating and managing reusable close checklist templates that can be copied into financial close periods. Checklist Templates is an admin page for managing reusable financial close checklist templates, including creating, editing, and deleting template definitions with their associated tasks. Route: `/fa/close/templates` ## Overview The page loads all checklist templates for the current organization via `useCloseChecklistTemplates`, filtered by a search query. Templates are displayed in `CloseChecklistsTable`. Users can create new templates via `CreateChecklistTemplateDialog`, edit existing ones (by setting `editTemplateId`), and delete templates after confirmation via `useDeleteCloseChecklist`. Tasks within a template are managed via `useCreateCloseTask` and `useUpdateCloseTask`. ## Who it's for Requires permission: `fa.close.manage` ## Before you start * You must hold the `fa.close.manage` permission. * Templates are applied to close periods during period setup (see Close Setup Wizard). ## Steps Go to `/fa/close/templates`. Use the search input to filter templates by name. Click **New Template** (or equivalent action) to open `CreateChecklistTemplateDialog`. Enter the template name and add tasks. Click the edit action on a template row to reopen the dialog with the template's current data. Click delete on a template row. Confirm in the alert dialog to call `useDeleteCloseChecklist`. ## Key concepts * **`CloseChecklistWithRelations`** — Type representing a checklist template and its associated tasks. * **`CloseTask`** — Individual task within a checklist template. * **`useCloseChecklistTemplates`** — Primary data hook; returns templates scoped to the organization. * **`useDeleteCloseChecklist`** — Mutation hook for template deletion. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/CloseChecklistsPage.tsx * src/cores/fa/components/CloseChecklistsTable.tsx * src/cores/fa/components/CreateChecklistTemplateDialog.tsx * src/cores/fa/types/close.ts # Close Periods Source: https://docs.encoreos.io/fa/close-periods List, create, view, and manage financial close periods with checklists, task progress, approval, and lifecycle actions. Close Periods lists all financial close periods for the organization, with filtering by status and period type, summary statistics, and the ability to create new periods. Route: `/fa/close` Financial close periods surface with close checklist ## Overview The page fetches all close periods via `useClosePeriodsList` filtered by `status` and `period_type`. A client-side search filter applies on `period_name`. Stat cards show counts of open, in-progress, pending-approval, and closed-this-year periods. The `ClosePeriodsTable` lists periods; clicking a row navigates to `/fa/close/:id`. The **New Close Period** button (gated by `fa.close.create` via `PermissionGate`) opens `CreateClosePeriodDialog`. ## Who it's for Requires permission: `fa.close.view`. Creating new periods requires `fa.close.create`. ## Before you start * You must hold the `fa.close.view` permission. * Creating new periods requires `fa.close.create`. ## Steps Go to `/fa/close`. Use the status and period-type dropdowns, or type in the search box, to narrow the list. Stat cards at the top summarize open, in-progress, pending-approval, and closed-this-year counts. Click a period row to navigate to its detail page at `/fa/close/:id`. Click **New Close Period** to open `CreateClosePeriodDialog`. ## Key concepts * **`ClosePeriodStatus`** — Type for the period lifecycle state (open, in\_progress, pending\_approval, closed, etc.). * **`ClosePeriodType`** — Type for period classification: `month`, `quarter`, `year`. * **`useClosePeriodsList`** — Primary data hook; accepts `organizationId` and filter object. * **`PermissionGate`** — Platform component used here to gate the Create button on `fa.close.create`. ## Viewing a close period The detail view at `/fa/close/:id` provides a full view of a single financial close period, including its checklists, tasks, documentation attachments, validation status, and lifecycle controls. The page loads the close period via `useClosePeriodDetail`, its checklists via `useClosePeriodChecklists`, tasks via `useCloseTasksByPeriod`, and attached documentation via `useCloseDocumentationList`. The `ClosePeriodProgress` component shows overall completion. The `CloseChecklistSection` renders each checklist with expandable tasks. The `CloseStatusBadge` reflects the current `CloseStatus`. Lifecycle actions include Start, Submit for Approval, Approve, Complete (with audit), and Reopen (with audit). Period types are: `month` (Monthly Close), `quarter` (Quarterly Close), `year` (Year-End Close). Before you start: * A close period must be created before it can be viewed here. * The Start action transitions the period from open to in-progress. * Task completion is required before attempting to submit for approval or complete. Key concepts: * **`CloseStatus`** — Enum/type for period lifecycle states (open, in\_progress, pending\_approval, closed, etc.). * **`periodTypeLabels`** — Maps `month`, `quarter`, `year` to display labels. * **`PeriodCloseValidationWidget`** — Renders validation checks required before completion. * **`useCompleteClosePeriodWithAudit` / `useReopenClosePeriodWithAudit`** — Audit-trail hooks for lifecycle transitions. 1. Go to `/fa/close` and click a period row, or navigate directly to `/fa/close/:id`. 2. Review `ClosePeriodProgress` for overall task completion and expand checklist sections to see individual tasks. 3. Click Start to call `useStartClosePeriod` and transition the period to in-progress (if not started). 4. Mark each checklist task complete via `CloseTaskDetailDialog`. 5. Click Submit to call `useSubmitClosePeriodForApproval`. 6. Approvers can approve via `useApproveClosePeriod` and complete the period via `useCompleteClosePeriodWithAudit`. 7. Click Reopen to call `useReopenClosePeriodWithAudit` if needed. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/ClosePeriodsPage.tsx * src/cores/fa/pages/ClosePeriodDetailPage.tsx * src/cores/fa/components/ClosePeriodsTable.tsx * src/cores/fa/components/CreateClosePeriodDialog.tsx * src/cores/fa/components/CloseChecklistSection.tsx * src/cores/fa/components/ClosePeriodProgress.tsx * src/cores/fa/components/CloseStatusBadge.tsx * src/cores/fa/components/PeriodCloseValidationWidget.tsx * src/cores/fa/hooks/usePeriodCloseWithAudit.ts * src/cores/fa/types/close.ts # Close Setup Wizard Source: https://docs.encoreos.io/fa/close-setup-wizard Multi-step wizard for configuring a new financial close period, applying a checklist template, and optionally adding tasks before the period begins. Close Setup Wizard guides authorized users through creating a new financial close period, applying a checklist template, and adding initial tasks via the `ModuleWizardRenderer` infrastructure. Route: `/fa/close/setup` ## Overview The wizard uses `ModuleWizardRenderer` and on completion: creates a close period via `useCreateClosePeriod`, copies a selected checklist template to that period via `useCopyChecklistToPeriod`, and creates individual tasks via `useCreateCloseTask`. A progress bar (``) reflects wizard execution state. A realtime broadcast is sent on `fa_events` / `close_period_started` upon completion. On success the user is navigated to the new period's detail page. ## Who it's for Requires permission: `fa.close.create` ## Before you start * You must hold the `fa.close.create` permission. * Checklist templates should already exist at `/fa/close/templates` to be selectable during setup. * A fiscal period configuration should be in place. ## Steps Go to `/fa/close/setup` or click the setup action from the Close Periods page. Follow the `ModuleWizardRenderer` steps — enter period configuration, select a checklist template, and optionally add tasks. Confirm on the final review step. The wizard creates the close period, copies the checklist, and creates tasks in sequence. On success, navigate to the new period's detail page at `/fa/close/:id`. ## Key concepts * **`FinancialCloseSetupWizardData`** — Type for wizard form data. * **`WizardExecutionResult`** — Return type of the wizard completion mutation. * **`useCopyChecklistToPeriod`** — Hook that copies a template's tasks to the newly created period. * **`useRealtimeBroadcast`** — Platform hook for broadcasting `close_period_started` on `fa_events` channel. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/wizards/financial-close-setup/FinancialCloseSetupWizardPage.tsx * src/cores/fa/wizards/financial-close-setup/types.ts * src/cores/fa/close/index.ts # Finance & Revenue Collections Queue Source: https://docs.encoreos.io/fa/collections-queue Collections Queue provides a workflow view for managing accounts-receivable collection activity, with tabbed access to the new structured queue and legacy… Collections Queue provides a workflow view for managing accounts-receivable collection activity, with tabbed access to the new structured queue and legacy in-collection invoices, AR aging bucket summaries, and status and search filters. Route: `/fa/collections` Collections queue surface with overdue invoices and aging buckets ## Overview The page has two queue systems shown in separate tabs: the new structured queue (`fa_collection_queue`) accessed via `useCollectionQueueList` and rendered in `CollectionQueueWorkflowTable`; and the legacy queue (invoices flagged `in_collection`) accessed via `useCollectionQueue` and rendered in `CollectionQueueTable`. Collection stats are loaded via `useCollectionStats`. AR aging buckets are loaded via `useArAgingBuckets`. Independent search and filter state is maintained for each queue. `CollectionQueueStatus` filters the new queue. ## Who it's for Requires permission: `fa.collections.view` ## Before you start * Invoices must be outstanding and have been flagged for collection (legacy), or records must exist in `fa_collection_queue` (new queue). * You must hold the `fa.collections.view` permission. ## Steps Go to `/fa/collections`. Stat cards at the top show summary counts from `useCollectionStats`. Aging bucket cards show overdue balances by age bucket from `useArAgingBuckets`. Use the tabbed interface to toggle between the new structured queue and the legacy in-collection view. Each tab has independent search and status filter controls. Select items in the queue to perform available collection workflow actions. ## Key concepts * **`CollectionQueueStatus`** — Type for queue item status used to filter the new queue. * **`useCollectionQueueList`** — Hook for the structured `fa_collection_queue` table. * **`useCollectionQueue`** — Hook for legacy invoices flagged `in_collection`. * **`useArAgingBuckets`** — Hook returning AR aging bucket totals. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/CollectionWorkflowPage.tsx * src/cores/fa/hooks/useCollectionQueueList.ts * src/cores/fa/hooks/useCollectionWorkflow\.ts * src/cores/fa/hooks/useArAgingBuckets.ts * src/cores/fa/types/collectionQueue.ts # Compliance Cost Mappings Source: https://docs.encoreos.io/fa/compliance-cost-mappings Admin page for mapping Governance & Risk compliance event categories to Finance & Revenue expense accounts for accurate GL posting. Compliance Cost Mappings is an admin page for configuring how GR (Governance & Risk) compliance event categories map to FA expense accounts in the general ledger. Route: `/fa/compliance-mappings` ## Overview The page renders `ComplianceMappingEditor` inside a `RequirePermission` gate for `fa.category-mappings.view`. The page header describes the purpose as: "Map GR compliance event categories (audit, fines, training, etc.) to FA expense accounts so compliance costs post to the correct general ledger accounts." The route has no additional permission wrapping in `fa.tsx` beyond what the component provides. ## Who it's for Requires permission: `fa.category-mappings.view` (enforced within the component via `RequirePermission`) ## Before you start * GL accounts must be configured in the Chart of Accounts. * GR compliance event category definitions must exist. * You must hold the `fa.category-mappings.view` permission. ## Steps Go to `/fa/compliance-mappings`. The `ComplianceMappingEditor` displays current category-to-account mappings. Select a GR compliance event category and assign it to the appropriate FA expense account. Confirm or save the updated mappings as supported by the editor. ## Key concepts * **`ComplianceMappingEditor`** — Primary editor component for managing category-to-account mappings. * **Cross-core dependency** — This page bridges GR (Governance & Risk) and FA (Finance & Revenue) cores via the Platform Integration Layer. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/ComplianceMappingPage.tsx * src/cores/fa/components/ComplianceMappingEditor.tsx # Contract Progress Source: https://docs.encoreos.io/fa/contract-progress Report showing lifetime recognition progress for each revenue contract, aggregated across all linked revenue schedules. Contract Progress is a read-only report displaying lifetime revenue recognition progress per revenue contract, derived from associated revenue schedules. Route: `/fa/revenue-reports/contract-progress` ## Overview The page fetches contract progress rows via `useContractProgressReport(orgId)`. Each row represents a revenue contract (`fa_revenue_contracts`) with its aggregated recognition amounts from linked `fa_revenue_schedules`. A progress bar visualizes recognition completion. Cancelled records may be flagged with a `Badge`. Page header description from code: "Lifetime recognition progress per revenue contract, aggregated across all linked schedules." ## Who it's for Requires permission: `fa.revenue_contracts.view` ## Before you start * Revenue contracts must exist and have linked revenue schedules with recognition entries. * You must hold the `fa.revenue_contracts.view` permission. ## Steps Go to `/fa/revenue-reports/contract-progress`. Each row shows a revenue contract with its recognition progress. The progress bar shows completion percentage. Look for contracts with low progress or status badges indicating issues. ## Key concepts * **`useContractProgressReport`** — Primary data hook; returns rows derived from `fa_revenue_contracts` joined with `fa_revenue_schedules`. * **`total_recognized`** — Aggregated recognized amount from linked revenue schedules. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/ContractProgressReportPage.tsx * src/cores/fa/hooks/useRevenueReports.ts # Copy Budget Source: https://docs.encoreos.io/fa/copy-budget Create a new budget by copying an existing budget template using the Budget Template Copy Wizard. Copy Budget provides a wizard for creating a new budget record by copying the structure of an existing budget template. Route: `/fa/budgets/copy` ## Overview The page renders `BudgetTemplateCopyWizard` with `organizationId`. On completion (`onComplete`) the wizard navigates to the newly created budget's detail page at `/fa/budgets/:budgetId`. On back navigation the user is returned to `/fa/budgets`. Page header: "Copy Budget Template — Create a new budget from an existing template." ## Who it's for Access follows your organization's role and module configuration. ## Before you start * At least one budget template must exist. * The current organization must be set. ## Steps Go to `/fa/budgets/copy`. Follow the `BudgetTemplateCopyWizard` steps to select a source template and configure the new budget. On completion, navigate to the new budget's detail page. ## Key concepts * **`BudgetTemplateCopyWizard`** — Component managing the copy flow; calls `onComplete(budgetId)` on success. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/BudgetCopyPage.tsx * src/cores/fa/components/BudgetTemplateCopyWizard.tsx # Cost Allocation Source: https://docs.encoreos.io/fa/cost-allocation Tabbed hub for managing indirect cost pools, IDC rates, cost allocations, and allocation bases. Cost Allocation is a tabbed hub for managing indirect cost (IDC) pools, rates, cost allocations, and allocation bases, with summary stat cards for the current approved rate and total allocated year-to-date. Route: `/fa/cost-allocation` Cost allocation hub showing IDC pools and approved rate ## Overview The hub uses `useSearchParams` to manage the active tab (default: `pools`). Four tabs are rendered: IDC Pools (`IDCPoolsTab`), IDC Rates (`IDCRatesTab`), Allocations (`IDCAllocationsTab`), and Allocation Bases (`AllocationBasesTab`). Summary stat cards show the current approved/final rate and the total allocated IDC year-to-date (`allocated_idc_amount` summed across `useCostAllocations`). ## Who it's for Requires permission: `fa.idc.view` ## Before you start * You must hold the `fa.idc.view` permission. * IDC pools and rates should be defined before allocations are run. ## Steps Go to `/fa/cost-allocation`. Check the current approved IDC rate and total allocated YTD. Select the Pools tab to view and manage indirect cost pools. Select the Rates tab to view and manage rate records. The current approved or final rate is highlighted in the stat card. Select the Allocations tab for allocation records and amounts. Select the Allocation Bases tab to configure the bases used in allocation calculations. ## Key concepts * **`useIndirectCostPools`** — Hook fetching IDC pool records. * **`useIndirectCostRates`** — Hook fetching rate records; current rate has status `approved` or `final`. * **`useCostAllocations`** — Hook fetching allocation records with `allocated_idc_amount`. * **`useAllocationBases`** — Hook fetching allocation base configurations. * **`IndirectCostRateWithRelations`** — Type for rate records. * **`CostAllocationWithRelations`** — Type for allocation records. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/IndirectCostHubPage.tsx * src/cores/fa/hooks/useIndirectCostPools.ts * src/cores/fa/hooks/useIndirectCostRates.ts * src/cores/fa/hooks/useCostAllocations.ts * src/cores/fa/hooks/useAllocationBases.ts * src/cores/fa/types/costAllocation.ts * src/cores/fa/types/projects.ts # Cost Programs Source: https://docs.encoreos.io/fa/cost-programs Manage cost centers and program cost tracking entries for the organization. Cost Programs provides a list and management interface for cost centers and program cost tracking records. Route: `/fa/programs` ## Overview The page uses `ListPageLayout` with title "Cost Programs" and description "Manage cost centers and program cost tracking." Programs are fetched via `usePrograms(organizationId)` and displayed in `ProgramsTable`. Create and edit actions open `ProgramDialog`. The create action sets `selectedProgramId` to `undefined`; the edit action passes the program ID. ## Who it's for Access follows your organization's role and module configuration. ## Before you start * The current organization must be set. * Programs are referenced by cost allocations; define them before running allocations. ## Steps Go to `/fa/programs`. The `ProgramsTable` lists all cost programs for the organization. Click **New Program** to open `ProgramDialog` with a blank form. Click the edit action on a program row to open `ProgramDialog` pre-populated with the program's current data. ## Key concepts * **`usePrograms`** — Primary data hook; fetches program records scoped to `organizationId`. * **`ProgramDialog`** — Create/edit dialog; accepts `programId` (undefined for create) and `organizationId`. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/ProgramsPage.tsx * src/cores/fa/hooks/usePrograms.ts * src/cores/fa/components/ProgramsTable.tsx * src/cores/fa/components/ProgramDialog.tsx # Credit Lines Source: https://docs.encoreos.io/fa/credit-lines List, view, and manage revolving credit facilities with utilization metrics, expiry warnings, and inline edit capability. Credit Lines lists all revolving credit facilities for the organization, with status and utilization filters, summary stat cards, and high-utilization alerts. Route: `/fa/credit-lines` ## Overview The page fetches all credit lines via `useCreditLineList(organizationId, filters)` and high-utilization credit lines via `useHighUtilizationCreditLines`. Summary stat cards show aggregate totals. A `UtilizationFilter` dropdown (`all`, `low`, `medium`, `high`) and a `CreditLineStatus` dropdown filter the table. An `Alert` component displays if high-utilization lines are present. The **New Credit Line** button opens `CreditLineDialog`. Clicking a row navigates to `/fa/credit-lines/:id`. ## Who it's for Requires permission: `fa.credit_lines.view` ## Before you start * You must hold the `fa.credit_lines.view` permission. ## Steps Go to `/fa/credit-lines`. Stat cards show aggregate credit line information. If any credit lines have high utilization, an alert banner is shown. Use the utilization filter and status filter dropdowns to narrow the list. Click a row to navigate to its detail page at `/fa/credit-lines/:id`. Click **New Credit Line** to open `CreditLineDialog`. ## Key concepts * **`useCreditLineList`** — Primary list hook; accepts `organizationId` and filter parameters. * **`useHighUtilizationCreditLines`** — Hook flagging lines with high utilization. * **`UtilizationFilter`** — Local type: `'all' | 'low' | 'medium' | 'high'`. * **`CreditLineStatus`** — Type for credit line lifecycle states. * **`CreditLineWithRelations`** — Full type for credit line records including relations. ## Viewing a credit line The detail view at `/fa/credit-lines/:id` displays all information for a single credit line record, including utilization percentage with color-coded indicators, expiry warnings, and an inline edit capability. The page loads a credit line by `:id` via `useCreditLine(id, currentOrganization?.id)` and computes: days to expiry from `end_date`, expiry warning flag (≤30 days), utilization color (`bg-destructive` ≥80%, `bg-warning` ≥50%, `bg-success` otherwise). The `CreditLineStatusBadge` shows current status. The edit button opens `CreditLineDialog` in edit mode. Breadcrumb uses `credit_line_number`. Key concepts: * **`useCreditLine`** — Primary data hook; fetches a single credit line by `id` and `organizationId`. * **`utilization_percentage`** — Field on the credit line record representing current utilization. * **`CreditLineStatus`** — Type for credit line lifecycle status. * **`CreditLineStatusBadge`** — Component rendering the status visually. * **`daysToExpiry`** — Computed as `differenceInDays(new Date(end_date), new Date())`. 1. Go to `/fa/credit-lines` and click a record, or navigate directly to `/fa/credit-lines/:id`. 2. Review the credit line number, status badge, utilization bar, and expiry information. 3. Check the utilization bar: green below 50%, yellow 50–79%, red 80%+. An expiry warning appears when fewer than 30 days remain. 4. Click Edit to open `CreditLineDialog` and save changes to update the record. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/CreditLinesPage.tsx * src/cores/fa/pages/CreditLineDetailPage.tsx * src/cores/fa/hooks/useCreditLines.ts * src/cores/fa/components/CreditLinesTable.tsx * src/cores/fa/components/CreditLineDialog.tsx * src/cores/fa/components/CreditLineStatusBadge.tsx * src/cores/fa/types/index.ts # Credit Memos Source: https://docs.encoreos.io/fa/credit-memos List, create, and view customer credit memos with line items, application history, and lifecycle actions such as issue, void, and apply. Credit Memos lists all customer credit memo records for the organization with status, type, and date filters, and summary metric cards. Route: `/fa/credit-memos` ## Overview The route `/fa/credit-memos` is a legacy route that redirects to `/fa/receivables?tab=credit-memos` in the router. However, the `CreditMemosPage` component is also rendered for this context. The page fetches credit memos via `useCreditMemoList(organizationId, filters)`. Filters include `status`, `creditType`, `startDate`, and `endDate`. Summary cards show: total credits (`total_amount` sum), unapplied balance (`unapplied_amount` sum), and credits applied this calendar month (`applied_amount` sum for current month). The **Create Credit Memo** button navigates to `/fa/credit-memos/new`. ## Who it's for Access follows your organization's role and module configuration. ## Before you start * Customers must exist before credit memos can be created. * At least one active customer and GL accounts must exist for creating a credit memo. ## Steps Go to `/fa/credit-memos` or the Credit Memos tab in the Receivables hub. Check total credits, unapplied balance, and current-month applied amounts. Set status, credit type, start date, or end date filters. Click a row to navigate to its detail page at `/fa/credit-memos/:id`. Click **Create Credit Memo** to navigate to `/fa/credit-memos/new`. ## Key concepts * **`useCreditMemoList`** — Primary list hook; accepts `organizationId` and filter object. * **`total_amount`** — Total value of the credit memo. * **`unapplied_amount`** — Portion of the credit memo not yet applied to invoices. * **`applied_amount`** — Portion already applied to invoices. ## Viewing a credit memo The detail view at `/fa/credit-memos/:id` shows a single credit memo record including its line items, credit applications to invoices, and actions to issue, void, or delete the memo. The page loads the credit memo via `useCreditMemo(id, organizationId)`, its applications via `useCreditApplications`, and customer invoices via `useInvoiceList` (filtered by customer). Breadcrumb shows `credit_memo_number`. The `CreditMemoStatusBadge` reflects current status. Available actions: Issue (`useIssueCreditMemo`), Void (`useVoidCreditMemo`, with confirmation dialog), Delete (`useDeleteCreditMemo`, with confirmation dialog), and Apply to Invoice (`CreditApplicationDialog`). Line items are displayed in a card (`CreditMemoLine[]`). Key concepts: * **`useCreditMemo`** — Primary data hook; fetches a single credit memo by `id` and `organizationId`. * **`CreditMemoLine`** — Type representing a line item on the credit memo. * **`useCreditApplications`** — Hook fetching application records linking this memo to invoices. * **`CreditApplicationDialog`** — Component for applying the memo to a selected invoice. * **`CreditMemoStatusBadge`** — Visual status indicator. 1. Go to `/fa/credit-memos/:id` directly or via a link from the credit memos list. 2. Review the header information, status badge, and line items. 3. Review the applications section to see which invoices this credit memo has been applied to. 4. Click Issue to call `useIssueCreditMemo` and change the status (if in draft). 5. Click Apply to open `CreditApplicationDialog` and select an invoice. 6. Use Void or Delete with confirmation dialogs as appropriate. ## Creating a credit memo The New Credit Memo page (`/fa/credit-memos/new`) creates a credit memo for a customer. The page has a two-column layout: * **Left (2/3):** Credit Memo Details card (`CreditMemoForm` — customer, credit memo date, credit type, optional original invoice reference, reason, notes; number auto-generated via `useGenerateCreditMemoNumber`) and Line Items card (`CreditMemoLineEditor` — line number, description, account, quantity, unit price, computed line amount). * **Right (1/3):** Actions card (Save as Draft or Issue Credit Memo; both disabled until `formData` and at least one line are present) and Summary card (line count and total credit amount). On submit, `useCreateCreditMemo` creates the header and `useCreateCreditMemoLine` creates each line. Navigates to `/fa/credit-memos/:id` on success. Key concepts: * **Credit type:** `return` (product return), `discount` (price adjustment), `error_correction` (billing error), `other`. * **Save as Draft:** `status: "draft"` — can be edited later. * **Issue:** `status: "sent"` — treated as issued to the customer. 1. Navigate to `/fa/credit-memos/new`. 2. Complete the **Credit Memo Details** form (customer, date, credit type, optional invoice, reason, notes). 3. Add at least one line item in the **Line Items** section (description, account, quantity, unit price). 4. Review the **Summary** card for total credit amount. 5. Click **Save as Draft** to save without issuing, or **Issue Credit Memo** to set status to `sent`. 6. On success, you are redirected to the credit memo detail page. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/CreditMemosPage.tsx * src/cores/fa/pages/CreditMemoDetailPage.tsx * src/cores/fa/pages/CreditMemoCreatePage.tsx * src/cores/fa/hooks/useCreditMemos.ts * src/cores/fa/hooks/useCreditMemoLines.ts * src/cores/fa/hooks/useCreditApplications.ts * src/cores/fa/hooks/useInvoices.ts * src/cores/fa/components/CreditMemosTable.tsx * src/cores/fa/components/CreditMemoStatusBadge.tsx * src/cores/fa/components/CreditApplicationDialog.tsx * src/cores/fa/components/CreditMemoForm.tsx * src/cores/fa/components/CreditMemoLineEditor.tsx # Customer Payments Source: https://docs.encoreos.io/fa/customer-payments List, record, view, and manage AR customer payments with invoice applications, receipt PDF generation, and status filters. Customer Payments lists all accounts-receivable customer payments for the organization with status filters and summary metric cards. Route: `/fa/customer-payments` ## Overview The route `/fa/customer-payments` redirects to `/fa/receivables?tab=payments` in the router. The `CustomerPaymentsPage` component fetches payments via `useCustomerPayments(organizationId, statusFilter)`. Status filter options: `all`, `unapplied`, `partially_applied`, `fully_applied`. Summary cards show: total received (`payment_amount` sum), total unapplied (`unapplied_amount` sum), and received today. The **New Payment** button navigates to `/fa/customer-payments/new`. The apply-payment dialog (`PaymentApplicationDialog`) can be opened per row. ## Who it's for Access follows your organization's role and module configuration. ## Before you start * Customers and invoices must exist before payments can be recorded. * Have the payment details ready when recording: date, amount, payment method, and optionally check or reference number. ## Steps Go to `/fa/customer-payments` or the Payments tab in the Receivables hub. Check total received, unapplied balance, and today's received amounts. Select a status filter to narrow to unapplied, partially applied, or fully applied payments. Use the apply action on a payment row to open `PaymentApplicationDialog`. Click a payment row to navigate to `/fa/customer-payments/:id`. Click **New Payment** to navigate to `/fa/customer-payments/new`. ## Key concepts * **`useCustomerPayments`** — Primary list hook; accepts `organizationId` and optional `{ status }` filter. * **`unapplied_amount`** — Payment amount not yet applied to invoices. * **`PaymentApplicationDialog`** — Inline dialog for applying a payment to invoices. * **`useDeleteCustomerPayment`** — Mutation hook for deleting a payment with confirmation. ## Viewing a customer payment The detail view at `/fa/customer-payments/:id` displays all information for a single AR customer payment including its application to invoices, with actions to apply, remove applications, generate a receipt PDF, and delete. The page loads the payment via `useCustomerPayment(id, organizationId)`. Applications are loaded via `useARPaymentApplications`. Breadcrumb shows `payment_number`. Payment metadata includes: `payment_date`, `payment_amount`, `payment_method` (underscores replaced with spaces), `check_number`, and `reference_number`. The applications table (`ARPaymentApplicationWithDetails[]`) shows invoice linkages. Actions: Apply to invoice (`PaymentApplicationDialog`), remove an application (`useRemoveARPaymentApplication`, with confirmation), generate receipt PDF (`usePaymentReceiptPdf`), and delete the payment (`useDeleteCustomerPayment`, with confirmation). The PDF receipt includes vendor/customer name, payment number, date, amount, method, reference, and applied invoice numbers. Key concepts: * **`useCustomerPayment`** — Primary data hook; fetches a single payment by `id` and `organizationId`. * **`useARPaymentApplications`** — Hook fetching invoice application records for this payment. * **`ARPaymentApplicationWithDetails`** — Type for application rows including linked invoice data. * **`usePaymentReceiptPdf`** — Hook that generates a receipt PDF from payment and application data. * **`PaymentApplicationDialog`** — Component for applying the payment to an invoice. 1. Go to `/fa/customer-payments/:id` or click a payment from the Customer Payments list. 2. Review payment number, date, amount, method, and reference information. 3. Review the applications section to see which invoices this payment has been applied to. 4. Click Apply to open `PaymentApplicationDialog` and select an invoice. 5. Click remove on an application row and confirm to call `useRemoveARPaymentApplication`. 6. Click the receipt download button to generate and download a PDF via `usePaymentReceiptPdf` (optional). 7. Click Delete and confirm to call `useDeleteCustomerPayment` (if applicable). ## Creating a customer payment The New Customer Payment page (`/fa/customer-payments/new`) records a customer payment against the organization's accounts receivable. The page renders `CustomerPaymentForm` inside a "Payment Information" card. The payment number is auto-generated via `useGeneratePaymentNumber`. On submit, `useCreateCustomerPayment` is called with `organization_id`, `payment_number` (generated), `customer_id`, `payment_date`, `payment_amount`, `payment_method`, optional `check_number`, `reference_number`, `notes`, `created_by`. On success, navigates to `/fa/customer-payments/:id`. Key concepts: * **Payment number:** Auto-generated by `useGeneratePaymentNumber`. Not user-entered. 1. Navigate to `/fa/customer-payments/new`. 2. Complete the **Payment Information** form via `CustomerPaymentForm`: customer, payment date, payment amount, payment method; optionally check number, reference number, notes. 3. Submit. On success, you are redirected to the payment detail page. SME: The exact fields and payment method options in `CustomerPaymentForm` are not fully observable from the page component alone. Confirm available options with the implementation team. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/CustomerPaymentsPage.tsx * src/cores/fa/pages/CustomerPaymentDetailPage.tsx * src/cores/fa/pages/CustomerPaymentCreatePage.tsx * src/cores/fa/hooks/useCustomerPayments.ts * src/cores/fa/hooks/useARPaymentApplications.ts * src/cores/fa/hooks/usePaymentReceiptPdf.ts * src/cores/fa/components/CustomerPaymentsTable.tsx * src/cores/fa/components/PaymentApplicationDialog.tsx * src/cores/fa/components/PaymentStatusBadge.tsx * src/cores/fa/components/CustomerPaymentForm.tsx # Customers Source: https://docs.encoreos.io/fa/customers List, create, view, and manage AR customer records with invoices, payment history, credit memos, and search/filter controls. Customers lists and manages accounts-receivable customer records with search, customer-type, and active/inactive filters. Route: `/fa/customers` ## Overview The route `/fa/customers` redirects to `/fa/receivables?tab=customers` in the router. The `CustomersPage` component fetches customers via `useCustomerList(organizationId, { search, type, isActive })`. Filters: text search, `CustomerType` dropdown (from `fa_customer_type` enum), and active/inactive toggle (default: `active`). The **New Customer** button and the edit action per row open `CustomerDialog`. Delete calls `useDeleteCustomer`. ## Who it's for Access follows your organization's role and module configuration. ## Before you start * The current organization must be set. * Customer type definitions come from the `fa_customer_type` database enum. * Navigate to the Receivables Hub at `/fa/receivables?tab=customers` to access customer management. ## Steps Go to `/fa/customers` or the Customers tab in the Receivables hub. Enter a search term, select a customer type, and toggle between active and inactive customers. Click **New Customer** to open `CustomerDialog` with a blank form. Click the edit action on a row to open `CustomerDialog` pre-populated. Click delete on a row to call `useDeleteCustomer`. Click a customer name to navigate to `/fa/customers/:id`. ## Key concepts * **`useCustomerList`** — Primary list hook; accepts `organizationId` and `{ search, type, isActive }`. * **`CustomerType`** — From `fa_customer_type` database enum. * **`useDeleteCustomer`** — Mutation hook for customer deletion. * **`CustomerDialog`** — Create/edit dialog for customer records. ## Viewing a customer The detail view at `/fa/customers/:id` shows all information for a single customer record including associated invoices, payments, credit memos, and an edit action. The page loads the customer via `useCustomer(id, currentOrganization?.id)`. Related data is fetched in parallel: invoices via `useInvoiceList` (filtered by `customerId`), payments via `useCustomerPayments`, and credit memos via `useCreditMemoList`. The breadcrumb shows `customer_name`. A tabbed interface displays: Invoices (`InvoicesTable`), Payments (`CustomerPaymentsTable`), and Credit Memos (`CreditMemosTable`). Invoice actions include send (`useSendInvoice`), void (`useVoidInvoice`), and delete (`useDeleteInvoice`). The edit button opens `CustomerDialog`. Key concepts: * **`useCustomer`** — Primary data hook; fetches a single customer by `id` and `organizationId`. * **`InvoicesTable`** — Component rendering the customer's invoice list. * **`CustomerPaymentsTable`** — Component rendering payment history. * **`CreditMemosTable`** — Component rendering credit memos filtered by customer. * **`CustomerDialog`** — Edit dialog for customer record fields. Customer detail fields visible on `CustomerDetailPage`: `customer_name`, `customer_number`, `billing_address_line1`, `billing_address_line2`, `billing_city`, `billing_state`, `billing_postal_code`. 1. Go to `/fa/customers/:id` or click a customer row from the Customers list. 2. Review the header section showing customer name and key attributes. 3. Review the **Invoices** tab for all customer invoices with send, void, and delete actions. 4. Review the **Payments** tab for customer payment history via `CustomerPaymentsTable`. 5. Review the **Credit Memos** tab for applicable credit memos via `CreditMemosTable`. 6. Click Edit to open `CustomerDialog` and update the customer record. ## Creating a customer New customer creation is accessible via the Receivables Hub. The `/fa/customers` route redirects to `/fa/receivables?tab=customers`. Customer creation is handled via `CustomerDialog` within that tab. SME: The creation interface within `ReceivablesHubPage` is not fully observable from the `CustomerDetailPage` component. Confirm the creation flow with the implementation team. 1. Navigate to `/fa/receivables?tab=customers`. 2. Use the Receivables Hub interface to create a new customer. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/CustomersPage.tsx * src/cores/fa/pages/CustomerDetailPage.tsx * src/cores/fa/pages/ReceivablesHubPage.tsx * src/cores/fa/hooks/useCustomers.ts * src/cores/fa/hooks/useInvoices.ts * src/cores/fa/hooks/useCustomerPayments.ts * src/cores/fa/hooks/useCreditMemos.ts * src/cores/fa/components/CustomersTable.tsx * src/cores/fa/components/CustomerDialog.tsx * src/integrations/supabase/types.ts # FA Module: D365 Business Central Migration Guide Source: https://docs.encoreos.io/fa/d365-migration-guide This guide outlines the strategy, tools, and processes for migrating financial data from Microsoft Dynamics 365 Business Central to the Encore OS FA (Finance &… **Target Audience:** Implementation Team, Data Migration Specialists, CFO/Controller *** ## 1. Overview This guide outlines the strategy, tools, and processes for migrating financial data from **Microsoft Dynamics 365 Business Central** to the **Encore OS FA (Finance & Accounting) module**. ### 1.1 Migration Scope **Data to Migrate:** * Chart of Accounts (Account Master) * Fiscal Year and Period Definitions * General Ledger (Historical Balances) * Vendor Master and Open Payables * Customer Master and Open Receivables * Open Purchase Orders (if applicable) * Budget Data (if applicable) **Data NOT Migrated:** * Closed transactions older than 7 years (per retention policy) * Draft/cancelled transactions * System audit logs (start fresh in Encore OS) ### 1.2 Migration Phases | Phase | Timeline | Description | | --------------------------------- | ---------- | ------------------------------------------------------------ | | **Phase 1: Planning** | Week 1-2 | Data assessment, mapping, resource allocation | | **Phase 2: Setup** | Week 3-4 | Configure Encore OS FA, create CoA, define funds/departments | | **Phase 3: Data Extraction** | Week 5 | Export data from D365 BC via SQL/Excel | | **Phase 4: Transformation** | Week 6-7 | Map D365 fields to Encore OS schema, cleanse data | | **Phase 5: Load & Validate** | Week 8-9 | Import data to Encore OS, validate balances | | **Phase 6: Parallel Run** | Week 10-11 | Run both systems in parallel, reconcile daily | | **Phase 7: Cutover** | Week 12 | Go-live on Encore OS, freeze D365 BC | | **Phase 8: Post-Cutover Support** | Week 13-16 | Monitor, troubleshoot, user training | **Total Timeline:** \~4 months (including parallel run and stabilization) *** ## 2. Chart of Accounts Mapping ### 2.1 D365 BC Structure D365 Business Central uses a flat account structure: ``` Account Number: 1010 Account Name: Cash - Operating Account Account Type: Bank Account Direct Posting: Yes ``` ### 2.2 Encore OS FA Structure Encore OS uses fund accounting with multi-dimensional tracking: ``` Account Number: 1010 Account Name: Cash - Operating Account Account Type: Asset Account Subtype: Bank Account - Checking Fund: Unrestricted General Fund Requires Department: No Requires Program: No ``` ### 2.3 Mapping Strategy **Step 1: Export D365 CoA** ```sql theme={null} -- SQL query for D365 BC (adjust table names) SELECT "No_" AS account_number, "Name" AS account_name, "Account Type" AS account_type, "Income/Balance" AS income_balance, "Direct Posting" AS direct_posting, "Blocked" AS is_blocked FROM "G/L Account" WHERE "Direct Posting" = 1 -- Only posting accounts ORDER BY "No_"; ``` **Step 2: Map Account Types** | D365 BC Account Type | Encore OS Account Type | Notes | | --------------------- | --------------------------------- | ----------------------------------------------- | | Bank Account | Asset (Bank Account - Checking) | Map to cash account subtype | | Accounts Receivable | Asset (Accounts Receivable) | | | Fixed Assets | Asset (Fixed Assets) | | | Accounts Payable | Liability (Accounts Payable) | | | Long-term Liabilities | Liability (Long-term Liabilities) | | | Equity | Equity (Net Assets) | Nonprofits use "Net Assets" instead of "Equity" | | Revenue | Revenue | Map to appropriate revenue subtype | | Cost of Goods Sold | Expense (Direct Program Costs) | | | Operating Expenses | Expense (Operating Expenses) | | **Step 3: Assign Funds** Default all accounts to "Unrestricted General Fund" unless: * Account number starts with "3xxx" (Restricted Grant Accounts) → Assign to specific grant fund * Account name contains "Endowment" → Assign to "Permanently Restricted Fund" **Step 4: Determine Departmental Requirements** * Expense accounts → `requires_department = true` * Revenue accounts → `requires_program = true` (for program attribution) *** ## 3. General Ledger Migration ### 3.1 Balance Migration (Opening Balances) **Recommended Approach:** Migrate opening balances as of fiscal year start, NOT transaction-by-transaction. **Step 1: Extract Trial Balance from D365 BC** ```sql theme={null} SELECT g."No_" AS account_number, g."Name" AS account_name, SUM(CASE WHEN e."Debit Amount" > 0 THEN e."Debit Amount" ELSE 0 END) AS total_debits, SUM(CASE WHEN e."Credit Amount" > 0 THEN e."Credit Amount" ELSE 0 END) AS total_credits FROM "G/L Entry" e JOIN "G/L Account" g ON e."G/L Account No_" = g."No_" WHERE e."Posting Date" <= '2024-12-31' -- As of last day of prior fiscal year GROUP BY g."No_", g."Name" HAVING SUM(e."Debit Amount" - e."Credit Amount") <> 0; ``` **Step 2: Create Opening Balance Journal Entry in Encore OS** ```typescript theme={null} // Create journal entry with all opening balances const openingBalanceEntry = { organization_id: orgId, fiscal_period_id: firstPeriodId, entry_date: '2025-01-01', entry_type: 'opening_balance', description: 'Opening balances migrated from D365 BC', reference_number: 'D365-MIGRATE-OB-2025', lines: trialBalanceData.map((row, index) => ({ line_number: index + 1, account_id: accountMap[row.account_number], // Mapped Encore OS account ID debit_amount: row.total_debits > row.total_credits ? row.total_debits - row.total_credits : null, credit_amount: row.total_credits > row.total_debits ? row.total_credits - row.total_debits : null, description: `Opening balance - ${row.account_name}` })) }; ``` **Step 3: Post Entry and Validate** * Entry must balance (total debits = total credits) * Run trial balance in Encore OS and compare to D365 BC trial balance * Reconcile to penny-level accuracy *** ### 3.2 Transaction-Level Migration (Optional) **When to Use:** * Regulatory requirement to maintain transaction history (e.g., grant audit trail) * Need to drill down to original journal entries for forensic accounting **Process:** 1. Export ALL D365 BC journal entries for fiscal year 2. Map entry types (General, Payment, Invoice, etc.) to Encore OS entry types 3. Create journal entries in Encore OS with `migrated_from_d365 = true` flag 4. Post all entries to recreate historical balances **Warning:** This is MUCH slower and more complex. Only use if legally required. *** ## 4. Vendor & Customer Migration ### 4.1 Vendor Master Migration **Step 1: Export Vendors from D365 BC** ```sql theme={null} SELECT "No_" AS vendor_number, "Name" AS vendor_name, "Address" AS address_line1, "Address 2" AS address_line2, "City", "State" AS state_province, "ZIP Code" AS postal_code, "Country/Region Code" AS country, "Phone No_" AS phone, "E-Mail" AS email, "Federal ID No_" AS tax_id, "Payment Terms Code" AS payment_terms, "Blocked" AS is_blocked FROM "Vendor" WHERE "Blocked" = 0; ``` **Step 2: Transform and Load to Encore OS** ```typescript theme={null} const vendors = d365VendorData.map(v => ({ organization_id: orgId, vendor_number: v.vendor_number, vendor_name: v.vendor_name, vendor_type: 'general', // Default, customize as needed address_line1: v.address_line1, address_line2: v.address_line2, city: v.City, state_province: v.state_province, postal_code: v.postal_code, country: v.country || 'US', phone: v.phone, email: v.email, tax_id_encrypted: await encryptTaxId(v.tax_id), // CRITICAL: Encrypt! payment_terms_days: mapPaymentTerms(v.payment_terms), is_active: !v.is_blocked, is_1099_eligible: v.tax_id ? true : false })); // Bulk insert const { data, error } = await supabase.from('fa_vendors').insert(vendors); ``` *** ### 4.2 Customer Master Migration **Step 1: Export Customers from D365 BC** ```sql theme={null} SELECT "No_" AS customer_number, "Name" AS customer_name, "Address", "City", "State", "ZIP Code", "Country/Region Code", "Phone No_", "E-Mail", "Federal ID No_", "Payment Terms Code", "Blocked" FROM "Customer" WHERE "Blocked" = 0; ``` **Step 2: Load to Encore OS** * Similar process to vendors * Encrypt `tax_id_encrypted` field * Map payment terms to days (e.g., "NET30" → 30) *** ## 5. Open Payables & Receivables ### 5.1 Open Vendor Bills **Step 1: Export Open Payables from D365 BC** ```sql theme={null} SELECT "Vendor No_" AS vendor_number, "Document No_" AS bill_number, "Document Date" AS bill_date, "Due Date" AS due_date, "Amount" AS amount, "Remaining Amount" AS remaining_amount, "Description" FROM "Vendor Ledger Entry" WHERE "Remaining Amount" <> 0 -- Open invoices only AND "Document Type" IN ('Invoice', 'Credit Memo'); ``` **Step 2: Create Vendor Bills in Encore OS** ```typescript theme={null} const bills = d365PayablesData.map(b => ({ organization_id: orgId, vendor_id: vendorMap[b.vendor_number], // Mapped Encore OS vendor ID bill_number: b.bill_number, bill_date: b.bill_date, due_date: b.due_date, amount: b.amount, amount_paid: b.amount - b.remaining_amount, amount_remaining: b.remaining_amount, status: b.remaining_amount === b.amount ? 'approved' : 'partial', approval_status: 'approved', // Pre-approved in D365 description: b.Description })); ``` *** ### 5.2 Open Customer Invoices **Step 1: Export Open Receivables from D365 BC** ```sql theme={null} SELECT "Customer No_" AS customer_number, "Document No_" AS invoice_number, "Document Date" AS invoice_date, "Due Date" AS due_date, "Amount" AS amount, "Remaining Amount" AS remaining_amount, "Description" FROM "Cust. Ledger Entry" WHERE "Remaining Amount" <> 0 AND "Document Type" = 'Invoice'; ``` **Step 2: Create Invoices in Encore OS** * Similar process to vendor bills * Update invoice status (`sent`, `partial`, `overdue`) *** ## 6. Budget Migration ### 6.1 D365 BC Budget Export ```sql theme={null} SELECT b."Budget Name", b."G/L Account No_", b."Date" AS period_start, SUM(b."Amount") AS budget_amount FROM "G/L Budget Entry" b WHERE b."Budget Name" = 'FY2025 Budget' GROUP BY b."Budget Name", b."G/L Account No_", b."Date" ORDER BY b."Date", b."G/L Account No_"; ``` ### 6.2 Encore OS Budget Load ```typescript theme={null} // Create budget header const { data: budget } = await supabase.from('fa_budgets').insert({ organization_id: orgId, fiscal_year: 2025, budget_name: 'FY2025 Operating Budget (Migrated)', status: 'approved' }).select().single(); // Create budget lines const budgetLines = d365BudgetData.map(b => ({ budget_id: budget.id, account_id: accountMap[b["G/L Account No_"]], period_month: new Date(b.period_start).getMonth() + 1, budget_amount: b.budget_amount, department_id: null, // Assign if D365 has dimension data program_id: null })); await supabase.from('fa_budget_lines').insert(budgetLines); ``` *** ## 7. Data Validation & Reconciliation ### 7.1 Validation Checklist **Pre-Migration Validation:** * [ ] D365 BC trial balance balanced (debits = credits) * [ ] All account numbers mapped to Encore OS accounts * [ ] Vendor/customer counts match (D365 export vs Encore OS import) * [ ] Open payables total matches D365 BC Accounts Payable balance * [ ] Open receivables total matches D365 BC Accounts Receivable balance **Post-Migration Validation:** * [ ] Encore OS trial balance matches D365 BC trial balance (by account) * [ ] Total assets = Total liabilities + Total equity * [ ] Cash account balance matches bank reconciliation * [ ] Vendor aging report totals match * [ ] Customer aging report totals match * [ ] Budget totals match (revenue and expense) *** ### 7.2 Reconciliation Report **Generate Comparison Report:** ```sql theme={null} -- Compare D365 BC vs Encore OS balances SELECT d.account_number, d.account_name, d.d365_balance, n.northsight_balance, (n.northsight_balance - d.d365_balance) AS variance FROM d365_trial_balance d FULL OUTER JOIN northsight_trial_balance n ON d.account_number = n.account_number WHERE ABS(n.northsight_balance - d.d365_balance) > 0.01 -- Variance > 1 cent ORDER BY ABS(variance) DESC; ``` **Investigate Variances:** * Variance > \$0.01 requires investigation * Common causes: rounding errors, unmapped accounts, missing transactions * Document all variances in migration log *** ## 8. Parallel Run Strategy ### 8.1 Parallel Run Duration **Timeline:** 2-4 weeks (minimum 1 full month-end close) **Process:** 1. **Week 1-2:** Post all transactions in BOTH D365 BC and Encore OS 2. **Week 3-4:** Reconcile daily balances between systems 3. **Month-End Close:** Perform month-end in both systems, compare financial statements 4. **Go/No-Go Decision:** If variance \< \$100 total and all reconciliations complete, proceed to cutover *** ### 8.2 Daily Reconciliation Procedure **End of Day (5:00 PM):** 1. Print trial balance from D365 BC 2. Print trial balance from Encore OS FA 3. Compare account-by-account 4. Investigate any variance > \$1 5. Document findings in `parallel_run_log.xlsx` **Weekly Review:** * Finance team meeting every Friday at 2 PM * Review week's variances * Identify process improvements * Update user training materials *** ## 9. Cutover Plan ### 9.1 Cutover Timeline **Friday, 5:00 PM (Last day of parallel run):** * [ ] Final reconciliation complete * [ ] All variances documented and resolved * [ ] CFO approval obtained * [ ] Users notified of cutover window **Friday, 5:00 PM - Monday, 8:00 AM (Cutover Window):** * [ ] Freeze D365 BC (read-only mode) * [ ] Post final journal entries in Encore OS * [ ] Run final trial balance and financial statements * [ ] Update DNS/URLs to point to Encore OS * [ ] Send go-live notification to all users **Monday, 8:00 AM (Go-Live):** * [ ] Users begin using Encore OS FA exclusively * [ ] On-site support available for first 3 days * [ ] Helpdesk tickets monitored hourly *** ### 9.2 Rollback Plan **Criteria for Rollback:** * Critical system failure preventing GL posting * Data corruption discovered in Encore OS * Unrecoverable variance in financial statements **Rollback Procedure:** 1. Re-enable D365 BC posting 2. Notify all users to revert to D365 BC 3. Schedule emergency meeting with implementation team 4. Analyze root cause 5. Reschedule cutover after issues resolved *** ## 10. Post-Cutover Support ### 10.1 Support Schedule **Week 1 (Critical Support):** * On-site support: 8 AM - 6 PM daily * Helpdesk: 24/7 monitoring * Daily check-ins with CFO and Controller **Week 2-4 (Standard Support):** * On-site support: 8 AM - 5 PM Mon-Fri * Helpdesk: Standard hours (8 AM - 8 PM) * Weekly check-ins with finance team **Month 2+:** * Helpdesk: Standard hours * Monthly user training refreshers * Quarterly system health review *** ### 10.2 Training Plan **Pre-Cutover Training:** * [ ] 2-hour overview session for all finance staff * [ ] Hands-on training: Journal entries and month-end close * [ ] Hands-on training: Vendor bill processing and payments * [ ] Hands-on training: Customer invoicing and receipts * [ ] Hands-on training: Financial reporting **Post-Cutover Training:** * [ ] Just-in-time training during first week * [ ] Advanced topics (budgeting, consolidation) in month 2 * [ ] Admin training (chart of accounts maintenance) in month 2 *** ## 11. Migration Tools & Scripts ### 11.1 SQL Export Scripts **Location:** `migrations/d365-export/` * `export_coa.sql` - Chart of Accounts export * `export_trial_balance.sql` - Trial balance as of cutover date * `export_vendors.sql` - Vendor master * `export_customers.sql` - Customer master * `export_open_payables.sql` - Open vendor bills * `export_open_receivables.sql` - Open customer invoices * `export_budgets.sql` - Budget data *** ### 11.2 Transformation Scripts **Location:** `migrations/transform/` * `transform_coa.ts` - Map D365 accounts to Encore OS schema * `transform_vendors.ts` - Cleanse and encrypt vendor data * `transform_customers.ts` - Cleanse and encrypt customer data * `validate_balances.ts` - Compare D365 vs Encore OS balances **Usage:** ```bash theme={null} # Run transformation npm run migrate:transform -- --source d365-export/coa.csv --output encoreos-load/accounts.json # Validate npm run migrate:validate -- --d365-trial-balance d365-export/trial_balance.csv ``` *** ### 11.3 Data Load Scripts **Location:** `migrations/load/` * `load_accounts.ts` - Bulk insert chart of accounts * `load_vendors.ts` - Bulk insert vendors * `load_customers.ts` - Bulk insert customers * `load_opening_balances.ts` - Create opening balance journal entry * `load_open_payables.ts` - Create open vendor bills * `load_open_receivables.ts` - Create open customer invoices *** ## 12. Known Issues & Workarounds ### 12.1 D365 BC Multi-Currency **Issue:** Encore OS FA v1.0 does not support multi-currency. **Workaround:** * Convert all foreign currency balances to USD at cutover date exchange rate * Document exchange rates used in migration log * Plan for multi-currency support in Encore OS FA v1.1 (Q2 2026) *** ### 12.2 D365 BC Dimensions **Issue:** D365 BC has 8 dimensions (Department, Program, Grant, etc.), Encore OS FA has 3 (Fund, Department, Program). **Workaround:** * Map D365 "Department" dimension to Encore OS `department_id` * Map D365 "Program" dimension to Encore OS `program_id` * Map D365 "Grant" dimension to Encore OS `fund_id` (create fund per grant) * Additional dimensions (Project, Location, etc.) stored in `custom_fields` JSONB column *** ### 12.3 D365 BC Fixed Assets **Issue:** Encore OS FA v1.0 does not include fixed asset module (depreciation, asset tracking). **Workaround:** * Migrate fixed asset GL account balances only (not detail records) * Continue using D365 BC fixed asset module for depreciation * Post monthly depreciation entries from D365 BC to Encore OS via journal entry * Plan for fixed asset module in Encore OS FA v1.2 (Q3 2026) *** ## 13. Success Criteria **Migration is successful when:** * [ ] All account balances reconciled to penny-level accuracy * [ ] All open payables and receivables migrated and reconciled * [ ] First month-end close completed successfully in Encore OS * [ ] Financial statements match prior month D365 BC statements * [ ] All users trained and comfortable with Encore OS FA * [ ] No critical or high-severity issues outstanding * [ ] CFO sign-off obtained *** ## 14. Contacts & Resources **Migration Project Manager:** * Name: \[TBD] * Email: \[TBD] * Phone: \[TBD] **D365 BC Expert:** * Name: \[TBD] * Credentials: D365 BC Functional Consultant **Encore OS Implementation Lead:** * Name: \[TBD] * Credentials: Encore OS Certified Developer **Escalation Path:** * Level 1: Implementation team * Level 2: Encore OS Product Manager * Level 3: Encore OS CTO *** **Document Status:** OUTLINE - To be completed before migration begins\ **Next Review:** Before Phase 1 kickoff meeting # Finance & Revenue Dashboard Source: https://docs.encoreos.io/fa/dashboard Finance & Revenue module overview page with stat cards, financial summary, pending approvals, budget alerts, cash position, and AR aging summary widgets. Dashboard is the Finance & Revenue module overview page, displaying key financial stats and a collection of lazy-loaded widgets covering financial summary, pending approvals, budget alerts, cash position, and AR aging. Route: `/fa/dashboard` ## Overview The dashboard fetches summary statistics via `useFADashboardStats` to populate four stat cards: Total Accounts (active GL accounts), Active Funds, Departments (cost centers configured), and Open Periods/Current Period (fiscal periods), plus Open Journals. Navigation shortcuts link to `/fa/accounts`, `/fa/funds`, `/fa/departments`, `/fa/periods`, and `/fa/journal-entries`. A `QuickActionsSection` is rendered. Five lazy-loaded widgets are rendered inside `Suspense` with skeleton fallbacks: `FAFinancialSummaryWidget`, `FAPendingApprovalsWidget`, `FABudgetAlertsWidget`, `FACashPositionWidget`, and `FAAgingSummaryWidget`. The root `/fa` route redirects here. ## Who it's for Access follows your organization's role and module configuration. ## Before you start * No prerequisites. The dashboard is the default landing page for the FA module. ## Steps Go to `/fa/dashboard` or `/fa` (redirects here). The four stat cards show current counts for GL accounts, funds, fiscal periods, and open journals. Widgets load asynchronously. Each provides a summary view with links to detail pages. The `QuickActionsSection` provides shortcuts to common FA tasks. ## Key concepts * **`useFADashboardStats`** — Hook fetching counts for the four stat cards (accounts, funds, departments/cost centers, fiscal period). * **`FAFinancialSummaryWidget`** — Lazy-loaded financial summary widget. * **`FAPendingApprovalsWidget`** — Lazy-loaded pending approvals widget. * **`FABudgetAlertsWidget`** — Lazy-loaded budget alerts widget. * **`FACashPositionWidget`** — Lazy-loaded cash position widget. * **`FAAgingSummaryWidget`** — Lazy-loaded AR aging summary widget. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/FAOverview\.tsx * src/cores/fa/hooks/useFADashboardStats.ts * src/cores/fa/components/dashboard/FAFinancialSummaryWidget.tsx * src/cores/fa/components/dashboard/FAPendingApprovalsWidget.tsx * src/cores/fa/components/dashboard/FABudgetAlertsWidget.tsx * src/cores/fa/components/dashboard/FACashPositionWidget.tsx * src/cores/fa/components/dashboard/FAAgingSummaryWidget.tsx # Deferred Balance Source: https://docs.encoreos.io/fa/deferred-balance Report showing outstanding deferred revenue balances and recognition progress per contract, with rollup totals. Cancelled records are excluded from totals. Deferred Balance is a read-only report providing a snapshot of `fa_deferred_revenue` records with three summary totals and a per-record breakdown table. Cancelled records are excluded from rollup totals. Route: `/fa/revenue-reports/deferred-balance` ## Overview The page fetches data via `useDeferredBalanceReport(orgId)`. The response contains a `summary` object (three metric cards rendered) and a `rows` array (per-record table). A `Badge` component is used for record status display. The page description from code: "Outstanding deferred revenue balances and recognition progress. Cancelled records are excluded from rollup totals." ## Who it's for Requires permission: `fa.deferred_revenue.view` ## Before you start * Deferred revenue records must exist (created via schedule processing — see Deferred Revenue page). * You must hold the `fa.deferred_revenue.view` permission. ## Steps Go to `/fa/revenue-reports/deferred-balance`. Three metric cards show rollup figures (excluding cancelled records). Each row shows a deferred revenue record with status badge and balance detail. ## Key concepts * **`useDeferredBalanceReport`** — Primary data hook; returns `{ summary, rows }` for `orgId`. * **`fa_deferred_revenue`** — The underlying table; records with cancelled status are excluded from summary totals. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/DeferredBalanceReportPage.tsx * src/cores/fa/hooks/useRevenueReports.ts # Deferred Revenue Source: https://docs.encoreos.io/fa/deferred-revenue Read-only list of deferred revenue liability balances awaiting recognition. Records are typically created via schedule processing. Deferred Revenue displays a read-only list of deferred revenue liability balances for the organization. Records represent amounts not yet recognized as revenue. Route: `/fa/deferred-revenue` ## Overview The page fetches deferred revenue records via `useDeferredRevenueList(orgId)`. The page description from code: "Liability balances awaiting recognition. Records are typically created via schedule processing." Records are displayed in a table with status badges. An empty state is shown when no records exist. This page is read-only; records are created by processing revenue schedules (see Revenue Schedules). ## Who it's for Requires permission: `fa.deferred_revenue.view` ## Before you start * Revenue schedules must be created and processed to generate deferred revenue records. * You must hold the `fa.deferred_revenue.view` permission. ## Steps Go to `/fa/deferred-revenue`. The table lists deferred revenue records with status and balance information. For details on recognition progress, see the Deferred Balance report at `/fa/revenue-reports/deferred-balance`. ## Key concepts * **`useDeferredRevenueList`** — Primary data hook; fetches `fa_deferred_revenue` records for `orgId`. * **Revenue schedules** — The process that creates deferred revenue records; see `/fa/revenue-schedules`. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/DeferredRevenuePage.tsx * src/cores/fa/hooks/useDeferredRevenue.ts # Finance & Revenue Departments Source: https://docs.encoreos.io/fa/departments Manage the organization's department hierarchy and cost centers with a hierarchical tree view, flat list, and inline create/edit dialog. Departments provides a tabbed interface for managing the organization's department hierarchy and cost centers, with both a tree view and a flat list. Route: `/fa/departments` ## Overview The page fetches departments via `useDepartments(organizationId)`. Two tabs are available: **Hierarchy View** (rendered by `DepartmentTree`) and a flat list (second tab content not visible from page header — additional tab labels may exist). The **New Department** button opens `DepartmentDialog` with no pre-selected ID. Clicking edit on a row sets `selectedDeptId` and opens the dialog. The `DepartmentDialog` handles both create and edit based on whether `selectedDeptId` is defined. Page header: "Departments — Manage department hierarchy and cost centers." ## Who it's for Access follows your organization's role and module configuration. ## Before you start * Departments are referenced in GL entries, cost allocations, and budget line items. Define them before posting entries. * Identify the department name, code, and any parent department if applicable. ## Steps Go to `/fa/departments`. The Hierarchy View tab displays the department tree via `DepartmentTree`. Click **New Department** to open `DepartmentDialog` with a blank form. Click the edit action on a department row. The dialog opens with the department's current data. ## Key concepts * **`useDepartments`** — Primary data hook; fetches all department records for `organizationId`. * **`DepartmentTree`** — Component rendering the hierarchical tree view of departments. * **`DepartmentDialog`** — Create/edit dialog; accepts `deptId` (undefined for create) and `organizationId`. ## Creating a department New department creation is handled through an inline dialog on the Departments page. The `/fa/departments` page includes a **New Department** button that opens `DepartmentDialog` with `departmentId={undefined}` (create mode). `DepartmentTree` confirms that departments support a hierarchical structure. 1. Navigate to `/fa/departments`. 2. Click **New Department** (top right). 3. Complete the `DepartmentDialog` form fields. 4. Save to create the department. It appears in the hierarchy tree. To edit an existing department: 1. Locate the department in the Hierarchy View. 2. Click the edit action on the department node. 3. Update and save. SME: The exact fields and validation rules in `DepartmentDialog` are not fully observable from the page component alone. Confirm required fields with the implementation team. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/DepartmentsPage.tsx * src/cores/fa/hooks/useDepartments.ts * src/cores/fa/components/DepartmentTree.tsx * src/cores/fa/components/DepartmentDialog.tsx # Deposits in Transit Source: https://docs.encoreos.io/fa/deposits-transit Report listing deposits that have been recorded in the general ledger but not yet cleared by the bank, with days-in-transit tracking. Deposits in Transit is a report listing deposits recorded in the GL that have not yet cleared the bank, showing deposit date, description, amount, and the number of days each has been in transit. Route: `/fa/reports/deposits-in-transit` ## Overview The page fetches data via `useDepositsInTransitReport()`. The response contains `summary.total` (rendered as a large currency figure) and a `deposits` array. Each deposit row shows: `transaction_date` (formatted `MMM d, yyyy`), `description`, `amount` (right-aligned, formatted as currency), and `days_in_transit` (right-aligned integer). The page title is "Deposits in Transit." ## Who it's for Access follows your organization's role and module configuration. ## Before you start * Bank reconciliation or deposit tracking must be active for this report to have data. ## Steps Go to `/fa/reports/deposits-in-transit`. The summary card shows the total amount of deposits currently in transit. The table lists each deposit with date, description, amount, and days in transit. Deposits with a high `days_in_transit` value may need follow-up with the bank. ## Key concepts * **`useDepositsInTransitReport`** — Primary data hook; returns `{ summary: { total }, deposits: [...] }`. * **`days_in_transit`** — Number of days the deposit has been outstanding since `transaction_date`. * **`summary.total`** — Total amount of all deposits currently in transit. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/DepositsInTransitReportPage.tsx * src/cores/fa/hooks/useDepositsInTransitReport.ts # Depreciation Schedule Source: https://docs.encoreos.io/fa/depreciation-schedule View the depreciation schedule for fixed assets and run depreciation for the current period in Finance & Revenue. Depreciation Schedule displays monthly depreciation records across all fixed assets and provides the ability to run depreciation for the period. Route: `/fa/depreciation` redirects to `/fa/assets?tab=depreciation`. ## Overview Navigating to `/fa/depreciation` redirects to the Assets Hub (`/fa/assets?tab=depreciation`). The `DepreciationSchedulePage` component renders within that hub and shows monthly depreciation records. It provides stat cards for summary figures, filters by year and month, a table of depreciation schedule entries via `DepreciationScheduleTable`, a `RunDepreciationDialog` for triggering depreciation runs, and displays pending GL postings via `usePendingGLPostings`. ## Who it's for Requires `fa.assets.view` (inferred from Assets Hub route; no additional permission gate on the depreciation tab). ## Before you start * Fixed assets must be configured with a depreciation method and useful life. * The current fiscal period must be open. ## Steps 1. Navigate to **Finance → Assets** (`/fa/assets`) or go directly to `/fa/depreciation` (redirects automatically). 2. Select the **Depreciation** tab. 3. Use the year/month filters to find the relevant period. 4. Review the stat cards for totals. 5. To run depreciation, click **Run Depreciation** and confirm in the dialog. 6. Pending GL postings are shown; use **Retry GL Posting** for any failed entries. ## Key concepts | Concept | Description | | ----------------------- | ------------------------------------------------------------------------ | | `RunDepreciationDialog` | Dialog confirming and triggering a depreciation batch run for a period | | `usePendingGLPostings` | Hook surfacing depreciation entries not yet posted to the general ledger | | `useRetryGLPosting` | Hook for retrying a failed GL posting for a depreciation entry | ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/DepreciationSchedulePage.tsx # Direct Cash Flow Source: https://docs.encoreos.io/fa/direct-cash-flow View the direct method cash flow statement broken out by operating, investing, and financing activities in Finance & Revenue. Direct Cash Flow presents the direct-method cash flow statement, categorizing cash movements into operating, investing, and financing activities for a selected date range. Route: `/fa/reports/cash-flow-direct`. ## Overview The Direct Cash Flow report is accessible at `/fa/reports/cash-flow-direct` and is gated behind `fa.reports.view`. The component calls `useCashFlowDirect` which invokes the `fa_cash_flow_direct()` RPC, passing a `periodStart` and `periodEnd` date. Results are organized into three sections — Operating Activities, Investing Activities, and Financing Activities — with subtotals per section and a grand total net cash row. The report supports date-range filtering and export via `ReportExportButtons`. ## Who it's for Requires permission `fa.reports.view`. ## Before you start * Select a date range using the period start and end date inputs (defaults to year-to-date). * Ensure the general ledger contains posted journal entries for the selected period. ## Steps 1. Navigate to **Finance → Reports** (`/fa/reports`) then select **Direct Cash Flow**, or go directly to `/fa/reports/cash-flow-direct`. 2. Enter the **Period Start** and **Period End** dates. 3. The report loads automatically and groups entries into Operating, Investing, and Financing sections. 4. Review section subtotals and the net cash total row. 5. Use **Export** buttons (`ReportExportButtons`) to download the report. ## Key concepts | Concept | Description | | --------------------------------- | ------------------------------------------------------------------ | | `useCashFlowDirect` | Hook invoking the `fa_cash_flow_direct()` RPC | | `periodStart` / `periodEnd` | Date range inputs; defaults to first of current year through today | | Operating / Investing / Financing | Three `category` values returned by the RPC; SME: confirm mapping | | `ReportExportButtons` | Shared export component for report download | ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/CashFlowDirectPage.tsx # Dispose Asset Source: https://docs.encoreos.io/fa/dispose-asset Initiate the disposal process for a specific fixed asset from its detail record in Finance & Revenue. Dispose Asset is the workflow for recording a fixed asset disposal. Route: `/fa/fixed-assets/:id/dispose`. ## Overview No active route is registered for `/fa/fixed-assets/:id/dispose` in the current codebase. Disposal functionality for a fixed asset appears to be accessible through the Assets Hub disposals tab or from within the asset detail page. The `AssetDisposalsPage` component handles the disposal history list and is rendered as part of the Assets Hub. ## Who it's for Access follows your organization's role and module configuration. found on this route. Related disposal management likely requires `fa.assets.edit` or equivalent. ## Before you start * Confirm with your system administrator how asset disposal is initiated in your deployment. * Navigate to the fixed asset detail at `/fa/fixed-assets/:id` to see available actions. ## Steps SME: This route is not yet resolvable as a standalone page. Provide steps once confirmed. 1. Navigate to **Finance → Assets** (`/fa/assets`). 2. Open the relevant fixed asset record. 3. Locate the disposal action within the asset detail view. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/AssetDisposalsPage.tsx * src/routes/fa/lazy-pages.ts # Entities Source: https://docs.encoreos.io/fa/entities Manage legal entity master records for multi-entity consolidation in Finance & Revenue. Entities displays and manages legal entity master records used for multi-entity financial consolidation within the organization. Route: `/fa/entities`. Legal entities surface listing entity records ## Overview The Entities page is accessible at `/fa/entities` and requires permission `fa.entities.view`. The component (`FAEntitiesPage`) fetches entities via `useFAEntities(organizationId)` and displays them in a table with columns for Code, Legal Name, Type, Consolidation, and Currency. Each entity row supports edit (via `FAEntityDialog`) if the user has `fa.entities.edit`, and archive via `useArchiveFAEntity`. A **New Entity** button is gated behind `fa.entities.create`. The page description states: "Each organization has one default PRIMARY entity." ## Who it's for Requires permission `fa.entities.view`. Edit requires `fa.entities.edit`. Create requires `fa.entities.create`. ## Before you start * You must have `fa.entities.view` permission. * To create or edit entities, the additional `fa.entities.create` or `fa.entities.edit` permissions are required. ## Steps 1. Navigate to **Finance → Entities** (`/fa/entities`). 2. Review the list of legal entities showing Code, Legal Name, Type, Consolidation method, and Currency. 3. To create a new entity, click **New Entity** (requires `fa.entities.create`). 4. To edit an entity, click the edit action in the row; `FAEntityDialog` opens. 5. To archive an entity, use the archive action (requires `fa.entities.edit`). ## Key concepts | Concept | Description | | -------------------- | ------------------------------------------------------------------------ | | `useFAEntities` | Hook fetching legal entity records for the organization | | `FAEntityDialog` | Dialog for creating or editing a legal entity | | `useArchiveFAEntity` | Mutation hook for archiving an entity record | | PRIMARY entity | Default entity for the organization; SME: confirm reporting implications | ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/FAEntitiesPage.tsx # Expense Dashboard Source: https://docs.encoreos.io/fa/expense-dashboard View the expense management dashboard with summary statistics, approval queue, and recent expense reports in Finance & Revenue. Expense Dashboard is the central overview for expense management, displaying summary statistics, an approval queue widget, a category breakdown widget, and a list of recent expense reports. Route: `/fa/expenses` redirects to `/fa/payables?tab=expenses`; the `ExpenseDashboardPage` component is mapped to this route via the `ExpenseDashboardPage` export. ## Overview The `ExpenseDashboardPage` component renders summary stat cards (loaded via `useExpenseDashboardStats`), an approval queue widget (`FAExpenseApprovalQueueWidget`), a category breakdown widget (`FAExpenseCategoryWidget`), and a recent reports widget (`FARecentExpenseReportsWidget`). A **New Report** button is gated behind `fa.expenses.create`; a **Policies** button links to `/fa/settings/expense-policies` (gated behind `fa.expense-policies.view`). The route `/fa/expenses` is currently a legacy redirect to `/fa/payables?tab=expenses`. ## Who it's for Requires `fa.expenses.view` (inferred from related expense routes). Create requires `fa.expenses.create`. ## Before you start * Navigate to the Payables Hub (`/fa/payables?tab=expenses`) or search for the expense dashboard in navigation. ## Steps 1. Open the Expense Dashboard. 2. Review summary stat cards from `useExpenseDashboardStats`. 3. Check the approval queue in `FAExpenseApprovalQueueWidget`. 4. Review category spending in `FAExpenseCategoryWidget`. 5. Open a recent expense report from `FARecentExpenseReportsWidget`. 6. Click **New Report** to create a new expense report (requires `fa.expenses.create`). ## Key concepts | Concept | Description | | ------------------------------ | ----------------------------------------------------- | | `useExpenseDashboardStats` | Hook returning summary metrics for expense management | | `FAExpenseApprovalQueueWidget` | Widget showing expense reports pending approval | | `FAExpenseCategoryWidget` | Widget breaking down expenses by category | | `FARecentExpenseReportsWidget` | Widget listing recently updated expense reports | ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/ExpenseDashboardPage.tsx # Expense Management & Reimbursements User Guide Source: https://docs.encoreos.io/fa/expense-management-guide This guide helps end users understand how to use the Expense Management module for creating expense reports, tracking receipts, submitting for approval, and pr… > **Purpose:** This guide helps end users understand how to use the Expense Management module for creating expense reports, tracking receipts, submitting for approval, and processing reimbursements. *** ## Overview The Expense Management module handles employee expense reports, receipt tracking, policy enforcement, approval workflows, and reimbursement payments. It supports per diem rates, mileage calculations, and batch processing. **Navigation:** Finance & Accounting → Expense Management (`/fa/expense-management`) ## Permissions | Permission | Description | | ----------------------- | ------------------------------------- | | `fa.expenses.view` | View expense reports | | `fa.expenses.create` | Submit expense reports | | `fa.expenses.approve` | Approve/reject expense reports | | `fa.expenses.reimburse` | Process reimbursement payments | | `fa.expenses.admin` | Configure policies and per diem rates | ## Creating an Expense Report 1. Click **New Expense Report** 2. Enter a **Report Title** and **Description** 3. Select the **Reporting Period** (date range) 4. Optionally assign a **Site** for location-based policy rules 5. Add expense line items (see below) 6. Click **Submit for Approval** when complete ## Expense Line Items Each line item captures one expense: * **Date** – When the expense occurred * **Category** – Travel, Meals, Supplies, Lodging, etc. * **Description** – What the expense was for * **Amount** – Total cost * **GL Account** – Expense account to charge * **Fund / Department / Program** – Dimensional coding * **Receipt** – Upload receipt image (required by policy for amounts over threshold) ### Per Diem Calculator For travel expenses, use the built-in per diem calculator: 1. Select **Per Diem** as the category 2. Enter the **Travel Destination** (city/state) 3. Enter **Travel Dates** 4. The system looks up GSA per diem rates and calculates: * Lodging allowance (per night) * M\&IE allowance (meals & incidental expenses) * First/last day proration (75% of M\&IE) ### Mileage Calculator For vehicle travel reimbursement: 1. Select **Mileage** as the category 2. Enter **Miles Driven** 3. The system applies the configured mileage rate (e.g., IRS standard rate) 4. Amount calculates automatically ## Receipt Upload * Drag and drop or click to upload receipt images * Supported formats: JPEG, PNG, PDF * Receipts are stored in secure Supabase storage * PHI detection scans receipts for protected health information (configurable) ## Approval Workflow ```text theme={null} Draft → Submitted → Approved → Reimbursement Pending → Reimbursed ↘ Rejected (returned with comments) ``` **Approvers** see pending reports in their approval queue with: * Total amount and line item count * Policy compliance flags (over-limit warnings, missing receipts) * One-click approve or reject with comments ### Policy Enforcement The system automatically checks expense policies: * **Amount limits** per category (e.g., meals capped at \$75/day) * **Receipt requirements** (mandatory above configurable threshold) * **Duplicate detection** (same amount/date/vendor) * **Category restrictions** by role or department Policy violations show as warnings; approvers can override with justification. ## Reimbursement Payments After approval, finance staff process reimbursements: 1. Navigate to **Reimbursements** tab 2. Select approved reports for payment 3. Choose **payment method** (ACH, check) 4. **Batch processing** – select multiple reports to pay at once 5. Confirm and process; GL entries are created automatically ### GL Integration | Transaction | Debit | Credit | | --------------- | ---------------------- | ---------------------- | | Approve Report | Expense Accounts | Accrued Reimbursements | | Process Payment | Accrued Reimbursements | Cash/Bank | ## Policy Configuration Administrators can configure: * **Expense categories** – Add/edit/disable categories * **Amount limits** – Per category and per report maximums * **Receipt thresholds** – Minimum amount requiring receipt upload * **Per diem rates** – GSA rates or custom rates by location * **Mileage rate** – IRS standard or organization-specific rate * **Approval routing** – Manager approval, department head, finance review **Navigate to:** Finance Settings → Expense Policies ## Tips * Submit reports promptly — stale expenses are harder to approve * Always upload receipts for amounts over \$25 * Use per diem and mileage calculators for accurate travel reimbursements * Batch reimbursements weekly to reduce processing overhead * Review policy compliance dashboard for trending violations # Expense Payments Source: https://docs.encoreos.io/fa/expense-payments View and manage expense reimbursement payments for processed expense reports in Finance & Revenue. Expense Payments lists reimbursement payment records for approved expense reports, with filters for status, employee, and search, plus summary stat cards. Route: `/fa/expenses/payments`. ## Overview The Expense Payments page is accessible at `/fa/expenses/payments` and requires permission `fa.expenses.process`. The component (`ReimbursementPaymentsPage`) fetches reimbursement payment records via `useReimbursementPayments` and summary stats via `useReimbursementStats`, both scoped to `organizationId`. Filters available: search query (`searchQuery`), status filter (`statusFilter`: all / completed / pending / reversed), and employee filter via `EmployeeSelector`. Results display in a `DataTable` with columns for payment details. Each row links to the payment detail at `/fa/expenses/payments/:id`. ## Who it's for Requires permission `fa.expenses.process`. ## Before you start * You must have `fa.expenses.process` permission. * Expense reports must have been approved and submitted for reimbursement processing. ## Steps 1. Navigate to `/fa/expenses/payments`. 2. Use the search field to filter by payment reference or description. 3. Use the **Status** dropdown to filter by `completed`, `pending`, or `reversed`. 4. Use the **Employee** selector to filter by a specific employee. 5. Click a row to open the reimbursement payment detail at `/fa/expenses/payments/:id`. ## Key concepts | Concept | Description | | -------------------------- | ------------------------------------------------------------------------------------- | | `useReimbursementPayments` | Hook fetching reimbursement payment records filtered by org, search, status, employee | | `useReimbursementStats` | Hook providing summary statistics for the payments list | | `EmployeeSelector` | Cross-core platform component for employee lookup | | Payment statuses | `completed`, `pending`, `reversed`; SME: confirm reversal behavior | ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/ReimbursementPaymentsPage.tsx # Expense Policies Source: https://docs.encoreos.io/fa/expense-policies Configure expense policy rules, spending limits, and category mappings for Finance & Revenue. Expense Policies provides the administrative interface for configuring expense policy rules, limits, and GL category mappings applied during expense report submission and approval. Route: `/fa/settings/expense-policies`. Expense policies admin surface listing policy rules ## Overview The Expense Policies page is accessible at `/fa/settings/expense-policies` and requires permission `fa.expenses.admin` (route level) and `fa.expense_policies.view` (component level). The component (`ExpensePoliciesPage`) renders a two-tab interface via `ScrollableTabsList`: * **Policies tab**: renders `ExpensePolicyTable` (listing configured policies) and `ExpensePolicyEngineRulesSection` (rule engine configuration). * **Mappings tab**: renders `CategoryMappingTable` (GL category-to-account mappings). ## Who it's for Requires permission `fa.expenses.admin` (route guard) and `fa.expense_policies.view` (component guard). ## Before you start * You must have `fa.expenses.admin` permission. * Review existing policies and mappings before making changes to avoid disrupting active expense reports. ## Steps 1. Navigate to **Finance → Settings → Expense Policies** (`/fa/settings/expense-policies`). 2. On the **Policies** tab: * Review existing policies in `ExpensePolicyTable`. * Configure rule engine settings in `ExpensePolicyEngineRulesSection`. 3. On the **Mappings** tab: * Review and update GL category-to-account mappings in `CategoryMappingTable`. 4. Save changes as prompted by each section. ## Key concepts | Concept | Description | | --------------------------------- | ------------------------------------------------------------------- | | `ExpensePolicyTable` | Displays configured expense policies | | `ExpensePolicyEngineRulesSection` | Rule engine configuration for policy enforcement | | `CategoryMappingTable` | Maps expense categories to GL accounts; SME: confirm mapping schema | ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/ExpensePoliciesPage.tsx # Expense Report Source: https://docs.encoreos.io/fa/expense-report View, create, and edit expense reports with line items, approval history, GL posting, and submit or draft workflows in Finance & Revenue. Expense Report displays the full detail view for a single expense report, including a summary card, expense lines, approval history timeline, and action buttons for submitting, approving, posting to GL, or deleting. Route: `/fa/expenses/:id`. ## Overview The Expense Report detail page is accessible at `/fa/expenses/:id` and requires permission `fa.expenses.view`. The component (`ExpenseReportDetailPage`) fetches the report via `useExpenseReport`, its lines via `useExpenseLinesByReport`, pending approvals via `usePendingApprovals`, and approval history via `useExpenseApprovalHistory`. It renders: * `ExpenseReportSummaryCard` — header summary with status badge (`ExpenseReportStatusBadge`) * `ExpenseLinesTable` — tabular view of expense line items * `ApprovalHistoryTimeline` — chronological approval events * Action buttons: submit (`useSubmitExpenseReport`), approve (`ExpenseApprovalDialog`), post to GL (`PostToGLDialog`), edit (navigates to `/fa/expenses/:id/edit`), delete (`useSoftDeleteExpenseReport`) * An `AlertDialog` confirms destructive actions ## Who it's for Requires permission `fa.expenses.view`. To approve or post to GL, additional permissions may be required (SME: confirm). Creating expense reports requires `fa.expenses.create`. Editing requires `fa.expenses.edit`. ## Before you start * You must have `fa.expenses.view` permission to view. * The creator must be linked to an employee record via `useMyEmployee` when creating. ## Steps 1. Navigate to the expense report list and click a report, or go to `/fa/expenses/:id`. 2. Review `ExpenseReportSummaryCard` for report totals and current status. 3. Review individual lines in `ExpenseLinesTable`. 4. Review `ApprovalHistoryTimeline` for prior approval events. 5. Use available action buttons based on the report's current status and your permissions. ## Key concepts | Concept | Description | | ---------------------------- | ------------------------------------------------ | | `ExpenseReportSummaryCard` | Header card with report metadata and status | | `ExpenseLinesTable` | Table of individual expense line items | | `ApprovalHistoryTimeline` | Chronological record of approval events | | `PostToGLDialog` | Dialog confirming and executing GL posting | | `useSoftDeleteExpenseReport` | Soft-delete mutation; SME: confirm reversibility | ## Creating an expense report The New Expense Report page (`/fa/expenses/new`) creates an expense report for reimbursement. The page requires the current user to have an associated employee record (`useMyEmployee`). If no employee record is found, an error state is shown. **Report header** (`ReportPayload`): `report_name` (required), `description` (optional), `start_date` / `end_date` (required), `site_id` (optional), `default_gl_account_id` (optional). The `report_number` is auto-generated via `useGenerateExpenseReportNumber`. **Expense lines** (`ExpenseLine`): each line includes `expense_date`, `expense_category`, `description`, `amount`, and optional `account_id`, `fund_id`, `department_id`, per-diem fields (`per_diem_days`, `per_diem_rate`), mileage fields (`miles`, `mileage_rate`), and `receipt_storage_path`. **Save as Draft:** Creates the report with `status: "draft"` and all lines, then navigates to the report detail. **Submit for Approval:** Creates the report and lines as draft, then calls `useSubmitExpenseReport`, then navigates to the report detail. Key concepts: * **Employee record requirement:** The creator must be linked to an employee record via `useMyEmployee`. * **Report number:** Auto-generated — not user-entered. * **Total amount:** Calculated as the sum of all line item amounts. 1. Navigate to `/fa/expenses/new`. 2. Complete the `ExpenseReportForm` header section (report name, dates, optional site/account). 3. Add expense lines with date, category, description, and amount for each expense. 4. Click **Save as Draft** to save without submitting, or **Submit for Approval** to immediately submit. 5. On success, you are redirected to the new expense report's detail page. ## Editing an expense report The Edit Expense Report page (`/fa/expenses/:id/edit`) allows updates to an existing expense report's header information and management of individual expense line items. Requires permission `fa.expenses.edit`. The component (`ExpenseReportEditPage`) fetches the report via `useExpenseReport` and its lines via `useExpenseLinesByReport`. It renders `ExpenseReportForm` for header fields (`report_name`, `description`, `start_date`, `end_date`, `site_id`, `default_gl_account_id`) and manages expense lines through `useCreateExpenseLine`, `useUpdateExpenseLine`, and `useSoftDeleteExpenseLine`. On success, the component calls `useSubmitExpenseReport` if the report is ready for submission. Account options come from `useAccounts`; fund options from `useFunds`; site options from `useSiteList`. Before you start: the expense report must be in an editable status. Key concepts: | Concept | Description | | -------------------------- | ------------------------------------------------------ | | `ExpenseReportForm` | Shared form component for expense report header fields | | `useExpenseLinesByReport` | Hook fetching expense lines for the report | | `useSoftDeleteExpenseLine` | Soft-deletes a line item without permanent removal | | `default_gl_account_id` | Optional default GL account applied to new lines | 1. Open the expense report at `/fa/expenses/:id` and click **Edit**. 2. Update header fields (report name, date range, site, default GL account) in `ExpenseReportForm`. 3. Add, update, or remove individual expense lines using the line item editor. 4. Save changes via the form submit action. 5. On success, the page navigates back to the expense report detail. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/ExpenseReportDetailPage.tsx * src/cores/fa/pages/ExpenseReportNewPage.tsx * src/cores/fa/pages/ExpenseReportEditPage.tsx * src/cores/fa/hooks/useExpenseReports.ts * src/cores/fa/hooks/useExpenseLines.ts * src/cores/fa/components/ExpenseReportForm.tsx * src/platform/workforce/hooks/useMyEmployee.ts # FA Alerts Source: https://docs.encoreos.io/fa/fa-alerts Configure financial alert thresholds for key metrics such as cash balance, AR aging, and budget variance in Finance & Revenue. FA Alerts allows administrators to create, update, and delete alert threshold rules for financial metrics, triggering notifications when monitored values cross defined thresholds. Route: `/fa/settings/alerts`. ## Overview The FA Alerts page is accessible at `/fa/settings/alerts` and requires permission `fa.settings.view`. The component (`AlertThresholdsPage`) fetches alert thresholds via `useAlertThresholds` and displays them in a `DataTable` with columns for Name, Metric Type, Operator, Threshold Value, and actions. Supported metric types (from `METRIC_LABELS`): `cash_balance`, `ar_aging_90`, `ar_aging_total`, `budget_variance`, `ap_aging_90`, `custom`. Operators (from `OPERATOR_LABELS`): `lt` (\<), `gt` (>), `lte` (≤), `gte` (≥), `eq` (=). Create, edit, and delete operations use `useCreateAlertThreshold`, `useUpdateAlertThreshold`, and `useDeleteAlertThreshold`. Editing opens `AlertThresholdForm` in a panel or dialog (`formOpen` state). Create requires `PermissionGate` around the **New Alert** button. ## Who it's for Requires permission `fa.settings.view`. ## Before you start * You must have `fa.settings.view` permission. * Identify the financial metric you want to monitor and the threshold value. ## Steps 1. Navigate to **Finance → Settings → Alerts** (`/fa/settings/alerts`). 2. Review existing alert thresholds in the `DataTable`. 3. To create a new alert, click **New Alert** (requires appropriate permission) and complete `AlertThresholdForm`. 4. To edit an existing alert, click the edit action; `AlertThresholdForm` opens pre-populated. 5. To delete an alert, use the delete action in the row. ## Key concepts | Concept | Description | | -------------------- | ------------------------------------------------------------------------------------------------------------------- | | `useAlertThresholds` | Hook fetching all configured alert threshold records | | `AlertThresholdForm` | Form for creating or editing an alert threshold | | `METRIC_LABELS` | Supported metric types: `cash_balance`, `ar_aging_90`, `ar_aging_total`, `budget_variance`, `ap_aging_90`, `custom` | | `OPERATOR_LABELS` | Comparison operators: `lt`, `gt`, `lte`, `gte`, `eq` | ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/AlertThresholdsPage.tsx # Finance Forms Source: https://docs.encoreos.io/fa/finance-forms Access financial forms within the Finance & Revenue core. Finance Forms is intended to provide access to financial forms. Route: `/fa/forms`. ## Overview No active route is registered for `/fa/forms` in the current codebase. The path does not appear in `src/routes/fa.tsx` as either a direct route or a redirect. ## Who it's for Access follows your organization's role and module configuration. found on this route. ## Before you start * Confirm with your system administrator whether this route is available in your deployment. ## Steps SME: This route is not resolvable from the current codebase. Provide steps once confirmed. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/routes/fa/lazy-pages.ts # Finance Settings Source: https://docs.encoreos.io/fa/finance-settings Configure module-level settings for the Finance & Revenue core including transaction rules, recurring templates, and AI matching. Finance Settings provides the administrative configuration interface for the Finance & Revenue module, with tabs for general settings, transaction rules, recurring templates, category mappings, and AI matching. Route: `/fa/settings`. ## Overview Finance Settings is accessible at `/fa/settings` and requires permission `fa.settings.admin` (resolved from `FA_PERMISSIONS.SETTINGS_ADMIN = 'fa.settings.admin'`). The component (`FASettingsPage`) fetches module settings via `useFAModuleSettings` and renders a multi-tab interface: * **General settings**: rendered by `FASettingsForm` with `transformSettingsForForm` * **Transaction Rules**: rendered by `TransactionRulesTab` * **Recurring Templates**: rendered by `RecurringTransactionTemplatesTab` * **Plaid Category Mappings**: rendered by `PlaidCategoryMappingsTab` * **Matching AI**: rendered by `MatchingAISettingsTab` An optional guided tour (`faSettingsTour`) can be launched via the **Help** button. The page also supports a `?tour=fa-settings-tour` query parameter to auto-start the tour. ## Who it's for Requires permission `fa.settings.admin` (`FA_PERMISSIONS.SETTINGS_ADMIN`). ## Before you start * You must have `fa.settings.admin` permission. * Review current settings before making changes. ## Steps 1. Navigate to **Finance → Settings** (`/fa/settings`). 2. Select the appropriate tab for the configuration you want to update. 3. On the **General settings** tab, update module-level settings and submit via `FASettingsForm`. 4. On the **Transaction Rules** tab, configure automated transaction categorization rules. 5. On the **Recurring Templates** tab, manage recurring transaction templates. 6. On the **Plaid Category Mappings** tab, map Plaid import categories to GL accounts. 7. On the **Matching AI** tab, configure AI-assisted transaction matching settings. ## Key concepts | Concept | Description | | ----------------------- | ---------------------------------------------------------- | | `useFAModuleSettings` | Hook fetching and persisting FA module-level settings | | `FASettingsForm` | Form for general module settings | | `TransactionRulesTab` | Tab for automated transaction rule configuration | | `MatchingAISettingsTab` | Tab for AI matching configuration; SME: confirm capability | | `faSettingsTour` | Guided onboarding tour for this settings page | ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/FASettingsPage.tsx * src/platform/permissions/constants.ts # Financial Analytics & Dashboards — Admin Guide Source: https://docs.encoreos.io/fa/financial-analytics-admin-guide This guide covers how to configure and manage the Financial Analytics module, including KPI definitions, dashboard widgets, and variance thresholds. ## Overview This guide covers how to configure and manage the Financial Analytics module, including KPI definitions, dashboard widgets, and variance thresholds. *** ## Configuring KPI Definitions KPI definitions are stored in the `fa_kpi_definitions` table and control what metrics appear on the KPIs page. ### Creating a KPI Each KPI requires: | Field | Description | Example | | --------------------- | ---------------------------------------------------------------------- | ------------------------ | | `kpi_code` | Unique code within your org | `DSO` | | `kpi_name` | Display name | `Days Sales Outstanding` | | `category` | One of: liquidity, profitability, efficiency, leverage, growth, custom | `efficiency` | | `formula` | Database function name to calculate the value | `fa_calculate_dso` | | `unit` | Display unit (days, ratio, percentage, currency) | `days` | | `target_value` | Organization's goal value | `30` | | `threshold_warning` | Value that triggers yellow status | `45` | | `threshold_critical` | Value that triggers red status | `60` | | `threshold_direction` | How to interpret thresholds | `lower_is_better` | ### Threshold Direction | Direction | Warning Trigger | Critical Trigger | | ------------------ | --------------------------------------- | ---------------------------- | | `higher_is_better` | Value drops below warning | Value drops below critical | | `lower_is_better` | Value rises above warning | Value rises above critical | | `target_is_best` | Value deviates from target by warning % | Value deviates by critical % | ### Built-in Calculation Functions | Function | Parameters | Returns | | ---------------------------- | ------------------------------------ | ------------------------ | | `fa_calculate_dso` | `(org_id, period_start, period_end)` | Days Sales Outstanding | | `fa_calculate_dpo` | `(org_id, period_start, period_end)` | Days Payable Outstanding | | `fa_calculate_current_ratio` | `(org_id, period_id)` | Current Ratio | *** ## Dashboard Widget Management Widgets are stored in `fa_dashboard_widgets` and control the dashboard layout. ### Widget Types | Type | Description | | ----------------- | --------------------------------------- | | `kpi_card` | Single KPI value with trend | | `trend_chart` | Revenue/expense trend line chart | | `variance_table` | Budget vs. actual table | | `cash_position` | Cash and bank balances | | `revenue_summary` | Revenue breakdown | | `expense_summary` | Expense breakdown | | `custom` | Custom configuration via `config` JSONB | ### Layout Widgets use a 12-column grid system: * `position_x` / `position_y`: Grid position (0-based) * `width` / `height`: Size in grid units (1-12) *** ## Variance Threshold Configuration The variance significance threshold is set in **FA Module Settings**: * **Setting:** `variance_threshold_percent` * **Default:** 10% * **Range:** 1–100% * **Effect:** Variances exceeding this percentage are flagged as "significant" on the Variance Analysis page To change: Navigate to `/fa/settings` and update the "Variance Threshold %" field. *** ## Permission Setup Assign these permissions to roles via the Permissions admin page: | Permission | Purpose | Recommended Roles | | ---------------------------- | --------------------------------------- | --------------------------------------- | | `fa.dashboard.view` | View financial dashboard | finance\_admin, finance\_staff, manager | | `fa.analytics.kpis.view` | View KPIs | finance\_admin, finance\_staff | | `fa.analytics.trends.view` | View trend analysis | finance\_admin, finance\_staff | | `fa.analytics.variance.view` | View variance analysis | finance\_admin, finance\_staff | | `fa.analytics.configure` | Create/edit KPI definitions and widgets | finance\_admin | *** ## KPI History (Audit) The `fa_kpi_history` table is **append-only** — records cannot be updated or deleted. This ensures a complete audit trail of all KPI calculations over time. Each entry records: * The calculated value at that point in time * The previous value for trend comparison * The status (normal/warning/critical) at calculation time *** ## Related Documentation * [FA-16 User Guide](/fa/financial-analytics-user-guide) — End-user documentation * [FA Module Settings](https://github.com/Encore-OS/encoreos/blob/development/specs/fa/specs/FA-01-chart-of-accounts.md) — General FA configuration # Financial Analytics & Dashboards — User Guide Source: https://docs.encoreos.io/fa/financial-analytics-user-guide The Financial Analytics module provides four pages for executive-level financial insight: ## Overview The Financial Analytics module provides four pages for executive-level financial insight: | Page | Route | Purpose | | ------------- | ------------------------- | ----------------------------------------------------- | | **Dashboard** | `/fa/analytics/dashboard` | At-a-glance financial summary with KPI cards | | **KPIs** | `/fa/analytics/kpis` | Key performance indicators with thresholds and trends | | **Trends** | `/fa/analytics/trends` | Revenue vs. expense trends across fiscal periods | | **Variance** | `/fa/analytics/variance` | Budget vs. actual comparison with significance flags | Access requires the appropriate permission (`fa.dashboard.view`, `fa.analytics.kpis.view`, etc.). *** ## Financial Dashboard The dashboard displays summary cards for: * **Total Revenue** — Sum of revenue account balances for the current period * **Total Expenses** — Sum of expense account balances for the current period * **Net Income** — Revenue minus expenses * **Cash Position** — Current cash and bank account balances (requires FA-14) Each card shows the current value and a trend indicator vs. the previous period. *** ## KPI Page ### Reading KPI Cards Each KPI card displays: | Element | Description | | ---------- | ------------------------------------------------------------- | | **Value** | Current calculated value (e.g., 38 days) | | **Unit** | Measurement unit (days, ratio, percentage, currency) | | **Status** | Color-coded: Green (normal), Yellow (warning), Red (critical) | | **Trend** | Change from previous calculation (↑ or ↓ with percentage) | | **Target** | Organization's target value (dashed line on charts) | ### Built-in KPIs | KPI Code | Name | Category | Direction | | -------- | ------------------------ | ---------- | ---------------- | | DSO | Days Sales Outstanding | Efficiency | Lower is better | | DPO | Days Payable Outstanding | Efficiency | Target is best | | CR | Current Ratio | Liquidity | Higher is better | ### Threshold Colors * **Green (Normal):** Value is within acceptable range * **Yellow (Warning):** Value crossed the warning threshold * **Red (Critical):** Value crossed the critical threshold The threshold direction matters: for "lower is better" KPIs (like DSO), *higher* values trigger warnings. For "higher is better" KPIs (like Current Ratio), *lower* values trigger warnings. *** ## Trend Analysis The Trends page shows revenue and expense data across fiscal periods as line/bar charts. * **X-axis:** Fiscal periods (months or quarters) * **Y-axis:** Dollar amounts * **Lines:** Revenue (green), Expenses (red), Net Income (blue) Select different date ranges using the period selector at the top of the page. *** ## Variance Analysis The Variance page compares budgeted amounts to actual amounts by account. ### Reading the Variance Table | Column | Description | | ----------- | ---------------------------------------------------- | | Account | Chart of accounts entry | | Budget | Planned amount for the period | | Actual | Real amount recorded | | Variance \$ | Budget minus actual (positive = under budget) | | Variance % | Percentage difference | | Status | Favorable (green), Unfavorable (red), Neutral (gray) | | Significant | ⚠️ flag if variance exceeds threshold | ### Significance Threshold The variance threshold (default 10%) is configurable by your Finance Admin in **FA Settings**. Any variance exceeding this percentage is flagged as significant and warrants investigation. ### Favorable vs. Unfavorable * **Revenue accounts:** Actual > Budget = Favorable (more money earned) * **Expense accounts:** Actual \< Budget = Favorable (less money spent) *** ## Permissions | Permission Key | Description | Default Roles | | ---------------------------- | -------------------------- | ------------------------------ | | `fa.dashboard.view` | View financial dashboard | finance\_admin, finance\_staff | | `fa.analytics.kpis.view` | View KPI page | finance\_admin, finance\_staff | | `fa.analytics.trends.view` | View trends page | finance\_admin, finance\_staff | | `fa.analytics.variance.view` | View variance page | finance\_admin, finance\_staff | | `fa.analytics.configure` | Configure KPIs and widgets | finance\_admin | *** ## Related Documentation * [FA-16 Admin Guide](/fa/financial-analytics-admin-guide) — Configuring KPIs and thresholds * [FA-07: Financial Reports](https://github.com/Encore-OS/encoreos/blob/development/specs/fa/specs/FA-07-financial-reporting.md) — Detailed report drill-downs * [FA-08: Budget vs. Actual](https://github.com/Encore-OS/encoreos/blob/development/specs/fa/specs/FA-08-budgeting.md) — Budget detail reports # Financial Close Management - Admin Guide Source: https://docs.encoreos.io/fa/financial-close-management-admin This guide covers the administrative configuration and technical details for the Financial Close Management module. It is intended for system administrators, f… ## Table of Contents 1. [Overview](#overview) 2. [Permission Configuration](#permission-configuration) 3. [Checklist Template Setup](#checklist-template-setup) 4. [Integration Configuration](#integration-configuration) 5. [Event Contracts](#event-contracts) 6. [API Contracts](#api-contracts) 7. [Security Considerations](#security-considerations) 8. [Troubleshooting](#troubleshooting) *** ## Overview This guide covers the administrative configuration and technical details for the Financial Close Management module (FA-19). It is intended for system administrators, finance managers, and technical staff responsible for setting up and maintaining the close management process. ### Module Architecture FA-19 consists of four primary database tables: | Table | Purpose | | ------------------------ | ------------------------------------------------------ | | `fa_close_periods` | Close period header records (status, dates, approvals) | | `fa_close_checklists` | Checklist templates and period-specific checklists | | `fa_close_tasks` | Individual tasks within checklists | | `fa_close_documentation` | Document attachments for periods and tasks | ### Key Dependencies * **FA-02 (General Ledger)**: Fiscal period linking * **FA-07 (Financial Reporting)**: Close status verification for reports * **PF-10 (Notifications)**: Task assignments and approval alerts * **PF-11 (Documents)**: File storage for attachments * **FW-03 (Approval Workflow)**: Close period approval events *** ## Permission Configuration ### Permission Keys FA-19 uses the following permission keys for access control: | Permission Key | Description | Typical Role | | ------------------ | -------------------------------------------- | -------------------------- | | `fa.close.view` | View close periods and task status | All finance staff | | `fa.close.create` | Create new close periods | Manager, Org Admin | | `fa.close.manage` | Edit templates, manage tasks, reopen periods | Manager, Org Admin | | `fa.close.approve` | Approve or reject close periods | Controller, CFO, Org Admin | ### Role Assignment Matrix | Role | view | create | manage | approve | | ------------------ | ---- | ------ | ------ | ------- | | Staff Accountant | ✅ | ❌ | ❌ | ❌ | | Senior Accountant | ✅ | ✅ | ❌ | ❌ | | Accounting Manager | ✅ | ✅ | ✅ | ❌ | | Controller | ✅ | ✅ | ✅ | ✅ | | CFO | ✅ | ✅ | ✅ | ✅ | | Org Admin | ✅ | ✅ | ✅ | ✅ | ### Configuring Permissions 1. Navigate to **Settings** > **Permissions** 2. Select the role to modify 3. Under **Finance & Accounting** > **Close Management**: * Enable/disable each permission as needed 4. Click **Save Changes** ### Permission Check Pattern In code, use the `useHasPermission` hook: ```typescript theme={null} import { useHasPermission, PermissionGate } from '@/platform/permissions'; // Hook usage const canApprove = useHasPermission('fa.close.approve'); // Component usage ``` *** ## Checklist Template Setup ### Standard Template Structure Create templates for each close type: #### Month-End Close Template ```text theme={null} 1. Pre-Close Tasks 1.1 Review open transactions (Manual, Medium) 1.2 Process pending journal entries (Manual, High) 1.3 Complete bank reconciliations (Manual, High) └─ Depends on: 1.2 2. Accruals & Adjustments 2.1 Record accrued expenses (Manual, High) 2.2 Post prepaid amortization (Manual, Medium) 2.3 Record depreciation (Automated, Medium) 2.4 Review accrual entries (Review, High) └─ Depends on: 2.1, 2.2, 2.3 3. Reconciliation & Review 3.1 Reconcile subledgers to GL (Manual, High) 3.2 Verify intercompany balances (Manual, Medium) 3.3 Review account reconciliations (Review, High) └─ Depends on: 3.1, 3.2 4. Reporting & Finalization 4.1 Generate trial balance (Manual, Medium) 4.2 Review financial statements (Review, High) 4.3 Prepare variance analysis (Manual, Medium) 4.4 Manager approval (Approval, Critical) └─ Depends on: 4.1, 4.2, 4.3 ``` #### Quarter-End Close Template Include all month-end tasks plus: ```text theme={null} 5. Quarter-End Specific 5.1 Review quarterly accruals (Review, High) 5.2 Prepare quarterly reports (Manual, High) 5.3 Review budget vs actual (Review, Medium) 5.4 Update cash flow forecast (Manual, Medium) 5.5 Quarter-end approval (Approval, Critical) ``` #### Year-End Close Template Include all quarter-end tasks plus: ```text theme={null} 6. Year-End Specific 6.1 Physical inventory count (Manual, Critical) 6.2 Review fixed asset depreciation (Review, High) 6.3 Prepare audit schedules (Manual, Critical) 6.4 Tax provision calculation (Manual, Critical) 6.5 Year-end adjustments review (Review, Critical) 6.6 Final audit preparation (Manual, High) 6.7 CFO year-end approval (Approval, Critical) ``` ### Template Management Best Practices 1. **Version Control**: Include version numbers in template names 2. **Annual Review**: Review and update templates annually 3. **Document Changes**: Add notes when updating templates 4. **Test New Templates**: Create a test period before production use *** ## Integration Configuration ### FA-02 (General Ledger) Integration Close periods can be linked to fiscal periods: * **Linking**: When creating a close period, select the corresponding fiscal period * **Status Sync**: Close period status does not automatically update fiscal period * **Use Case**: Financial reports can verify close period status before generating final statements ### FA-07 (Financial Reporting) Integration Financial Reporting checks close status: ```typescript theme={null} // Example: Check if period is closed before final report const { data: closeStatus } = await supabase .from('fa_close_periods') .select('status') .eq('fiscal_period_id', periodId) .single(); if (closeStatus?.status !== 'completed') { throw new Error('Period must be closed before generating final reports'); } ``` ### PF-10 (Notifications) Integration Notifications are triggered for: | Event | Recipients | Notification Type | | ----------------------- | ------------------------------ | ----------------- | | Task Assigned | Assigned user | In-app + email | | Period Pending Approval | Users with `fa.close.approve` | In-app + email | | Period Approved | Period creator, task assignees | In-app | | Period Rejected | Period creator | In-app + email | ### PF-11 (Documents) Integration Document storage uses the platform document service: * **Bucket**: `fa-close-documents` * **Path Pattern**: `{organization_id}/{close_period_id}/{document_id}` * **Max File Size**: 50MB per document * **Allowed Types**: PDF, Excel, Word, images *** ## Event Contracts FA-19 publishes the following events to the `fa_events` channel: ### close\_period\_started **Trigger**: When close period status changes to 'in\_progress' ```typescript theme={null} { event_type: 'close_period_started'; close_period_id: uuid; period_name: string; period_type: 'month' | 'quarter' | 'year'; started_by: uuid; organization_id: uuid; timestamp: timestamptz; } ``` ### close\_period\_completed **Trigger**: When close period status changes to 'completed' ```typescript theme={null} { event_type: 'close_period_completed'; close_period_id: uuid; period_name: string; fiscal_period_id: uuid | null; completed_by: uuid; organization_id: uuid; timestamp: timestamptz; } ``` ### close\_period\_approved **Trigger**: When close period status changes to 'approved' ```typescript theme={null} { event_type: 'close_period_approved'; close_period_id: uuid; period_name: string; approved_by: uuid; organization_id: uuid; timestamp: timestamptz; } ``` ### close\_task\_assigned **Trigger**: When a task's assigned\_to field changes ```typescript theme={null} { event_type: 'close_task_assigned'; task_id: uuid; task_name: string; close_period_id: uuid; assigned_to: uuid; assigned_by: uuid; organization_id: uuid; timestamp: timestamptz; } ``` ### close\_task\_completed **Trigger**: When a task's status changes to 'completed' ```typescript theme={null} { event_type: 'close_task_completed'; task_id: uuid; task_name: string; close_period_id: uuid; completed_by: uuid; organization_id: uuid; timestamp: timestamptz; } ``` ### Subscribing to Events ```typescript theme={null} // Subscribe to close events const channel = supabase.channel('fa_events'); channel.on('broadcast', { event: 'close_period_approved' }, (payload) => { // TODO: Replace with your app's structured logging // logger.info('Period approved:', payload); // Update UI or trigger downstream actions }); channel.subscribe(); ``` *** ## API Contracts ### Close Period Approval API **Endpoint**: `/api/v1/fa/close/periods/{period_id}/approve`\ **Method**: POST\ **Permission**: `fa.close.approve` **Request**: ```typescript theme={null} { approved: boolean; comments?: string; } ``` **Response**: ```typescript theme={null} { close_period_id: uuid; status: 'approved' | 'rejected'; approved_at: timestamp; approved_by: uuid; } ``` **Error Codes**: * `403`: Access denied (no permission or wrong organization) * `404`: Period not found * `409`: Invalid status or incomplete tasks ### Close Period Status API **Endpoint**: `/api/v1/fa/close/periods/{period_id}/status`\ **Method**: GET\ **Permission**: `fa.close.view` **Response**: ```typescript theme={null} { close_period_id: uuid; period_name: string; status: CloseStatus; task_summary: { total: number; completed: number; skipped: number; in_progress: number; blocked: number; not_started: number; }; completion_percentage: number; // ... additional fields } ``` See [API\_CONTRACTS.md](/architecture/integrations/API_CONTRACTS#fa-19-financial-close-management-apis) for complete documentation. *** ## Security Considerations ### Row-Level Security (RLS) All FA-19 tables have RLS policies: ```sql theme={null} -- Example: fa_close_periods policy CREATE POLICY "fa_close_periods_org_read" ON fa_close_periods FOR SELECT USING ( fa_has_org_access(organization_id, auth.uid()) ); CREATE POLICY "fa_close_periods_org_write" ON fa_close_periods FOR ALL USING ( fa_has_org_access(organization_id, auth.uid()) ) WITH CHECK ( fa_has_org_access(organization_id, auth.uid()) ); ``` ### Defense-in-Depth All mutations include organization\_id validation: ```typescript theme={null} // Correct pattern await supabase .from('fa_close_periods') .update({ status: 'in_progress' }) .eq('id', periodId) .eq('organization_id', currentOrganization.id); // Always include ``` ### Audit Trail All close management actions are logged: * Task completion with user and timestamp * Status changes with actor information * Document uploads with user and timestamp * Approval decisions with comments ### Locked Period Protection Completed/locked periods cannot be modified: ```sql theme={null} -- Trigger prevents updates to locked periods CREATE TRIGGER fa_close_periods_lock_check BEFORE UPDATE ON fa_close_periods FOR EACH ROW WHEN (OLD.status IN ('completed', 'locked')) EXECUTE FUNCTION fa_prevent_locked_period_update(); ``` ### Task Dependency Validation Circular dependencies are prevented: ```sql theme={null} -- Trigger validates task dependencies CREATE TRIGGER fa_validate_task_dependency BEFORE INSERT OR UPDATE ON fa_close_tasks FOR EACH ROW EXECUTE FUNCTION fa_validate_no_circular_dependency(); ``` *** ## Troubleshooting ### Common Administrative Issues #### Users Can't See Close Periods **Cause**: Missing `fa.close.view` permission **Solution**: 1. Check user's role assignment 2. Verify role has `fa.close.view` permission 3. Clear browser cache and retry #### Template Changes Not Reflected **Cause**: Template changes don't update existing periods **Solution**: 1. Template changes only affect new periods 2. For existing periods, manually add/update tasks 3. Consider creating a new period with updated template #### Approval Notification Not Sent **Cause**: Notification service issue or user preferences **Solution**: 1. Check notification service logs 2. Verify user has email notifications enabled 3. Check user's notification preferences in profile #### Period Stuck in "Pending Approval" **Cause**: No users with `fa.close.approve` permission **Solution**: 1. Verify users have approval permission 2. Check if approvers are active in the organization 3. Grant approval permission to appropriate user ### Database Queries for Troubleshooting #### Check Close Period Status ```sql theme={null} SELECT cp.id, cp.period_name, cp.status, cp.organization_id, COUNT(ct.id) as total_tasks, COUNT(CASE WHEN ct.status = 'completed' THEN 1 END) as completed_tasks FROM fa_close_periods cp LEFT JOIN fa_close_checklists cc ON cc.close_period_id = cp.id LEFT JOIN fa_close_tasks ct ON ct.checklist_id = cc.id WHERE cp.id = '' GROUP BY cp.id; ``` #### Find Incomplete Tasks ```sql theme={null} SELECT ct.id, ct.task_name, ct.status, ct.assigned_to, ct.depends_on_task_id FROM fa_close_tasks ct JOIN fa_close_checklists cc ON ct.checklist_id = cc.id WHERE cc.close_period_id = '' AND ct.status NOT IN ('completed', 'skipped') ORDER BY ct.display_order; ``` #### Check Event Publishing ```sql theme={null} -- View recent close events (if logging enabled) SELECT * FROM pg_stat_activity WHERE query LIKE '%pg_notify%fa_events%' ORDER BY query_start DESC LIMIT 10; ``` *** ## Related Documentation * [Financial Close Management User Guide](/fa/financial-close-management-guide) * [General Ledger Guide](/fa/general-ledger-guide) * [FA Security Considerations](/fa/security-considerations) * [API Contracts](/architecture/integrations/API_CONTRACTS#fa-19-financial-close-management-apis) * [Event Contracts](/architecture/integrations/EVENT_CONTRACTS#fa-19-financial-close-management-events) *** **Document Version:** 1.0.0\ **Last Updated:** 2026-01-19\ **Next Review:** 2026-04-19 # Financial Close Management User Guide Source: https://docs.encoreos.io/fa/financial-close-management-guide Financial Close Management provides a structured approach to managing your organization's periodic financial closing process. Whether you're closing a month, q… ## Table of Contents 1. [Overview](#overview) 2. [Getting Started](#getting-started) 3. [Managing Close Periods](#managing-close-periods) 4. [Working with Tasks](#working-with-tasks) 5. [Using Checklist Templates](#using-checklist-templates) 6. [Documentation & Attachments](#documentation--attachments) 7. [Approval Workflow](#approval-workflow) 8. [Best Practices](#best-practices) 9. [Troubleshooting](#troubleshooting) *** ## Overview ### What is Financial Close Management? Financial Close Management (FA-19) provides a structured approach to managing your organization's periodic financial closing process. Whether you're closing a month, quarter, or fiscal year, this module helps ensure all critical tasks are completed, documented, and approved before finalizing financial statements. ### Key Features * **Close Period Tracking**: Create and monitor close periods for month-end, quarter-end, and year-end processes * **Task Management**: Track individual tasks with assignments, dependencies, and completion status * **Checklist Templates**: Create reusable templates for consistent close processes * **Document Attachments**: Upload supporting documentation for audit trails * **Approval Workflow**: Submit completed periods for management review and approval * **Integration**: Links to fiscal periods and financial reporting ### Who Uses This Module? | Role | Primary Activities | | ------------------------ | --------------------------------------------------------- | | **Staff Accountant** | Complete assigned tasks, upload documentation | | **Senior Accountant** | Review tasks, manage checklists, coordinate close process | | **Controller/Manager** | Approve close periods, monitor progress, manage templates | | **CFO/Finance Director** | Final approval, view close status across periods | *** ## Getting Started ### Accessing Close Management 1. Navigate to **Finance & Accounting** in the main navigation 2. Expand the **Close Management** section 3. Click **Close Periods** to view all periods ### Understanding the Dashboard The Close Periods page displays: * **Period List**: All close periods with status, dates, and progress * **Status Filters**: Filter by Not Started, In Progress, Pending Approval, Completed * **Period Type Filters**: Filter by Month, Quarter, or Year * **Quick Actions**: Create new period, access templates ### Period Status Meanings | Status | Color | Meaning | | -------------------- | ------ | ----------------------------------------- | | **Not Started** | Gray | Period created but work hasn't begun | | **In Progress** | Blue | Tasks are being actively worked | | **Pending Approval** | Yellow | All tasks complete, awaiting approval | | **Approved** | Green | Management approved, ready for completion | | **Rejected** | Red | Approval denied, requires corrections | | **Completed** | Green | Period finalized and locked | | **Locked** | Gray | Archived, no changes allowed | *** ## Managing Close Periods ### Creating a New Close Period 1. Click **Create Close Period** button 2. Fill in required fields: * **Period Name**: Descriptive name (e.g., "January 2026 Month-End Close") * **Period Type**: Month, Quarter, or Year * **Start Date**: First day of the period * **End Date**: Last day of the period 3. Optionally select: * **Fiscal Period**: Link to an existing fiscal period * **Checklist Template**: Pre-populate tasks from a template 4. Click **Create** ### Starting the Close Process 1. Open the close period detail page 2. Click **Start Close** button 3. Period status changes to "In Progress" 4. Tasks become available for assignment and completion ### Viewing Period Progress The period detail page shows: * **Progress Bar**: Visual indicator of completion percentage * **Task Summary Cards**: * Total tasks * Completed tasks * In Progress tasks * Blocked tasks * **Task List**: All tasks with status, assignee, and due date ### Reopening a Period If corrections are needed after completion: 1. Locate the completed period 2. Click **Reopen Period** (requires `fa.close.manage` permission) 3. Status reverts to "In Progress" 4. Make necessary corrections 5. Re-submit for approval *** ## Working with Tasks ### Task Types | Type | Icon | Purpose | | ------------- | ---- | ----------------------------------------------------------------- | | **Manual** | ✏️ | Tasks requiring human action (e.g., "Review bank reconciliation") | | **Review** | 👁️ | Verification tasks (e.g., "Review journal entries for accuracy") | | **Approval** | ✅ | Approval gates (e.g., "Approve accrual entries") | | **Automated** | ⚡ | System-triggered tasks (e.g., "Run depreciation posting") | ### Task Priorities | Priority | Color | When to Use | | ------------ | ------ | --------------------------------------- | | **Critical** | Red | Blocking tasks, regulatory requirements | | **High** | Orange | Important tasks, early in process | | **Medium** | Yellow | Standard tasks, normal priority | | **Low** | Gray | Nice-to-have, can be last | ### Completing a Task 1. Open the task from the period detail page 2. Review task description and requirements 3. Perform the required work 4. Add completion notes (optional but recommended) 5. Upload any supporting documentation 6. Click **Complete Task** ### Skipping a Task Sometimes tasks may not apply to a specific period: 1. Open the task 2. Click **Skip Task** 3. **Required**: Enter a reason for skipping 4. Click **Confirm Skip** > ⚠️ **Note**: Skipped tasks still count toward completion percentage but are flagged for audit purposes. ### Task Dependencies Some tasks depend on others being completed first: * **Blocked Tasks**: Shown with a lock icon * **Dependency Indicator**: Shows which task must complete first * **Auto-Unblock**: Task becomes available once dependency completes ### Task Assignment To assign a task to a team member: 1. Open the task 2. Click the **Assignee** field 3. Select a user from the dropdown 4. The user receives a notification *** ## Using Checklist Templates ### What Are Templates? Checklist templates are reusable task lists that can be applied to new close periods. They ensure consistency and save time when creating new periods. ### Accessing Templates 1. Navigate to **Close Management** > **Checklist Templates** 2. View existing templates or create new ones ### Creating a Template 1. Click **Create Template** 2. Enter template details: * **Template Name**: Descriptive name (e.g., "Standard Month-End Close") * **Description**: Purpose and scope 3. Add tasks to the template: * Click **Add Task** * Enter task name, type, priority * Set estimated duration * Define dependencies (optional) 4. **Drag and Drop**: Reorder tasks by dragging 5. Click **Save Template** ### Editing a Template 1. Open the template 2. Make changes to tasks or details 3. Changes do NOT affect existing periods using this template 4. Click **Save** ### Applying a Template When creating a new close period: 1. Select a checklist template from the dropdown 2. Tasks from the template are copied to the new period 3. Customize tasks as needed for the specific period ### Template Best Practices * Create separate templates for Month, Quarter, and Year-end closes * Include standard tasks that rarely change * Set realistic dependencies to guide workflow * Review and update templates annually *** ## Documentation & Attachments ### Why Document? Proper documentation: * Provides audit trail for external auditors * Supports internal review and approval * Preserves institutional knowledge * Enables troubleshooting of issues ### Uploading Documents to Tasks 1. Open the task detail view 2. Scroll to **Attachments** section 3. Click **Upload** or drag files 4. Supported formats: PDF, Excel, Word, images 5. File appears in attachment list ### Period-Level Documentation For documents that apply to the entire period: 1. Open the period detail page 2. Navigate to **Documentation** tab 3. Click **Add Document** 4. Select document type: * Working paper * Reconciliation * Supporting schedule * Approval memo * Other 5. Upload and add description ### Viewing Document History All document uploads are logged with: * Upload date and time * Uploaded by (user name) * Document type * File size *** ## Approval Workflow ### Submitting for Approval When all tasks are complete: 1. Verify all tasks show **Completed** or **Skipped** status 2. Click **Submit for Approval** 3. Status changes to "Pending Approval" 4. Approvers receive notification ### Approval Requirements Before a period can be approved: * All tasks must be Completed or Skipped * Required documentation must be attached * Period must be in "Pending Approval" status ### Approving a Period As an approver: 1. Open the period detail page 2. Review: * Task completion status * Attached documentation * Skipped task reasons 3. Click **Approve** or **Reject** 4. Add comments (required for rejection) ### After Approval * Period status changes to "Approved" * Period can be marked as "Completed" * Related fiscal period may be updated * Period becomes locked to prevent changes ### Handling Rejections If a period is rejected: 1. Status reverts to "In Progress" 2. Review rejection comments 3. Make necessary corrections 4. Re-submit for approval *** ## Best Practices ### Planning Your Close 1. **Start Early**: Begin planning 1-2 weeks before period end 2. **Assign Tasks**: Distribute work before the close period starts 3. **Set Deadlines**: Use due dates to keep the team on track 4. **Communicate**: Hold a kick-off meeting for major closes ### Standard Month-End Tasks Consider including these common tasks: 1. **Pre-Close** * Review open items * Process pending transactions * Complete bank reconciliations 2. **Accruals & Adjustments** * Record accrued expenses * Post prepaid amortization * Record depreciation 3. **Review & Reconciliation** * Review account reconciliations * Verify intercompany balances * Reconcile subledgers to GL 4. **Reporting** * Generate trial balance * Review financial statements * Prepare variance analysis 5. **Final Steps** * Manager review * Close period in system * Archive documentation ### Task Naming Conventions Use clear, action-oriented names: * ✅ "Review January bank reconciliation" * ✅ "Post monthly depreciation entries" * ❌ "Bank stuff" * ❌ "Depreciation" ### Documentation Requirements For each task, consider documenting: * What was reviewed/completed * Who performed the work * Any exceptions or issues found * How issues were resolved *** ## Troubleshooting ### Common Issues #### "Cannot complete task - dependency not met" **Cause**: This task depends on another task that isn't complete. **Solution**: 1. Check which task is blocking (shown in error message) 2. Complete the blocking task first 3. Return to complete this task #### "Cannot submit for approval - incomplete tasks" **Cause**: One or more tasks are not Completed or Skipped. **Solution**: 1. Review the task list 2. Complete remaining tasks or mark as Skipped with reason 3. Try submitting again #### "Cannot approve period - access denied" **Cause**: You don't have the `fa.close.approve` permission. **Solution**: Contact your administrator to request approval permission, or ask someone with approval rights to process the request. #### "Period is locked - cannot make changes" **Cause**: Completed periods are locked to preserve the audit trail. **Solution**: 1. If corrections are truly needed, contact an administrator 2. Consider posting adjusting entries in the next period instead 3. Document the correction in the current period's notes ### Getting Help If you encounter issues not covered here: 1. Check the task notes for specific instructions 2. Review attached documentation for guidance 3. Contact your finance manager or system administrator 4. Submit a support ticket with details of the issue *** ## Related Documentation * [Financial Close Management Admin Guide](/fa/financial-close-management-admin) * [General Ledger Guide](/fa/general-ledger-guide) * [FA Module Settings](/fa/module-settings) *** **Document Version:** 1.0.0\ **Last Updated:** 2026-01-19\ **Next Review:** 2026-04-19 # Financial Close Setup Wizard - Admin Guide Source: https://docs.encoreos.io/fa/financial-close-setup-wizard-admin-guide This guide covers administration and configuration of the Financial Close Setup Wizard. The wizard uses the configurable wizard infrastructure. ## Overview This guide covers administration and configuration of the Financial Close Setup Wizard (FA-UX-01). The wizard uses the PF-41 configurable wizard infrastructure. ## Architecture ### Components | Component | Location | Purpose | | ----------------- | ------------------------------------------------------------------------------ | ------------------------------------------------------------- | | Wizard Page | `src/cores/fa/wizards/financial-close-setup/FinancialCloseSetupWizardPage.tsx` | Main wizard orchestration | | Step Registration | `src/cores/fa/wizards/registerFAWizardSteps.ts` | Custom step component registration | | Wizard Template | `pf_wizard_templates` (database) | Step configuration and form fields | | Custom Steps | `src/cores/fa/wizards/financial-close-setup/steps/` | ReviewTasks, AssignTasks, ConfigureDependencies, ConfirmStart | ### Database Template The wizard template is seeded in `pf_wizard_templates` with: * Module: `fa` * Wizard Type: `setup` * 6 steps (2 form-based, 4 custom components) ## Permission Requirements | Permission | Description | Required For | | -------------------- | ------------------------ | -------------------------- | | `fa.close.create` | Create close periods | Accessing the wizard | | `fa.close.view` | View close periods | Viewing created periods | | `fa.close.approve` | Approve close periods | Approving completed closes | | `fa.checklists.view` | View checklist templates | Seeing template options | ## Configuration ### Wizard Settings The wizard uses these `fa_module_settings` fields (if configured): | Setting | Default | Description | | ------------------------------- | ------- | ----------------------------- | | `close_default_period_type` | `month` | Default period type selection | | `close_auto_assign_enabled` | `false` | Auto-assign based on role | | `close_require_all_assignments` | `true` | Require all tasks assigned | ### Checklist Templates For the wizard to function, at least one checklist template must exist: 1. Navigate to **FA → Close Management → Checklist Templates** 2. Create a template with `is_template = true` 3. Add tasks to the template with categories: * `reconciliation` * `reporting` * `review` * `approval` ## Draft Persistence The wizard uses PF-41 draft persistence: * **Storage**: Local storage with `localforage` * **Key**: `fa-setup-wizard-draft-{organizationId}` * **Auto-save**: Every 30 seconds * **Expiration**: 30 days ### Clearing Drafts Users can clear their draft by: 1. Completing the wizard 2. Starting a new wizard session and not saving Admins can view draft statistics in PF-41 admin (if deployed). ## Event Publishing The wizard publishes the following event on completion: ```typescript theme={null} { event_type: 'close_period_started', organization_id: string, user_id: string, close_period_id: string, tasks_count: number, assignments_count: number, timestamp: string (ISO 8601), } ``` This event is broadcast on the `fa_events` Supabase channel for real-time notifications. ## Customization (Future) When PF-41 wizard builder is deployed, organizations will be able to customize: * Step order and visibility * Required vs optional fields * Custom validation rules * Additional form fields * Step skip conditions ## Monitoring ### Wizard Usage Query wizard completion events: ```sql theme={null} -- Recent wizard completions SELECT organization_id, user_id, created_at, custom_fields->>'tasks_count' as tasks_count FROM pf_audit_logs WHERE module = 'fa' AND action = 'close_period_setup' ORDER BY created_at DESC LIMIT 100; ``` ### Draft Statistics Query draft statistics (requires PF-41 admin tables): ```sql theme={null} -- Active drafts by organization SELECT organization_id, COUNT(*) as draft_count, MAX(updated_at) as last_activity FROM pf_wizard_drafts WHERE module = 'fa' AND wizard_type = 'setup' GROUP BY organization_id; ``` ## Troubleshooting ### Wizard Template Not Loading 1. Verify the template exists: ```sql theme={null} SELECT * FROM pf_wizard_templates WHERE module = 'fa' AND wizard_type = 'setup' AND is_active = true; ``` 2. Check the migration ran successfully 3. Verify `is_active = true` ### Custom Steps Not Rendering 1. Verify step registration in `registerFAWizardSteps.ts` 2. Check browser console for import errors 3. Verify component IDs match template configuration ### Event Publishing Failures Event publishing is non-blocking. Failures are logged but don't prevent wizard completion. Check Supabase logs for channel errors. ## Performance Considerations * **Task Batch Size**: For templates with 50+ tasks, consider pagination in review step * **User Fetching**: Uses `staleTime: 5min` to reduce API calls * **Draft Auto-save**: 30-second interval prevents excessive storage writes ## Security * All database operations include `organization_id` filter (defense-in-depth) * RLS policies enforce tenant isolation * User assignments validated against organization membership * No PHI/PII exposed in wizard data ## Related Documentation * [Financial Close Setup Wizard User Guide](/fa/financial-close-setup-wizard-user-guide) * [Financial Close Management Guide](/fa/financial-close-management-guide) * [PF-41 Configurable Module Wizards](https://github.com/Encore-OS/encoreos/blob/development/specs/pf/specs/PF-41-configurable-module-wizards.md) # Financial Close Setup Wizard - User Guide Source: https://docs.encoreos.io/fa/financial-close-setup-wizard-user-guide The Financial Close Setup Wizard guides you through setting up a financial close period with checklist templates and task assignments. This wizard streamlines… ## Overview The Financial Close Setup Wizard guides you through setting up a financial close period with checklist templates and task assignments. This wizard streamlines the month-end, quarter-end, or year-end close process by automating task creation and assignment. ## Prerequisites Before using the wizard, ensure you have: * **Permission**: `fa.close.create` - Required to access the wizard * **Checklist Template**: At least one checklist template must be configured (contact your admin if none exist) * **Staff Members**: Users who will be assigned tasks must have accounts in your organization ## Accessing the Wizard 1. Navigate to **Finance & Accounting** → **Close Management** 2. Click **New Close Period** or navigate directly to `/fa/close/setup` ## Step-by-Step Workflow ### Step 1: Select Close Period Configure the basic details of your close period: | Field | Description | Required | | --------------- | --------------------------------------------- | -------- | | **Period Type** | Monthly, Quarterly, or Annual | Yes | | **Start Date** | First day of the close period | Yes | | **End Date** | Last day of the close period | Yes | | **Period Name** | Descriptive name (e.g., "January 2026 Close") | Yes | **Tips:** * For monthly closes, use the first and last day of the month * For quarterly closes, use the first day of Q1/Q2/Q3/Q4 and the last day * Period names should be descriptive for easy identification later ### Step 2: Select Checklist Template Choose a pre-configured checklist template that contains the standard tasks for your close process: * Templates are created by administrators and contain predefined tasks * Each template is tailored for a specific type of close (monthly vs. annual) * Contact your admin if you don't see an appropriate template ### Step 3: Review Tasks Review all tasks that will be created from the template: * **Task Summary**: Shows total task count and breakdown by category * **Task Categories**: Reconciliation, Reporting, Review, Approval * **Add Custom Tasks**: Click "Add Custom Task" to add organization-specific tasks not in the template * **Remove Custom Tasks**: You can remove any custom tasks you've added (template tasks cannot be removed) **Custom Task Fields:** * Task Name (required) * Description (optional) * Category (Reconciliation, Reporting, Review, Approval) ### Step 4: Assign Tasks Assign each task to a staff member: | Field | Description | Required | | --------------- | ------------------------------------- | -------- | | **Assigned To** | Staff member responsible for the task | Yes | | **Due Date** | Target completion date | No | | **Notes** | Additional instructions or context | No | **Important:** All tasks must be assigned before you can proceed. A warning will appear if any tasks are unassigned. ### Step 5: Configure Dependencies (Optional) Set up task dependencies to ensure tasks are completed in the proper order: * Select which task each task depends on * A task cannot start until its dependency is complete * The system validates for circular dependencies (A → B → A) * This step is optional and can be skipped **Common Dependency Patterns:** * Bank reconciliation → Cash position review * AR/AP close → Trial balance review * Journal entry review → Financial statement preparation ### Step 6: Confirm & Start Review your complete setup before starting: * **Period Summary**: Period type, dates, and name * **Task Summary**: Total tasks, assigned count, dependency count * **Validation Status**: Warnings if any issues detected * **Ready to Start**: Green indicator when all requirements are met Click **Start Close Period** to create the close period and all tasks. ## After Wizard Completion Once the wizard completes: 1. You'll be redirected to the Close Period detail page 2. All tasks are created with status "Pending" 3. Assigned users receive notifications (if enabled) 4. The close period status is set to "Open" ## Saving Drafts The wizard automatically saves your progress: * Click **Save and Exit** at any time to save your draft * Return to `/fa/close/setup` to resume your draft * Drafts are saved for 30 days ## Troubleshooting ### "No checklist templates available" Contact your administrator to create a checklist template for your organization. ### "User not found" in assignment dropdown The staff member may not have the required role in your organization. Contact your admin to verify user access. ### Circular dependency detected Review your dependency configuration. Task A cannot depend on Task B if Task B depends on Task A (directly or indirectly). ### Wizard doesn't load Verify you have the `fa.close.create` permission. Contact your administrator if needed. ## Related Documentation * [Financial Close Management Guide](/fa/financial-close-management-guide) * [Financial Close Management Admin Guide](/fa/financial-close-management-admin) * [FA Module Settings](/fa/module-settings) # Financial Dashboard Source: https://docs.encoreos.io/fa/financial-dashboard View advanced financial analytics including balances, trends, and key performance indicators in Finance & Revenue. Financial Dashboard provides an advanced analytics view with financial balance summaries, revenue trend charts, quick action cards, and a configurable dashboard definition. Route: `/fa/analytics/dashboard`. ## Overview The Financial Dashboard is accessible at `/fa/analytics/dashboard` and requires permission `fa.dashboard.view`. The component (`FinancialDashboardPage`) fetches financial balances via `useFinancialBalances(organizationId)` and trend data via `useFinancialTrends({ organizationId })`. It also loads or seeds a dashboard definition via `useDashboardDefinition` and `useCreateDashboardDefinition` (seeded on first load if none exists). The page renders stat cards computed using `mathjs` (`add`, `subtract`, `bignumber`) for precision arithmetic, a `RevenueTrendChart`, and a `QuickActionsCard` for navigation. A `PermissionGate` controls access to a Settings button linking to `/fa/settings`. ## Who it's for Requires permission `fa.dashboard.view`. ## Before you start * You must have `fa.dashboard.view` permission. * The general ledger must contain posted transactions for meaningful balance and trend data. ## Steps 1. Navigate to **Finance → Analytics → Dashboard** (`/fa/analytics/dashboard`). 2. Review stat cards for financial balance summary. 3. Review the `RevenueTrendChart` for trend analysis. 4. Use `QuickActionsCard` to navigate to related modules. ## Key concepts | Concept | Description | | ------------------------ | -------------------------------------------------------- | | `useFinancialBalances` | Hook fetching balance figures for the org | | `useFinancialTrends` | Hook fetching revenue/expense trend data | | `RevenueTrendChart` | Chart component visualizing financial trends | | `useDashboardDefinition` | Hook managing the per-org dashboard layout configuration | | `mathjs` (`bignumber`) | Used for precision arithmetic in balance computations | ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/FinancialDashboardPage.tsx # Financial Reports Source: https://docs.encoreos.io/fa/financial-reports Access and navigate the full library of financial reports including ASC 958 statements, cash flow, and specialty reports in Finance & Revenue. Financial Reports is the hub page for all financial reports, providing categorized access to standard financial statements, specialty reports, and recent report run history. Route: `/fa/reports`. ## Overview The Financial Reports page is accessible at `/fa/reports`. No additional `RequirePermission` wrapper is on this route; individual report routes have their own permission checks. The component (`ReportsPage` exported as `FAReportsPage`) renders: * **ASC 958 Reports** section: Balance Sheet (`/fa/reports/balance-sheet`), Statement of Activities (`/fa/reports/statement-activities`), Functional Expenses (`/fa/reports/functional-expenses`) * **Other Reports** section: Trial Balance, and other reports defined in the `otherReports` array * Recent report run history via `useRecentReportRuns` * Report favorites via `useReportFavorites` and `useToggleReportFavorite` `REPORT_TYPE_LABELS` maps report type keys to display names. ## Who it's for Access follows your organization's role and module configuration. Individual report routes have their own permission requirements. ## Before you start * The general ledger must contain posted entries for reports to return meaningful data. ## Steps 1. Navigate to **Finance → Reports** (`/fa/reports`). 2. Select a report from the **ASC 958 Reports** or **Other Reports** sections. 3. Toggle report favorites using the star icon. 4. Review recent report run history to access previously generated reports. ## Key concepts | Concept | Description | | ------------------------- | ------------------------------------------------------------- | | `useRecentReportRuns` | Hook fetching recently generated report runs for quick access | | `useReportFavorites` | Hook loading user report favorites | | `useToggleReportFavorite` | Mutation toggling a report's favorite status | | ASC 958 Reports | Balance Sheet, Statement of Activities, Functional Expenses | ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/ReportsPage.tsx # Financial Statements Source: https://docs.encoreos.io/fa/financial-statements Access the Financial Statements hub with tabbed views for Balance Sheet, Statement of Activities, Cash Flow, and Functional Expenses in Finance & Revenue. Financial Statements is a tabbed hub page that consolidates the Balance Sheet, Statement of Activities, Cash Flow Statement, and Functional Expenses report into a single navigable interface. Route: `/fa/reports/statements`. ## Overview The Financial Statements Hub is accessible at `/fa/reports/statements` and requires permission `fa.reports.view`. The component (`FinancialStatementsHubPage`) uses `useTabUrlState` to sync the active tab with a `?tab=` URL parameter. Valid tabs (from `VALID_TABS`): | Tab key | Label | | ---------------------- | ----------------------- | | `balance-sheet` | Balance Sheet | | `statement-activities` | Statement of Activities | | `cash-flow` | Cash Flow | | `functional-expenses` | Functional Expenses | Each tab content is lazy-loaded: `BalanceSheetContent`, `StatementOfActivitiesContent`, `CashFlowContent`, `FunctionalExpensesContent`. A `TabFallback` skeleton is shown while loading. Statement template management is available at `/fa/reports/statements/templates/new` (create) and `/fa/reports/statements/templates/:templateId/edit` (edit), both gated behind `fa.statement-templates.create` and `fa.statement-templates.update` respectively. ## Who it's for Requires permission `fa.reports.view`. ## Before you start * You must have `fa.reports.view` permission. * The general ledger must contain posted entries for meaningful report data. ## Steps 1. Navigate to **Finance → Reports → Financial Statements** (`/fa/reports/statements`). 2. Select a tab: **Balance Sheet**, **Statement of Activities**, **Cash Flow**, or **Functional Expenses**. 3. The selected tab content lazy-loads and renders the report. 4. The active tab is reflected in the URL (`?tab=`) for bookmarking. ## Key concepts | Concept | Description | | ----------------------------- | ------------------------------------------------------------------------------- | | `useTabUrlState` | Hook syncing active tab with URL `?tab=` parameter | | `VALID_TABS` | `['balance-sheet', 'statement-activities', 'cash-flow', 'functional-expenses']` | | `StatementTemplateWizardPage` | Wizard for creating/editing statement report templates | ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/FinancialStatementsHubPage.tsx # Fiscal Periods Source: https://docs.encoreos.io/fa/fiscal-periods Manage fiscal years and accounting period status for the Finance & Revenue core. Fiscal Periods allows administrators and finance staff to view fiscal years, select a year, and manage the open/closed status of individual accounting periods within that year. Route: `/fa/periods`. ## Overview The Fiscal Periods page is accessible at `/fa/periods`. No explicit `RequirePermission` wrapper is on this route in `fa.tsx`. The component (`FiscalPeriodsPage`) fetches fiscal years via `useFiscalYears(organizationId)` and periods for the selected year via `useFiscalPeriods(selectedYear, organizationId)`. It auto-selects the current fiscal year on mount. A `FiscalYearDialog` is available to create new fiscal years via a **New Fiscal Year** button. Periods are displayed in a card layout with `PeriodStatusToggle` for managing open/closed status. ## Who it's for Access follows your organization's role and module configuration. ## Before you start * Ensure at least one fiscal year has been configured for the organization. ## Steps 1. Navigate to **Finance → Fiscal Periods** (`/fa/periods`). 2. Use the fiscal year selector to choose the year to view. 3. Review the list of accounting periods and their current statuses. 4. Use `PeriodStatusToggle` to open or close individual periods. 5. To create a new fiscal year, click **New Fiscal Year** and complete `FiscalYearDialog`. ## Key concepts | Concept | Description | | -------------------- | ------------------------------------------------------------- | | `useFiscalYears` | Hook fetching all fiscal years for the organization | | `useFiscalPeriods` | Hook fetching individual periods for the selected fiscal year | | `PeriodStatusToggle` | UI control for toggling an accounting period open or closed | | `FiscalYearDialog` | Dialog for creating a new fiscal year record | | `is_current` | Flag on fiscal year record indicating the active year | ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/FiscalPeriodsPage.tsx # Fiscal Years Source: https://docs.encoreos.io/fa/fiscal-years Manage fiscal year definitions for the Finance & Revenue core. Fiscal Years supports management of fiscal year definitions used throughout the Finance & Revenue core. Route: `/fa/fiscal-years`. ## Overview No active route is registered for `/fa/fiscal-years` in the current codebase. Fiscal year creation and management are available through the **Fiscal Periods** page at `/fa/periods` via the `FiscalYearDialog` component and `useFiscalYears` hook. ## Who it's for Access follows your organization's role and module configuration. found on this route. Fiscal year data is accessed via `/fa/periods`. ## Before you start * Navigate to `/fa/periods` to manage fiscal years. ## Steps SME: This route is not resolvable from the current codebase. Provide steps once confirmed, or update navigation to point to `/fa/periods`. 1. Navigate to **Finance → Fiscal Periods** (`/fa/periods`). 2. Click **New Fiscal Year** to create a fiscal year using `FiscalYearDialog`. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/FiscalPeriodsPage.tsx * src/routes/fa/lazy-pages.ts # Fixed Assets & Depreciation User Guide Source: https://docs.encoreos.io/fa/fixed-assets-guide Track capital assets, view depreciation history and disposal records, create and edit asset records, and manage disposals and transfers in Finance & Revenue. Fixed assets register listing capitalized assets > **Purpose:** This guide helps end users understand how to use Fixed Assets & Depreciation for tracking capital assets, calculating depreciation, and managing asset disposals. *** ## Overview The Fixed Assets module (FA-11) enables organizations to track capital assets, calculate depreciation, and manage asset disposals. This ensures accurate balance sheet presentation, proper depreciation expense recognition, and compliance with GAAP requirements. ### Key Capabilities * **Asset Register:** Track all capital assets with purchase details, location, and depreciation configuration * **Automated Depreciation:** Calculate monthly depreciation using straight-line or declining balance methods * **Disposal Management:** Record asset sales, scrapping, or donations with gain/loss calculations * **Location Tracking:** Transfer assets between sites and maintain location history ### Who Should Use This Guide | Role | Use Case | | ------------- | ------------------------------------------------- | | Finance Staff | Create assets, run depreciation, record disposals | | Org Admin | Configure settings, manage all assets | | Site Admin | View and transfer assets at their site | *** ## Prerequisites ### Permissions Required To use Fixed Assets, you need: | Permission | Description | | ---------------------- | ------------------------------- | | `fa.assets.view` | View asset register and details | | `fa.assets.create` | Create new assets | | `fa.assets.edit` | Edit asset information | | `fa.assets.dispose` | Record asset disposals | | `fa.assets.transfer` | Transfer asset locations | | `fa.depreciation.view` | View depreciation schedules | | `fa.depreciation.run` | Run monthly depreciation | > **Note:** Contact your organization administrator if you don't have the required permissions. *** ## Getting Started ### Accessing Fixed Assets 1. Navigate to **Finance** in the main menu 2. Click **Fixed Assets** in the sidebar 3. Select **Asset Register** to view all assets ### Understanding the Interface The Asset Register displays all capital assets with: | Column | Description | | ------------- | ----------------------------------------------- | | Asset Tag | Auto-generated identifier (e.g., AST-2026-0001) | | Asset Name | Descriptive name | | Category | Vehicle, Equipment, Furniture, etc. | | Purchase Cost | Original acquisition cost | | Book Value | Current value after depreciation | | Status | Active, Disposed, or Retired | *** ## Common Tasks ### Creating a Fixed Asset **When to use:** When acquiring new capital equipment above the capitalization threshold (\$5,000 default) **Steps:** 1. Navigate to **Finance → Fixed Assets → Asset Register** 2. Click **Add Asset** in the top right 3. Fill in the required fields: * **Asset Name:** Descriptive name for the asset * **Category:** Select from vehicle, equipment, furniture, building\_improvement, land, leasehold\_improvement, or other * **Purchase Date:** Date of acquisition * **Purchase Cost:** Original cost * **Depreciation Method:** Straight-line, Declining Balance, or None * **Useful Life:** Number of years * **Salvage Value:** Estimated value at end of useful life 4. Click **Create Asset** **Result:** Asset is created with an auto-generated tag and appears in the Asset Register. *** ### Running Monthly Depreciation **When to use:** At the end of each month to calculate depreciation for all active assets **Steps:** 1. Navigate to **Finance → Fixed Assets → Depreciation** 2. Click **Run Depreciation** 3. Select the **Depreciation Month** 4. Review the preview of assets to be processed 5. Click **Run** to calculate **Result:** Depreciation records are created for each active asset with amounts calculated based on their depreciation method. **Tips:** * Run depreciation after the fiscal period is open but before closing * Review any "Pending" GL postings if journal entries weren't created *** ### Recording an Asset Disposal **When to use:** When selling, scrapping, or donating an asset **Steps:** 1. Navigate to the asset detail page 2. Click **Dispose Asset** 3. Fill in disposal details: * **Disposal Date:** When disposal occurred * **Disposal Method:** Sale, Scrapped, Donated, or Other * **Disposal Proceeds:** Sale amount (if applicable) * **Disposal Reason:** Why the asset was disposed 4. Review the calculated **Gain/Loss** 5. Click **Confirm Disposal** **Result:** Asset status changes to "Disposed" and a disposal record is created. > **Note:** Gain = Proceeds > Book Value; Loss = Proceeds \< Book Value *** ### Transferring an Asset Location **When to use:** When moving an asset to a different site or building **Steps:** 1. Navigate to the asset detail page 2. Click **Transfer Asset** 3. Select the new **Site**, **Building**, and **Room** (optional) 4. Enter a **Transfer Reason** 5. Click **Transfer** **Result:** Asset location is updated and transfer history is recorded. *** ## Key Concepts ### Depreciation Methods **Straight-Line:** * Formula: (Cost - Salvage) / Useful Life / 12 * Equal monthly depreciation * Best for assets with steady utility decline **Declining Balance:** * Formula: Book Value × (Rate / 12) * Higher early-year depreciation * Rate typically 2x straight-line rate **None:** * Asset is not depreciated * Use for land, art, or non-depreciating assets ### Asset Status | Status | Description | | -------- | ------------------------------------------ | | Active | In use, actively depreciating | | Disposed | Sold, scrapped, or donated | | Retired | No longer in use but not formally disposed | ### GL Posting Status | Status | Description | | --------- | -------------------------------------------------- | | Completed | Journal entry created successfully | | Pending | Waiting for GL integration (retried automatically) | | Failed | GL posting failed after max retries | *** ## Tips and Best Practices ### Do's * ✅ Review asset details before confirming disposal * ✅ Run depreciation before closing the fiscal period * ✅ Use consistent naming conventions for assets * ✅ Keep serial numbers and vendor information up to date * ✅ Periodically reconcile asset register to physical inventory ### Don'ts * ❌ Don't dispose assets without proper authorization * ❌ Don't skip monthly depreciation runs * ❌ Don't create assets below the capitalization threshold *** ## Troubleshooting ### Issue: GL Posting Pending **Symptoms:** Depreciation records show "Pending" status **Cause:** General Ledger integration is processing or temporarily unavailable **Solution:** 1. Wait for automatic retry (system retries periodically) 2. Check GL module status 3. Contact administrator if issue persists *** ### Issue: Asset Not Depreciating **Symptoms:** No depreciation calculated for an asset **Cause:** Asset may not be eligible for depreciation **Solution:** 1. Verify asset status is "Active" 2. Verify depreciation method is not "None" 3. Verify book value > salvage value 4. Verify purchase date is before depreciation month *** ### Issue: Cannot Dispose Asset **Symptoms:** Dispose button disabled or error on disposal **Cause:** Missing permission or asset already disposed **Solution:** 1. Check you have `fa.assets.dispose` permission 2. Verify asset status is "Active" or "Retired" 3. Contact administrator for permission issues *** ## Related Documentation * **FA-01:** Chart of Accounts - GL accounts for assets * **FA-02:** General Ledger - Depreciation journal entries * **FA-04:** Purchase Orders - Create assets from POs * **FM-05:** Facilities - Operational asset tracking *** ## Glossary | Term | Definition | | ------------------------ | --------------------------------------------------------- | | Book Value | Purchase cost minus accumulated depreciation | | Capitalization Threshold | Minimum cost for creating a fixed asset (\$5,000 default) | | Depreciation | Systematic allocation of asset cost over useful life | | Gain/Loss | Difference between disposal proceeds and book value | | Salvage Value | Estimated value at end of useful life | | Useful Life | Expected period the asset will be used | *** **Last Updated:** 2026-01-28\ **Questions?** Contact your organization administrator. ## Viewing an asset The Asset Details page at `/fa/fixed-assets/:id` displays a fixed asset's full record. Four summary stat cards show Purchase Cost, Accumulated Depreciation (with period count), Book Value (with salvage value), and Monthly Depreciation. Four tabs provide Details (basic info, purchase info, location, depreciation configuration), Depreciation (history table with retry GL posting), Transfers (location transfer history), and GL Accounts (asset, depreciation expense, accumulated depreciation, and gain/loss account assignments). Active assets have Edit, Transfer, and Dispose action buttons. Permission required: `fa.assets.view` (enforced at the route via `RequirePermission`). **Key concepts:** | Concept | Description | | -------------------------- | ------------------------------------------------ | | `asset_tag` | Primary display identifier for a fixed asset | | `depreciation_method` | Method stored on the asset record (e.g., `none`) | | `book_value` | Current book value field from the asset record | | `accumulated_depreciation` | Total depreciation recorded to date | | `useful_life_months` | Expected useful life in months | 1. Open `/fa/fixed-assets` (or `/fa/assets?tab=register`) and click an asset to open its detail page. 2. Review the four stat cards: purchase cost, accumulated depreciation, book value, and computed monthly depreciation. 3. Use the **Details** tab for basic info, purchase info, location, and depreciation method/useful life. 4. Use the **Depreciation** tab to view depreciation history records. Use Retry to re-post failed GL entries. 5. Use the **Transfers** tab to view location transfer history. 6. Use the **GL Accounts** tab to review asset, depreciation expense, accumulated depreciation, and gain/loss account assignments. 7. For active assets: click **Edit** to go to `/fa/fixed-assets/:id/edit`, **Transfer** to open the transfer dialog, or **Dispose** to open the disposal dialog. ## Creating an asset The New Asset page at `/fa/fixed-assets/new` creates a fixed asset record. Permission required: `fa.assets.create`. On submit, `useCreateFixedAsset` is called with the following key mappings: * `asset_tag`: auto-generated by database trigger * `book_value`: initialized to `purchase_cost` * `accumulated_depreciation`: initialized to `0` * `status`: set to `"active"` * `useful_life_months`: only set when `depreciation_method !== 'none'` Before you start: have vendor and site information ready if applicable. Identify the GL accounts (asset, depreciation expense, accumulated depreciation, gain/loss). Know the purchase date, cost, depreciation method, and useful life. 1. Navigate to `/fa/fixed-assets/new`. 2. Complete the form — **Asset Information** (name, description, serial number, category, purchase date, purchase cost), **Location** (vendor, purchase order, site), **Depreciation** (method, useful life in months, salvage value), **GL Accounts** (asset, depreciation expense, accumulated depreciation, gain/loss), and optional **Notes**. 3. Click submit. On success you are redirected to the new asset's detail page. **Note:** Depreciation method `none` skips the `useful_life_months` requirement. ## Editing an asset The Edit Asset page at `/fa/fixed-assets/:id/edit` updates an existing fixed asset record. Permission required: `fa.assets.edit`. Fields include: `asset_name`, `description`, `serial_number`, `asset_category`, `purchase_date`, `purchase_cost`, `vendor_id`, `purchase_order_id`, `current_site_id`, `depreciation_method`, and `useful_life_months` (conditionally required when depreciation method is not `none`). On submit, `useUpdateFixedAsset` persists the changes. | Concept | Description | | --------------------- | ---------------------------------------------------------------- | | `FixedAssetForm` | Shared form component for create and edit asset workflows | | `useFixedAsset` | Hook that fetches the existing asset, scoped to `organizationId` | | `useUpdateFixedAsset` | Mutation hook for persisting asset edits | | `useful_life_months` | Required only when `depreciation_method` is not `none` | 1. Navigate to the asset's detail page and click **Edit** (active assets only). 2. Update the relevant fields in the form. 3. If changing the depreciation method, set `useful_life_months` as required. 4. Click **Save**. On success you are redirected to the asset detail view. ## Viewing a depreciation schedule Individual depreciation records are accessed via the **Depreciation** tab on an asset detail page or the Assets Hub depreciation tab at `/fa/assets?tab=depreciation`. There is no active standalone route for `/fa/depreciation/:id` in the current codebase; the list path `/fa/depreciation` is a legacy redirect to `/fa/assets?tab=depreciation`. Access to depreciation data is governed by `fa.assets.view`. SME: A standalone depreciation detail view is not yet resolvable via a direct route. Steps will be updated once a component is confirmed. 1. Navigate to **Finance → Assets** (`/fa/assets`). 2. Select the **Depreciation** tab to locate depreciation records. 3. Open the related asset to view full depreciation history in its Depreciation tab. ## Viewing a disposal record Individual disposal records are accessed via the **Disposals** tab on the Assets Hub at `/fa/assets?tab=disposals`. There is no active standalone route for `/fa/disposals/:id` in the current codebase; the list path `/fa/disposals` is a legacy redirect to `/fa/assets?tab=disposals`. Access to disposal data is governed by `fa.assets.view`. SME: A standalone disposal detail view is not yet resolvable via a direct route. Steps will be updated once a component is confirmed. 1. Navigate to **Finance → Assets** (`/fa/assets`). 2. Select the **Disposals** tab to locate disposal records. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/FixedAssetDetailPage.tsx * src/cores/fa/pages/FixedAssetCreatePage.tsx * src/cores/fa/pages/FixedAssetEditPage.tsx * src/cores/fa/hooks/useFixedAssets.ts * src/cores/fa/hooks/useAssetDepreciation.ts * src/cores/fa/hooks/useAssetTransfers.ts * src/cores/fa/components/FixedAssetForm.tsx * src/routes/fa/lazy-pages.ts # Forecast Source: https://docs.encoreos.io/fa/forecast View financial forecast reports, view and manage rolling forecast records with period lines, version history, and actual vs. forecast comparison. Forecast displays a financial forecast report that projects year-end financial results based on current budget and actuals, with optional filtering by fiscal year, budget, and fund. Route: `/fa/reports/forecast`. ## Overview The Forecast page is accessible at `/fa/reports/forecast`. No explicit `RequirePermission` wrapper is on this route. The component (`ForecastPage`) uses filters — `fiscalYearId`, `budgetId`, `fundId` — to call `useForecast` and `useForecastSummary`, both scoped to `currentOrganization.id`. Results are rendered via `ForecastChart`, `ForecastReport`, and `ForecastSummary` components. A **Download CSV** button calls `exportForecastToCsv(forecastData)` when data is available. Rolling forecast records are managed at `/fa/rolling-forecasts`. The Budgeting Hub (`/fa/budgeting?tab=forecasts`) lists rolling forecasts; individual records are accessible at `/fa/rolling-forecasts/:id`. ## Who it's for Access follows your organization's role and module configuration. Rolling forecast operations require: * `fa.rolling_forecasts.view` — view forecasts and detail * `fa.rolling_forecasts.create` — create new rolling forecasts * `fa.rolling_forecasts.edit` — edit existing rolling forecasts ## Before you start * A fiscal year must exist in the system for filtering to work. * The general ledger must have posted transactions for meaningful projections. * Know the forecast name, start date, horizon in months, update frequency, and sharing level when creating. ## Steps 1. Navigate to **Finance → Reports → Forecast** (`/fa/reports/forecast`). 2. Select a **Fiscal Year** from the dropdown. 3. Optionally filter by **Budget** and **Fund**. 4. Review the `ForecastChart` visualization and `ForecastReport` table. 5. Review summary figures in `ForecastSummary`. 6. Click **Download CSV** to export forecast data. ## Key concepts | Concept | Description | | --------------------- | ------------------------------------------------------------ | | `useForecast` | Hook computing forecast projections for the selected filters | | `useForecastSummary` | Hook returning high-level forecast summary metrics | | `ForecastChart` | Chart component visualizing projected year-end results | | `ForecastReport` | Tabular report of forecast data | | `exportForecastToCsv` | Utility exporting forecast data to CSV | ## Viewing a forecast The Forecast Details page at `/fa/rolling-forecasts/:id` is the tabbed detail view for a single rolling forecast record, showing forecast lines, actual vs. forecast comparisons, and version history. Requires permission `fa.rolling_forecasts.view`. The component (`RollingForecastDetailPage`) fetches the forecast via `useRollingForecast(id, organizationId)` and lines via `useRollingForecastLines`. It renders a tabbed interface (tab state via `?tab=` search param, default `lines`): * **Lines tab**: `ForecastLineEditor` for period-level forecast entries * **vs. Actual tab**: `ForecastVsActualTable` comparing forecast to actual * **History tab**: `ForecastVersionHistory` showing version audit trail Action buttons for **Activate** (sets status to `active`) and **Archive** (sets status to `archived`) via `useUpdateForecastStatus`. A `ForecastStatusBadge` shows the current status. The breadcrumb displays `forecast_name`. Key concepts: | Concept | Description | | ------------------------- | --------------------------------------------------------- | | `ForecastLineEditor` | Component for managing period-level forecast line entries | | `ForecastVsActualTable` | Comparison table of forecast vs. actual figures | | `ForecastVersionHistory` | Audit trail of forecast version changes | | `ForecastStatusBadge` | Visual indicator of the forecast status | | `useUpdateForecastStatus` | Mutation for activating or archiving a forecast | 1. Navigate to the Budgeting Hub (`/fa/budgeting?tab=forecasts`) and open a rolling forecast. 2. On the **Lines** tab, review or edit period-level forecast entries in `ForecastLineEditor`. 3. On the **vs. Actual** tab, compare forecast to actual figures in `ForecastVsActualTable`. 4. On the **History** tab, review version history in `ForecastVersionHistory`. 5. Use **Activate** or **Archive** buttons to change the forecast status. 6. Click **Edit** to navigate to `/fa/rolling-forecasts/:id/edit`. ## Creating a forecast The New Forecast page (`/fa/rolling-forecasts/new`) creates a rolling forecast record. Requires permission `fa.rolling_forecasts.create`. The page renders `RollingForecastForm` with a `PageHeader`. On submit: a `fa_rolling_forecasts` record is created via `useCreateRollingForecast` with fields `forecast_name`, optional `forecast_description`, `forecast_start_date`, optional `source_budget_id`, `forecast_horizon_months`, `update_frequency`, `sharing_level`, `status: "draft"`. Forecast lines (if present) are created in parallel via `useCreateForecastLine`. Navigates to `/fa/rolling-forecasts/:id` on success. Key concepts: * **Forecast horizon:** `forecast_horizon_months` — defines how many months the forecast covers. * **Status:** Created with `status: "draft"`. * **Source budget:** Optional link to an existing budget for variance tracking. Have account, fund, department, program, and site assignments ready for forecast lines. 1. Navigate to `/fa/rolling-forecasts/new`. 2. Complete the `RollingForecastForm` header fields (name, start date, horizon months, frequency, sharing level, optional source budget). 3. Add forecast lines if desired. 4. Submit. On success, you are redirected to the new forecast detail page. ## Editing a forecast The Edit Forecast page (`/fa/rolling-forecasts/:id/edit`) allows updates to the forecast header and individual period line entries. Requires permission `fa.rolling_forecasts.edit`. The component (`RollingForecastEditPage`) fetches the existing forecast via `useRollingForecast` and its lines via `useRollingForecastLines`, both scoped by `organizationId`. It renders `RollingForecastForm` pre-populated with current values. On submit: (1) calls `useUpdateRollingForecast` for the forecast header, (2) creates new lines via `useCreateForecastLine`, (3) updates changed lines via `useUpdateForecastLine`, (4) deletes removed lines via `useDeleteForecastLine`. The breadcrumb displays `Edit: `. Before you start: the rolling forecast must be in a status that allows editing. Key concepts: | Concept | Description | | ------------------------------------------------- | ------------------------------------------------------- | | `RollingForecastForm` | Shared form component for forecast header and lines | | `useRollingForecast` | Hook fetching the existing forecast header | | `useRollingForecastLines` | Hook fetching period-level lines for the forecast | | `useCreateForecastLine` / `useDeleteForecastLine` | Mutations for managing line item additions and removals | 1. Navigate to the Budgeting Hub (`/fa/budgeting?tab=forecasts`) and open the rolling forecast. 2. Click **Edit** to go to `/fa/rolling-forecasts/:id/edit`. 3. Update the forecast header fields in `RollingForecastForm`. 4. Add, update, or remove period lines in the line editor. 5. Click **Save** to submit. 6. On success, the page navigates back to the forecast detail. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/ForecastPage.tsx * src/cores/fa/pages/RollingForecastDetailPage.tsx * src/cores/fa/pages/RollingForecastNewPage.tsx * src/cores/fa/pages/RollingForecastEditPage.tsx * src/cores/fa/hooks/useRollingForecastMutation.ts * src/cores/fa/components/RollingForecastForm.tsx # Functional Expenses Source: https://docs.encoreos.io/fa/functional-expenses View the functional expenses report organized by function and nature of expense with period and fund filtering in Finance & Revenue. Functional Expenses renders the functional expenses report organized by expense function and nature, with filters for fiscal period and fund, and options to export and save the report definition. Route: `/fa/reports/functional-expenses`. ## Overview The Functional Expenses page is accessible at `/fa/reports/functional-expenses`. No explicit `RequirePermission` wrapper is on this route. The component (`FunctionalExpensesPage`) uses `useReportFilters` for filter state (`periodId`, `fundId`), fetches fiscal periods via `useFiscalPeriods`, funds via `useFunds`, and report data via `useFunctionalExpenses({ organizationId, periodId, fundId })`. Results are rendered via `FunctionalExpensesReport` with a `ReportHeader`. Export is available via `ReportExportButtons`. Report definitions can be saved via `SaveReportDialog` using `useSaveReportDefinition`. ## Who it's for Access follows your organization's role and module configuration. ## Before you start * Functional expense classifications must be applied to the chart of accounts or transactions. * At least one fiscal period must be configured. ## Steps 1. Navigate to **Finance → Reports → Functional Expenses** (`/fa/reports/functional-expenses`). 2. Use `ReportFilters` to select a fiscal **Period** and optionally a **Fund**. 3. Review the `FunctionalExpensesReport` rendered with filtered data. 4. Export the report using `ReportExportButtons`. 5. Optionally save the filter configuration as a named report definition via **Save Report**. ## Key concepts | Concept | Description | | -------------------------- | ------------------------------------------------------------------------- | | `useFunctionalExpenses` | Hook fetching functional expense data for org, period, fund | | `useReportFilters` | Hook managing report filter state (`periodId`, `fundId`) | | `FunctionalExpensesReport` | Component rendering the functional expense report table | | `SaveReportDialog` | Dialog for saving the current filter configuration as a report definition | | `useSaveReportDefinition` | Mutation persisting a named report definition | ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/FunctionalExpensesPage.tsx # Functional Expenses Matrix Source: https://docs.encoreos.io/fa/functional-expenses-matrix Functional Expenses Matrix renders the cross-tabulation of natural expense categories against functional expense classifications (program services, management… Functional Expenses Matrix renders the cross-tabulation of natural expense categories against functional expense classifications (program services, management and general, fundraising) for a selected date range and optional fund filter. Route: `/fa/reports/functional-expenses-matrix`. ## Overview The Functional Expenses Matrix page is accessible at `/fa/reports/functional-expenses-matrix` and requires permission `fa.reports.view`. The component (`FunctionalExpensesMatrixPage`) calls `useFunctionalExpensesMatrix(orgId, periodStart, periodEnd, fundId)` which invokes the `fa_functional_expenses_matrix()` RPC. Fund options are loaded via `useFunds`. Results are displayed in a `DataTable` with rows typed as `MatrixDisplayRow`: * `kind: 'line'` — a natural expense category row with columns for `naturalCategory`, `programServices`, `managementGeneral`, `fundraising`, `total` * `kind: 'total'` — a summary total row Date range defaults to year-to-date (first of current year through today). Export is available via `ReportExportButtons`. ## Who it's for Requires permission `fa.reports.view`. ## Before you start * You must have `fa.reports.view` permission. * The general ledger must have functional expense classifications applied to transactions. ## Steps 1. Navigate to **Finance → Reports → Functional Expenses Matrix** (`/fa/reports/functional-expenses-matrix`). 2. Set **Period Start** and **Period End** dates (defaults to year-to-date). 3. Optionally filter by **Fund** using the fund selector. 4. Review the matrix table showing natural categories cross-tabulated against program, management, and fundraising functions. 5. Review totals in the summary row. 6. Export the report using `ReportExportButtons`. ## Key concepts | Concept | Description | | ----------------------------- | ---------------------------------------------------------------------- | | `useFunctionalExpensesMatrix` | Hook invoking `fa_functional_expenses_matrix()` RPC | | `naturalCategory` | Expense category dimension of the matrix; SME: confirm values | | `programServices` | Functional column for program services; SME: confirm allocation method | | `managementGeneral` | Functional column for management and general; SME: confirm | | `fundraising` | Functional column for fundraising; SME: confirm | ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/FunctionalExpensesMatrixPage.tsx # Funds Source: https://docs.encoreos.io/fa/funds Manage fund structure for specialized fund accounting, with inline create and edit via dialog within the Finance & Revenue core. The Funds page lists and manages fund records used for fund accounting across the organization. It is accessible at route `/fa/funds`. ## Overview The Funds page displays a table of all funds for the current organization. A "New Fund" button opens a dialog to create a fund inline. Existing funds can be edited via the same dialog by clicking the row's edit action. **Primary hook:** `useFunds(organizationId)` **State management:** `FundDialog` (create/edit), `FundsTable` (display) ## Who it's for Access follows your organization's role and module configuration. ## Before you start * Ensure you are logged in and have an organization context active. * Confirm that the funds you want to create or edit do not already exist. * Identify the fund number and name before opening the dialog. ## Steps **View funds** 1. Navigate to `/fa/funds`. 2. The Funds table loads all funds for your organization automatically. **Create a new fund** 1. Click **New Fund** (top right). 2. The Fund dialog opens. Complete the required fields. 3. Submit the dialog to save the fund. **Edit an existing fund** 1. Locate the fund in the table. 2. Click the edit action on the row. 3. Update fields in the Fund dialog and save. ## Key concepts * **Fund:** A distinct accounting entity used to segregate resources by source, purpose, or restriction. The `fund_number` and `name` fields are displayed in the table. ## Creating a fund New fund creation in the Finance & Revenue core is handled through an inline dialog on the Funds page. The `/fa/funds` page includes a **New Fund** button that opens `FundDialog` with `fundId={undefined}` (create mode). The `FundsTable` displays `fund_number` and `name` as the primary identifiers. 1. Navigate to `/fa/funds`. 2. Click **New Fund** (top right). 3. Complete the `FundDialog` form fields. 4. Save to create the fund. It appears in the Funds table. SME: The exact fields and validation rules in `FundDialog` are not fully observable from the page component alone. Confirm required fields with the implementation team. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/FundsPage.tsx * src/cores/fa/hooks/useFunds.ts * src/cores/fa/components/FundsTable.tsx * src/cores/fa/components/FundDialog.tsx # General Ledger User Guide Source: https://docs.encoreos.io/fa/general-ledger-guide This guide provides comprehensive instructions for using the General Ledger (GL) module within the Encore OS Finance & Accounting system. This guide provides comprehensive instructions for using the General Ledger (GL) module within the Encore OS Finance & Accounting system. *** ## Table of Contents 1. [Overview](#overview) 2. [Journal Entry Management](#journal-entry-management) 3. [Recurring Entries](#recurring-entries) 4. [Trial Balance](#trial-balance) 5. [Period Controls](#period-controls) 6. [Best Practices](#best-practices) 7. [Troubleshooting](#troubleshooting) *** ## Overview ### What is the General Ledger? The General Ledger (GL) is the core financial transaction engine that records all financial transactions using double-entry accounting principles. Every transaction affects at least two accounts, with total debits always equaling total credits. ### Key Features * **Double-Entry Accounting**: Every transaction is balanced with equal debits and credits * **Fund Accounting**: Track funds with donor restrictions and purpose restrictions * **Period Controls**: Prevent posting to closed fiscal periods * **Immutable Transactions**: Posted entries cannot be modified, only reversed * **Audit Trail**: Complete tracking of who created/posted/reversed entries * **Recurring Entries**: Automate repetitive monthly/quarterly/annual transactions ### Access Requirements * **View Journal Entries**: All organization users * **Create/Edit Draft Entries**: Finance staff and administrators * **Post Entries**: Finance administrators only * **Close Periods**: Finance administrators only *** ## Journal Entry Management ### Creating a Draft Journal Entry 1. **Navigate to Journal Entries** * Go to **Finance → Journal Entries** * Click **+ New Entry** button 2. **Enter Header Information** * **Transaction Date**: The date the transaction occurred * **Posting Date**: The date to post to the GL (defaults to today) * **Period**: Select the fiscal period (must be open) * **Description**: Brief summary of the transaction * **Source Type**: Manual, System, Import, etc. * **Notes**: Optional detailed explanation 3. **Add Journal Entry Lines** * Click **+ Add Line** * **Account**: Select GL account from Chart of Accounts * **Debit**: Enter debit amount (or 0) * **Credit**: Enter credit amount (or 0) * **Fund**: Optional fund assignment * **Department**: Optional department assignment * **Program**: Optional program assignment * **Description**: Line-level description 4. **Balance Validation** * The form displays running totals of debits and credits * **Save as Draft** button enables when debits = credits * Unbalanced entries cannot be saved 5. **Save the Entry** * Click **Save as Draft** * Entry status: `draft` * Entry can be edited or deleted while in draft status ### Example: Recording a Cash Sale **Scenario**: Received \$500 cash for services rendered. | Account | Debit | Credit | Description | | ---------------------- | ----- | ------ | ----------------- | | 1000 - Cash | \$500 | - | Cash received | | 4000 - Service Revenue | - | \$500 | Services rendered | **Total Debits**: $500 **Total Credits**: $500\ **Status**: Balanced ✓ ### Editing Draft Entries 1. Navigate to **Finance → Journal Entries** 2. Click on the draft entry to open 3. Modify header or line information 4. Click **Update Entry** **Note**: Only draft or pending entries can be edited. ### Posting a Journal Entry **What Posting Does:** * Changes entry status from `draft` to `posted` * Updates account balances in `fa_account_balances` * Stamps `posted_at` and `posted_by` * Makes entry immutable (cannot be edited/deleted) **Steps:** 1. Open the draft entry 2. Review all details for accuracy 3. Click **Post Entry** button 4. Confirm the posting action 5. System validates: * Entry is balanced * Period is open * All required fields present 6. Entry status changes to `posted` ### Reversing a Posted Entry **When to Reverse:** * Correct an error in a posted entry * Cancel a transaction * Adjust prior period entries **Reversal Process:** 1. Open the posted entry 2. Click **Reverse Entry** button 3. Select **Reversal Period** (current or next period) 4. Enter **Reversal Description** 5. Click **Confirm Reversal** **What Happens:** * System creates new journal entry with opposite debits/credits * New entry is automatically posted * Original entry status changes to `reversed` * Both entries link via `reversal_of_entry_id` and `reversed_by_entry_id` **Example Reversal:** **Original Entry:** | Account | Debit | Credit | | ------------------- | ------- | ------- | | 5000 - Rent Expense | \$1,000 | - | | 1000 - Cash | - | \$1,000 | **Reversal Entry:** | Account | Debit | Credit | | ------------------- | ------- | ------- | | 1000 - Cash | \$1,000 | - | | 5000 - Rent Expense | - | \$1,000 | ### Deleting Entries * **Draft Entries**: Can be deleted via **Delete Entry** button * **Posted Entries**: Cannot be deleted (use reversal instead) * **Reversed Entries**: Cannot be deleted *** ## Recurring Entries ### What are Recurring Entries? Recurring entries are templates for transactions that repeat on a regular schedule (monthly rent, quarterly insurance, annual dues, etc.). ### Creating a Recurring Entry Template 1. **Navigate to Recurring Entries** * Go to **Finance → Recurring Entries** * Click **+ New Recurring Entry** 2. **Configure Template** * **Template Name**: Descriptive name (e.g., "Monthly Rent Payment") * **Description**: Optional details * **Frequency**: Monthly, Quarterly, Annually * **Start Date**: When to begin generating entries * **End Date**: Optional expiration date * **Is Active**: Enable/disable template 3. **Define Template Lines** * Add journal entry lines as you would for a manual entry * Lines must be balanced (debits = credits) * Account assignments are saved in template 4. **Save Template** * Click **Create Template** * Template is now active and ready to generate entries ### Example Recurring Entry: Monthly Rent **Template Name**: Monthly Office Rent\ **Frequency**: Monthly\ **Start Date**: 2025-01-01 | Account | Debit | Credit | | ------------------- | ------- | ------- | | 5100 - Rent Expense | \$2,000 | - | | 1000 - Cash | - | \$2,000 | ### Generating Entries from Templates **Automated Generation** (if enabled): * System checks `next_generation_date` for each active template * Generates draft journal entry automatically * Updates `last_generated_date` and calculates next date **Manual Generation**: 1. Open recurring entry template 2. Click **Generate Entry Now** 3. Select target period 4. Review generated draft entry 5. Post entry when ready ### Managing Recurring Entries * **Edit Template**: Modify frequency, dates, or line items * **Deactivate Template**: Set `is_active = false` to stop generation * **Delete Template**: Remove template (does not affect previously generated entries) *** ## Trial Balance ### What is a Trial Balance? A trial balance is a report showing ending balances for all GL accounts in a given period. It verifies that total debits equal total credits. ### Running a Trial Balance 1. **Navigate to Trial Balance** * Go to **Finance → Trial Balance** 2. **Select Filters** * **Fiscal Period**: Required (e.g., "Period 3 - March 2025") * **Fund**: Optional filter by specific fund * **Show Inactive Accounts**: Toggle to include inactive accounts 3. **View Results** * **Account Number**: GL account number * **Account Name**: GL account name * **Account Type**: Asset, Liability, Equity, Revenue, Expense * **Fund**: Fund assignment (if applicable) * **Beginning Balance**: Balance at start of period * **Period Debits**: Total debits during period * **Period Credits**: Total credits during period * **Ending Balance**: Calculated ending balance 4. **Verify Balance** * Total debits should equal total credits * If unbalanced, investigate journal entry errors ### Interpreting Trial Balance Results **Normal Balances by Account Type:** | Account Type | Normal Balance | Increases With | Decreases With | | ------------ | -------------- | -------------- | -------------- | | Asset | Debit | Debit | Credit | | Liability | Credit | Credit | Debit | | Equity | Credit | Credit | Debit | | Revenue | Credit | Credit | Debit | | Expense | Debit | Debit | Credit | ### Exporting Trial Balance * Click **Export** button (future feature) * Download as CSV or PDF * Use for external reporting or analysis *** ## Period Controls ### Fiscal Periods Overview The fiscal year is divided into periods (typically 12 monthly periods). Each period has a status: * **Open**: Journal entries can be posted * **Closed**: Journal entries cannot be posted (period is locked) * **Adjusting**: Special period for year-end adjustments ### Closing a Fiscal Period **Prerequisites:** * All entries for the period are posted * Reconciliations are complete * Management approval obtained **Steps:** 1. Navigate to **Finance → Fiscal Periods** 2. Select period to close 3. Click **Close Period** 4. Enter closing notes 5. Confirm closure **Effects of Closing:** * Status changes to `closed` * `closed_at` and `closed_by` timestamps recorded * No new entries can be posted to this period * Existing posted entries remain unchanged ### Reopening a Period **When to Reopen:** * Discovered error requiring correction * Late transactions need recording * Year-end adjustments **Steps:** 1. Navigate to **Finance → Fiscal Periods** 2. Select closed period 3. Click **Reopen Period** 4. Enter reason for reopening 5. Confirm reopening **Best Practice**: Minimize period reopening. Use reversing entries in current period when possible. *** ## Best Practices ### Month-End Close Procedures 1. **Review Draft Entries** * Post or delete all draft entries * Ensure no entries are stuck in draft status 2. **Reconcile Bank Accounts** * Compare GL cash balance to bank statements * Record any missing transactions * Post bank fees, interest, etc. 3. **Review Account Balances** * Run trial balance for the period * Verify debits = credits * Investigate unusual balances 4. **Record Accruals** * Accrue revenue earned but not yet invoiced * Accrue expenses incurred but not yet paid * Prepaid expenses and deferred revenue 5. **Close the Period** * Follow period closing steps above * Document any issues or anomalies ### Data Entry Standards * **Descriptive Entries**: Write clear descriptions that explain the "why" * **Consistent Naming**: Use standard terms for common transactions * **Attach Documentation**: Link source documents when possible * **Review Before Posting**: Double-check amounts and accounts * **Use Memos/Notes**: Add context for complex entries ### Security & Access Control * **Segregation of Duties**: Separate entry creation from posting approval * **Role-Based Access**: Grant minimum necessary permissions * **Audit Trail**: Review `created_by` and `posted_by` regularly * **Period Locks**: Close periods promptly to prevent backdated entries *** ## Troubleshooting ### Common Errors #### "Entry is not balanced" **Cause**: Total debits ≠ Total credits **Solution**: * Recalculate line amounts * Check for missing lines * Verify debit/credit sides are correct #### "Cannot post to closed period" **Cause**: Selected fiscal period is closed **Solution**: * Check period status in Fiscal Periods * Reopen period if correction is required * Or post reversal/adjustment to current period #### "Entry has already been reversed" **Cause**: Attempting to reverse an entry that was already reversed **Solution**: * Check entry status (should show `reversed`) * Review `reversed_by_entry_id` to find reversal entry * Create new entry if additional adjustment needed #### "Account does not allow posting" **Cause**: Selected account has `allows_posting = false` (control account) **Solution**: * Use a different account (child account, not parent) * Check Chart of Accounts for posting-enabled accounts #### "Invalid fund assignment" **Cause**: Account requires fund but none selected, or fund is inactive **Solution**: * Select active fund for the line * Check account settings for `requires_fund` flag ### Performance Issues **Slow Trial Balance Queries**: * Use fund filter to limit results * Balances are materialized, so queries should be fast * Contact system admin if performance degrades **Timeout on Large Journal Entry Posting**: * Break large entries into smaller batches * System limit is typically 1000 lines per entry * Consider bulk import tools for high volume ### Getting Help * **Finance Department**: For policy and procedural questions * **System Administrator**: For technical issues or access problems * **Documentation**: Refer to [FA-02 Specification](https://github.com/Encore-OS/encoreos/blob/development/specs/fa/specs/FA-02-general-ledger.md) * **Support**: Email [support@encoreos.io](mailto:support@encoreos.io) or call 1-800-XXX-XXXX *** ## Keyboard Shortcuts | Action | Shortcut | | ---------- | ----------------- | | New Entry | `Ctrl+N` (future) | | Save Entry | `Ctrl+S` (future) | | Add Line | `Ctrl+L` (future) | | Post Entry | `Ctrl+P` (future) | *** ## Appendix: GL Transaction Examples ### Example 1: Cash Purchase of Supplies **Transaction**: Purchased office supplies for \$150 cash. | Account | Debit | Credit | | ------------------------------ | ----- | ------ | | 5200 - Office Supplies Expense | \$150 | - | | 1000 - Cash | - | \$150 | ### Example 2: Accounts Receivable Collection **Transaction**: Collected \$2,500 from customer on account. | Account | Debit | Credit | | -------------------------- | ------- | ------- | | 1000 - Cash | \$2,500 | - | | 1200 - Accounts Receivable | - | \$2,500 | ### Example 3: Payroll Accrual **Transaction**: Accrued \$8,000 in wages for employees (not yet paid). | Account | Debit | Credit | | ---------------------- | ------- | ------- | | 5300 - Payroll Expense | \$8,000 | - | | 2100 - Wages Payable | - | \$8,000 | ### Example 4: Loan Payment (Principal + Interest) **Transaction**: Made loan payment of $1,200 ($1,000 principal, \$200 interest). | Account | Debit | Credit | | ----------------------- | ------- | ------- | | 2200 - Loan Payable | \$1,000 | - | | 5400 - Interest Expense | \$200 | - | | 1000 - Cash | - | \$1,200 | *** **Maintained by:** Finance & Accounting Team\ **Questions?** Contact [finance@encoreos.io](mailto:finance@encoreos.io) # GL Migration Source: https://docs.encoreos.io/fa/gl-migration Map legacy system accounts to the chart of accounts and import migration data via CSV for general ledger migration. The GL Migration page provides tooling for one-time or recurring migrations from a legacy general ledger system. It is accessible at route `/fa/gl-migration`. ## Overview The GL Migration page has two sections: 1. **Account Mappings** — Create and manage mappings from legacy account codes to current chart-of-account entries and optional fund assignments. Mappings can be exported as JSON. 2. **Import Migration Data** (permission-gated to `fa.gl-migration.manage`) — Upload a CSV file whose rows are resolved against the account mappings. On submit, the page invokes the `fa-gl-migration-import` edge function, which returns a count of journal entries created and any row-level errors. **Primary hooks:** `useAccountMappings`, `useCreateAccountMapping`, `useDeleteAccountMapping`, `useAccounts`, `useFunds` **Edge function:** `fa-gl-migration-import` ## Who it's for Permission required: `fa.gl-migration.manage` ## Before you start * Existing account mappings must be defined before a CSV import can be run. * Obtain the CSV from your legacy system and ensure it matches the expected format (source account data resolved via mappings). * Have your chart of accounts and fund list ready. ## Steps **Define account mappings** 1. Navigate to `/fa/gl-migration`. 2. In the **Account Mappings** card, fill in the **Source Code**, optional **Source Name**, **Target Account**, and optional **Fund**. 3. Click **Add** to save the mapping. Repeat for each legacy account. 4. Optionally click **Export JSON** to download all current mappings. **Delete a mapping** 1. Click the trash icon on any mapping row to delete it. **Import migration data** 1. In the **Import Migration Data** card, drop a CSV file onto the drop zone or click to browse. Maximum size is 5 MB. 2. Click **Run Migration Import**. The page calls the `fa-gl-migration-import` edge function. 3. On success, a toast shows the number of journal entries created. Any row errors are listed in an alert. 4. Click **Clear** to reset the file selection. ## Key concepts * **Source Account Code:** The account identifier in the legacy system (e.g., `4100`). * **Account Mapping:** A record linking a legacy source code to a current `fa_accounts` entry and optional `fa_funds` entry. The `source_system` field is hardcoded to `"legacy"`. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/GlMigrationPage.tsx * src/cores/fa/hooks/useAccountMappings.ts * src/cores/fa/hooks/useAccounts.ts * src/cores/fa/hooks/useFunds.ts # Grant Compliance Source: https://docs.encoreos.io/fa/grant-compliance View a budget-versus-actual compliance report for a specific grant fund and fiscal period. The Grant Compliance report page generates a per-fund compliance view comparing budgeted amounts against actuals for a selected period. It is accessible at route `/fa/reports/grant-compliance`. ## Overview The page filters by **fiscal period** and **fund/grant**, then loads data via `useGrantCompliance`. When both filters are set, the `GrantComplianceReport` component renders the compliance data. A **Save Report** action is available via `useSaveReportDefinition`, and a **ReportExportButtons** component provides export and save options. An alert is shown if no fund is selected, prompting the user to choose one before data loads. **Primary hooks:** `useGrantCompliance`, `useFiscalPeriods`, `useFunds`, `useReportFilters`, `useSaveReportDefinition` ## Who it's for Access follows your organization's role and module configuration. ## Before you start * At least one active fund/grant must exist in the system. * At least one fiscal period must be configured. ## Steps 1. Navigate to `/fa/reports/grant-compliance`. 2. In the **Filters** card, select a **Fiscal Period** and a **Fund/Grant**. 3. The report loads automatically once both filters are set. 4. Use **ReportExportButtons** to export the report or save the filter configuration for later reuse. 5. Click **Back to Reports** (top left) to return to the reports list. ## Key concepts * **Grant Compliance Report:** A filtered view comparing budgeted amounts to actual spending for a specific fund. Requires both `periodId` and `fundId` filter values to render data. * **Save Report Definition:** Stores the current filter configuration (period, fund) for quick re-run. The saved definition is associated with the current organization. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/GrantCompliancePage.tsx * src/cores/fa/hooks/useGrantCompliance.ts * src/cores/fa/hooks/useReportFilters.ts * src/cores/fa/components/GrantComplianceReport.tsx # Import Accounts Source: https://docs.encoreos.io/fa/import-accounts Bulk-import chart of accounts entries from a CSV file into the Finance & Revenue core. The Import Accounts page allows administrators to bulk-load general ledger accounts via CSV upload. It is accessible at route `/fa/accounts/import`. ## Overview The page wraps the `CoAImport` component inside a `RequirePermission` gate for `fa.accounts.admin`. The `PageHeader` displays the title "Import Accounts" and a description. All upload and validation logic is encapsulated in the `CoAImport` component. **Component:** `CoAImport` **Permission gate (page level):** `fa.accounts.admin` ## Who it's for Permission required: `fa.accounts.admin` (enforced both at route level in `fa.tsx` and within the page component). ## Before you start * Download or prepare a CSV file in the format expected by `CoAImport`. * Confirm that the target accounts do not already exist in the chart of accounts to avoid duplicates. ## Steps 1. Navigate to `/fa/accounts/import`. 2. Use the `CoAImport` component to upload or drag-and-drop your CSV file. 3. Follow any on-screen validation prompts. 4. Confirm the import to create the accounts. SME: The exact CSV column headers and validation rules are encapsulated in `CoAImport` and its supporting components. Confirm these with your implementation team before providing instructions to users. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/CoAImportPage.tsx * src/cores/fa/components/CoAImport.tsx # Import Journal Entries Source: https://docs.encoreos.io/fa/import-journal-entries Upload a CSV to bulk-create journal entries in the general ledger via a validate-then-apply workflow. The Import Journal Entries page provides a two-step CSV import flow: validate/preview then apply. It is accessible at route `/fa/journal-entries/import`. ## Overview The page uses a drag-and-drop CSV uploader (max 5 MB, `.csv` only). Workflow: 1. **Upload** a CSV and click **Validate & Preview** — calls the `fa-je-import` edge function with `mode: "preview"`. 2. **Review** the preview table showing entry groups, dates, descriptions, line counts, debit/credit totals, and balance status. 3. **Apply** by clicking **Import N Entries** — calls `fa-je-import` with `mode: "apply"`, creating journal entries and invalidating the `fa-journal-entries` query cache. 4. On success, a toast confirms the count and buttons offer navigation to the Ledger or another import. Validation errors (CSV row errors) are displayed as a destructive alert listing each row and message before the preview step. A **Template** button downloads a pre-populated CSV template using the `JE_IMPORT_COLUMNS` schema. **Edge function:** `fa-je-import` **Permission gate:** `fa.journal-entries.import` (route level in `fa.tsx`) ## Who it's for Permission required: `fa.journal-entries.import` ## Before you start * Download the CSV template from the **Template** button on this page. * Ensure all account numbers and fund codes in the CSV exist in the chart of accounts. * CSV must be ≤ 5 MB. ## Steps **Upload and preview** 1. Navigate to `/fa/journal-entries/import`. 2. Drag and drop a CSV file onto the upload zone, or click to browse. 3. Click **Validate & Preview**. 4. Review the preview table. Balanced entries show a "Balanced" badge; unbalanced entries show "Unbalanced" in destructive styling. 5. If validation errors appear, fix the CSV and re-upload. **Apply the import** 1. After a clean preview, click **Import N Entries**. 2. A success toast confirms the number of entries created. 3. Click **View Ledger** to navigate to `/fa/ledger` or **Import More** to start another import. ## Key concepts * **Entry Group:** A CSV grouping field that clusters multiple lines into a single journal entry. Each group must balance (debits = credits) before it can be applied. * **Preview mode vs. Apply mode:** Preview validates and returns entry summaries without writing to the database. Apply creates the actual journal entry records. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/JournalEntryImportPage.tsx * src/cores/fa/schemas/jeImportSchema.ts # Inter-Fund Transfer Source: https://docs.encoreos.io/fa/inter-fund-transfer Create a balanced two-line journal entry to transfer amounts between funds. The Inter-Fund Transfer page creates a general ledger journal entry that moves a specified amount from one fund to another. It is accessible at route `/fa/inter-fund-transfer`. ## Overview The page renders `InterFundTransferForm` with the current organization context. On submission: 1. A `fa_journal_entries` record is inserted with `source_type: "INTER_FUND_TRANSFER"` and `status: "draft"`. 2. Two balanced `fa_journal_entry_lines` are inserted using the same `account_id`: a debit on the destination fund and a credit on the source fund. 3. On success, navigation goes to `/fa/journal-entries/:id` for the created entry. A "View created entry" link and "Create another" option appear below the form after submission. **Permission gate:** `fa.inter-fund-transfer.create` **Primary mutation:** Direct Supabase inserts to `fa_journal_entries` and `fa_journal_entry_lines` ## Who it's for Permission required: `fa.inter-fund-transfer.create` ## Before you start * Identify the source fund, destination fund, shared GL account, transfer amount, description, and transaction date. * Ensure both funds exist and are active. ## Steps 1. Navigate to `/fa/inter-fund-transfer`. 2. Complete the `InterFundTransferForm` fields (transaction date, description, account, from fund, to fund, amount). 3. Submit the form. 4. On success, a toast confirms "Inter-fund transfer recorded" and you are redirected to the new journal entry detail page. 5. The entry is created as a **draft** — navigate to the journal entry to review and post it. ## Key concepts * **Source Fund (credit):** The fund being reduced by the transfer. * **Destination Fund (debit):** The fund receiving the transferred amount. * **Draft status:** The created entry has `status: "draft"` and must be posted separately via the journal entry detail page. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/InterFundTransferPage.tsx * src/cores/fa/components/InterFundTransferForm.tsx # Investments Source: https://docs.encoreos.io/fa/investments Manage and view CDs, money markets, treasuries, bonds, and other investment instruments with portfolio-level metrics and detail views. The Investments page lists all investment records for the organization and provides portfolio-level summary statistics. It is accessible at route `/fa/investments`. ## Overview The page displays four summary stat cards (Total Invested, Active Investments, Maturing Soon, Interest Earned) followed by an `InvestmentsTable` card. Filters for **Status** (`active`, `matured`, `liquidated`) and **Type** (`cd`, `money_market`, `treasury`, `bond`, `other`) are available above the table. An **Add Investment** button opens `InvestmentDialog` for creating a new record. Clicking the edit action on a table row opens the same dialog pre-populated. **Maturing soon** is calculated as investments with maturity dates within the next 30 days. **Primary hooks:** `useInvestmentList`, `useMaturingInvestments` **Permission gate:** `fa.investments.view` (route level) ## Who it's for Permission required: `fa.investments.view` ## Before you start * At least one bank account should be configured to link investments. * GL accounts for investment principal and interest income should exist in the chart of accounts. ## Steps **View investments** 1. Navigate to `/fa/investments`. 2. Review the summary stat cards and the investment table. 3. Use the **Status** and **Type** dropdowns to filter the list. **Add an investment** 1. Click **Add Investment** (top right). 2. Complete the `InvestmentDialog` fields (investment number is system-generated or entered manually). 3. Save to create the record. **Edit an investment** 1. Locate the investment in the table. 2. Click the edit action. 3. Modify fields and save. ## Key concepts * **Investment Types:** `cd` (Certificate of Deposit), `money_market`, `treasury`, `bond`, `other`. * **Statuses:** `active`, `matured`, `liquidated`. * **Maturing Soon:** Investments with a `maturity_date` within 30 days. ## Viewing an investment The Investment Details page at `/fa/investments/:id` shows full information for a single investment record. The page loads an investment record via `useInvestment(id, organizationId)` and displays: * **Header:** Investment number, status badge (`active`, `matured`, `liquidated`), type label, and linked bank account name. An **Edit Investment** button opens `InvestmentDialog`. * **Performance Metrics:** Four stat cards — Principal Amount, Interest Rate, Days to Maturity (with "Soon" warning badge if ≤ 30 days), Interest Earned. * **Investment Details:** Type, bank account (masked last 4), investment GL account, interest income account, maturity date, created/updated timestamps. * **Notes:** Free-text notes field if present. Key concepts: * **Days to Maturity:** Calculated as the difference between `maturity_date` and today. Displays "Matured" if the date has passed. A "Soon" badge appears if ≤ 30 days remain. * **Interest Earned:** Displayed as `investment.interest_earned`. The source and calculation of this value are not determinable from the component alone. 1. Navigate to `/fa/investments` and click an investment row, or go directly to `/fa/investments/:id`. 2. Review the performance metric cards and detail section. 3. Click **Edit Investment** (top right) to open `InvestmentDialog` pre-populated with current values, make changes, and save. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/InvestmentsPage.tsx * src/cores/fa/pages/InvestmentDetailPage.tsx * src/cores/fa/hooks/useInvestments.ts * src/cores/fa/components/InvestmentsTable.tsx * src/cores/fa/components/InvestmentDialog.tsx * src/cores/fa/components/InvestmentStatusBadge.tsx # Invoices Source: https://docs.encoreos.io/fa/invoices List, create, view, send, void, and print customer invoices with line items, payment history, and credit memo applications. The Invoices page lists all customer invoices for the organization. It is accessible at route `/fa/invoices`. ## Overview The page includes: * **Status filter:** `draft`, `sent`, `partial`, `paid`, `void` (and "All Statuses") * **Customer filter:** Dropdown of active customers * **Invoice list:** `InvoicesTable` with send, void, and delete row actions * **New Invoice** button: Links to `/fa/invoices/new` * **Guided Tour:** `invoiceProcessingTour` triggered via a Help button Row actions call `useSendInvoice`, `useVoidInvoice`, and `useDeleteInvoice` respectively. Send requires the current `userId`. **Primary hooks:** `useInvoiceList`, `useCustomerList`, `useSendInvoice`, `useVoidInvoice`, `useDeleteInvoice` ## Who it's for Access follows your organization's role and module configuration. ## Before you start * At least one customer must exist to filter by customer. * Invoices can only be sent or voided according to their current status. * At least one active customer and configured GL revenue accounts are needed to create invoices. ## Steps 1. Navigate to `/fa/receivables?tab=invoices` (canonical) or via the Receivables hub. 2. Use the Status and Customer dropdowns to filter the list. 3. Click **New Invoice** to create a new invoice. 4. Use row actions to send (`draft` invoices), void (`sent`/`partial`), or delete (`draft`) invoices. 5. Click an invoice row to open `/fa/invoices/:id` for full detail. ## Viewing an invoice The Invoice Details page at `/fa/invoices/:id` shows the full details of a single customer invoice and provides lifecycle actions. The page loads invoice data via `useInvoice(id, organizationId)`. Key sections: * **Header:** Invoice number, status badge (`InvoiceStatusBadge`), invoice date. Available action buttons depend on status: * `draft`: **Print PDF**, **Edit** (links to `/fa/invoices/:id/edit`), **Send Invoice** * `sent` or `partial`: **Print PDF**, **Void** * **Invoice Details card:** Bill-to customer name/number/address, invoice date, due date, linked site. * **Line Items card:** DataTable of `fa_invoice_lines` rows with Description, Account (account\_number – name), Quantity, Unit Price, Amount. Subtotal, optional Tax, Total, and Balance Due summary. * **GL Posting Indicator:** Shown when a `journal_entry_id` is present. * **Payment History:** `InvoicePaymentHistory` component. * **Credit Memos Applied:** `InvoiceCreditHistory` component. * **Notes:** Displayed if present on the record. Key concepts: * **Balance Due:** `invoice.balance_due` — the remaining unpaid amount after payments applied. * **GL Posting:** When `journal_entry_id` is present, a `GLPostingIndicator` shows the linked posted entry. To view an invoice: navigate to `/fa/invoices` and click an invoice row, or go directly to `/fa/invoices/:id`. To send an invoice: open a `draft` invoice, click **Send Invoice**, and confirm in the alert dialog. The invoice status changes to `sent` and it can no longer be edited. To void an invoice: open a `sent` or `partial` invoice, click **Void**, and confirm in the alert dialog. To print PDF: click **Print PDF**. The page generates a PDF via `useInvoicePdf` and triggers a browser download/print. ## Creating an invoice The New Invoice page (`/fa/invoices/new`) creates a customer invoice. The page renders `InvoiceForm` inside a "Invoice Details" card. The invoice number is auto-generated via `useGenerateInvoiceNumber`. **Form schema** (validated with Zod): * `invoice_number` (required — auto-generated) * `customer_id` (required) * `invoice_date` (required — date) * `due_date` (required — date) * `notes` (optional) * `tax_amount` (number, default 0) * `lines` (array, min 1): `line_number`, `description` (required), `account_id` (required), `quantity`, `unit_price`, `line_amount` On submit, `useCreateInvoice` creates the header with `status: "draft"`, then `useCreateInvoiceLine` creates each line. Navigates to `/fa/invoices/:id` on success. Key concepts: * **Invoice number:** Auto-generated — not user-entered by default. * **Status on create:** `draft` — must be sent to be considered issued. * **Line amount:** Derived from quantity × unit price (computed in `InvoiceLineEditor`). 1. Navigate to `/fa/invoices/new`. 2. Complete the **Invoice Details** form: customer (required), invoice date, due date; optional notes and tax amount. 3. Add at least one line item (description, account, quantity, unit price). 4. Submit. On success, you are redirected to the new invoice's detail page. 5. From the detail page, send the invoice when ready. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/InvoicesPage.tsx * src/cores/fa/pages/InvoiceDetailPage.tsx * src/cores/fa/pages/InvoiceCreatePage.tsx * src/cores/fa/hooks/useInvoices.ts * src/cores/fa/hooks/useInvoiceLines.ts * src/cores/fa/hooks/useInvoicePdf.ts * src/cores/fa/hooks/useCustomers.ts * src/cores/fa/components/InvoiceStatusBadge.tsx * src/cores/fa/components/InvoicePaymentHistory.tsx * src/cores/fa/components/InvoiceCreditHistory.tsx * src/cores/fa/components/InvoiceForm.tsx * src/cores/fa/components/InvoiceLineEditor.tsx # Journal Entries Source: https://docs.encoreos.io/fa/journal-entries List, search, filter, batch-post, and view/edit/post/reverse individual general ledger journal entries. The Journal Entries page lists all journal entries for the current organization. It is accessible at route `/fa/journal-entries`. General ledger journal entries surface listing posted entries ## Overview The page provides: * **Search:** Free-text search by entry number or description * **Status filter:** `all`, `draft`, `posted`, `reversed` * **Select-all checkbox:** Selects all draft entries for batch actions * **Batch Action Bar:** Batch Post and Batch Delete for selected draft entries * **JournalEntriesTable:** Row-level post, reverse, and delete actions * **Keyboard shortcuts:** Via `useFAKeyboardShortcuts` — `N` for new, `S` for search focus, `?` for help Batch post calls `usePostJournalEntry` for each selected draft. Batch delete calls `useDeleteJournalEntry`. **Primary hooks:** `useJournalEntries`, `usePostJournalEntry`, `useReverseJournalEntry`, `useDeleteJournalEntry` ## Who it's for Access follows your organization's role and module configuration. Individual entry actions (post, reverse, delete) may be subject to journal entry-level permissions. ## Before you start * Entries must be in `draft` status to be posted or deleted via batch. * Only `posted` entries can be reversed. ## Steps 1. Navigate to `/fa/ledger?tab=journal-entries` (canonical). 2. Use search and status filters to find entries. 3. Click **New Journal Entry** (or press `N`) to create a new entry at `/fa/journal-entries/new`. 4. Check individual rows or use the select-all checkbox to select draft entries. 5. Use the **Batch Action Bar** to post or delete multiple drafts at once. 6. Click an entry row to open its detail page at `/fa/journal-entries/:id`. ## Key concepts * **Draft → Posted:** Posting finalizes the journal entry in the ledger. * **Posted → Reversed:** Creates an offsetting reversal entry. * **Batch actions:** Apply only to `draft` entries. Posted entries must be reversed individually. ## Creating a journal entry The New Entry page at `/fa/journal-entries/new` creates a general ledger journal entry. Permission required: `fa.journal_entries.create` (enforced via inner `PermissionGate`). The page wraps `JournalEntryForm` (header fields) and `JournalLineEditor` (debit/credit lines). **Header fields:** `transaction_date` (required), `posting_date` (required), `period_id` (required), `description` (required), `notes` (optional), `source_type` (one of `MANUAL`, `PAYROLL`, `AP_BILL`, `AR_INVOICE`, `RECURRING`, `BANK_REC`, `SYSTEM`, `RULE_ENGINE`, `IMPORT`, `INTER_FUND_TRANSFER`), `source_reference` (optional). **Line balance check:** `Math.abs(totalDebits - totalCredits) < 0.01` — entry is balanced when true. **Save as Draft:** Creates the entry with `status: "draft"` and optionally saves lines. Navigates to `/fa/journal-entries/:id`. **Save and Post:** Validates balance and at least one line, creates as draft, saves lines, then posts. Shows validation errors via toast if unbalanced or no lines. **Primary mutations:** `useCreateJournalEntry`, `useBulkUpdateLines`, `usePostJournalEntry` Before you start: know the fiscal period, transaction date, and description; have debit and credit accounts, amounts, and optional fund/department/program assignments ready. **Save as Draft:** 1. Navigate to `/fa/journal-entries/new`. 2. Complete the **Entry Information** section. 3. Add journal lines in the **Entry Lines** section. 4. Click **Save as Draft**. **Save and Post:** 1. Complete the entry header and add balanced lines (debits = credits). 2. Click **Save and Post** (disabled if unbalanced or no lines). 3. On success, you are redirected to the journal entries list. **Key concepts:** A balanced entry has total debits equal to total credits (within \$0.01 tolerance). `source_type: MANUAL` is a standard user-initiated entry. Draft entries can be edited; posted entries require reversal to correct. ## Viewing a journal entry The Journal Entry Details page at `/fa/journal-entries/:id` shows the full detail of a single journal entry and allows lifecycle management. The page loads a journal entry via `useJournalEntry(id, organizationId)` and renders: * **Header:** Entry number (or "Draft Entry"), with action buttons based on status: * `draft`: **Edit**, **Save Changes** / **Cancel** (when editing), **Post Entry**, **Delete** * `posted`: **Reverse Entry** * **Entry Information card:** `JournalEntryForm` in read-only or edit mode (transaction date, posting date, period, description, notes, source type, source reference) * **Entry Lines card:** `JournalLineEditor` — editable when in edit mode, read-only otherwise * **Audit Information card:** Shown only when `posted_by_profile` is present. Displays created-by name, posted-by name, and posted timestamp. **Mutations:** `useUpdateJournalEntry`, `useBulkUpdateLines`, `usePostJournalEntry`, `useReverseJournalEntry`, `useDeleteJournalEntry` After posting, reversing, or deleting, you are redirected to `/fa/journal-entries` (list). Key concepts: * **Balanced entry:** Total debits must equal total credits before an entry can be posted. * **Reversal:** Creates an offsetting journal entry dated to the current date. **Post a draft entry:** Navigate to `/fa/journal-entries/:id`, review the entry and its lines, and click **Post Entry**. **Edit a draft entry:** Click **Edit**, modify `JournalEntryForm` header fields or line items in `JournalLineEditor`, then click **Save Changes** or **Cancel**. **Reverse a posted entry:** Click **Reverse Entry**. The reversal date is today's date. **Delete a draft entry:** Click **Delete** — confirm in the dialog. You are redirected to the journal entries list. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/JournalEntriesPage.tsx * src/cores/fa/pages/JournalEntryDetailPage.tsx * src/cores/fa/pages/JournalEntryCreatePage.tsx * src/cores/fa/hooks/useJournalEntries.ts * src/cores/fa/hooks/useJournalEntryLines.ts * src/cores/fa/components/JournalEntriesTable.tsx * src/cores/fa/components/JournalEntryForm.tsx * src/cores/fa/components/JournalLineEditor.tsx # Journal Entry Audit Trail Source: https://docs.encoreos.io/fa/journal-entry-audit-trail Complete audit trail of journal entry lifecycle events including posting and reversals, with date-range filtering and CSV export. The Journal Entry Audit Trail report page provides a full lifecycle view of journal entries with posting and reversal tracking. It is accessible at route `/fa/reports/journal-entry-audit-trail`. ## Overview The page wraps `JournalAuditTrailContent` inside a `PermissionGate` for `FA_PERMISSIONS.AUDIT_VIEW`. The content: * **Date range filters:** "From" and "To" date inputs; click **Search** to apply. * **DataTable:** Columns — Entry #, Date, Description, Status badge, Created By, Created At, Posted By, Posted At, Reversed By Entry. * **CSV export:** Button visible when `FA_PERMISSIONS.AUDIT_EXPORT` is held and rows are present. Uses `exportFaJournalCsv` utility. * **Row count:** Displayed below the table. **Primary hook:** `useJournalEntryAuditTrailReport(organizationId, filters)` **Permission gate:** `FA_PERMISSIONS.AUDIT_VIEW` (inner component via `PermissionGate`) ## Who it's for Permission required: `FA_PERMISSIONS.AUDIT_VIEW` (inner gate). Route-level gate in `fa.tsx` also requires `fa.audit.view`. ## Before you start * No prerequisites beyond having journal entries in the system. ## Steps 1. Navigate to `/fa/reports/journal-entry-audit-trail`. 2. Optionally set a **From** and **To** date and click **Search** to filter. 3. Review the table of audit trail rows. 4. If you have the export permission and rows are present, click **Export CSV** to download the audit data. ## Key concepts * **Status variants:** `posted` (default), `draft` (secondary), `reversed` (destructive), `pending_approval` (outline). * **Reversed By Entry:** The ID of the reversing journal entry, if any. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/JournalEntryAuditTrailReportPage.tsx * src/cores/fa/hooks/useJournalEntryAuditTrailReport.ts * src/cores/fa/utils/auditExportCsv.ts # KPI Tracking Source: https://docs.encoreos.io/fa/kpi-tracking Monitor configured financial key performance indicators with current values, targets, and trend charts. The KPI Tracking page displays financial health metrics derived from configured KPI definitions and their historical calculations. It is accessible at route `/fa/analytics/kpis`. ## Overview The page loads KPI definitions via `useKPIDefinitions(organizationId)` and historical data via `useKPIHistory(organizationId)`. It renders a responsive grid of `KPICard` components, one per configured KPI snapshot. Each card shows: * KPI name and status icon: `XCircle` (critical), `AlertTriangle` (warning), `CheckCircle2` (on-target) * Current value formatted by unit (`currency`, `percent`, `ratio`, `days`, or plain number) * Target value badge (if configured) * Change percent (positive green, negative red) * Category label * Trend sparkline chart (`KPITrendChart`) if more than one historical data point exists If no KPIs are configured, an empty state prompts the user to configure definitions in analytics settings. **Primary hooks:** `useKPIDefinitions`, `useKPIHistory`, `buildKPISnapshots` **Permission gate:** `fa.analytics.kpis.view` (route level) ## Who it's for Permission required: `fa.analytics.kpis.view` ## Before you start * KPI definitions must be configured (SME: confirm where this is done). * At least one `kpi_history` record must exist for a KPI to show trend data. ## Steps 1. Navigate to `/fa/analytics/kpis`. 2. Review each KPI card for current value, target, and trend. 3. KPIs with `critical` status (XCircle icon) require immediate attention per your organization's thresholds. ## Key concepts * **KPI Snapshot:** A computed view combining the latest `kpi_history` value with its definition's target and threshold settings. * **Units:** `currency` (formatted with `formatCurrency`), `percent` (N.N%), `ratio` (N.NN), `days` (N days), plain number. * **Status levels:** `critical`, `warning`, on-target (default). ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/KPIPage.tsx * src/cores/fa/hooks/useKPIs.ts * src/cores/fa/components/analytics/KPITrendChart.tsx * src/cores/fa/types/analytics.ts # Ledger Hub Source: https://docs.encoreos.io/fa/ledger-hub Tabbed hub for the General Ledger combining Journal Entries, Recurring Entries, and Trial Balance in one view. The Ledger Hub is the central General Ledger interface combining Journal Entries, Recurring Entries, and Trial Balance as URL-synced tabs. It is accessible at route `/fa/ledger`. ## Overview The hub uses `useTabUrlState` to synchronize the active tab with a `?tab=` query parameter. Valid tab values are: | Tab value | Label | Component | | ------------------- | ----------------- | ---------------------- | | `journal-entries` | Journal Entries | `JournalEntriesPage` | | `recurring-entries` | Recurring Entries | `RecurringEntriesPage` | | `trial-balance` | Trial Balance | `TrialBalancePage` | The default tab is `journal-entries`. Legacy routes redirect to this hub: * `/fa/journal-entries` → `/fa/ledger?tab=journal-entries` * `/fa/recurring-entries` → `/fa/ledger?tab=recurring-entries` * `/fa/trial-balance` → `/fa/ledger?tab=trial-balance` Each tab is lazy-loaded with a skeleton fallback. Access follows your organization's role and module configuration. ## Who it's for Access follows your organization's role and module configuration. ## Before you start * No prerequisites. ## Steps 1. Navigate to `/fa/ledger` (defaults to Journal Entries tab). 2. Click a tab to switch between Journal Entries, Recurring Entries, and Trial Balance. 3. The `?tab=` URL parameter updates automatically, enabling deep-linking and browser back/forward navigation. ## Key concepts * **URL-synced tabs:** The `?tab=` parameter allows bookmarking and direct navigation to any tab. * **Legacy redirects:** Existing links to `/fa/journal-entries`, `/fa/recurring-entries`, and `/fa/trial-balance` are automatically redirected to the hub. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/LedgerHubPage.tsx * src/cores/fa/pages/JournalEntriesPage.tsx * src/cores/fa/pages/RecurringEntriesPage.tsx * src/cores/fa/pages/TrialBalancePage.tsx # My Approvals Source: https://docs.encoreos.io/fa/my-approvals Review and approve pending finance-related approval requests including expense reports, purchase orders, and bills. The My Approvals page shows pending approval requests for the current user across FA module workflows. It is accessible at route `/fa/approvals`. ## Overview The page displays a pending-approval count badge (via `usePendingApprovalCount`) and renders the `ApprovalInbox` component from `@/platform/approvals`. This component is shared with other FA module approval flows. The `ApprovalInbox` is configured with: * `onSelectApproval`: navigates to `/fa/approvals/:approval.request_id` * `emptyStateAction`: navigates to `/fa/approvals` when no pending items are present **Permission gate:** `fa.approvals.view` (route level) **Primary hook:** `usePendingApprovalCount` **Component:** `ApprovalInbox` from `@/platform/approvals` ## Who it's for Permission required: `fa.approvals.view` ## Before you start * You must have pending approval requests assigned to you for items to appear. ## Steps 1. Navigate to `/fa/approvals`. 2. The pending count badge shows how many items await your action. 3. Click an approval item to navigate to its detail page at `/fa/approvals/:request_id`. 4. When no items are pending, use the **View My Requests** action to see requests you have submitted. ## Key concepts * **ApprovalInbox:** A shared platform component that lists pending approvals filtered to the current user and FA module context. * **Pending count:** Shown as a badge next to the "My Approvals" heading. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/FAApprovalsPage.tsx * src/platform/approvals/ApprovalInbox.tsx # My Expenses Source: https://docs.encoreos.io/fa/my-expenses View and manage your own expense reports, submit drafts for approval, or create new reports. The My Expenses page shows expense reports belonging to the currently logged-in user. It is accessible at route `/fa/expenses/me`. ## Overview This route renders `ExpenseReportsPage` with `filter="mine"`. The component filters the organization's expense reports to only those where `employee_id` matches the current user's ID. The page title displays as "My Expenses" with a User icon. Users can: * View all their expense reports in `ExpenseReportsTable` * Submit a draft report for approval via a row action * Delete a draft report via row action (soft-delete with confirmation dialog) * Navigate to edit or view detail via row actions * Click **New Report** to create a new expense report at `/fa/expenses/new` **Primary hooks:** `useExpenseReportList`, `useSoftDeleteExpenseReport`, `useSubmitExpenseReport` **Permission gate:** `fa.expenses.view` (route level) ## Who it's for Permission required: `fa.expenses.view` ## Before you start * You must have an employee record associated with your user account to create expense reports. ## Steps 1. Navigate to `/fa/expenses/me`. 2. Review your expense reports in the table. 3. Click **New Report** to create a new expense report. 4. Use row actions to view, edit, submit, or delete your reports. ## Key concepts * **Filter "mine":** Only reports where `employee_id === currentUser.id` are shown, regardless of organization-wide visibility. * **Soft delete:** Deleted reports are not permanently removed; they are marked as deleted. * **Submit for approval:** Changes status from `draft` to submitted state and triggers the approval workflow. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/ExpenseReportsPage.tsx * src/cores/fa/hooks/useExpenseReports.ts * src/cores/fa/components/ExpenseReportsTable.tsx # Open Commitments Source: https://docs.encoreos.io/fa/open-commitments Report showing outstanding purchase order commitments with vendor, date, and amount filters in Finance & Revenue. The Open Commitments report at `/fa/reports/open-commitments` displays purchase orders with outstanding amounts — the difference between PO total, received total, and billed total. ## Overview The route `/fa/reports/open-commitments` loads `OpenCommitmentsPage`. The page fetches data via `useOpenCommitments` and a summary via `useOpenCommitmentsSummary`, filtered by vendor, start date, and end date. The data table shows `po_number`, `vendor_name`, `po_date`, `delivery_date`, `po_total`, `received_total`, `billed_total`, `outstanding_amount`, and `status`. ## Who it's for Access follows your organization's role and module configuration. ## Before you start No setup required. Filters are optional. ## Steps 1. Navigate to **Finance & Revenue → Reports → Open Commitments**, or go to `/fa/reports/open-commitments`. 2. Optionally filter by vendor, start date, and end date. 3. Review the data table and summary. 4. Export as needed (CSV export button is present via `useOpenCommitmentsSummary`). ## Key concepts **Open commitment** — A purchase order that has not been fully received or fully billed. The `outstanding_amount` reflects the remaining obligation. **`outstanding_amount`** — An observable field on each row; exact calculation formula should be confirmed with an SME. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/OpenCommitmentsPage.tsx * src/cores/fa/hooks/useOpenCommitments.ts * src/cores/fa/hooks/useVendors.ts # Outstanding Checks Source: https://docs.encoreos.io/fa/outstanding-checks Report of uncleared checks aged by time bucket as of a selected date in Finance & Revenue. The Outstanding Checks report at `/fa/reports/outstanding-checks` displays checks that have been issued but not yet cleared, bucketed by aging period as of a user-selected date. ## Overview The route `/fa/reports/outstanding-checks` loads `OutstandingChecksReportPage`. The page defaults `asOfDate` to today's date and fetches data via `useOutstandingChecksReport`. Summary cards display totals for five aging buckets: Total, 0–30 days, 31–60 days, 61–90 days, and 90+ days (shown with destructive styling). A CSV export button is present. ## Who it's for Access follows your organization's role and module configuration. ## Before you start No setup required. Select an as-of date to view historical data. ## Steps 1. Navigate to **Finance & Revenue → Reports → Outstanding Checks**, or go to `/fa/reports/outstanding-checks`. 2. Optionally change the **As of Date** from today to a past date. 3. Review the summary aging buckets and the checks table below. 4. Select **Export CSV** to download the report. ## Key concepts **As-of date** — Controls the cutoff date for the outstanding check query; defaults to the current date. **Aging buckets** — 0–30, 31–60, 61–90, and 90+ days; the 90+ bucket is highlighted in destructive styling to draw attention to stale checks. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/OutstandingChecksReportPage.tsx * src/cores/fa/hooks/useOutstandingChecksReport.ts # Finance & Revenue Overview Source: https://docs.encoreos.io/fa/overview Overview of the Finance & Revenue core in Encore OS — purpose, scope, and key responsibilities. The Finance & Revenue core (FA) provides general accounting for Encore OS — the general ledger, accounts payable and receivable, chart of accounts, bank reconciliation, budgeting and forecasting, expense management, fixed assets, project accounting, tax reporting, and financial analytics. **FA vs PM:** FA owns *general accounting*. The healthcare **revenue cycle** — claims, eligibility, and ERA — lives in [Practice Management](/pm/overview). ## How the books flow Daily AP/AR and bank activity post to the general ledger, which drives period close, budgeting and forecasting, and tax reporting. Bank feeds arrive through Plaid for reconciliation. ```mermaid theme={null} flowchart LR Plaid["Plaid
bank feeds"] --> Bank["Bank reconciliation"] AP["Accounts payable"] --> GL["General ledger
(chart of accounts)"] AR["Accounts receivable"] --> GL Bank --> GL GL --> Close["Period close"] Close --> Budget["Budgeting &
forecasting"] Close --> Tax["Tax reporting
(1099-NEC / 1099-MISC)"] FM["Facilities
purchase-to-pay"] -.-> AP ``` Finance general ledger journal entries list ## Key surfaces Vendor tax workflow — 1099-NEC and 1099-MISC. Form generation and filing. Developer integration surface for finance data. Tenant configuration for the FA core. Bank-connection integration for reconciliation. PHI/PII guardrails for financial data. ## Get oriented in FA Set tenant options in [module settings](/fa/module-settings) and connect banks via [Plaid](/fa/PLAID_SETUP). Record AP/AR, journal entries, and reconciliations against the general ledger. Produce budgets, forecasts, and tax filings such as [1099 reporting](/fa/1099-reporting). ## By role Daily AP/AR, journal entries, and reconciliations. Connect banks in [Plaid setup](/fa/PLAID_SETUP). Period close, financial reporting, budgets, and forecasts for board and executive review. Supporting documentation and evidence packages. Review [security considerations](/fa/security-considerations). ## Scope at a glance * **General ledger & close** — chart of accounts, journal entries, period close, intercompany. * **AP / AR** — bills, vendor management, customer invoices, collections. * **Banking & cash** — bank reconciliation, cash management, treasury, Plaid integration. * **Budgeting & forecasting** — budgets, rolling forecasts, scenarios. * **Tax reporting** — 1099-NEC, 1099-MISC, sales tax, jurisdiction reporting. * **Fixed assets & projects** — capital tracking, depreciation, project accounting. ## Related Value-based payment ties between clinical quality and finance. Source specifications for the FA core. Financial compliance crosswalk and evidence. # Payables Source: https://docs.encoreos.io/fa/payables Accounts payable hub combining vendors, purchase orders, receipts, bills, payments, and expense management in Finance & Revenue. The Payables page at `/fa/payables` is the Accounts Payable & Expenses hub, a tabbed interface that consolidates vendors, purchase orders, goods receipts, bills, payments, expense reports, and batch reimbursement processing. ## Overview The route `/fa/payables` loads `PayablesHubPage`. It uses URL-synced tab state (`?tab=`) with the following tabs: `vendors`, `purchase-orders`, `receipts`, `bills`, `payments`, `expenses`, `expense-reports`, `expense-payments`, and `batch`. Each tab lazily loads its corresponding page component. Legacy routes (`/fa/vendors`, `/fa/purchase-orders`, `/fa/receipts`, `/fa/bills`, `/fa/payments`, `/fa/expenses`) all redirect here with the appropriate tab parameter. ## Who it's for Access follows your organization's role and module configuration. ## Before you start No setup required. Navigate directly to the hub and select the relevant tab. ## Steps 1. Navigate to **Finance & Revenue → Payables & Expenses**, or go to `/fa/payables`. 2. Select the appropriate tab for the task at hand: * **Vendors** — View and manage vendor records. * **Purchase Orders** — View purchase orders; create via **New PO**. * **Receipts** — View goods receipts against POs. * **Bills** — View and create vendor bills. * **Payments** — View payment batches. * **Expenses** — Expense dashboard. * **All Reports** — All expense reports. * **Reimbursements** — Reimbursement payment records. * **Batch Processing** — Batch reimbursement processing. 3. Use action buttons within each tab to create or manage records. ## Key concepts **URL-synced tabs** — The active tab is persisted in the URL as `?tab=`, making deep links and browser navigation work correctly. **Legacy redirects** — Routes such as `/fa/vendors` and `/fa/payments` redirect to this hub with the appropriate tab pre-selected. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/PayablesHubPage.tsx * src/cores/fa/pages/VendorsPage.tsx * src/cores/fa/pages/PaymentBatchesPage.tsx # Finance & Revenue Payment Plans Source: https://docs.encoreos.io/fa/payment-plans Create, view, edit, and manage customer payment plans with installment schedules and approval lifecycle in Finance & Revenue. The Payment Plans list is part of the Accounts Receivable hub (`/fa/receivables?tab=payment-plans`; the legacy `/fa/payment-plans` route redirects there). It supports filtering by status and customer, displays summary cards, and provides actions to create, submit for approval, and delete plans. ## Who it's for Access follows your organization's role and module configuration. The Payment Plans tab within the AR hub is accessible to users who can reach `/fa/receivables`. Viewing a plan requires `fa.payment_plans.view`; creating requires `fa.payment_plans.create`; editing requires `fa.payment_plans.edit`. ## Finding a plan 1. Navigate to **Finance & Revenue → Accounts Receivable → Payment Plans**, or go to `/fa/receivables?tab=payment-plans`. 2. Use filters (status, customer) and search to locate plans. 3. Select a plan to view its details. 4. Use **New Payment Plan** to create a plan. ## Viewing a payment plan Selecting a plan opens its detail view at `/fa/payment-plans/:id` (permission: `fa.payment_plans.view`): plan header fields (customer, total amount, paid amount, status), a progress bar, and tabbed views including the installment schedule. Available actions — submit for approval, approve/reject, cancel, delete, edit — depend on the plan's current status. 1. Review the plan summary: customer, total, amount paid, and status. 2. View the installment schedule in the installments tab. 3. Use action buttons to submit for approval, approve/reject, cancel, or edit as appropriate for the plan's current status. **Status lifecycle** — `draft` → `pending_approval` → `approved` → `active` → `completed` (or `cancelled` / `defaulted`). **Installment statuses** — `pending`, `paid`, `partial`, `overdue`, `skipped`. **Progress bar** — Reflects the proportion of `total_paid` to total plan amount. ## Creating a payment plan The New Payment Plan form (`/fa/payment-plans/new`, permission: `fa.payment_plans.create`) creates a structured repayment agreement; the platform generates installment records automatically on save. Before you start: confirm the customer record exists, and know the total amount, number of installments, payment frequency, and start date. An optional linked invoice may be provided. 1. From the Payment Plans tab, select **New Payment Plan**, or go to `/fa/payment-plans/new`. 2. Complete the form fields: plan name, customer, invoice (optional), total amount, number of installments, payment frequency, and start date. 3. Optionally enter an end date. 4. Select **Create**. The plan is saved as `draft` and installments are generated automatically. 5. You are redirected to the plan's detail view to review the installment schedule. ## Editing a payment plan The edit form (`/fa/payment-plans/:id/edit`, permission: `fa.payment_plans.edit`) updates an existing plan's name, customer, linked invoice, amount, installment count, payment frequency, and dates. The plan must be in a status that permits editing. 1. Open the payment plan and click **Edit**. 2. Update the relevant fields. 3. Click **Save**. On success you return to the plan's detail view. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/PaymentPlansPage.tsx * src/cores/fa/pages/ReceivablesHubPage.tsx * src/cores/fa/pages/PaymentPlanDetailPage.tsx * src/cores/fa/pages/PaymentPlanCreatePage.tsx * src/cores/fa/pages/PaymentPlanEditPage.tsx * src/cores/fa/hooks/usePaymentPlans.ts * src/cores/fa/components/PaymentPlanApprovalDialog.tsx * src/cores/fa/components/PaymentPlanForm.tsx # Finance & Revenue Payments Source: https://docs.encoreos.io/fa/payments Create, view, and manage vendor payment batches with bill selection, posting actions, and batch-level detail in Finance & Revenue. The route `/fa/payments` is a legacy redirect to `/fa/payables?tab=payments`. The Payments list (payment batches) is now part of the Payables & Expenses hub. ## Overview Navigating to `/fa/payments` triggers a ``. The Payments tab loads `PaymentBatchesPage` lazily within the Payables & Expenses hub, showing the list of payment batches with their status and totals. ## Who it's for Access follows your organization's role and module configuration. ## Before you start No setup required. To create a payment batch, identify the bills to pay and confirm the payment date and method. ## Steps 1. Navigate to **Finance & Revenue → Payables & Expenses → Payments**, or go to `/fa/payables?tab=payments`. 2. Review the list of payment batches. 3. Select a batch to view its details at `/fa/payments/:id`. 4. Use **New Payment Batch** (at `/fa/payments/new`) to create a new batch. ## Viewing a payment The Payment Details page at `/fa/payments/:id` shows the details of a payment batch including its status, individual payments within the batch, and a posting action. **`/fa/payments/:id` — Payment Batch Detail:** Loads `PaymentBatchDetailPage`. Displays batch status (`draft`, `posted`, or `cancelled`), batch-level fields, and a table of individual payments with columns: Payment #, Vendor, Check #, and Amount. A **Post Batch** action is available when status is `draft`, guarded by a confirmation dialog. Uses `usePaymentBatch` and `usePayments` hooks. **`/fa/expenses/payments/:id` — Reimbursement Payment Detail:** Loads `ReimbursementPaymentDetailPage` (requires permission `fa.expenses.process`). Documents expense reimbursement payments rather than vendor payments. **Batch status lifecycle** — `draft` → `posted` (or `cancelled`). Posting is finalized via `usePostPaymentBatch`. **`batch_number`** — The human-readable identifier for the payment batch. 1. Navigate to **Finance & Revenue → Payables & Expenses → Payments** and select a batch, or go to `/fa/payments/:id`. 2. Review the batch header (batch number, status, payment date, method). 3. Review the individual payments table. 4. If the batch is in `draft` status, select **Post Batch** and confirm to post it. ## Creating a payment The New Payment page at `/fa/payments/new` renders a form for creating a payment batch against selected vendor bills, grouping payments by vendor and applying each payment to its corresponding bill. The route `/fa/payments/new` loads `PaymentBatchCreatePage`. The form collects batch-level settings (payment date, payment method, notes) and a bill selector. On submit, the page creates a batch record, groups selected bills by vendor, creates one payment per vendor, and applies each payment to the relevant bills. On success, the user is redirected to `/fa/payments/:id` (batch detail). Before you start: * Identify the bills you need to pay. Bills must exist in the system and have a non-zero `balance_due`. * Confirm the payment date and preferred payment method. Key concepts: * **Payment batch** — A grouping of one or more vendor payments created in a single transaction. Each vendor in the batch gets its own `fa_payments` record. * **Payment application** — Each selected bill has an application record created linking the payment to the bill for the full `balance_due` amount. 1. Navigate to **Finance & Revenue → Payables & Expenses → Payments** and select **New Payment Batch**, or go to `/fa/payments/new`. 2. Set the **Payment Date** and **Payment Method** (Check, ACH, Wire, or Credit Card). 3. Optionally add notes. 4. Use the Bill Selector to choose one or more bills to include. 5. Review the selected bill count and total amount displayed below the form. 6. Select **Create Batch**. The platform creates a batch, one payment per vendor, and applies each payment to the selected bills. 7. You are redirected to the payment batch detail page. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/PaymentBatchesPage.tsx * src/cores/fa/pages/PayablesHubPage.tsx * src/cores/fa/pages/PaymentBatchDetailPage.tsx * src/cores/fa/pages/PaymentBatchCreatePage.tsx * src/cores/fa/hooks/usePaymentBatches.ts * src/cores/fa/hooks/usePayments.ts * src/cores/fa/hooks/usePaymentApplications.ts # Plaid API Usage Source: https://docs.encoreos.io/fa/plaid-api-usage Admin dashboard showing Plaid API request counts, rate limit hits, and sync success rates by institution in Finance & Revenue. The Plaid API Usage dashboard at `/fa/banking/plaid-usage` provides operational metrics for the Plaid bank connection integration, including API request counts, rate limit events, and per-institution sync success rates. ## Overview The route `/fa/banking/plaid-usage` loads `PlaidApiUsageDashboard` (permission: `fa.banking.admin`). The dashboard displays: * Five summary metric cards (observable from skeleton layout: 5 cards). * Two side-by-side charts (area chart and bar chart using Recharts). * A detail table (per-institution breakdown). Date range is selectable: 7 days, 30 days (default), or 90 days. Data is fetched via `usePlaidApiUsageDashboard`. A manual refresh button is present. ## Who it's for Requires permission `fa.banking.admin`. ## Before you start * Plaid must be configured and at least one bank connection established. * This dashboard is for operational/administrative monitoring only. ## Steps 1. Navigate to **Finance & Revenue → Banking → Plaid API Usage**, or go to `/fa/banking/plaid-usage`. 2. Select the desired date range (7d, 30d, or 90d). 3. Review the summary metrics, charts, and per-institution table. 4. Use the refresh button to reload the latest data. ## Key concepts **`DateRangeOption`** — Accepted values: `'7d'`, `'30d'`, `'90d'`. **Rate limit hits** — Events where the Plaid API returned a rate-limit response; visible in the dashboard for monitoring integration health. **Sync success rate** — The ratio of successful data syncs to total sync attempts per institution. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/PlaidApiUsageDashboard.tsx * src/cores/fa/hooks/usePlaidApiUsageDashboard.ts # Project Accounting & Grant Tracking User Guide Source: https://docs.encoreos.io/fa/project-accounting-guide This guide helps end users understand how to use Project Accounting & Grant Tracking for managing grants, contracts, and internal programs. > **Purpose:** This guide helps end users understand how to use Project Accounting & Grant Tracking for managing grants, contracts, and internal programs. *** ## Overview Project Accounting & Grant Tracking (FA-13) provides specialized financial tracking for grants, contracts, and internal programs. It enables organizations to manage project budgets, allocate expenses, record revenue, and track grant drawdowns — all integrated with the core General Ledger. ### Key Capabilities * **Budget Management:** Create and approve budget lines by category, track budget vs. actual spending with visual charts * **Expense Allocation:** Allocate direct and indirect costs to projects, with automatic IDC (Indirect Cost Rate) calculations * **Revenue Tracking:** Record revenue by period and link to drawdown-related entries * **Drawdown Management:** Create drawdown requests, record receipts, and track status through a complete workflow * **Utilization Monitoring:** Visual progress bars and alert banners for budget utilization and drawdown balances ### Who Should Use This Guide | Role | Use Case | | --------------- | ---------------------------------------------------------------------- | | Finance Admin | Full project lifecycle management, budget approval, drawdown oversight | | Project Manager | Day-to-day budget tracking, expense allocation, revenue recording | | Staff | View project financials and utilization status | *** ## Prerequisites ### Permissions Required | Permission | Description | Roles | | -------------------- | --------------------------------- | -------------------------------------------------------- | | `fa.projects.view` | View projects and financial data | All finance roles, staff, readonly | | `fa.projects.create` | Create new projects | org\_admin, platform\_admin, site\_admin, finance\_admin | | `fa.projects.edit` | Edit existing projects | org\_admin, platform\_admin, site\_admin, finance\_admin | | `fa.projects.admin` | Approve budgets, manage drawdowns | org\_admin, platform\_admin, site\_admin, finance\_admin | > **Note:** Contact your organization administrator if you don't have the required permissions. *** ## Getting Started ### Accessing Projects 1. Navigate to **Finance & Accounting** in the main menu 2. Under **Projects & Grants**, click **All Projects** 3. You'll see the project list with summary statistics *** ## Quick Reference | I need to... | Pattern | Location | | --------------------------- | ---------------------------------------------------- | -------------------------- | | Create a new project | Click "New Project", fill form, save | Project List → New Project | | Add budget lines | Open project → Budget tab → Add Budget Line | Project Detail → Budget | | Allocate expenses | Open project → Expenses tab → Allocate Expense | Project Detail → Expenses | | Record revenue | Open project → Revenue tab → Record Revenue | Project Detail → Revenue | | Create a drawdown request | Open project → Drawdowns tab → Request | Project Detail → Drawdowns | | Record a drawdown receipt | Open project → Drawdowns tab → Receipt | Project Detail → Drawdowns | | Check budget utilization | View utilization bar on Project List or Summary Card | Project List / Detail | | Approve a budget line | Open project → Budget tab → click ✓ on pending line | Project Detail → Budget | | View budget vs actual chart | Open project → Budget tab → see chart | Project Detail → Budget | | Change project status | Edit Project → Status field | Project Detail → Edit | *** ## Project List The project list page provides an overview of all projects with filtering and search capabilities. ### Summary Statistics At the top of the page, four summary cards display: * **Total Projects** — count of all projects * **Active Projects** — currently active projects * **Total Budget** — combined budget across all projects * **Total Spent** — combined expenses across all projects ### Filtering & Search * **Search:** Type a project name or number to filter results * **Status Filter:** Filter by Planning, Active, On Hold, Closed, or Cancelled * **Type Filter:** Filter by Grant, Contract, Program, or Internal * **Funding Source:** Filter by federal, state, local, foundation, corporate, private, or other ### Project Table Each row displays: * Project number and name * Type and status badges * Funding source * Budget utilization bar (color-coded: green \< 80%, yellow 80-95%, red > 95%) * Total budget and spent amounts Click any row to open the project detail view. *** ## Creating a New Project 1. Click **New Project** on the project list page 2. Fill in the required fields: * **Project Name** — descriptive name for the project * **Project Type** — Grant, Contract, Program, or Internal * **Status** — typically starts as Planning * **Start Date / End Date** — project period 3. Optionally fill in funding details: * **Funding Source** — where the funding comes from * **Total Award Amount** — total grant/contract award * **Project Manager / Director** — staff assignments 4. Click **Save** **Result:** A project number is automatically generated (e.g., PRJ-2026-001) based on your organization's settings. *** ## Project Detail View The project detail page uses a tabbed layout with five sections. ### Overview Tab Displays at-a-glance project information: * **Project Details Card** — name, number, type, status, dates, manager, director * **Funding Info Card** — funding source, award amount, grant/contract identifiers * **Summary Metrics** — four metric cards: * Total Award * Total Budget (allocated budget lines) * Spent (with utilization bar) * Balance (budget minus expenses, plus revenue total) *** ### Budget Tab Manage budget lines and visualize budget vs. actual spending. #### Adding a Budget Line 1. Click **Add Budget Line** 2. Fill in: * **Category** — e.g., Personnel, Supplies, Equipment, Travel, Contractual, Other * **Description** — what this budget line covers * **Budgeted Amount** — planned spend * **Period** — fiscal period this applies to 3. Click **Save** #### Budget vs. Actual (BVA) Chart A bar chart compares budgeted amounts against actual spending by category. This updates automatically as expenses are allocated. #### Utilization Tracking The utilization bar shows percentage of budget consumed: * **Green (\< 80%):** On track * **Yellow (80–95%):** Approaching limit * **Red (> 95%):** Over or near budget #### Approving Budget Lines Users with `fa.projects.admin` permission can approve budget lines to lock them from further editing. *** ### Expenses Tab Allocate costs to the project from General Ledger journal entries. #### Allocating an Expense 1. Click **Add Expense** 2. Fill in: * **Amount** — expense amount * **Expense Date** — when the cost was incurred * **Category** — matches budget categories * **Description** — details of the expense * **Allocation Percentage** — portion allocated to this project (default 100%) * **Is Indirect Cost** — toggle for IDC expenses 3. Click **Save** #### IDC (Indirect Cost) Support When "Is Indirect Cost" is enabled, the system applies the project's configured IDC rate to calculate the indirect cost allocation automatically. IDC rates are managed per project and period under FA Settings. *** ### Revenue Tab Record revenue earned or received against the project. #### Recording Revenue 1. Click **Add Revenue** 2. Fill in: * **Amount** — revenue amount * **Revenue Date** — when recognized * **Description** — revenue source details * **Is Drawdown Related** — toggle if this revenue came from a grant drawdown 3. Click **Save** Revenue entries linked to drawdowns help reconcile drawdown receipts against recognized revenue. *** ### Drawdowns Tab Manage grant drawdown requests and receipts through a complete workflow. #### Creating a Drawdown Request 1. Click **New Request** 2. Fill in: * **Drawdown Amount** — funds being requested * **Drawdown Date** — target date for funds * **Request Date** — date of the request * **Description** — purpose of the drawdown * **Request Notes** — internal notes 3. Click **Submit Request** #### Drawdown Status Workflow | Status | Meaning | | ------------- | ------------------------------------ | | **Pending** | Request created, awaiting submission | | **Submitted** | Sent to funding agency | | **Approved** | Agency approved the request | | **Rejected** | Agency denied the request | #### Recording a Receipt When funds arrive, record a receipt against the drawdown: 1. Click **Record Receipt** on an approved drawdown 2. Enter the received amount and receipt date 3. Click **Save** #### Alert Banners The **DrawdownAlertBanner** appears when the remaining drawdown balance falls below the configured threshold (set in FA Settings → Projects → Drawdown Alert Threshold). This warns users to submit new drawdown requests before funds run out. *** ## Project Statuses | Status | Description | Impact | | ------------- | ------------------- | -------------------------------------------------------- | | **Planning** | Project setup phase | Full editing allowed; no financial transactions expected | | **Active** | Project is underway | All financial operations enabled | | **On Hold** | Temporarily paused | Existing data viewable; new transactions discouraged | | **Closed** | Project completed | Read-only; no new transactions | | **Cancelled** | Project abandoned | Read-only; no new transactions | *** ## Tips and Best Practices ### Do's * ✅ Set up budget lines before allocating expenses to ensure accurate BVA tracking * ✅ Review the utilization bar regularly — address yellow warnings before they turn red * ✅ Configure the drawdown alert threshold in FA Settings to get early warnings * ✅ Use allocation percentages for shared costs across multiple projects * ✅ Record drawdown receipts promptly to maintain accurate cash position ### Don'ts * ❌ Don't skip budget approval — unapproved lines may not appear in compliance reports * ❌ Don't allocate expenses to Closed or Cancelled projects * ❌ Don't ignore drawdown alert banners — they indicate funding gaps ### Common Mistakes | Mistake | What Happens | Fix | | ------------------------------------------------------ | ---------------------------------------------------------------- | ---------------------------------------------------------------- | | Allocating expenses to Closed/Cancelled projects | Allocation silently fails or corrupts reports | Check project status before allocating; use Active projects only | | Skipping budget approval | Unapproved lines excluded from compliance reports and BVA charts | Always approve budget lines before allocating expenses | | Not setting up budget lines before allocating expenses | BVA chart shows no comparison; utilization bar shows 0% | Create and approve budget lines first, then allocate | | Using wrong cost type (direct vs indirect) | IDC calculations incorrect; compliance reporting inaccurate | Verify cost type matches the nature of the expense | | Ignoring drawdown alert banners | Funding gaps grow unnoticed; cash flow issues | Submit drawdown requests promptly when alerts appear | | Creating duplicate drawdown requests | Over-draws from award; reconciliation issues | Check pending requests before creating new ones | *** ## Troubleshooting ### Common Issues #### Issue: "I can't create a new project" **Cause:** You lack the `fa.projects.create` permission. **Solution:** Contact your organization administrator to request the permission. #### Issue: "Utilization bar shows red but budget isn't exceeded" **Cause:** The threshold is 95%, so the bar turns red when spending reaches 95% of budget. **Solution:** This is expected behavior — it's an early warning. Review whether additional budget is needed. #### Issue: "Drawdown alert won't dismiss" **Cause:** The alert is based on remaining balance vs. the configured threshold and recalculates on each page load. **Solution:** Submit a new drawdown request or adjust the threshold in FA Settings → Projects. *** ## Glossary | Term | Definition | | ------------------------- | ----------------------------------------------------------------------------- | | **BVA** | Budget vs. Actual — comparison of planned budget to actual spending | | **Drawdown** | A request to withdraw funds from a grant award | | **IDC** | Indirect Cost Rate — overhead costs allocated as a percentage of direct costs | | **Utilization** | Percentage of budget consumed by expenses (spent ÷ budget × 100) | | **Award Amount** | Total funding granted by the funding agency | | **Allocation Percentage** | Portion of a shared expense assigned to a specific project | *** ## Related Documentation * **Specification:** `specs/fa/specs/FA-13-project-accounting-grant-tracking.md` * **Implementation Log:** `specs/fa/IMPLEMENTATION_LOG.md` (FA-13 section) * **FA Module Overview:** `specs/fa/README.md` *** **Last Updated:** 2026-02-09\ **Questions?** Contact your organization administrator. # Projects Source: https://docs.encoreos.io/fa/projects List, create, view, and edit project accounting records for grants and cost tracking with tabbed budget, expenses, revenue, and drawdown views. The Projects page at `/fa/projects` lists all project records for the organization with status, type, and funding-source filters, plus summary statistics. Projects list surface with project accounting records ## Overview The route `/fa/projects` loads `ProjectsPage` (permission: `fa.projects.view`). The page fetches the project list via `useProjectList` with filters for status, type, funding source, and a text search query. Four summary `StatCard` components are shown at the top. A **New Project** button navigates to `/fa/projects/new`. Each row links to `/fa/projects/:id`. ## Who it's for Requires permission `fa.projects.view`. Creating projects requires `fa.projects.create`. Editing requires `fa.projects.edit`. ## Before you start No setup required. Filters are optional. When creating, know the project name, type, and funding source. ## Steps 1. Navigate to **Finance & Revenue → Projects**, or go to `/fa/projects`. 2. Optionally filter by status, type, or funding source, or use the search input. 3. Review the summary stat cards. 4. Select a project row to open its detail page. 5. Select **New Project** to create a new project. ## Key concepts **Filters** — Status, project type, funding source type, and free-text search. All are optional. **`StatCard`** — Summary statistics displayed at the top of the list; exact labels should be confirmed with an SME. ## Viewing a project The Project Details page at `/fa/projects/:id` provides a tabbed view of a project record, covering overview, budget, expenses, revenue, and drawdowns. The route `/fa/projects/:id` loads `ProjectDetailPage` (permission: `fa.projects.view`). The page has five tabs: `overview`, `budget`, `expenses`, `revenue`, and `drawdowns`. Tab state is URL-synced via `useTabUrlState`. Summary cards display key project metrics. `DrawdownAlertBanner` appears when `useDrawdownAlert` returns an alert for the project. An **Edit** button navigates to `/fa/projects/:id/edit`. Key concepts: * **Project tabs** — `overview`, `budget`, `expenses`, `revenue`, `drawdowns`. Each is lazily loaded and URL-synced. * **Drawdown alert** — `DrawdownAlertBanner` is conditionally rendered based on `useDrawdownAlert` output for the project. * **`ProjectStatusBadge` / `ProjectTypeBadge`** — Visual indicators for project status and type, derived from `toProjectStatus` and `toProjectType` utilities. 1. Navigate to **Finance & Revenue → Projects** and select a project, or go to `/fa/projects/:id`. 2. Review the overview summary cards: project status, type, and key figures. 3. Navigate to the **Budget**, **Expenses**, **Revenue**, or **Drawdowns** tabs as needed. 4. If a drawdown alert banner is visible, review and address the flagged condition. 5. Use **Edit** to modify project details. ## Creating a project The New Project page at `/fa/projects/new` provides a form for creating a project record used in project accounting, grant tracking, or other cost-allocation workflows. Requires permission `fa.projects.create`. `ProjectCreatePage` wraps `ProjectForm`. On submit, `useCreateProject` is called with the form data plus `organization_id`. On success the user is redirected to `/fa/projects/:id`. Key concepts: * **Project** — A cost-accounting container that can track budgets, expenses, revenue, and grant drawdowns. The `project_number` is assigned by the system. 1. Navigate to **Finance & Revenue → Projects** and select **New Project**, or go to `/fa/projects/new`. 2. Complete the project form fields as required. 3. Select **Create** (or the form submit action). 4. On success you are taken to the new project's detail page. ## Editing a project The Edit Project page at `/fa/projects/:id/edit` provides a form for updating an existing project record's details. Requires permission `fa.projects.edit`. `ProjectEditPage` fetches the project via `useProject(id, organizationId)` and renders `ProjectForm` pre-populated with current values. On submit, `useUpdateProject` is called with the updated data. On success, the page navigates to `/fa/projects/:id`. The breadcrumb displays `Edit `. Key concepts: | Concept | Description | | ------------------ | -------------------------------------------------------------- | | `ProjectForm` | Shared form component for project create and edit | | `useProject` | Hook fetching the existing project, scoped to `organizationId` | | `useUpdateProject` | Mutation hook persisting project edits | | `ProjectInsert` | TypeScript type defining the project data shape | 1. Navigate to **Finance → Projects** (`/fa/projects`) and open the project record. 2. Click **Edit** to go to `/fa/projects/:id/edit`. 3. Update the relevant project fields in `ProjectForm`. 4. Click **Save** to submit via `useUpdateProject`. 5. Click **Cancel** to return to the project detail without saving. 6. On success, the page navigates to the project detail. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/ProjectsPage.tsx * src/cores/fa/pages/ProjectDetailPage.tsx * src/cores/fa/pages/ProjectCreatePage.tsx * src/cores/fa/pages/ProjectEditPage.tsx * src/cores/fa/hooks/useProjects.ts * src/cores/fa/hooks/useGrantDrawdowns.ts * src/cores/fa/types/projects.ts * src/cores/fa/components/projects/ProjectForm.tsx # Purchase Orders User Guide Source: https://docs.encoreos.io/fa/purchase-orders-guide The Purchase Orders module manages the full procurement lifecycle: creating POs, tracking approvals, receiving goods, performing 3-way matching against invoice… Purchase orders surface listing purchase orders ## Overview The Purchase Orders module manages the full procurement lifecycle: creating POs, tracking approvals, receiving goods, performing 3-way matching against invoices, and amending approved orders. **Navigation:** Finance & Accounting → Purchase Orders (`/fa/purchase-orders`) ## Permissions | Permission | Description | | ---------------------------- | -------------------------- | | `fa.purchase_orders.view` | View PO list and details | | `fa.purchase_orders.create` | Create new purchase orders | | `fa.purchase_orders.edit` | Edit draft POs | | `fa.purchase_orders.approve` | Approve/reject POs | | `fa.purchase_orders.receive` | Record goods receipts | ## Creating a Purchase Order 1. Click **New Purchase Order** from the PO list page 2. Select a **Vendor** from your AP vendor list 3. Set the **PO Date** and optional **Expected Delivery Date** 4. Add **Line Items**: * Select a GL account for each line * Enter description, quantity, and unit price * Optionally assign fund, department, and program * Extended amount calculates automatically 5. Review the **PO Total** at the bottom 6. Click **Save as Draft** or **Submit for Approval** ## Line Items Each PO line includes: * **GL Account** – Expense account to charge * **Description** – What is being purchased * **Quantity** and **Unit Price** – Drives the extended amount * **Fund / Department / Program** – Optional dimensional coding * **Received Quantity** – Updated when goods are received (read-only on PO) ## Approval Workflow POs follow a status workflow: ``` Draft → Pending Approval → Approved → Partially Received → Fully Received → Closed ↘ Rejected (can be revised and resubmitted) ``` * **Draft**: Editable by the creator * **Pending Approval**: Locked for editing; awaiting approver action * **Approved**: Ready for goods receipt; can be amended * **Rejected**: Returned to creator with comments; can be revised ## Goods Receipt Once a PO is approved, record goods as they arrive: 1. Open the approved PO 2. Click **Record Receipt** 3. Enter the **received quantity** for each line 4. Partial receipts are supported — receive what arrived and record the rest later 5. The PO status updates to **Partially Received** or **Fully Received** based on quantities ## 3-Way Matching When a vendor invoice (AP bill) references a PO, the system performs 3-way matching: | Match Point | Comparison | | ------------------ | ---------------------------------------------------- | | **PO vs Invoice** | Quantities and prices match the original PO | | **PO vs Receipt** | Invoiced quantities don't exceed received quantities | | **Price Variance** | Flags differences between PO price and invoice price | Match results display as badges: ✅ **Matched**, ⚠️ **Variance**, ❌ **Mismatch** ## PO Amendments Approved POs can be amended to increase quantities: 1. Open an approved PO 2. Click **Amend PO** 3. Select lines to modify and enter new quantities 4. Provide a **reason** for the amendment 5. Submit the amendment **Rules:** * Only **approved** POs can be amended * Lines with **receipts** cannot be amended * Only **quantity increases** are allowed (to decrease, cancel the line) * If the new total exceeds \$10,000 (and the old total was below), **re-approval** is required * All amendments are tracked in the **Amendment History** tab ## Tips * Use the **filter bar** to find POs by status, vendor, or date range * PO numbers are auto-generated with a configurable prefix * Link POs to AP invoices for complete procure-to-pay tracking * Review the **Amendment History** before approving re-submitted POs ## Viewing a purchase order The Purchase Order Details page at `/fa/purchase-orders/:id` shows the full PO record including header fields, line items, receipt history, amendment history, three-way match summary, and approval actions. `PurchaseOrderDetailPage` loads the PO via `usePurchaseOrder`. A PDF can be generated and downloaded via `usePurchaseOrderPdf`. Components include `POAmendmentDialog`, `POAmendmentHistory`, `POApprovalActions`, `POReceiptHistory`, `POStatusBadge`, and `ThreeWayMatchSummary`. Line items show account, fund, department, quantity, unit price, and extended amount. **Key concepts:** * **Three-way match** — Links the PO (`fa_purchase_orders`), goods receipt (`fa_po_receipts`), and vendor bill to confirm delivery and invoicing alignment. * **Amendment** — A tracked change to a posted or approved PO, recorded via `POAmendmentDialog`. * **`POStatusBadge`** — Visual status indicator for the PO lifecycle. 1. Navigate to **Finance & Revenue → Payables & Expenses → Purchase Orders** and select a PO, or go to `/fa/purchase-orders/:id`. 2. Review the PO header: vendor, date, status, and totals. 3. Review the line items table. 4. Use **Download PDF** to generate a PO document. 5. Review the **Three-Way Match Summary** to check receipt and billing status. 6. Use approval actions or the amendment dialog as appropriate. ## Creating a purchase order The New Purchase Order page at `/fa/purchase-orders/new` creates a purchase order with header details and line items linked to accounts, funds, departments, programs, and delivery sites. `PurchaseOrderCreatePage` fetches active vendors, accounts (`fa_accounts`), funds (`fa_funds`), departments (`pf_departments`), programs (`fa_programs`), and sites (`pf_sites`) for the current organization. A `po_number` is pre-generated via `useGeneratePONumber`. On submit, `useCreatePurchaseOrder` saves the PO and lines, then redirects to `/fa/purchase-orders/:id`. **Key concepts:** * **Extended amount** — Calculated per line as quantity × unit price; stored in `fa_purchase_order_lines.extended_amount`. * **Three-way match** — POs link to receipts and bills; matching status is visible on the detail page via `ThreeWayMatchSummary`. Before you start: identify the vendor (must be active in the system); know the line items (account, quantity, unit price, and any fund/department/program allocations); the system generates the PO number automatically. 1. Navigate to **Finance & Revenue → Payables & Expenses → Purchase Orders** and select **New Purchase Order**, or go to `/fa/purchase-orders/new`. 2. Select the vendor and complete delivery information. 3. Add one or more line items with account, quantity, and unit price. Optionally assign fund, department, program, and site. 4. Review the pre-generated PO number in the header. 5. Select **Submit**. The PO is saved and you are redirected to the PO detail page. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/PurchaseOrderDetailPage.tsx * src/cores/fa/pages/PurchaseOrderCreatePage.tsx * src/cores/fa/hooks/usePurchaseOrders.ts * src/cores/fa/hooks/usePurchaseOrderPdf.ts * src/cores/fa/components/POForm.tsx # Ramp Corporate Card Integration — Admin Guide Source: https://docs.encoreos.io/fa/ramp-integration-admin-guide This guide covers the setup and administration of the Ramp corporate card integration in Encore OS. The integration syncs card transactions from your Ramp acco… ## Overview This guide covers the setup and administration of the Ramp corporate card integration in Encore OS. The integration syncs card transactions from your Ramp account for GL coding and financial reporting. ## Quick Reference | I need to… | Pattern | Location | | ------------------------------ | --------------------------------------------------------------- | ------------------------------------------------------------------------------ | | Enable Ramp integration | Finance settings toggle + save | [Setup → 1. Enable the Integration](#1-enable-the-integration) | | Configure credentials | App credentials in secure secrets storage | [Setup → 2. Configure Ramp API Credentials](#2-configure-ramp-api-credentials) | | Grant Ramp permissions | RBAC assignment for `fa.ramp.*` keys | [Permissions](#permissions) | | Validate sync data persistence | `fa_ramp_connections` + `fa_card_transactions` integrity checks | [Database Tables](#database-tables) | ## Decision Trees ### Connect vs reconnect 1. No org connection exists → use **Connect Ramp**. 2. Connection status `expired`/`error` → use **Reconnect**. 3. Connected but stale sync → run **Sync Now** and verify webhook/scheduler health. ## Pattern Library * **Webhook verification pattern:** HMAC-SHA256 with timing-safe signature comparison. * **Token storage pattern:** encrypted token columns scoped by `organization_id`. * **Sync idempotency pattern:** unique key `(organization_id, ramp_transaction_id)` to prevent duplicates. ## Common Mistakes | Mistake | Impact | Fix | | ----------------------------- | ---------------------------------------------- | ------------------------------------------------- | | Missing `RAMP_WEBHOOK_SECRET` | Webhook events rejected or unsafe verification | Configure secret and validate signature checks | | Ignoring token expiry states | Sync failures after credential expiration | Monitor connection status and reconnect promptly | | Not honoring API rate limits | Sync throttling/timeouts | Use bounded retries and backoff for 429 responses | ## Pre-Flight Checklist * [ ] App credentials and webhook secret configured. * [ ] Webhook endpoint URL and events configured in Ramp portal. * [ ] Required `fa.ramp.*` permissions assigned to intended roles. * [ ] Initial sync tested and transaction upserts verified. *** ## Setup ### 1. Enable the Integration 1. Navigate to **Finance → Settings → Integrations**. 2. Toggle **Enable Ramp Integration** to ON. 3. Save settings. ### 2. Configure Ramp API Credentials The following secrets must be configured in your Supabase project (Settings → Cloud → Secrets): | Secret Name | Description | | --------------------- | ---------------------------------------------- | | `RAMP_CLIENT_ID` | OAuth client ID from Ramp Developer Portal | | `RAMP_CLIENT_SECRET` | OAuth client secret from Ramp Developer Portal | | `RAMP_API_KEY` | API key for direct API calls | | `RAMP_WEBHOOK_SECRET` | HMAC signing secret for webhook verification | ### 3. Connect Your Ramp Account 1. Navigate to **Finance → Corporate Card Transactions**. 2. Click **Connect Ramp** on the connection card. 3. Complete the OAuth authorization flow in the Ramp popup. 4. Upon success, the connection status changes to **Connected**. ### 4. Configure Webhook (Optional) To receive real-time transaction updates: 1. In the Ramp Developer Portal, add a webhook endpoint: * **URL:** `https:///functions/v1/ramp-webhook` * **Events:** `TRANSACTION_CREATED`, `TRANSACTION_UPDATED` 2. Copy the webhook signing secret to the `RAMP_WEBHOOK_SECRET` Supabase secret. *** ## Permissions | Permission Key | Description | Default Roles | | --------------------------- | ------------------------ | -------------------------- | | `fa.ramp.view_transactions` | View card transactions | org\_admin, manager, staff | | `fa.ramp.sync` | Trigger transaction sync | org\_admin, manager | | `fa.ramp.connect` | Connect/disconnect Ramp | org\_admin | | `fa.ramp.settings` | Manage Ramp settings | org\_admin | All permissions are auto-granted to `org_admin` via the RBAC trigger. *** ## Database Tables ### `fa_ramp_connections` Stores OAuth connection state per organization. One row per org (enforced by unique constraint on `organization_id`). | Column | Description | | ------------------------- | ----------------------------------------------- | | `status` | `connected`, `disconnected`, `expired`, `error` | | `access_token_encrypted` | Encrypted OAuth access token | | `refresh_token_encrypted` | Encrypted OAuth refresh token | | `last_synced_at` | Timestamp of last successful sync | ### `fa_card_transactions` Stores synced Ramp transactions. Unique constraint on `(organization_id, ramp_transaction_id)` prevents duplicates. *** ## Security * **Multi-tenant isolation:** RLS policies ensure organizations can only see their own data. * **Token storage:** OAuth tokens are stored encrypted; never logged or returned to the client. * **Webhook verification:** HMAC-SHA256 with timing-safe comparison prevents forged events. * **Edge function auth:** All management endpoints require valid JWT + permission checks. *** ## Troubleshooting | Issue | Resolution | | --------------------------- | ------------------------------------------------------------ | | Connection shows "Expired" | Click **Reconnect** to re-authorize with Ramp | | Sync fails with timeout | Ramp API rate limit (200 req/10s); retry after a few seconds | | Webhook events not arriving | Verify webhook URL and secret in Ramp Developer Portal | | Missing transactions | Click **Sync Now**; check date range filters | *** ## Architecture ```text theme={null} User → CardTransactionsPage → useRampSync hook → supabase.functions.invoke('ramp-sync') → Edge Function: JWT auth + permission check → Ramp API (cursor-based pagination) → Upsert fa_card_transactions ``` For detailed technical documentation, see the FA-30 spec and integration doc. # Ramp Corporate Card Integration — User Guide Source: https://docs.encoreos.io/fa/ramp-integration-user-guide The Ramp integration allows your organization to sync corporate card transactions from Ramp directly into Encore OS. Once connected, transactions appear on the… Ramp integration connection surface ## Overview The Ramp integration allows your organization to sync corporate card transactions from Ramp directly into Encore OS. Once connected, transactions appear on the **Corporate Card Transactions** page where you can assign GL accounts and vendors for accurate financial reporting. ## Quick Reference | I need to… | Pattern | Location | | ----------------------- | ----------------------------------------------- | ------------------------------------------------------------------ | | View Ramp transactions | Corporate Card Transactions list page | [Viewing Transactions](#viewing-transactions) | | Trigger manual sync | **Sync Now** action on connection card | [Syncing Transactions](#syncing-transactions) | | Fix missing data | Validate permissions + retry sync + review logs | [Troubleshooting](#troubleshooting) | | Categorize transactions | Row-level GL/vendor assignment | [Assigning GL Accounts & Vendors](#assigning-gl-accounts--vendors) | ## Decision Trees ### Missing vs duplicate transactions 1. Transactions missing? * Verify permissions and integration enabled. * Run **Sync Now** and confirm last sync timestamp updated. 2. Transactions duplicated? * Refresh view and confirm filter settings. * Contact admin to verify sync idempotency/connector health. ## Pattern Library * **Connection card pattern:** integration status + sync action entry point. * **Editable row pattern:** in-table GL/vendor assignment with autosave. * **Filter pattern:** merchant/status/date filtering before reconciliation. ## Common Mistakes | Mistake | Impact | Fix | | -------------------------------------------- | ------------------------ | --------------------------------------------------------- | | Expecting transaction amounts to be editable | Reconciliation confusion | Amounts are source-of-truth from Ramp; only map GL/vendor | | Running sync without required permission | Sync action unavailable | Request `fa.ramp.sync` permission | | Assuming auto-sync is immediate | Perceived missing data | Confirm last sync time and run manual sync if needed | ## Pre-Flight Checklist * [ ] Integration is enabled for your organization. * [ ] You have required `fa.ramp.view_transactions` (and `fa.ramp.sync` for manual sync). * [ ] Connection status is Connected/healthy. * [ ] Last sync timestamp reviewed before reconciliation. *** ## Getting Started ### Prerequisites * Your organization must have Ramp integration enabled (contact your admin). * You need the `fa.ramp.view_transactions` permission to view transactions. * You need the `fa.ramp.sync` permission to trigger syncs. ### Viewing Transactions 1. Navigate to **Finance → Corporate Card Transactions**. 2. The transaction list shows all synced Ramp transactions including: * **Merchant** — The vendor/merchant name from Ramp. * **Amount** — Transaction amount and currency. * **Date** — When the transaction occurred. * **Status** — Current transaction status (completed, pending, declined). * **GL Account** — Assigned general ledger account (editable). * **Vendor** — Linked vendor record (editable). ### Filtering Transactions Use the search bar to filter transactions by merchant name. Additional filters for status and date range are available above the table. ### Assigning GL Accounts & Vendors 1. Click on a transaction row. 2. Select the appropriate **GL Account** from the dropdown. 3. Optionally link a **Vendor** record. 4. Changes save automatically. ### Syncing Transactions * Click the **Sync Now** button on the connection card to pull the latest transactions from Ramp. * Syncs fetch new transactions since the last sync and update existing ones. * Automatic syncs can be configured by your administrator. *** ## FAQ **Q: How often are transactions synced?** A: Manual sync is available anytime. Automatic sync frequency is configured by your admin. **Q: Why don't I see the Corporate Card Transactions page?** A: Your admin needs to enable Ramp integration in Finance Settings and grant you the appropriate permissions. **Q: Can I edit transaction amounts?** A: No. Transaction amounts come directly from Ramp and cannot be modified. You can only assign GL accounts and vendors. ## Troubleshooting | Issue | What to check | | --------------------------------------------- | ----------------------------------------------------------------------------- | | Cannot see transactions page | Verify integration is enabled and you have `fa.ramp.view_transactions` | | Sync button missing/disabled | Verify `fa.ramp.sync` permission and connection health | | Sync completed but transactions still missing | Retry **Sync Now**, review sync timestamp and filters, then escalate to admin | | Duplicate-looking rows | Clear filters/sorts and ask admin to review sync logs/idempotency behavior | *** ## Support Contact your system administrator for access issues or reach out to the Encore OS support team. # Receipts Source: https://docs.encoreos.io/fa/receipts View, record, and manage goods receipts against purchase orders with receipt number, status, line quantities, and partial delivery support. The route `/fa/receipts` is a legacy redirect to `/fa/payables?tab=receipts`. The goods receipts list is now part of the Payables & Expenses hub. ## Overview Navigating to `/fa/receipts` triggers a ``. The Receipts tab within the hub loads `ReceiptsPage` lazily, which fetches all PO receipts for the organization via `usePOReceiptList` and renders them in a `ReceiptsTable`. The page header shows "Goods Receipts" with a description of tracking received inventory from purchase orders. ## Who it's for Access follows your organization's role and module configuration. ## Before you start No setup required for viewing. To record a new receipt, identify the purchase order number or ID for the goods being received, and know the quantity received for each relevant line item. ## Steps 1. Navigate to **Finance & Revenue → Payables & Expenses → Receipts**, or go to `/fa/payables?tab=receipts`. 2. Review the list of goods receipts. 3. Select a receipt to view its details at `/fa/receipts/:id`. 4. To record a new receipt, go to the relevant purchase order and use the receipt recording action. ## Viewing a receipt The Receipt Details page at `/fa/receipts/:id` displays the full record for a goods receipt, including its receipt number, status, date, linked purchase order, vendor, and received line items. `ReceiptDetailPage` fetches data via `usePOReceipt`. The page uses `useEntityBreadcrumb` to display the `receipt_number` in the breadcrumb. The layout shows a receipt information card and a notes card, with a `ReceiptStatusBadge` for status display. Line details are shown via `POReceiptLineDetail` type fields. Key concepts: * **`receipt_number`** — The system-assigned identifier for the receipt, shown in the breadcrumb. * **`ReceiptStatusBadge`** — Visual indicator for the receipt's status. 1. Navigate from a purchase order's receipt history or from **Finance & Revenue → Payables & Expenses → Receipts** and select a receipt. 2. Review the receipt header: receipt number, status, date, and PO reference. 3. Review the line items showing quantities received. 4. Review any notes attached to the receipt. ## Creating a receipt The New Receipt page at `/fa/receipts/new` lets users record physical receipt of goods against an existing purchase order, entering quantities received per line item. `ReceiptCreatePage` requires a `poId` query parameter; if the purchase order is not found, an empty state is shown with a back navigation. When a valid PO is loaded, the form shows the PO number, vendor name, and all PO lines available for receipt. On submit, `useCreatePOReceipt` calls the `fa_create_receipt` RPC (a `SECURITY DEFINER` database function that validates PO and line ownership for the organization). On success, the user is redirected to `/fa/purchase-orders/:poId`. Key concepts: * **`fa_create_receipt` RPC** — A server-side function that validates the PO and all line IDs belong to the current organization before inserting receipt records. This enforces tenant isolation at the database layer. * **Partial receipt** — Each line may have a quantity received less than the PO line quantity, supporting partial delivery scenarios. 1. Navigate to the purchase order detail page and use the **Record Receipt** action (which should pass `?poId=`), or go directly to `/fa/receipts/new?poId=`. 2. The form displays the PO number, vendor, and available lines. 3. Enter the quantity received for each line. 4. Add a receipt date and optional notes. 5. Select **Submit**. The receipt is created and you are returned to the purchase order detail page. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/ReceiptsPage.tsx * src/cores/fa/pages/PayablesHubPage.tsx * src/cores/fa/pages/ReceiptDetailPage.tsx * src/cores/fa/pages/ReceiptCreatePage.tsx * src/cores/fa/hooks/usePOReceipts.ts * src/cores/fa/hooks/usePOReceiptLines.ts # Receivables Hub Source: https://docs.encoreos.io/fa/receivables-hub Accounts receivable hub combining customers, invoices, payments, credit memos, and payment plans in Finance & Revenue. The Receivables Hub at `/fa/receivables` is the Accounts Receivable hub, a tabbed interface that consolidates customers, invoices, customer payments, credit memos, and payment plans. ## Overview The route `/fa/receivables` loads `ReceivablesHubPage`. It uses URL-synced tab state (`?tab=`) with five tabs: `customers`, `invoices`, `payments`, `credit-memos`, and `payment-plans`. Each tab lazily loads its corresponding page component. The hub is rendered in a grid of 5 equal tab triggers. Legacy routes (`/fa/customers`, `/fa/invoices`, `/fa/customer-payments`, `/fa/credit-memos`, `/fa/payment-plans`) all redirect here with the appropriate tab. ## Who it's for Access follows your organization's role and module configuration. ## Before you start No setup required. Navigate directly to the hub and select the relevant tab. ## Steps 1. Navigate to **Finance & Revenue → Accounts Receivable**, or go to `/fa/receivables`. 2. Select the appropriate tab: * **Customers** — View and manage customer records. * **Invoices** — View and create invoices. * **Payments** — View and create customer payments. * **Credit Memos** — View and create credit memos. * **Payment Plans** — View and manage payment plans. 3. Use action buttons within each tab to create or manage records. ## Key concepts **URL-synced tabs** — Active tab is persisted in the URL as `?tab=`. **Legacy redirects** — Routes such as `/fa/customers` and `/fa/invoices` redirect here with the appropriate tab pre-selected. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/ReceivablesHubPage.tsx * src/cores/fa/pages/CustomersPage.tsx * src/cores/fa/pages/InvoicesPage.tsx # Recognition by Period Source: https://docs.encoreos.io/fa/recognition-period Report aggregating revenue recognition entries by fiscal period or recognition month in Finance & Revenue. The Recognition by Period report at `/fa/revenue-reports/recognition-by-period` aggregates revenue recognition entries by fiscal period (or by recognition month when no fiscal period is assigned), with optional date-range filtering. ## Overview The route `/fa/revenue-reports/recognition-by-period` loads `RecognitionByPeriodReportPage` (permission: `fa.revenue_recognitions.view`). Data is fetched via `useRecognitionByPeriodReport` with optional `startDate` and `endDate` filters. Rows are aggregated from `fa_revenue_recognitions`. A grand total is computed from all rows. Reversal entries net against their period's totals per the component description. ## Who it's for Requires permission `fa.revenue_recognitions.view`. ## Before you start * Revenue recognition entries must exist in the system. * Optionally prepare a date range to filter the report. ## Steps 1. Navigate to **Finance & Revenue → Revenue Reports → Recognition by Period**, or go to `/fa/revenue-reports/recognition-by-period`. 2. Optionally set a start date and end date to filter the results. 3. Review the aggregated totals by period in the table. 4. Review the grand total row at the bottom. ## Key concepts **Recognition period** — Fiscal period or recognition month used to bucket recognition entries. **Reversal netting** — Reversal entries are netted against the originating period's totals rather than shown separately. **Grand total** — Sum of `total_recognized` across all rows in the filtered result set. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/RecognitionByPeriodReportPage.tsx * src/cores/fa/hooks/useRevenueReports.ts # Reconciliation Report Source: https://docs.encoreos.io/fa/reconciliation-report View and export a printable reconciliation report for a completed bank reconciliation in Finance & Revenue. The Reconciliation Report page at `/fa/reconciliations/:id/report` displays a formatted reconciliation summary for a specific reconciliation session with CSV and PDF export options. ## Overview The route `/fa/reconciliations/:id/report` loads `ReconciliationReportPage`. Data is fetched via `useReconciliationReport`, which returns a `reconciliation` object and associated report data. The page breadcrumb is set to "Reconciliation Report: \[bank account name]" via `useEntityBreadcrumb`. Export utilities `exportReconciliationToCSV` and `exportReconciliationToPDF` are provided as action buttons. ## Who it's for Access follows your organization's role and module configuration. ## Before you start * The reconciliation must already exist. Navigate from the reconciliation detail page. ## Steps 1. From the Reconciliation Detail page (`/fa/reconciliations/:id`), navigate to the report (a Reports tab or link). 2. Or go directly to `/fa/reconciliations/:id/report`. 3. Review the reconciliation report content. 4. Select **Export CSV** or **Export PDF** to download the report. ## Key concepts **`exportReconciliationToCSV` / `exportReconciliationToPDF`** — Utility functions from `src/cores/fa/utils/reconciliationExport.ts` that generate downloadable report files client-side. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/ReconciliationReportPage.tsx * src/cores/fa/hooks/useReconciliationReport.ts * src/cores/fa/utils/reconciliationExport.ts # Reconciliation Wizard Source: https://docs.encoreos.io/fa/reconciliation-wizard Guided multi-step wizard for starting a new bank reconciliation session in Finance & Revenue. The Reconciliation Wizard at `/fa/reconciliations/wizard` provides a guided multi-step workflow for creating a new bank reconciliation session. This is the same wizard component as `/fa/reconciliations/new`. ## Overview Both `/fa/reconciliations/wizard` and `/fa/reconciliations/new` route to `BankReconciliationWizardPage` (permission: `fa.reconciliations.create`). The wizard uses `ModuleWizardRenderer` from the PF wizard infrastructure. It collects `bank_account_id`, `reconciliation_date`, `statement_id`, and period dates. A progress bar tracks wizard progress. Completion requires `difference` within \$0.01 of zero. On completion, `useWizardCompletion` finalizes the session. ## Who it's for Requires permission `fa.reconciliations.create`. ## Before you start * The bank statement for the period must be imported. * The target fiscal period should not be locked. * Confirm the bank account and statement period dates. ## Steps 1. Navigate to **Finance & Revenue → Banking** and select **Start Reconciliation**, or go to `/fa/reconciliations/wizard`. 2. Complete each wizard step: select bank account, set reconciliation date, and link a bank statement. 3. Work through matching and verification steps as prompted. 4. When the balance difference is within \$0.01, the **Complete** action becomes enabled. 5. Confirm completion to finalize the reconciliation. ## Key concepts **Difference enforcement** — `Math.abs(difference) > 0.01` blocks completion; the wizard shows the difference amount in the error if this threshold is exceeded. **`BankReconciliationWizardData`** — The data type collected by the wizard includes `bank_account_id`, `reconciliation_date`, `period_start_date`, `period_end_date`, and `statement_id`. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/wizards/bank-reconciliation/BankReconciliationWizardPage.tsx * src/cores/fa/wizards/bank-reconciliation/hooks/useWizardCompletion.ts * src/cores/fa/wizards/bank-reconciliation/types.ts # Reconciliations Source: https://docs.encoreos.io/fa/reconciliations Start, view, and complete bank reconciliation sessions with matched/unmatched transactions, adjustments, and PDF/Excel exports in Finance & Revenue. The route `/fa/reconciliations` is a legacy redirect to `/fa/banking?tab=reconciliations`. The bank reconciliation list is now part of the Banking hub. ## Overview Navigating to `/fa/reconciliations` triggers a ``. The Reconciliations tab in the Banking hub loads `ReconciliationsPage` lazily. That page lists bank reconciliation records with columns for date, bank account, status, and difference amount. `ReconciliationDashboard` and `ReconciliationStatusBadge` are used. ## Who it's for Access follows your organization's role and module configuration. Starting a new reconciliation requires permission `fa.reconciliations.create`. ## Before you start No setup required for viewing. To start a new reconciliation, confirm the bank statement for the period has been imported, ensure the fiscal period is not already locked, and have the bank account and statement end date ready. ## Steps 1. Navigate to **Finance & Revenue → Banking → Reconciliations**, or go to `/fa/banking?tab=reconciliations`. 2. Review the list of reconciliation records. 3. Select a reconciliation to view its details at `/fa/reconciliations/:id`. 4. Select **New Reconciliation** to start a new session at `/fa/reconciliations/new`. ## Viewing a reconciliation The Reconciliation Details page at `/fa/reconciliations/:id` provides a full view of a bank reconciliation session including matched transactions, unmatched items, adjustments, and the completion workflow. `ReconciliationDetailPage` fetches data via `useBankReconciliation` and `useReconciliationMatches`. The page displays a `ReconciliationSummaryCard` and three tabs: matched transactions (`MatchedTransactionsTab`), unmatched transactions (`UnmatchedTransactionsTab`), and a reports tab (`ReconciliationReportsTab`). An `ReconciliationAdjustmentsTable` shows adjusting entries. PDF and Excel exports are available via `useReconciliationPdfExport` and `useReconciliationExcelExport`. A **Complete Reconciliation** action is guarded by `CompletionConfirmationDialog` and uses `PermissionGate`. Key concepts: * **Summary card** — `ReconciliationSummaryCard` shows the balance difference. * **Completion guard** — Completion is wrapped in `PermissionGate` and a `CompletionConfirmationDialog`. * **Exports** — PDF via `useReconciliationPdfExport` and Excel via `useReconciliationExcelExport`. 1. Navigate to **Finance & Revenue → Banking → Reconciliations** and select a reconciliation, or go to `/fa/reconciliations/:id`. 2. Review the summary card showing the bank account and reconciliation status. 3. Work through the **Unmatched Transactions** tab to match items. 4. Review the **Matched Transactions** tab for confirmation. 5. Review and add any adjustments. 6. When the reconciliation is balanced, use the **Complete** action and confirm in the dialog. ## Creating a reconciliation The New Reconciliation page at `/fa/reconciliations/new` launches the Bank Reconciliation Wizard, a multi-step guided workflow for starting a new bank reconciliation session. Requires permission `fa.reconciliations.create`. Both `/fa/reconciliations/new` and `/fa/reconciliations/wizard` resolve to the same component: `BankReconciliationWizardPage`. The wizard collects `bank_account_id`, `reconciliation_date`, `statement_id`, and period dates. Completion requires a zero (or near-zero) difference before the `useWizardCompletion` hook finalizes the session. Progress is tracked with a progress bar. Key concepts: * **Difference threshold** — The wizard enforces `Math.abs(difference) > 0.01` as the completion guard; a difference above this amount prevents finalization. * **Wizard session** — A `reconciliation_id` is established during the wizard flow and referenced by `useWizardCompletion` to finalize the record. 1. Navigate to **Finance & Revenue → Banking → Reconciliations** and select **New Reconciliation**, or go to `/fa/reconciliations/new`. 2. Follow the wizard steps, selecting the bank account, reconciliation date, and bank statement. 3. Match transactions and resolve discrepancies as guided. 4. When the difference reaches zero (within \$0.01), the wizard enables the **Complete** action. 5. Confirm completion. The reconciliation session is finalized and you are redirected. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/ReconciliationsPage.tsx * src/cores/fa/pages/BankingHubPage.tsx * src/cores/fa/pages/ReconciliationDetailPage.tsx * src/cores/fa/wizards/bank-reconciliation/BankReconciliationWizardPage.tsx * src/cores/fa/wizards/bank-reconciliation/hooks/useWizardCompletion.ts * src/cores/fa/wizards/bank-reconciliation/types.ts * src/cores/fa/hooks/useBankReconciliations.ts * src/cores/fa/hooks/useReconciliationMatches.ts # Recurring Entries Source: https://docs.encoreos.io/fa/recurring-entries The /fa/recurring-entries route redirects to the General Ledger hub with the Recurring Entries tab active in Finance & Revenue. The route `/fa/recurring-entries` is a legacy redirect to `/fa/ledger?tab=recurring-entries`. The recurring entry template list is now part of the General Ledger hub. ## Overview Navigating to `/fa/recurring-entries` triggers a ``. The Recurring Entries tab in the GL hub loads `RecurringEntriesPage` lazily. That page manages recurring entry templates (`fa_recurring_entries`) with full CRUD plus a **Generate** action that invokes `useGenerateFromRecurring`. A dialog (`RecurringEntryDialog`) is used for create/edit. Keyboard shortcuts are supported via `useFAKeyboardShortcuts`. ## Who it's for Access follows your organization's role and module configuration. ## Before you start No setup required. ## Steps 1. Navigate to **Finance & Revenue → General Ledger → Recurring Entries**, or go to `/fa/ledger?tab=recurring-entries`. 2. Review existing recurring entry templates. 3. Select **New** (or use the keyboard shortcut) to create a template. 4. Select **Generate** on a template to produce journal entries from it. 5. Edit or delete templates as needed. ## Key concepts **Recurring entry template** — A `fa_recurring_entries` record that defines the journal entry pattern and schedule for automatic generation. **Generate action** — `useGenerateFromRecurring` creates actual journal entries from the template on demand. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/RecurringEntriesPage.tsx * src/cores/fa/hooks/useRecurringEntries.ts * src/cores/fa/pages/LedgerHubPage.tsx # Recurring Invoices Source: https://docs.encoreos.io/fa/recurring-invoices Manage recurring invoice templates that automatically generate invoices on schedule; create, view, edit, pause, resume, and delete templates. The Recurring Invoices page (`/fa/recurring-invoices`) lists all recurring invoice templates for the organization and provides controls to activate, pause, or delete them. ## Overview The Recurring Invoices list displays all recurring invoice templates scoped to the current organization. The page shows summary statistics — active template count, paused template count, and the next scheduled generation date — followed by a filterable table. Templates can be filtered by status (`active`, `paused`, or all) and by customer. Each template row links to the recurring invoice detail page. ## Who it's for Requires permission: `fa.recurring_invoices.view`. Creating requires `fa.recurring_invoices.create`. Pausing, deleting, and editing require `fa.recurring_invoices.edit`. ## Before you start * At least one customer must exist in the system. * You need `fa.recurring_invoices.view` permission to view the list. * For creating, identify the customer and invoice amount/line items, and determine the billing frequency and start date. ## Steps **View recurring invoice templates** 1. Navigate to `/fa/recurring-invoices`. 2. Use the Status and Customer filters to narrow the list. 3. Click a template row to open its detail page. **Create a new recurring invoice template** 1. Click **New** (requires `fa.recurring_invoices.create`). 2. Complete the creation form and save. **Pause or resume a template** 1. Locate the template in the list. 2. Use the Pause or Resume action to toggle the template status. ## Key concepts * **Template**: A recurring invoice definition that drives automatic invoice generation on a scheduled basis. * **Active / Paused**: Status values observed in code (`status === 'active'` or `'paused'`). * **Next generation date**: The `next_generation_date` field on each template; the list sorts by this field to surface the soonest upcoming invoice. ## Viewing a recurring invoice The Recurring Invoice Details page at `/fa/recurring-invoices/:id` shows the full detail of a recurring invoice template with status management actions, generation history, and schedule information. Requires permission `fa.recurring_invoices.view`. `RecurringInvoiceDetailPage` fetches data via `useRecurringInvoice` and `useRecurringInvoiceHistory`. The page shows the template header (customer, schedule, amounts) with `StatusBadge` for status (`active`, `paused`, `completed`, `cancelled`). Tabbed views are available. Available actions: **Pause/Resume** (`usePauseRecurringInvoice`), **Generate Now** (`useGenerateFromRecurringInvoice`), **Edit** (links to `/fa/recurring-invoices/:id/edit`), and **Delete** (`useDeleteRecurringInvoice`). The delete action is guarded by an `AlertDialog`. Key concepts: * **Template statuses** — `active`, `paused`, `completed`, `cancelled`. * **`next_generation_date`** — The scheduled date for the next automatic invoice generation. * **Generation history** — Records of invoices previously generated from this template, loaded via `useRecurringInvoiceHistory`. 1. Navigate to **Finance & Revenue → Recurring Invoices** and select a template, or go to `/fa/recurring-invoices/:id`. 2. Review the template header: customer, frequency, next generation date, and status. 3. Use **Pause** to suspend automatic generation, or **Resume** to reactivate. 4. Use **Generate Now** to manually trigger invoice creation from this template. 5. Review the generation history tab. 6. Use **Edit** to modify the template, or **Delete** to remove it (confirmation required). ## Creating a recurring invoice The New Recurring Invoice page at `/fa/recurring-invoices/new` launches the Recurring Invoice Setup Wizard. Requires permission `fa.recurring_invoices.create`. `RecurringInvoiceCreatePage` renders `RecurringInvoiceSetupWizardPage` in `create` mode. The wizard is part of the PF-41 wizard infrastructure. Key concepts: * **Recurring invoice template** — A configuration record stored in `fa_recurring_invoices` (inferred) that controls automatic invoice generation. Tracked by `next_generation_date`. * **Wizard mode** — The wizard host accepts a `mode` prop; this route passes `"create"`. 1. Navigate to **Finance & Revenue → Recurring Invoices** and select **New Recurring Invoice**, or go to `/fa/recurring-invoices/new`. 2. Follow the setup wizard steps to define customer, amounts, frequency, and start date. 3. Complete the wizard. A recurring invoice template is created with `status: active` (or as set by the wizard). 4. The template appears in the Recurring Invoices list and will generate invoices on schedule. ## Editing a recurring invoice The Edit Recurring Invoice page at `/fa/recurring-invoices/:id/edit` opens the recurring invoice setup wizard in edit mode. Requires permission `fa.recurring_invoices.edit`. `RecurringInvoiceEditPage` reads `:id` from the route via `useParams` and renders `RecurringInvoiceSetupWizardPage` in `mode="edit"`. The wizard hydrates its draft from the existing recurring invoice record. The breadcrumb label is set to the invoice ID prefix or "Edit Recurring Invoice". Key concepts: | Concept | Description | | --------------------------------- | -------------------------------------------------------------------------------------------------- | | `RecurringInvoiceSetupWizardPage` | Multi-step wizard for recurring invoice configuration; `mode="edit"` hydrates from existing record | | `mode` prop | Controls whether the wizard creates a new record or updates an existing one | 1. Navigate to the Receivables Hub (`/fa/receivables`) or `/fa/recurring-invoices` and open the recurring invoice. 2. Click **Edit** to go to `/fa/recurring-invoices/:id/edit`. 3. The setup wizard opens in edit mode, pre-populated with the existing record. 4. Update the relevant steps in the wizard. 5. Submit to save changes. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/RecurringInvoicesPage.tsx * src/cores/fa/pages/RecurringInvoiceDetailPage.tsx * src/cores/fa/pages/RecurringInvoiceCreatePage.tsx * src/cores/fa/pages/RecurringInvoiceEditPage.tsx * src/cores/fa/hooks/useRecurringInvoices.ts * src/cores/fa/wizards/recurring-invoice-setup/RecurringInvoiceSetupWizardPage.tsx * src/cores/fa/components/RecurringInvoicesTable.tsx # Finance & Revenue Report Builder Source: https://docs.encoreos.io/fa/report-builder Create and manage custom financial report definitions with configurable fields, filters, and layout for the Finance & Revenue core. The Report Builder page (`/fa/reports/builder`) lists saved custom report definitions and provides controls to create new ones, run existing reports, and view version history. ## Overview The Report Builder displays existing custom report definitions for the organization. Supported report types observed in code include: `trial_balance`, `balance_sheet`, `stmt_activities`, `cash_flow`, `functional_expenses`, `grant_compliance`, `cash_flow_direct`, and `functional_expenses_matrix`. Each definition card shows its name and report type. From a card the user can run the report (navigating to the appropriate report page with pre-filled filters), open the version history sheet, or delete the definition. A new definition can be created via the **New Report** button. ## Who it's for Requires permission: `fa.custom-report-builder.view`. ## Before you start * You need the `fa.custom-report-builder.view` permission to access this page. * Ensure at least one fiscal period exists so that reports can be generated. ## Steps **View saved report definitions** 1. Navigate to `/fa/reports/builder`. 2. Browse the definition cards. Each card displays the report name and type. **Create a new report definition** 1. Click **New Report**. 2. Follow the builder form to select a report type, fields, and filters. 3. Save the definition. **Run a saved report** 1. Locate the definition card. 2. Click **Run** to navigate to the underlying report page with the saved filters applied. **View version history** 1. Locate the definition card. 2. Open the version history sheet to see prior saved versions. ## Key concepts * **Report definition**: A saved configuration object (`useReportDefinitions` hook) that stores report type, filters, and column configuration. * **Report type labels**: Human-readable names mapped in the component — e.g., `stmt_activities` → "Statement of Activities". ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/CustomReportBuilderPage.tsx * src/cores/fa/hooks/useReportDefinitions.ts * src/cores/fa/components/ReportVersionHistorySheet.tsx # Finance & Revenue Report History Source: https://docs.encoreos.io/fa/report-history View and download previously generated financial reports from the execution history log in the Finance & Revenue core. The Report History page (`/fa/reports/runs`) shows all past report executions with their status and download links. ## Overview The Report History page displays an execution log of all previously generated reports for the current organization. Users can filter by report type and status. The page renders the results in a `ReportRunsTable` component. Supported report types include: `trial_balance`, `balance_sheet`, `stmt_activities`, `cash_flow`, `functional_expenses`, and `grant_compliance`. Status values include `completed`, `failed`, `pending`, and `running`. ## Who it's for Access follows your organization's role and module configuration. ## Before you start * Reports must have been generated previously to appear here. ## Steps **View report history** 1. Navigate to `/fa/reports/runs`. 2. Optionally filter by **Report Type** and **Status**. 3. Browse the execution history table. **Download a completed report** 1. Locate the completed run in the table. 2. Use the available download action on that row. ## Key concepts * **Run**: A single execution of a report definition, tracked via the `useReportRuns` hook and `fa_report_runs` table. * **Status**: Observed values are `completed`, `failed`, `pending`, `running`. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/ReportRunsPage.tsx * src/cores/fa/hooks/useReportRuns.ts * src/cores/fa/components/ReportRunsTable.tsx # Report Schedules Source: https://docs.encoreos.io/fa/report-schedules Configure automated report generation and delivery schedules for the Finance & Revenue core. The Report Schedules page (`/fa/reports/schedules`) lets administrators configure automated report generation schedules and manage their enabled/disabled state. ## Overview The page displays all report schedules for the current organization with summary cards showing the active schedule count and total schedule count. Each schedule is rendered as a `ReportScheduleCard` component showing its configuration and current enabled state. Schedules can be toggled on/off, edited, run immediately, or deleted. New schedules are created via a `ReportScheduleDialog`. The page uses `useReportSchedules`, `useDeleteReportSchedule`, `useToggleSchedule`, and `useRunReportNow` hooks backed by the `fa_report_schedules` table. ## Who it's for Access follows your organization's role and module configuration. Access to schedule management actions may be controlled within the dialog or card components. ## Before you start * You need to know which report type to schedule. * At least one report type must be available in the system. ## Steps **Create a report schedule** 1. Navigate to `/fa/reports/schedules`. 2. Click **Create Schedule**. 3. Complete the schedule form (report type, recurrence, delivery options). 4. Save. **Enable or disable a schedule** 1. Locate the schedule card. 2. Toggle its enabled state. **Run a schedule immediately** 1. Locate the schedule card. 2. Click the run-now action to trigger an immediate report run. **Edit or delete a schedule** 1. Locate the schedule card. 2. Use the edit or delete action. ## Key concepts * **Schedule**: A `fa_report_schedules` row with an `is_enabled` flag and recurrence configuration. * **Active schedules**: Schedules where `is_enabled` is `true`. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/ReportSchedulesPage.tsx * src/cores/fa/hooks/useReportSchedules.ts * src/cores/fa/components/ReportScheduleCard.tsx * src/cores/fa/components/ReportScheduleDialog.tsx # Revenue Contracts Source: https://docs.encoreos.io/fa/revenue-contracts Manage multi-period revenue agreement master records for the Finance & Revenue core. The Revenue Contracts page (`/fa/revenue-contracts`) lists and manages master records for multi-period revenue agreements. ## Overview The Revenue Contracts page displays a searchable table of revenue contracts for the current organization. Users can search by contract number or customer name. New contracts and edits use a `RevenueContractDialog`. The page uses the `useRevenueContractList` hook backed by the `fa_revenue_contracts` table. Contract creation requires the `FA_PERMISSIONS.REVENUE_CONTRACTS_MANAGE` permission, surfaced via a `PermissionGate` component. ## Who it's for Requires permission: `fa.revenue_contracts.view`. To create or edit contracts: `fa.revenue_contracts.manage` (as referenced by `FA_PERMISSIONS.REVENUE_CONTRACTS_MANAGE`). ## Before you start * At least one customer must exist. * You need `fa.revenue_contracts.view` to access the page. ## Steps **View revenue contracts** 1. Navigate to `/fa/revenue-contracts`. 2. Use the search field to filter by contract number or customer name. 3. Browse the results table. **Create a new revenue contract** 1. Click **New contract** (requires `fa.revenue_contracts.manage`). 2. Complete the contract form in the dialog. 3. Save. **Edit an existing contract** 1. Click the row edit action. 2. Modify fields in the dialog. 3. Save. ## Key concepts * **Revenue contract**: A `fa_revenue_contracts` row that acts as the parent record for one or more revenue schedules. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/RevenueContractsPage.tsx * src/cores/fa/hooks/useRevenueContracts.ts * src/cores/fa/components/RevenueContractDialog.tsx # Revenue Recognitions Source: https://docs.encoreos.io/fa/revenue-recognitions View and manage the append-only ledger of recognized revenue entries per fiscal period in the Finance & Revenue core. The Revenue Recognitions page (`/fa/revenue-recognitions`) displays the append-only ledger of recognized revenue entries per fiscal period and provides controls to process new recognitions or reverse existing ones. ## Overview The Revenue Recognitions page shows all recognition entries for the current organization. The list is backed by the `useRevenueRecognitionList` hook and the `fa_revenue_recognitions` table. The page is append-only. The **Process recognition** button opens a `ProcessRecognitionDialog` (requires `FA_PERMISSIONS.REVENUE_RECOGNITIONS_PROCESS`). Individual entries can be reversed via a `ReverseRecognitionDialog`. Table columns observed in code include: Date, Schedule, and Period window. ## Who it's for Requires permission: `fa.revenue_recognitions.view`. To process new recognitions: the permission referenced by `FA_PERMISSIONS.REVENUE_RECOGNITIONS_PROCESS`. ## Before you start * At least one revenue schedule must exist. * An open fiscal period is required to process a recognition. * You need `fa.revenue_recognitions.view` to access the page. ## Steps **View recognition entries** 1. Navigate to `/fa/revenue-recognitions`. 2. Browse the recognitions table. **Process a new recognition** 1. Click **Process recognition** (requires `FA_PERMISSIONS.REVENUE_RECOGNITIONS_PROCESS`). 2. Complete the dialog to select a fiscal period. 3. Confirm. **Reverse an entry** 1. Locate the entry in the table. 2. Use the reverse action to open the `ReverseRecognitionDialog`. 3. Confirm. ## Key concepts * **Recognition entry**: An append-only `fa_revenue_recognitions` row tied to a schedule and a fiscal period window. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/RevenueRecognitionsPage.tsx * src/cores/fa/hooks/useRevenueRecognitions.ts * src/cores/fa/components/ProcessRecognitionDialog.tsx * src/cores/fa/components/ReverseRecognitionDialog.tsx # Revenue Reports Source: https://docs.encoreos.io/fa/revenue-reports Tabbed hub for recognition trends, deferred balances, and contract progress reports in the Finance & Revenue core. The Revenue Reports page (`/fa/revenue-reports`) is a tabbed hub that consolidates recognition, deferred balance, and contract progress reports. ## Overview The Revenue Reports hub renders three lazy-loaded sub-reports in URL-synced tabs: | Tab key | Label | | ----------------------- | --------------------- | | `recognition-by-period` | Recognition by Period | | `deferred-balance` | Deferred Balance | | `contract-progress` | Contract Progress | The active tab is reflected in the URL via the `tab` query parameter. A seed test data button is visible to users with `FA_PERMISSIONS.REVENUE_CONTRACTS_MANAGE`. ## Who it's for Requires permission: `fa.revenue_recognitions.view`. ## Before you start * Revenue contracts and schedules should exist to populate report data. * You need `fa.revenue_recognitions.view` to access the page. ## Steps **Navigate between report tabs** 1. Navigate to `/fa/revenue-reports`. 2. Click a tab — Recognition by Period, Deferred Balance, or Contract Progress. 3. The URL `tab` parameter updates automatically. **Link to a specific tab** * Append `?tab=deferred-balance` (or other valid tab key) to the URL. ## Key concepts * **Tab state**: Managed by `useTabUrlState`; default tab is `recognition-by-period`. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/RevenueReportsHubPage.tsx * src/cores/fa/pages/RecognitionByPeriodReportPage.tsx * src/cores/fa/pages/DeferredBalanceReportPage.tsx * src/cores/fa/pages/ContractProgressReportPage.tsx # Revenue Schedules Source: https://docs.encoreos.io/fa/revenue-schedules Manage period-by-period revenue recognition plans linked to contracts or invoices in the Finance & Revenue core. The Revenue Schedules page (`/fa/revenue-schedules`) lists and manages revenue schedules that define the period-by-period plan for recognizing revenue from contracts or invoices. Revenue schedules surface listing active recognition schedules ## Overview The Revenue Schedules page shows all schedules for the current organization. Schedules can be created via a guided wizard (`RevenueScheduleWizardDialog`) or a quick-add dialog (`RevenueScheduleDialog`). Existing schedules can be edited, modified (with a `ModifyRevenueScheduleDialog`), or have milestones managed (`RevenueMilestonesDialog`). The page uses `useRevenueScheduleList` and `useRevenueScheduleModificationList` hooks backed by `fa_revenue_schedules` and related tables. Manage actions require `FA_PERMISSIONS.REVENUE_SCHEDULES_MANAGE`. ## Who it's for Requires permission: `fa.revenue_schedules.view`. To create or modify schedules: the permission referenced by `FA_PERMISSIONS.REVENUE_SCHEDULES_MANAGE`. ## Before you start * At least one revenue contract or invoice must exist to source a schedule. * You need `fa.revenue_schedules.view` to access the page. ## Steps **Create a revenue schedule (guided)** 1. Navigate to `/fa/revenue-schedules`. 2. Click **Guided new schedule** to open the wizard. 3. Follow the wizard steps and save. **Create a revenue schedule (quick add)** 1. Click **Quick add**. 2. Complete the dialog form and save. **Edit an existing schedule** 1. Locate the schedule in the table. 2. Click the edit action and update fields in the dialog. **Modify or add milestones** 1. Locate the schedule. 2. Use the modify or milestones action to open the respective dialog. ## Key concepts * **Revenue schedule**: A `fa_revenue_schedules` row that drives period-by-period recognition. * **Modification**: A logged change to an existing schedule tracked in `fa_revenue_schedule_modifications`. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/RevenueSchedulesPage.tsx * src/cores/fa/hooks/useRevenueSchedules.ts * src/cores/fa/wizards/revenue-schedule-creation/RevenueScheduleWizardDialog.tsx * src/cores/fa/components/RevenueScheduleDialog.tsx # Rolling Forecasts Source: https://docs.encoreos.io/fa/rolling-forecasts Manage financial forecasts with rolling horizons in the Finance & Revenue core. The Rolling Forecasts route (`/fa/rolling-forecasts`) redirects to the Budgeting Hub (`/fa/budgeting?tab=forecasts`). Individual forecast detail, creation, and edit pages are accessed from that hub. ## Overview Navigating directly to `/fa/rolling-forecasts` redirects to `/fa/budgeting?tab=forecasts` (a `` redirect defined in `src/routes/fa.tsx`). The Budgeting Hub tab renders the `RollingForecastsPage` component which lists forecasts filterable by status and sharing level. Detail, creation, and edit routes (`/fa/rolling-forecasts/new`, `/fa/rolling-forecasts/:id`, `/fa/rolling-forecasts/:id/edit`) remain as standalone pages. ## Who it's for To view rolling forecasts: `fa.rolling_forecasts.view`. To create: `fa.rolling_forecasts.create`. To edit: `fa.rolling_forecasts.edit`. ## Before you start * You need `fa.rolling_forecasts.view` to view the forecasts tab. ## Steps **Access rolling forecasts** 1. Navigate to `/fa/budgeting` and select the **Forecasts** tab, or use `/fa/rolling-forecasts` which redirects automatically. 2. Use Status and Sharing Level filters to narrow the list. 3. Click a forecast row to open its detail page. **Create a new forecast** 1. Click **New Forecast** (requires `fa.rolling_forecasts.create`). 2. Complete the creation form. ## Key concepts * **Forecast**: A `fa_rolling_forecasts`-backed record with `status` and `sharingLevel` attributes. * **Status / Sharing Level**: Observed filter dimensions in `RollingForecastsPage` using types `ForecastStatus` and `ForecastSharingLevel`. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/RollingForecastsPage.tsx * src/cores/fa/hooks/useRollingForecasts.ts * src/cores/fa/hooks/useRollingForecastMutation.ts # Rolling Forecasts & Scenario Planning — User Guide Source: https://docs.encoreos.io/fa/rolling-forecasts-scenarios-guide This module extends the budgeting system with rolling forecasts, budget scenarios, and reusable budget templates. It enables dynamic financial planning through… ## Overview This module extends the budgeting system with rolling forecasts, budget scenarios, and reusable budget templates. It enables dynamic financial planning through what-if analysis and continuous forecast updates. **Navigation:** Finance & Accounting → Budgeting → Rolling Forecasts / Scenarios / Templates ## Rolling Forecasts ### What is a Rolling Forecast? A rolling forecast extends beyond the traditional annual budget by continuously projecting financial performance over a fixed horizon (e.g., 12 or 18 months). As each month completes, the forecast rolls forward, always looking ahead the same number of periods. ### Creating a Rolling Forecast 1. Navigate to **Rolling Forecasts** and click **New Forecast** 2. Enter a **Forecast Name** and optional description 3. Select the **Source Budget** to base the forecast on 4. Set the **Forecast Horizon** (number of forward periods) 5. Choose a **Sharing Level** (private, department, organization-wide) 6. Click **Create** ### Editing Forecast Lines 1. Open a forecast to view its line items (inherited from the source budget) 2. Adjust amounts for each period based on latest information: * Updated revenue projections * Known expense changes * New initiatives or cuts 3. Changes are saved automatically ### Version History Every time you save significant changes, a **version snapshot** is created: * View all versions in the **Version History** tab * Each version captures the complete line\_snapshot at that point in time * Compare versions to see how the forecast evolved * Versions track who made changes and when ### Forecast Statuses | Status | Description | | ------------ | -------------------------------------- | | **Draft** | Work in progress, not yet shared | | **Active** | Current working forecast | | **Archived** | Historical reference, no longer active | ## Budget Scenarios ### What are Budget Scenarios? Budget scenarios let you create alternative versions of a budget to model different outcomes. Common scenario types include best case, worst case, and custom projections. ### Creating a Scenario 1. Navigate to **Budget Scenarios** and click **New Scenario** 2. Enter a **Scenario Name** and description 3. Select the **Base Budget** to start from 4. Choose a **Scenario Type**: * **Best Case** – Optimistic projections * **Worst Case** – Conservative/defensive projections * **Custom** – Any other modeling purpose 5. Click **Create** ### Editing Scenario Lines The scenario inherits all lines from the base budget. Modify them to reflect the scenario's assumptions: 1. Open the scenario detail page 2. Use the **Line Editor** to adjust amounts by account, fund, department, or program 3. Each line shows the **base budget amount** alongside your **scenario amount** for easy comparison 4. Add notes to document your assumptions ### Comparing Scenarios The **Scenario Comparison View** shows scenarios side by side: 1. Select 2+ scenarios to compare 2. View differences by account, department, or program 3. Variance columns show absolute and percentage differences 4. Use this to present options to leadership for budget decisions ### Scenario Statuses | Status | Description | | ------------ | ---------------------------- | | **Draft** | Being developed | | **Active** | Approved for use in planning | | **Archived** | No longer in active use | ## Budget Templates ### What are Budget Templates? Budget templates provide reusable starting points for creating budgets. They define a standard set of line items, accounts, and dimensional coding that can be applied to new budgets. ### Creating a Template 1. Navigate to **Budget Templates** and click **New Template** 2. Enter a **Template Name** and description 3. Define **template lines**: * GL Account assignments * Default amounts (optional – can be zero as placeholders) * Fund, department, and program coding 4. Save the template ### Template Library The **Template Library** provides a browsable collection of templates: * **Organization templates** – Created by your team * Filter by category or search by name * Preview template structure before applying * Click **Use Template** to create a new budget from a template ### Applying a Template 1. When creating a new budget, choose **Start from Template** 2. Select a template from the library 3. The new budget is pre-populated with the template's line items 4. Adjust amounts and coding as needed for the specific fiscal period ## Tips & Best Practices * **Update forecasts monthly** – Roll forward after each month-end close * **Limit active scenarios** – 3-4 scenarios per budget cycle is optimal * **Document assumptions** – Use notes on scenario lines to explain changes * **Archive old versions** – Keep the workspace clean by archiving completed forecasts * **Standardize with templates** – Create templates for recurring budget patterns (e.g., department operating budgets, grant budgets) * **Use comparison views** – Present scenario comparisons to stakeholders for informed decision-making ## Glossary | Term | Definition | | -------------------- | ---------------------------------------------------------------- | | **Rolling Forecast** | A continuously updated financial projection over a fixed horizon | | **Forecast Horizon** | The number of forward periods the forecast covers | | **Version Snapshot** | A point-in-time capture of all forecast line amounts | | **Budget Scenario** | An alternative budget model exploring different assumptions | | **Base Budget** | The approved budget a scenario or forecast is derived from | | **Template** | A reusable budget structure with predefined accounts and coding | # Run Depreciation Source: https://docs.encoreos.io/fa/run-depreciation Depreciation run functionality is accessed from the Assets Hub depreciation tab in the Finance & Revenue core. The route `/fa/depreciation/run` has no matching entry in the application router. The "Run Depreciation" action is available from within the Depreciation Schedule view, which is accessed via `/fa/assets?tab=depreciation`. ## Overview No standalone route for `/fa/depreciation/run` exists in `src/routes/fa.tsx`. The path `/fa/depreciation` redirects to `/fa/assets?tab=depreciation`. The depreciation run action is surfaced via the **Run Depreciation** button on the `DepreciationSchedulePage` component, which opens a `RunDepreciationDialog`. This page is accessible through the Assets Hub at `/fa/assets?tab=depreciation`. ## Who it's for The Assets Hub depreciation tab uses `fa.assets.view`. ## Before you start * Access the depreciation run via the Assets Hub: navigate to `/fa/assets` and select the **Depreciation** tab. ## Steps **Trigger a depreciation run** 1. Navigate to `/fa/assets?tab=depreciation`. 2. Apply optional filters (month, status, search) to review the current depreciation schedule. 3. Click **Run Depreciation** to open the run dialog. 4. Confirm the run. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/DepreciationSchedulePage.tsx * src/cores/fa/hooks/useAssetDepreciation.ts * src/cores/fa/components/RunDepreciationDialog.tsx # Statement of Activities Source: https://docs.encoreos.io/fa/statement-activities Generate and export the Statement of Activities financial report filtered by fiscal period and fund in the Finance & Revenue core. The Statement of Activities page (`/fa/reports/statement-activities`) renders a financial report with period and fund filters plus export and save capabilities. ## Overview The Statement of Activities page provides a financial report filtered by fiscal period and fund. It uses `useStatementOfActivities` to fetch report data and `useFiscalPeriods` / `useFunds` for filter options. The page includes `ReportExportButtons` for export and a `SaveReportDialog` that saves the report definition as a `stmt_activities` type via `useSaveReportDefinition`. ## Who it's for Access follows your organization's role and module configuration. ## Before you start * At least one fiscal period should exist to generate meaningful data. * Optional: fund records can be used to filter the report. ## Steps **Generate the Statement of Activities** 1. Navigate to `/fa/reports/statement-activities`. 2. Select a **Fiscal Period** from the filter. 3. Optionally select a **Fund** filter. 4. The report renders automatically. **Export the report** 1. Use the **Export** buttons to download in the available format(s). **Save the report definition** 1. Click **Save Report**. 2. Enter a name and optional description. 3. Choose whether to mark as default. 4. Save. ## Key concepts * **Statement of Activities**: A financial statement report type identified as `stmt_activities` in the platform's report definition system. * **Fund filter**: Optional scoping by `fa_funds` record. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/StatementOfActivitiesPage.tsx * src/cores/fa/hooks/useStatementOfActivities.ts * src/cores/fa/components/StatementOfActivitiesReport.tsx * src/cores/fa/components/ReportExportButtons.tsx # Tax Compliance Dashboard Source: https://docs.encoreos.io/fa/tax-compliance-dashboard Admin overview of tax years, 1099 forms, W-2 forms, and tax distributions for the Finance & Revenue core. The Tax Compliance Dashboard (`/fa/tax/dashboard`) provides administrators with an overview of tax years, 1099 forms, W-2 forms, and tax distributions. ## Overview The Tax Compliance Dashboard loads summary counts from four data sources: tax years (`useTaxYearsList`), 1099 forms (`use1099FormsList`), W-2 forms (`useW2FormsList`), and tax distributions (`useTaxDistributionsList`). The component checks `fa.tax.admin` permission and renders an "Access Denied" card if the user lacks it. A `CreateTaxYearDialog` is available for creating new tax years. Navigation links from this dashboard connect to `/fa/tax/years`, `/fa/tax/forms/1099`, `/fa/tax/forms/w2`, `/fa/tax/reports`, and `/fa/tax/distributions`. ## Who it's for Requires permission: `fa.tax.admin`. ## Before you start * You need `fa.tax.admin` to access this dashboard. ## Steps **View the tax compliance overview** 1. Navigate to `/fa/tax/dashboard`. 2. Review the summary counts for tax years, forms, and distributions. **Create a new tax year** 1. Click the create tax year action to open `CreateTaxYearDialog`. 2. Enter the year details and save. **Navigate to a specific tax section** 1. Use the navigation links on the dashboard to go to Tax Years, 1099 Forms, W-2 Forms, Tax Reports, or Tax Distributions. ## Key concepts * **Tax year**: A `fa_tax_years` row representing an annual tax filing period. * **Access control**: This route is gated on `fa.tax.admin`; non-admin users see an access denied message. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/TaxComplianceDashboard.tsx * src/cores/fa/hooks/useTaxYears.ts * src/cores/fa/hooks/use1099Forms.ts * src/cores/fa/hooks/useW2Forms.ts * src/cores/fa/hooks/useTaxDistributions.ts # Tax Distribution Source: https://docs.encoreos.io/fa/tax-distribution View and manage tax form distributions to recipients in the Finance & Revenue core. The Tax Distribution page (`/fa/tax/distributions`) lists tax form distribution records and their delivery status. ## Overview The Tax Distribution page shows a `DataTable` of distribution records from `useTaxDistributionsList` backed by the `fa_tax_distributions` table. Observed columns include: Form Type (`document_type`), Recipient (`recipient_name`), Distribution Method, Status, and Sent Date. Clicking a row in the Form Type column navigates to `/fa/tax/distributions/:id`, which does not have a defined route in the current router — this may be a planned route. Requires `fa.tax.distribute` permission as defined in the route guard. ## Who it's for Requires permission: `fa.tax.distribute`. ## Before you start * Tax forms (1099s or W-2s) must exist and be associated with tax years. * You need `fa.tax.distribute` to access this page. ## Steps **View tax distributions** 1. Navigate to `/fa/tax/distributions`. 2. Review the distributions table. **Review a distribution record** 1. Click the Form Type link in a row. ## Key concepts * **Distribution**: A `fa_tax_distributions` row representing the delivery of a tax form to a recipient. * **Status**: Observed as `pending` when not yet sent. * **Distribution method**: Observed default is `mail`. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/TaxDistributionPage.tsx * src/cores/fa/hooks/useTaxDistributions.ts * src/cores/fa/types/tax.ts # Tax Reporting & Compliance — Admin Guide Source: https://docs.encoreos.io/fa/tax-reporting-admin-guide This guide helps administrators configure and oversee tax reporting and compliance workflows. > **Purpose:** This guide helps administrators configure and oversee tax reporting and compliance workflows. *** ## Overview The Tax Reporting module manages the complete lifecycle of federal tax forms (1099-NEC, W-2, Form 941, Form 940) and state-level tax reporting. As an admin, you control tax year creation, form generation workflows, and delivery tracking. ### Key Responsibilities * Create and manage tax years * Configure tax module settings * Oversee form generation and filing * Monitor document distribution * Ensure IRS Pub 1075 compliance ### Who Should Use This Guide | Role | Responsibility | | ---------------------- | ------------------------------------------------- | | Accounting Manager | Create tax years, approve forms for filing | | Tax Compliance Officer | Monitor generation workflows, track distributions | | Organization Admin | Configure settings, manage permissions | *** ## Permissions Required To administer Tax Reporting, you need: | Permission | Description | | ------------------- | --------------------------------------------------------- | | `fa.tax.view` | View-only access to tax module data | | `fa.tax.admin` | Full access to tax module settings and all forms | | `fa.tax.generate` | Authority to generate 1099, W-2, and quarterly reports | | `fa.tax.distribute` | Authority to distribute generated forms (1099, W-2, etc.) | | `fa.tax.close` | Authority to close tax years (irreversible) | > **Note:** Contact your Organization Administrator if you don't have these permissions. *** ## Getting Started ### Accessing Tax Reporting 1. Navigate to **Finance & Revenue** in the main menu 2. Click **Tax Compliance** 3. You'll see the Tax Compliance Dashboard ### Understanding the Dashboard | Card | Purpose | | ----------------- | ----------------------------------------------------------------- | | **Tax Years** | Current and historical tax years; view status and filing progress | | **1099 Forms** | Vendor tax forms; track generation and distribution | | **W-2 Forms** | Employee tax forms; synchronized with payroll | | **Tax Reports** | 941, 940, and state-level quarterly/annual filings | | **Distributions** | Email delivery tracking for all tax documents | *** ## Tax Year Management ### Creating a Tax Year 1. On the Dashboard, click **Tax Years** 2. Click **+ New Tax Year** 3. Enter the **tax year** (e.g., 2025) 4. Select **start date** and **end date** 5. Click **Create** **Status Flow:** * **Active:** Year is open; you can generate forms * **In Review:** Forms are being reviewed by accountants * **Closed:** Year is locked (irreversible); no further changes allowed ### Closing a Tax Year 1. Navigate to the tax year detail page 2. Click **Close Tax Year** 3. Confirm the action: * All forms must be marked **Ready to File** * All distributions must be **Sent** 4. Click **Close** Closing a tax period cannot be undone. **What happens after closing:** * Tax year becomes read-only * Historical forms remain accessible for audit * Archival data is preserved in `pf_audit_logs` *** ## Form Generation Workflows ### 1099-NEC Generation (Vendors) **When to use:** End of fiscal year, to report payments to vendors ≥ \$600. **Steps:** 1. Navigate to **1099 Forms** 2. Select the **tax year** 3. Click **Generate 1099 Forms** 4. System retrieves all vendor payments from **Accounts Payable** (FA-03) 5. Review generated forms: * **Vendor name** and **EIN** * **Gross payments** (sum of all payments for the year) * **Form type** (1099-NEC default) 6. Click **Review Completed** when all forms are verified 7. Forms move to **Ready to File** status **Tips:** * Ensure vendor EINs are complete before generation * Review thresholds (\$600 minimum) with your accountant * Amended forms can be regenerated for the same vendor *** ### W-2 Generation (Employees) **When to use:** End of calendar year, synchronized with HR Payroll. **Steps:** 1. Navigate to **W-2 Forms** 2. Select the **tax year** 3. Click **Generate W-2 Forms** 4. System fetches employee wage and tax data from **HR Payroll** (HR-07): * Wages, tips, and compensation * Federal tax withheld * Other deductions (401k, health insurance, etc.) 5. Review forms: * Verify **employee names** and **SSNs** (encrypted; only visible to tax admins) * Confirm **year-to-date totals** 6. Click **Review Completed** 7. Forms move to **Ready to File** status **Tips:** * Ensure payroll is finalized before W-2 generation * Coordinate with HR on any retroactive adjustments * W-2s are typically filed by January 31st *** ### Tax Reports (941 / 940) **When to use:** 941 (quarterly payroll tax) and 940 (annual unemployment tax). **Steps:** 1. Navigate to **Tax Reports** 2. Select the **tax year** 3. Click **Generate Tax Reports** 4. Choose **report type:** * **941:** Quarterly (Q1–Q4) * **940:** Annual 5. System aggregates payroll tax data and calculates liabilities 6. Review: * **Filing period** * **Calculated tax liability** * **Quarterly breakdown** (for 941) 7. Click **Mark for Filing** 8. Forms move to **Filed** status (with `filed_date`) **Tips:** * 941 deadlines: Q1 (Apr 30), Q2 (Jul 31), Q3 (Oct 31), Q4 (Jan 31 next year) * 940 deadline: January 31st (annual only) * Use the **filing\_date** field to track submissions to IRS *** ## Tax Document Distribution ### Sending Tax Forms **1. Via Email** 1. Navigate to **Distributions** 2. Select the forms to distribute (1099, W-2, etc.) 3. Click **Send to Recipients** 4. Review recipient list: * **Vendor emails** for 1099-NEC * **Employee personal emails** for W-2 5. Click **Send** 6. Status updates to **Sent**; timestamp recorded **2. Tracking Delivery** 1. View the **Distributions** page to monitor: * **Sent:** Emails dispatched successfully * **Read:** Recipient opened the email * **Failed:** Delivery errors (invalid email, bounce) * **Resend:** Resend to recipients with failed deliveries *** ## Module Settings Access **Settings** from the Tax Compliance Dashboard to configure: | Setting | Purpose | Default | | ----------------------- | ------------------------------------------------------- | ------------------ | | **Auto-generate 1099s** | Automatically generate 1099 forms when closing tax year | Off | | **W-2 sync frequency** | Sync employee data from payroll | Daily | | **Delivery method** | Email or secure portal for document access | Email | | **Retention policy** | How long to retain tax documents | 7 years (IRS req.) | *** ## Compliance & Security ### IRS Pub 1075 (Federal Tax Information) * **SSN/EIN Storage:** All sensitive tax identifiers are encrypted at rest * **Access Control:** Only users with `fa.tax.admin` can view decrypted SSN/EIN * **Audit Trail:** All form generation and distribution logged in `pf_audit_logs` * **Retention:** Tax documents retained for 7 years minimum (IRS requirement) ### Best Practices ✅ **Do's:** * Verify all vendor EINs and employee SSNs before form generation * Review generated forms with your CPA or tax accountant * Test email deliveries in sandbox mode before going live * Archive signed tax forms per IRS retention policy * Monitor **Failed** distributions and resend proactively ❌ **Don'ts:** * Don't close a tax year unless all forms are filed and distributed * Don't modify SSN/EIN directly in forms (regenerate from payroll) * Don't delete tax years (soft-delete only; use archival workflows) * Don't share unencrypted SSN/EIN data via email or reports *** ## Troubleshooting ### Issue: Form Generation Fails **Symptoms:** "Generation failed" error when clicking Generate 1099/W-2 **Causes:** * Missing payroll data for the tax year * Vendor/employee records incomplete (missing EIN/SSN) * Tax year not in **Active** status **Solution:** 1. Verify tax year is **Active** 2. Check HR Payroll or Accounts Payable for missing data 3. Complete vendor/employee records 4. Retry generation *** ### Issue: Email Distribution Fails **Symptoms:** Distributions show **Failed** status; recipients don't receive forms **Causes:** * Invalid email address * Email server blacklist * Recipient email opted out **Solution:** 1. Verify email addresses in Contacts or Payroll 2. Use **Resend** to retry failed deliveries 3. Contact your email provider if repeated failures occur *** ### Issue: Tax Year Cannot Be Closed **Symptoms:** "Cannot close tax year" error **Causes:** * Not all forms marked **Ready to File** * Outstanding distributions **Solution:** 1. Navigate to **1099 Forms** and **W-2 Forms** 2. Verify all are marked **Ready to File** 3. Check **Distributions** for any **Pending** status 4. Complete remaining tasks, then retry closing *** ## Related Documentation * **User Guide:** `docs/fa/tax-reporting-user-guide.md` - For staff generating and reviewing forms * **Specification:** `specs/fa/specs/FA-10-tax-reporting-compliance.md` - Technical architecture * **Integration Guide:** `docs/architecture/integrations/FA-10-tax-reporting-INTEGRATION.md` - Cross-core data flows *** **Last Updated:** 2026-02-13\ **Questions?** Contact your Organization Administrator or Finance Manager. # Tax Reporting & Compliance — User Guide Source: https://docs.encoreos.io/fa/tax-reporting-user-guide This guide helps users understand how to work with tax forms, review them, and track distributions. > **Purpose:** This guide helps users understand how to work with tax forms, review them, and track distributions. *** ## Table of Contents * [Overview](#overview) * [Quick Reference](#quick-reference) * [Decision Tree](#decision-tree) * [Prerequisites](#prerequisites) * [Pre-Flight Checklist](#pre-flight-checklist) * [Getting Started](#getting-started) * [Common Tasks](#common-tasks) * [Advanced Features](#advanced-features) * [Pattern Library](#pattern-library) * [Common Mistakes](#common-mistakes) * [API Examples](#api-examples) * [Tips and Best Practices](#tips-and-best-practices) * [Troubleshooting](#troubleshooting) * [Related Documentation](#related-documentation) *** ## Overview The Tax Reporting module helps your organization manage federal tax forms (1099-NEC, W-2, Form 941, Form 940) and state tax filings. Users with appropriate permissions can view, review, and approve tax forms for filing, as well as track document distribution to vendors and employees. ### Key Capabilities * **View tax years** and their filing status * **Review generated tax forms** (1099, W-2, quarterly reports) * **Approve forms for filing** to IRS * **Track document distribution** and delivery status * **Export forms** for records and audit purposes ### Who Should Use This Guide | Role | Use Case | | --------------- | ------------------------------------------ | | Accountant | Review generated forms, approve for filing | | Tax Reviewer | Audit form data before distribution | | Finance Staff | Monitor tax year progress and deadlines | | Payroll Manager | Verify W-2 data before distribution | *** ## Quick Reference | Action | Where | Permission Required | Key Deadline | | ------------------------ | ---------------------------------------- | ------------------- | ------------------------------ | | View tax years | Finance > Tax Compliance > Tax Years | `fa.tax.view` | — | | Review 1099 forms | Finance > Tax Compliance > 1099 Forms | `fa.tax.view` | Jan 31 | | Review W-2 forms | Finance > Tax Compliance > W-2 Forms | `fa.tax.view` | Jan 31 | | Approve forms for filing | Form detail page > Approve | `fa.tax.generate` | Before filing deadline | | Generate tax reports | Finance > Tax Compliance > Tax Reports | `fa.tax.generate` | Quarterly (941) / Annual (940) | | Send distributions | Finance > Tax Compliance > Distributions | `fa.tax.distribute` | Jan 31 (W-2/1099) | | Resend failed deliveries | Distributions > Failed > Resend | `fa.tax.distribute` | Within 48 hours | | Export/download PDF | Form detail page > Download PDF | `fa.tax.view` | As needed | *** ## Decision Tree Use this flow to determine the right action for common scenarios: **I need to...** 1. **Check filing status** → Go to Tax Years → Click year → View status cards 2. **Review a form before filing** → Go to 1099 or W-2 Forms → Click form → Verify data → Click Approve 3. **Resend a failed distribution** → Go to Distributions → Filter by "Failed" → Verify email → Click Resend 4. **Regenerate a form with updated data** → Contact Admin (requires `fa.tax.admin`) → Admin regenerates from updated payroll/AP data 5. **File a quarterly report** → Go to Tax Reports → Select report → Verify data → Click "Mark as Filed" 6. **Export a form for records** → Open form detail page → Click "Download PDF" **Form status flow:** Draft → Pending Review → Ready to File → Filed *** ## Prerequisites ### Permissions Required To use Tax Reporting, you need: | Permission | Description | | ------------------- | ----------------------------------------------------------------- | | `fa.tax.view` | View tax years, forms, reports, and distributions | | `fa.tax.generate` | Generate 1099, W-2, and quarterly/annual tax reports (for admins) | | `fa.tax.distribute` | Send tax documents to recipients | > **Note:** Contact your organization administrator if you don't have the required permissions. *** ## Pre-Flight Checklist Before starting any tax reporting workflow, verify: * [ ] You have the required permissions (`fa.tax.view` at minimum) * [ ] You know the tax year you're working with (e.g., 2025) * [ ] You have access to vendor and employee master records * [ ] You understand your organization's tax filing timeline * [ ] Payroll data is finalized for the relevant period (for W-2s) * [ ] Vendor payment records are complete (for 1099s) * [ ] Email addresses are verified for distribution recipients *** ## Getting Started ### Accessing Tax Reporting 1. Navigate to **Finance & Revenue** in the main menu 2. Click **Tax Compliance** 3. You'll see the Tax Compliance Dashboard with all active tax years ### Understanding the Dashboard The dashboard displays **Status Cards** for: | Card | Shows | | ----------------- | ----------------------------------------------------- | | **Tax Years** | Current and historical years; count of forms per year | | **1099 Forms** | Vendor tax forms; generation and filing status | | **W-2 Forms** | Employee tax forms; ready-to-file count | | **Tax Reports** | Quarterly (941) and annual (940) reports | | **Distributions** | Email delivery tracking; sent and failed counts | Each card is clickable for detailed views. *** ## Common Tasks ### Task 1: View a Tax Year **When to use:** Check the status of a specific tax year and see all forms within it. **Steps:** 1. On the Dashboard, click **Tax Years** 2. Find the tax year you want (e.g., 2025) 3. Click on the year to open the **Tax Year Detail** page 4. You'll see: * **Year**: Tax year (e.g., 2025) * **Status**: Active, In Review, or Closed * **Progress**: Number of forms generated, reviewed, ready to file * **Forms Generated**: Count of 1099s, W-2s, and reports **Tips:** * Use the **Filters** to find years by status * Closed tax years are read-only; historical forms remain accessible for audit *** ### Task 2: Review 1099-NEC Forms (Vendors) **When to use:** Verify vendor information and payment totals before filing with the IRS. **Steps:** 1. Navigate to **1099 Forms** 2. Select the **tax year** 3. You'll see a list of generated forms: * **Vendor**: Company name * **EIN**: Employer Identification Number * **Gross Payments**: Total amount paid during the year * **Status**: Pending Review, Ready to File 4. Click on a form to see details: * **Vendor Address** * **Payment Breakdown** (by month or category) * **Form Type** (1099-NEC default) 5. Verify the data: * Confirm vendor name and address are correct * Check that gross payments match your records * Review any notes or exceptions 6. Click **Approved** to mark the form Ready to File **Tips:** * Use **Filter by Status** to focus on pending forms * Compare gross payments with your **Accounts Payable** records * If data is incorrect, contact your Administrator to regenerate the form *** ### Task 3: Review W-2 Forms (Employees) **When to use:** Verify employee wage and tax data before distribution. **Steps:** 1. Navigate to **W-2 Forms** 2. Select the **tax year** 3. You'll see a list of generated forms: * **Employee**: Name (SSN masked for security) * **Wages, Tips, and Compensation**: Year-to-date gross * **Federal Tax Withheld**: Total federal income tax * **Status**: Pending Review, Ready to Distribute 4. Click on a form to see details: * **Employee Address** * **Year-to-Date Totals**: Wages, other income, deductions * **Tax Withholdings**: Federal, state, Social Security * **Box 12 Codes** (401k, health insurance, etc.) 5. Verify the data: * Check gross wages against payroll records * Confirm tax withholdings are accurate * Review deductions and special codes 6. Click **Approved** to mark the form Ready to Distribute **Tips:** * SSN is encrypted and only visible to tax admins (for security) * Coordinate with **Payroll** if you see discrepancies * Employee W-2s are typically distributed by January 31st *** ### Task 4: Review and File Tax Reports (941 / 940) **When to use:** Verify payroll tax liability and confirm filing with the IRS. **Steps:** 1. Navigate to **Tax Reports** 2. Select the **tax year** 3. You'll see quarterly (941) and annual (940) reports: * **Report Type**: 941 or 940 * **Filing Period**: Q1, Q2, Q3, Q4, or Annual * **Filing Status**: Draft, Ready to File, Filed * **Filed Date**: When the form was submitted to IRS 4. Click on a report to see details: * **Calculation Summary**: Calculated tax liability * **Quarterly Breakdown** (for 941): Liability by quarter * **Supporting Documentation**: Links to payroll data 5. Verify the data: * Cross-check tax liability with the Proliant (ReadyPay) payroll integration * Confirm filing period is correct * Ensure any adjustments are documented 6. Click **Mark as Filed** once IRS filing is confirmed **Tips:** * **941** deadlines: Q1 (Apr 30), Q2 (Jul 31), Q3 (Oct 31), Q4 (Jan 31 next year) * **940** deadline: January 31st (annual) * Contact your tax accountant if liability seems unusual *** ### Task 5: Track Tax Document Distribution **When to use:** Monitor email delivery of tax forms to vendors and employees. **Steps:** 1. Navigate to **Distributions** 2. You'll see all sent forms: * **Form Type**: 1099, W-2, etc. * **Recipient**: Vendor or employee name and email * **Sent Date**: When the form was emailed * **Status**: Sent, Read, Failed 3. Check **Status**: * **Sent**: Email delivered; waiting for recipient to open * **Read**: Recipient opened the email * **Failed**: Delivery error (e.g., invalid email address) 4. For **Failed** deliveries: * Verify the email address in Contacts or Payroll * Click **Resend** to retry delivery * If still failing, contact your Administrator **Tips:** * Track **Read** status to confirm recipients received forms * Resend failed distributions within 48 hours * Use **Filters** to find forms by status or recipient type *** ## Advanced Features ### Exporting Forms for Records 1. Open a specific form detail page (1099, W-2, or tax report) 2. Click **Download PDF** (or **Export**) 3. The form downloads as a PDF for your records or archival **Use cases:** * Print for filing cabinet backup * Email to external tax accountant or CPA * Archive for audit purposes ### Filtering and Searching On any list page (Tax Years, 1099 Forms, W-2 Forms, etc.), use: | Filter | Purpose | | -------------- | ---------------------------------------------------- | | **Status** | Filter by Pending Review, Ready to File, Filed, etc. | | **Tax Year** | Show forms for a specific year | | **Date Range** | Filter by creation or filing date | | **Recipient** | Search by vendor or employee name | *** ## Pattern Library ### UI Patterns and Expected States | Pattern | Location | Expected Behavior | | ------------------------ | ------------------------ | ----------------------------------------------------------------------------------------------------- | | **Dashboard Cards** | Tax Compliance Dashboard | Each card shows count + status; clickable for detail | | **Forms List** | 1099/W-2 Forms pages | Table with vendor/employee, amount, status; row-click for detail | | **Form Detail** | Form detail page | Read-only fields with Approve/Download actions | | **Distribution Tracker** | Distributions page | Table with recipient, sent date, status; Resend action for failed | | **Status Badges** | All list pages | Color-coded: Draft (gray), Pending Review (yellow), Ready to File (blue), Filed (green), Failed (red) | | **Loading State** | All pages | Skeleton loaders while data loads; never blank screen | | **Empty State** | Forms list with no data | "No forms generated yet" message with CTA to generate | | **Error State** | On query failure | User-friendly message with Retry button; raw errors never shown | *** ## Common Mistakes | Symptom | Likely Cause | Fix | | ---------------------------- | ------------------------------------------ | ------------------------------------------------------------------------------ | | "Approve" button is disabled | Missing `fa.tax.generate` permission | Contact admin to grant permission | | Form shows incorrect wages | Payroll data not finalized | Coordinate with Payroll; admin regenerates form | | Distribution shows "Failed" | Invalid or outdated email address | Verify email in Contacts; click Resend | | Cannot find a tax year | Year not yet created | Contact admin to create the tax year | | Report shows \$0 liability | No payroll data for the period | Verify payroll was processed for the quarter | | PDF download does nothing | PDF export is for some forms | The button shows a not-yet-available tooltip until the form's PDF export ships | | Duplicate forms appear | Form was regenerated without archiving old | Contact admin to clean up duplicates | | Cannot close tax year | Outstanding forms or distributions | Complete all pending forms and distributions first | *** ## API Examples ### Fetching Tax Years (for Developers) The following example shows how to query tax years using the Supabase client. This is useful for building custom integrations or scripts: ```typescript theme={null} // Fetch all tax years for the current organization import { supabase } from '@/integrations/supabase/client'; const { data: taxYears, error } = await supabase .from('fa_tax_years') .select('id, year, status, start_date, end_date, created_at') .eq('organization_id', organizationId) .order('year', { ascending: false }); if (error) { // Handle error — never expose raw error.message to users const message = sanitizeErrorMessage(error); // Use the platform's structured logger (never console.error in production) processLogger.error('Failed to fetch tax years', { error: message }); } ``` > **Note:** Always include `.eq('organization_id', organizationId)` for multi-tenant isolation. *** ## Tips and Best Practices ### Do's ✅ Review all form data thoroughly before approving\ ✅ Verify vendor EINs and employee SSNs against master records\ ✅ Coordinate with Payroll (HR-07) for W-2 data discrepancies\ ✅ Confirm email addresses are correct before distribution\ ✅ Track distribution status and resend failed deliveries promptly\ ✅ Archive completed forms and proofs of filing for your records ### Don'ts ❌ Don't approve forms without verifying data accuracy\ ❌ Don't change tax year status without admin approval\ ❌ Don't forward unencrypted tax forms via email\ ❌ Don't rely solely on email delivery; verify receipt by recipients *** ## Troubleshooting ### Issue: Form Data Looks Incorrect **Symptoms:** Gross payments, wages, or tax amounts don't match your records **Cause:** Source data (Payroll or Accounts Payable) may be outdated **Solution:** 1. Check **HR Payroll** (for W-2) or **Accounts Payable** (for 1099) for the correct data 2. Contact your Administrator to regenerate the form with updated data 3. If still incorrect, escalate to your Finance Manager *** ### Issue: Email Not Received by Recipient **Symptoms:** Recipient didn't receive the tax form email **Causes:** * Email address is invalid or outdated * Email ended up in spam folder * Email server delivery failure **Solution:** 1. Verify the email address in **Contacts** or **Payroll** 2. Correct the address if needed 3. Click **Resend** on the Distribution page 4. Ask the recipient to check spam/junk folder 5. If still failing, contact your Administrator *** ### Issue: Cannot Approve a Form **Symptoms:** "Approve" button is disabled **Causes:** * You don't have `fa.tax.generate` permission * Form is already approved or filed * System is still processing form data **Solution:** 1. Contact your Administrator to grant the `fa.tax.generate` permission 2. Check the form status; if already filed, no approval needed 3. Wait a few moments and refresh if the form is still loading *** ## Related Documentation * **Admin Guide:** `docs/fa/tax-reporting-admin-guide.md` - For managing tax years and settings * **Specification:** `specs/fa/specs/FA-10-tax-reporting-compliance.md` - Technical details * **Integration Guide:** `docs/architecture/integrations/FA-10-tax-reporting-INTEGRATION.md` - How other modules connect *** **Last Updated:** 2026-02-13\ **Questions?** Contact your Finance Manager or Organization Administrator. # Tax Reports Source: https://docs.encoreos.io/fa/tax-reports List, navigate to, and view tax reports by type, year, quarter, and status in the Finance & Revenue core. The Tax Reports page (`/fa/tax/reports`) lists all tax reports for the organization and provides navigation to individual report details. ## Overview The Tax Reports page renders a `DataTable` of `fa_tax_reports` rows from `useTaxReportsList`. Table columns include: Report Type, Tax Year, Quarter/Period, Status, and an Actions column with a View link. Clicking a report row or the View button navigates to `/fa/tax/reports/:id`. Requires `fa.tax.view` as defined in the route guard. A `RequirePermission` wrapper in the component wraps the New Report button. ## Who it's for Requires permission: `fa.tax.view`. ## Before you start * At least one tax year must exist. * You need `fa.tax.view` to access this page. ## Steps **View tax reports** 1. Navigate to `/fa/tax/reports`. 2. Browse the data table. **Open a specific report** 1. Click the report type link or the **View** button in the Actions column. 2. The Tax Report Details page opens. ## Key concepts * **Tax report**: A `fa_tax_reports` row with fields `report_type`, `tax_year_id`, `quarter`, and `status`. ## Viewing a tax report The Tax Report Details page (`/fa/tax/reports/:id`) displays the full details of a single tax report record. Access requires `fa.tax.view` permission. Users without permission see an "Access Denied" card. The page loads a single tax report via `useTaxReportDetail` (keyed by `:id` and organization) backed by the `fa_tax_reports` table. The breadcrumb label is set from the `report_type` field via `useEntityBreadcrumb`. Before you start: the tax report record must exist; navigate here from the Tax Reports list. 1. Navigate to `/fa/tax/reports` and click a report row, or navigate directly to `/fa/tax/reports/:id`. 2. Review the report detail fields. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/TaxReportsPage.tsx * src/cores/fa/pages/TaxReportDetailPage.tsx * src/cores/fa/hooks/useTaxReports.ts * src/cores/fa/types/tax.ts # Tax Years Source: https://docs.encoreos.io/fa/tax-years List, view, and manage tax year records including form generation and year close actions in the Finance & Revenue core. The Tax Years page (`/fa/tax/years`) lists all tax year records for the organization and provides navigation to year detail pages. ## Overview The Tax Years page renders a `DataTable` of `fa_tax_years` rows from `useTaxYearsList`. Columns include: Tax Year, Status, Created date, and a View action. Clicking a row or View navigates to `/fa/tax/years/:id`. The route is gated by `fa.tax.view`. ## Who it's for Requires permission: `fa.tax.view`. ## Before you start * You need `fa.tax.view` to access this page. ## Steps **View tax years** 1. Navigate to `/fa/tax/years`. 2. Browse the data table. **Open a specific tax year** 1. Click the tax year link or the **View** button in the Actions column. ## Key concepts * **Tax year**: A `fa_tax_years` row with `tax_year` (integer), `status`, and `created_at`. ## Viewing a tax year The Tax Year Details page (`/fa/tax/years/:id`) shows the complete details of a single tax year and provides actions to generate tax forms or close the year. Requires `fa.tax.view`. The page loads a tax year via `useTaxYearDetail` keyed by `:id` and organization, backed by the `fa_tax_years` table. The breadcrumb label is derived from the `tax_year` field. Actions available: * **Close Tax Year**: via `CloseTaxYearDialog` (wrapped by `RequirePermission`). * **Generate Tax Forms**: via `GenerateTaxFormsDialog` (wrapped by `RequirePermission`). Key concepts: * **Tax year**: A `fa_tax_years` row with `tax_year` (year number), `status`, and related date fields. **View a tax year:** 1. Navigate to `/fa/tax/years` and click a year row, or navigate directly to `/fa/tax/years/:id`. 2. Review the tax year details. **Generate tax forms:** 1. Click **Generate Tax Forms** (requires appropriate permission). 2. Complete the `GenerateTaxFormsDialog`. **Close a tax year:** 1. Click **Close Tax Year** (requires appropriate permission). 2. Confirm in `CloseTaxYearDialog`. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/TaxYearsPage.tsx * src/cores/fa/pages/TaxYearDetailPage.tsx * src/cores/fa/hooks/useTaxYears.ts * src/cores/fa/components/CloseTaxYearDialog.tsx * src/cores/fa/components/GenerateTaxFormsDialog.tsx * src/cores/fa/types/tax.ts # Template Library Source: https://docs.encoreos.io/fa/template-library Browse and apply budget templates from a shared library in the Finance & Revenue core. The Template Library route (`/fa/template-library`) redirects to the Budgeting Hub (`/fa/budgeting?tab=templates`). The library itself is accessible from the hub's Templates tab. ## Overview Navigating to `/fa/template-library` redirects to `/fa/budgeting?tab=templates` via a `` redirect in `src/routes/fa.tsx`. The `TemplateLibraryPage` component is rendered within the Budgeting Hub at that tab. It displays a card-based grid of budget templates using `useAccessibleTemplates` filtered by search. Each card shows the template name, description, and category. From a card, users can preview (`TemplatePreviewDialog`) or apply (`ApplyTemplateDialog`) a template, or navigate to its detail page. ## Who it's for Access follows your organization's role and module configuration. ## Before you start * Templates must exist and be accessible to the current user. ## Steps **Browse the template library** 1. Navigate to `/fa/template-library` (auto-redirects) or `/fa/budgeting?tab=templates`. 2. Use the search field to filter by name, description, or category. **Preview a template** 1. Click a template card's preview action to open `TemplatePreviewDialog`. **Apply a template** 1. Click a template card's apply action to open `ApplyTemplateDialog`. **Manage templates** 1. Click the **Settings / Manage** action to navigate to the template management area. ## Key concepts * **Accessible templates**: Templates returned by `useAccessibleTemplates` scoped to the organization and current user. * **Category**: An optional `template_category` field for grouping templates. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/TemplateLibraryPage.tsx * src/cores/fa/hooks/useBudgetTemplateList.ts * src/cores/fa/components/TemplateCard.tsx * src/cores/fa/components/ApplyTemplateDialog.tsx # Transfer Asset Source: https://docs.encoreos.io/fa/transfer-asset Fixed asset transfer is performed via a dialog within the Asset Detail page in the Finance & Revenue core. The route `/fa/fixed-assets/:id/transfer` has no matching entry in the application router. Asset transfer functionality is accessed via the `AssetTransferDialog` launched from the Fixed Asset Detail page (`/fa/fixed-assets/:id`). ## Overview No standalone route for `/fa/fixed-assets/:id/transfer` exists in `src/routes/fa.tsx`. The `AssetTransferDialog` component is rendered within `FixedAssetDetailPage` and launched via the **Transfer** button on that page. The `FixedAssetDetailPage` (at `/fa/fixed-assets/:id`) uses `useAssetTransferHistory` to load the transfer history for an asset and displays it in a dedicated tab. ## Who it's for The Fixed Asset Detail page uses permission: `fa.assets.view`. Transfer actions may require additional permissions — not determinable from the detail page code alone. ## Before you start * Navigate to the Fixed Asset Detail page at `/fa/fixed-assets/:id`. * The asset must exist and be in an appropriate status for transfer. ## Steps **Transfer an asset** 1. Navigate to `/fa/fixed-assets/:id` (requires `fa.assets.view`). 2. Click **Transfer** (the `AssetTransferDialog` opens). 3. Complete the transfer form. 4. Confirm. **View transfer history** 1. On the Fixed Asset Detail page, select the transfer history tab. 2. Review past transfers from `useAssetTransferHistory`. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/FixedAssetDetailPage.tsx * src/cores/fa/hooks/useAssetTransfers.ts * src/cores/fa/components/AssetTransferDialog.tsx # Trend Analysis Source: https://docs.encoreos.io/fa/trend-analysis View revenue and expense trend charts over time for financial analysis in the Finance & Revenue core. The Trend Analysis page (`/fa/analytics/trends`) displays revenue and expense trend charts over time for the current organization. ## Overview The Trend Analysis page fetches trend data via `useFinancialTrends` (keyed by `organizationId`) and renders two chart components: * `RevenueTrendChart`: Revenue trends over time. * `ExpenseTrendChart`: Expense trends over time. Both charts receive the full `trends` array and an `isLoading: false` prop. The page shows skeleton placeholders while loading and an error card on failure. ## Who it's for Requires permission: `fa.analytics.trends.view`. ## Before you start * Financial transaction data must exist for the current organization. * You need `fa.analytics.trends.view` to access this page. ## Steps **View trend analysis** 1. Navigate to `/fa/analytics/trends`. 2. Review the Revenue Trend and Expense Trend charts. ## Key concepts * **Trend data**: Financial time-series data fetched via `useFinancialTrends`. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/TrendAnalysisPage.tsx * src/cores/fa/hooks/useFinancialTrends.ts * src/cores/fa/components/analytics/RevenueTrendChart.tsx * src/cores/fa/components/analytics/ExpenseTrendChart.tsx # Trial Balance Source: https://docs.encoreos.io/fa/trial-balance Generate and filter the trial balance report by fiscal year, period, and fund in the Finance & Revenue core. The Trial Balance page is accessible at `/fa/reports/trial-balance` (primary) and also resolves from the legacy path `/fa/trial-balance` which redirects to `/fa/ledger?tab=trial-balance`. ## Overview The Trial Balance page at `/fa/reports/trial-balance` renders `TrialBalancePage` (no permission gate on this specific route). The alternate path `/fa/trial-balance` redirects to `/fa/ledger?tab=trial-balance`. The page provides three filter selectors: * **Fiscal Year** (auto-selects the current year via `useFiscalYears`) * **Period** (filtered by selected year via `useFiscalPeriods`) * **Fund** (optional, via `useFunds`) Trial balance data loads via `useTrialBalance`. Export is available via `ReportExportButtons`. The `TrialBalanceReport` component renders the account-level rows. Observed row shape fields: `account_id`, `beginning_balance`, `period_debits`, `period_credits`, `ending_balance`, `debit_balance`, `credit_balance`, and related `account` sub-fields. ## Who it's for Access follows your organization's role and module configuration. ## Before you start * At least one fiscal year and period must exist. * An organization must be selected. ## Steps **Generate a trial balance** 1. Navigate to `/fa/reports/trial-balance`. 2. Select a **Fiscal Year** (auto-populated with the current year). 3. Select a **Period**. 4. Optionally select a **Fund** to scope the report. 5. The report renders automatically. **Export the report** 1. Use the `ReportExportButtons` to download. ## Key concepts * **Trial balance row**: Per-account balances with beginning balance, period debits/credits, and ending balance fields. * **Auto-select**: The page automatically selects the current fiscal year (`is_current` flag) on load. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/TrialBalancePage.tsx * src/cores/fa/hooks/useTrialBalance.ts * src/cores/fa/hooks/useFiscalPeriods.ts * src/cores/fa/components/TrialBalanceReport.tsx # Unposted Entries Source: https://docs.encoreos.io/fa/unposted-entries View draft journal entries with aging analysis and export to CSV in the Finance & Revenue core. The Unposted Entries page (`/fa/reports/unposted-entries`) displays draft journal entries organized with aging buckets and provides CSV export. Unposted entries report listing draft journal entries by age ## Overview The Unposted Entries page loads data via `useUnpostedEntriesReport` (keyed by `organizationId`) and renders it in a `DataTable`. Aging buckets observed in code: `0-30`, `31-60`, `61-90`, `90+` days, rendered with badge variants (`secondary`, `outline`, `default`, `destructive`). A CSV export action is available for users with `FA_PERMISSIONS.AUDIT_EXPORT`. The export uses `exportAgingReportCsv`. The route requires `fa.audit.view` permission. ## Who it's for Requires permission: `fa.audit.view`. To export: `FA_PERMISSIONS.AUDIT_EXPORT` (also within `fa.audit.*`). ## Before you start * Draft journal entries must exist for meaningful data. * You need `fa.audit.view` to access this page. ## Steps **View unposted entries** 1. Navigate to `/fa/reports/unposted-entries`. 2. Review the entries table with aging bucket badges. **Export to CSV** 1. Click the **Export** button (requires `FA_PERMISSIONS.AUDIT_EXPORT`). 2. The CSV downloads via `exportAgingReportCsv`. ## Key concepts * **Aging bucket**: Categorization of unposted entries by age in days: `0-30`, `31-60`, `61-90`, `90+`. * **Unposted entry**: A draft journal entry row returned by `useUnpostedEntriesReport`. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/UnpostedEntriesReportPage.tsx * src/cores/fa/hooks/useUnpostedEntriesReport.ts * src/cores/fa/utils/auditExportCsv.ts # Variance Analysis Source: https://docs.encoreos.io/fa/variance-analysis Compare actuals against a selected budget to identify variances by account in the Finance & Revenue core. The Variance Analysis page (`/fa/analytics/variance`) compares actual financial data against a selected budget and visualizes per-account variances. ## Overview The Variance Analysis page provides a budget selector (`useBudgets` for the list) and then fetches variance data via `useVarianceAnalysis` keyed by `organizationId` and `selectedBudgetId`. The data is rendered in both a `VarianceChart` and a `DataTable` of `VarianceSummary` rows. Column observations from `DataTable`: the component renders variance figures using `formatCurrency` and a `Badge` for status classification. ## Who it's for Requires permission: `fa.analytics.variance.view`. ## Before you start * At least one budget must exist. * Financial transaction data must exist for the current organization. * You need `fa.analytics.variance.view` to access this page. ## Steps **View variance analysis** 1. Navigate to `/fa/analytics/variance`. 2. Select a **Budget** from the dropdown. 3. The variance chart and table populate automatically. ## Key concepts * **Variance summary**: A `VarianceSummary` type row from `src/cores/fa/types/analytics` containing budget vs. actual comparison data. * **Budget selector**: Populated by `useBudgets`; no budget selected shows a loading or empty state. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/VarianceAnalysisPage.tsx * src/cores/fa/hooks/useVarianceAnalysis.ts * src/cores/fa/types/analytics.ts * src/cores/fa/components/analytics/VarianceChart.tsx # Finance & Revenue Vendors Source: https://docs.encoreos.io/fa/vendors Manage, view, and edit vendor records from the Accounts Payable hub with payment terms, deactivation, and inline create/edit dialog. The Vendors route (`/fa/vendors`) redirects to the Payables Hub (`/fa/payables?tab=vendors`). The vendors list is managed from within that hub. ## Overview Navigating to `/fa/vendors` redirects to `/fa/payables?tab=vendors` via a `` redirect in `src/routes/fa.tsx`. The `VendorsPage` component is rendered within the Payables Hub tab. It provides a full vendor list with search, create (`VendorDialog`), edit, and delete capabilities. Keyboard shortcuts are registered via `useFAKeyboardShortcuts`. Vendor records are backed by `fa_vendors` via hooks `useVendorList`, `useCreateVendor`, `useUpdateVendor`, `useDeleteVendor`, and `useGenerateVendorNumber`. Individual vendor detail is accessible at `/fa/vendors/:id`. ## Who it's for Access follows your organization's role and module configuration. ## Before you start * An organization must be selected. * To create a new vendor, navigate to **Finance & Revenue → Payables & Expenses** and select the **Vendors** tab. ## Steps **Access vendor management** 1. Navigate to `/fa/vendors` (auto-redirects) or `/fa/payables?tab=vendors`. 2. Browse the vendors table. **Create a vendor** 1. Click **New Vendor** (or use the keyboard shortcut). 2. Complete the `VendorDialog` and save. **Edit a vendor** 1. Locate the vendor and click its edit action. 2. Update fields in the dialog. **Delete a vendor** 1. Use the delete action and confirm the alert dialog. **View vendor details** 1. Click a vendor row to navigate to `/fa/vendors/:id`. ## Key concepts * **Vendor number**: Auto-generated via `useGenerateVendorNumber`. ## Viewing a vendor The Vendor Details page (`/fa/vendors/:id`) shows the full profile of a single vendor and provides edit capabilities. The page loads a vendor via `useVendor` (keyed by `:id` and organization) and sets the breadcrumb label from the vendor name via `useEntityBreadcrumb`. The layout is a two-column card grid showing general information and payment/contact details. Edit actions open a `VendorDialog` (using `useUpdateVendor`). Payment terms are reverse-mapped from numeric day values to human-readable labels: `0` → "Due on Receipt", `15` → "Net 15", `30` → "Net 30", `60` → "Net 60", `90` → "Net 90". A deactivation action is also present (observed via `UserX` icon). Key concepts: * **Payment terms**: Stored as integer days in `fa_vendors`; displayed as human-readable labels. * **Vendor status**: The `badge` display on the detail page reflects the vendor's current active/inactive state. **View vendor details:** 1. Navigate to `/fa/vendors/:id` (or click a vendor from the Payables Hub). 2. Review the general information and payment details cards. **Edit vendor information:** 1. Click the **Edit** button. 2. Update fields in `VendorDialog`. 3. Save. **Deactivate a vendor:** 1. Use the deactivation action. ## Creating a vendor The route `/fa/vendors` is a legacy redirect to `/fa/payables?tab=vendors`. There is no dedicated `/fa/vendors/new` route in the current routing configuration. Vendor creation is accessed from within the Payables Hub Vendors tab. 1. Navigate to `/fa/payables?tab=vendors` or go to **Finance & Revenue → Payables & Expenses → Vendors**. 2. Use the vendor creation action available in that view. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/VendorsPage.tsx * src/cores/fa/pages/VendorDetailPage.tsx * src/cores/fa/pages/PayablesHubPage.tsx * src/cores/fa/hooks/useVendors.ts * src/cores/fa/components/VendorsTable.tsx * src/cores/fa/components/VendorDialog.tsx # W-2 Forms Source: https://docs.encoreos.io/fa/w-2-forms List, view, and manage W-2 wage statement records for employees including box breakdown, distribution, and corrected W-2C creation. The W-2 Forms page (`/fa/tax/forms/w2`) lists all W-2 wage statement records for the organization and provides navigation to individual form details. ## Overview The W-2 Forms page renders a `DataTable` of `fa_w2_forms` rows via `useW2FormsList`. Columns include: Employee Name, Employee ID, Wages (`wages_tips_compensation` formatted as currency), Status, and a View action. Clicking an employee name or View navigates to `/fa/tax/forms/w2/:id`. A **New** button is present in the header. The route is gated by `fa.tax.view`. ## Who it's for Requires permission: `fa.tax.view`. ## Before you start * W-2 records must be generated or imported. * You need `fa.tax.view` to access this page. ## Steps **View W-2 forms** 1. Navigate to `/fa/tax/forms/w2`. 2. Browse the data table. **Open a specific W-2** 1. Click the Employee Name link or the **View** button. 2. The W-2 Form Details page opens at `/fa/tax/forms/w2/:id`. ## Key concepts * **W-2 form**: A `fa_w2_forms` row with `employee_name`, `employee_id`, `wages_tips_compensation`, and `status`. ## Viewing a W-2 form The W-2 Form Details page (`/fa/tax/forms/w2/:id`) shows the complete W-2 wage statement for a single employee and supports distribution and correction actions. Requires `fa.tax.view`. The page loads a form via `useW2FormDetail` (keyed by `:id` and org) backed by the `fa_w2_forms` table. The breadcrumb label is derived from `employee_name`. The page shows: * A `W2BoxBreakdown` component rendering key-value pairs from the `box_amounts` JSON field (filtering out null/zero/empty values). * A distribution action via `CreateDistributionDialog` (gated by `PermissionGate`). * A **Create W-2C** (corrected W-2) button that calls `useCreateW2Form` with a corrected form payload. Key concepts: * **Box amounts**: JSON field (`box_amounts`) on `fa_w2_forms` containing per-box wage/tax values; rendered by `W2BoxBreakdown`. * **W-2C**: A corrected W-2 form; created by calling `useCreateW2Form` with the same `tax_year_id` and corrected flag. **View W-2 details:** 1. Navigate to `/fa/tax/forms/w2/:id` (or click a form from the W-2 Forms list). 2. Review the employee wage information and box breakdown. **Initiate distribution:** 1. Click the distribution action (requires appropriate permission via `PermissionGate`). 2. Complete the `CreateDistributionDialog`. **Create a corrected W-2 (W-2C):** 1. Click **Create W-2C**. 2. A corrected form is created via `useCreateW2Form`. ## Related Finance & Revenue core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fa.tsx * src/cores/fa/pages/W2FormsPage.tsx * src/cores/fa/pages/W2FormDetailPage.tsx * src/cores/fa/hooks/useW2Forms.ts * src/cores/fa/components/CreateDistributionDialog.tsx * src/cores/fa/types/tax.ts # Asset Register Source: https://docs.encoreos.io/fm/asset-register Complete inventory of all assets at /fm/asset-register with summary totals and export to CSV or Excel. This screen provides a comprehensive tabular register of all assets and is available at `/fm/asset-register`. ## Overview The Asset Register page uses `useAssetRegisterData` to load all assets for the current organization. Three summary cards display **Total Assets**, **Total Purchase Value**, and **Total Book Value**. An optional filter panel (toggled by a **Filters** button) provides dropdowns for Category, Status, Acquisition From, and Acquisition To date. The main data table (`DataTable`) shows: Asset Tag (linked to detail page), Name, Category, Site, Location, Status, Purchase Price, and Book Value. Two export buttons allow downloading as **CSV** or **Excel** using `exportAssetRegisterToCSV` / `exportAssetRegisterToExcel`. ## Who it's for Requires permission `fm.dashboard.view`. Financial export may require additional oversight — confirm with SME. ## Before you start * Hold `fm.dashboard.view`. * Ensure assets have purchase price and book value populated for meaningful totals. ## Steps Navigate to `/fm/asset-register` via the FM sidebar or from the Assets page. Check the Total Assets, Total Purchase Value, and Total Book Value cards at the top. Click **Filters** to expand the filter panel; select Category, Status, or a date range for Acquisition. Review the asset list with purchase price and current book value columns. Click any Asset Tag link in the table to open that asset's detail page. Click **CSV** or **Excel** to download the filtered asset register for offline use. ## Key concepts * **Book value** — `current_book_value` on each asset; reflects depreciation applied to date. * **Total Purchase Value** — sum of all `purchase_price` values in the filtered result set. * **Export filenames** — auto-generated as `asset-register-YYYY-MM-DD.csv` or `.xlsx`. ## Related Facilities & Inventory core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fm.tsx * src/cores/fm/pages/AssetRegisterPage.tsx # Assets Source: https://docs.encoreos.io/fm/assets Manage facility assets and equipment — status/category/site filters and detail with maintenance, location, and depreciation history. This screen lists all facility assets and is available at `/fm/assets`. ## Overview The Assets page uses `ListPageLayout` and loads assets via `useAssetList`. Users can search by text, filter by **Status** (from `ASSET_STATUS_LABELS`), filter by **Category** (from `ASSET_CATEGORY_LABELS`), and filter by **Site** (loaded via `useOrganizationSiteOptions`). An **Add Asset** button opens `AssetFormDialog`. A guided tour (`assetManagementTour`) can be started via the Help button. ## Who it's for Requires permission `fm.dashboard.view`. Viewing asset details requires `fm.assets.view` (confirm with SME). ## Before you start * Hold `fm.dashboard.view`. * Sites must be configured in the organization for the site filter to populate. ## Finding an asset 1. Navigate to `/fm/assets` via the FM sidebar or the Total Assets stat card on the dashboard. 2. Use the search bar and the Status, Category, and Site dropdowns to narrow results. 3. Click **Add Asset** to open the asset creation dialog; fill in name, asset tag, category, and other required fields. 4. Click any asset row to navigate to `/fm/assets/:id`. 5. Click the **Help** button to launch the asset management guided tour. * **Asset tag** — the human-readable identifier for the asset (e.g., `ASSET-001`). * **Asset status** — values from `ASSET_STATUS_LABELS` (e.g., active, maintenance, retired, disposed). * **Asset category** — values from `ASSET_CATEGORY_LABELS` (e.g., equipment, furniture — confirm with SME). ## Viewing an asset The Asset Detail page (`/fm/assets/:id`) loads a single asset via `useAssetDetail`. The header shows asset name, category badge, and status badge. A two-column grid contains: **Details** (type, condition, description), **Location** (site, building, room, location description), **Identification** (manufacturer, model number, serial number), and sidebar cards for **Maintenance Summary** (`AssetMaintenanceSummaryWidget`), **Acquisition** (acquisition date, purchase price, in-service date), **Warranty & Service** (warranty expiration, service contract vendor, contract expiration), and **Depreciation** (method, expected life, current book value, last depreciation date). A tabbed History card provides three tabs: **Maintenance History**, **Location History**, and **Depreciation** schedule. Actions include: Edit, Update Location, Link Work Order, Calculate Depreciation, and Dispose. Requires permissions `fm.dashboard.view` and `fm.assets.view`. Before you start: the asset must exist and not have been disposed (disposal disables the Dispose button). 1. From the Assets list, click any row to navigate to `/fm/assets/:id`. 2. Check the Details, Location, Identification, Acquisition, and Warranty cards. 3. Click **Update Location** to open `AssetLocationUpdateDialog` and record a new site, building, or room. 4. Click **Link Work Order** to associate an existing work order with this asset. 5. If a depreciation method is set, click **Calculate** to run `AssetDepreciationCalculateDialog`. 6. Use the Maintenance History, Location History, and Depreciation tabs to audit the asset lifecycle. 7. For assets not yet disposed, click **Dispose** and complete `AssetDisposalDialog`. * **Depreciation methods** — values from `DEPRECIATION_METHOD_LABELS` (e.g., straight\_line, declining\_balance — confirm with SME). * **Current book value** — `current_book_value` field on the asset record. * **Location history** — recorded in `asset.location_history` each time `AssetLocationUpdateDialog` is submitted. ## Related Facilities & Inventory core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fm.tsx * src/cores/fm/pages/AssetsPage.tsx * src/cores/fm/pages/AssetDetailPage.tsx # Facilities Dashboard Source: https://docs.encoreos.io/fm/dashboard Facilities Management overview showing open work orders, total assets, low stock items, and active vendors at /fm/dashboard. This is the Facilities Management overview screen, available at `/fm/dashboard`. It renders stat cards, a quick-actions section, and dashboard widgets for work orders, inventory, and vendors. ## Overview The dashboard is the landing screen for the Facilities Management core. It displays four stat cards: **Open Work Orders**, **Total Assets**, **Low Stock Items**, and **Active Vendors**. Each card is clickable and navigates to the corresponding list screen. An **Operations Overview** section below the cards contains three lazily loaded widgets: Work Order, Inventory, and Vendor summaries. A configurable Quick Actions section is also rendered for the `fm` module. ## Who it's for Requires permission `fm.dashboard.view` (enforced by the `FMViewGuard` wrapping all FM routes). ## Before you start * You must hold the `fm.dashboard.view` permission. * The dashboard uses the current organization context; ensure an organization is selected. ## Steps Open the FM module; the app redirects `/fm` to `/fm/dashboard` automatically. Check the four stat cards for a quick operational snapshot. A warning variant is applied to Low Stock Items when the count is above zero. Use the Quick Actions section to reach common FM workflows without extra navigation. Click any stat card or use the Operations Overview widgets to navigate to work orders, inventory, or vendor lists. Click the **New Work Order** button in the page header to open the work order creation dialog. ## Key concepts * **Open Work Orders** — count of work orders with a status other than completed, closed, or cancelled. * **Low Stock Items** — inventory items whose current quantity is at or below the reorder point. * **Quick Actions** — configurable shortcuts scoped to `moduleId="fm"`, editable per organization. ## Related Facilities & Inventory core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fm.tsx * src/cores/fm/pages/FMOverview\.tsx * src/cores/fm/pages/FMDashboard.tsx # Facilities Management Database Tables Source: https://docs.encoreos.io/fm/database-tables The FM module provides facilities and asset management capabilities including asset tracking, inventory management, work orders, preventive maintenance schedul… **Prefix:** `fm_`\ **Table Count:** 22\ **Last Updated:** 2026-01-10 *** ## Overview The FM module provides facilities and asset management capabilities including asset tracking, inventory management, work orders, preventive maintenance scheduling, and vendor management. *** ## Table Categories ### 1. Asset Management (4 tables) | Table | Columns | Description | | ------------------------------ | ------- | --------------------- | | `fm_assets` | 47 | Asset master records | | `fm_asset_locations` | 12 | Location history | | `fm_asset_depreciation` | 14 | Depreciation tracking | | `fm_asset_maintenance_history` | 16 | Maintenance history | **Asset Fields (47 columns):** ```typescript theme={null} interface Asset { id: string; asset_tag: string; name: string; description: string; category: AssetCategory; manufacturer: string; model: string; serial_number: string; purchase_date: string; purchase_price: number; warranty_expiration?: string; location_id: string; assigned_to?: string; status: AssetStatus; condition: AssetCondition; // Depreciation depreciation_method?: string; useful_life_years?: number; salvage_value?: number; current_value?: number; // Maintenance last_maintenance_date?: string; next_maintenance_date?: string; maintenance_schedule_id?: string; // Custom custom_fields: Record; } ``` **Asset Status:** * `in_service` - Active and operational * `spare` - Available backup * `under_repair` - Being repaired * `retired` - No longer in service * `disposed` - Disposed of * `lost` - Cannot be located **Asset Condition:** * `excellent` - Like new * `good` - Minor wear * `fair` - Moderate wear * `poor` - Significant wear * `critical` - Needs replacement ### 2. Inventory Management (4 tables) | Table | Columns | Description | | ----------------------------- | ------- | -------------------------- | | `fm_inventory_items` | 24 | Inventory item definitions | | `fm_inventory_locations` | 14 | Storage locations | | `fm_inventory_item_locations` | 12 | Item-to-location mapping | | `fm_inventory_transactions` | 16 | Stock movements | **Transaction Types:** * `receipt` - Stock received * `issue` - Stock issued * `transfer` - Location transfer * `adjustment` - Inventory adjustment * `return` - Stock returned * `scrap` - Stock scrapped **Inventory Tracking:** ```typescript theme={null} interface InventoryItem { id: string; item_number: string; name: string; description: string; category: string; unit_of_measure: string; reorder_point: number; reorder_quantity: number; min_quantity: number; max_quantity: number; current_quantity: number; // Computed from locations unit_cost: number; vendor_id?: string; } ``` ### 3. Work Order System (4 tables) | Table | Columns | Description | | --------------------------- | ------- | ------------------ | | `fm_work_orders` | 49 | Work order records | | `fm_work_order_attachments` | 12 | Attached files | | `fm_work_order_history` | 14 | Status history | | `fm_work_order_materials` | 12 | Materials used | **Work Order Fields (49 columns):** ```typescript theme={null} interface WorkOrder { id: string; work_order_number: string; title: string; description: string; type: WorkOrderType; priority: Priority; status: WorkOrderStatus; // Location site_id: string; location: string; asset_id?: string; // Assignment requested_by: string; assigned_to?: string; team_id?: string; // Scheduling requested_date: string; scheduled_start?: string; scheduled_end?: string; actual_start?: string; actual_end?: string; // Financials estimated_hours?: number; actual_hours?: number; estimated_cost?: number; actual_cost?: number; // PM Link pm_schedule_id?: string; // Custom custom_fields: Record; } ``` **Work Order Types:** * `corrective` - Break/fix repairs * `preventive` - Scheduled maintenance * `emergency` - Urgent issues * `project` - Project work * `inspection` - Inspections **Work Order Status Flow:** ``` open → assigned → in_progress → pending_parts → completed → closed ↓ on_hold ``` **Priority Levels:** * `critical` - Immediate (safety issue) * `high` - Within 4 hours * `medium` - Within 24 hours * `low` - Within 1 week * `scheduled` - As scheduled ### 4. Preventive Maintenance (5 tables) | Table | Columns | Description | | -------------------------------- | ------- | ----------------------- | | `fm_pm_templates` | 20 | PM template definitions | | `fm_pm_template_checklist_items` | 12 | Checklist items | | `fm_pm_template_materials` | 10 | Required materials | | `fm_pm_schedules` | 18 | Active PM schedules | | `fm_pm_completions` | 16 | Completion records | **PM Schedule Types:** * `time_based` - Every X days/weeks/months * `meter_based` - Every X hours/miles/cycles * `condition_based` - Based on condition triggers **PM Template Example:** ```typescript theme={null} interface PMTemplate { id: string; name: string; description: string; asset_category: string; frequency_type: 'time_based' | 'meter_based'; frequency_value: number; frequency_unit: string; estimated_hours: number; checklist_items: ChecklistItem[]; required_materials: Material[]; skills_required: string[]; } ``` ### 5. Vendor Management (4 tables) | Table | Columns | Description | | -------------------------- | ------- | ------------------------ | | `fm_vendors` | 26 | Vendor master records | | `fm_vendor_sites` | 12 | Vendor service locations | | `fm_vendor_certifications` | 14 | Vendor certifications | | `fm_vendor_work_orders` | 10 | Vendor work order links | **Vendor Types:** * `contractor` - General contractors * `supplier` - Parts/materials suppliers * `service` - Service providers * `consultant` - Consultants ### 6. Module Settings (1 table) | Table | Columns | Description | | -------------------- | ------- | ---------------- | | `fm_module_settings` | 30 | FM configuration | **Key Settings:** | Setting | Type | Default | | ----------------------------- | ------- | -------- | | `work_order_auto_number` | boolean | true | | `work_order_prefix` | text | 'WO-' | | `default_priority` | text | 'medium' | | `pm_advance_days` | integer | 7 | | `low_stock_alert_enabled` | boolean | true | | `require_work_order_approval` | boolean | false | *** ## Common Query Patterns ### Get Assets by Location ```typescript theme={null} const { data } = await supabase .from('fm_assets') .select(` *, location:pf_sites(name), assigned_to:pf_profiles(first_name, last_name), maintenance_history:fm_asset_maintenance_history( maintenance_date, description, cost ) `) .eq('organization_id', orgId) .eq('site_id', siteId) .eq('status', 'in_service'); ``` ### Get Open Work Orders ```typescript theme={null} const { data } = await supabase .from('fm_work_orders') .select(` *, asset:fm_assets(name, asset_tag), assigned_to:pf_profiles(first_name, last_name), materials:fm_work_order_materials( item:fm_inventory_items(name), quantity ) `) .eq('organization_id', orgId) .in('status', ['open', 'assigned', 'in_progress']) .order('priority', { ascending: true }); ``` ### Get PM Schedule Due This Week ```typescript theme={null} const { data } = await supabase .from('fm_pm_schedules') .select(` *, template:fm_pm_templates( name, estimated_hours, checklist_items:fm_pm_template_checklist_items(*) ), asset:fm_assets(name, asset_tag, location_id) `) .eq('organization_id', orgId) .lte('next_due_date', addDays(new Date(), 7)) .eq('is_active', true); ``` ### Get Low Stock Items ```typescript theme={null} const { data } = await supabase .from('fm_inventory_item_locations') .select(` quantity, item:fm_inventory_items( item_number, name, reorder_point, reorder_quantity ), location:fm_inventory_locations(name) `) .eq('organization_id', orgId) .lt('quantity', supabase.raw('item.reorder_point')); ``` ### Get Vendor Performance ```typescript theme={null} const { data } = await supabase .from('fm_vendor_work_orders') .select(` vendor:fm_vendors(name), work_order:fm_work_orders( status, actual_cost, actual_hours ) `) .eq('organization_id', orgId); ``` *** ## RLS Policies FM uses site-based RLS: * Work orders visible to site staff * Assets visible by location assignment * Inventory by location access **Helper Functions:** * `fm_user_has_site_access()` - Site access check * `fm_user_can_manage_work_order()` - WO management * `fm_user_can_view_inventory()` - Inventory access *** ## Cross-Module Integration **FM → FA Integration:** ``` fm_assets → fa_accounts (depreciation entries) fm_work_orders → fa_vendor_bills (contractor invoices) fm_inventory_transactions → fa_journal_entries (inventory adjustments) ``` **FM → HR Integration:** ``` fm_work_orders.assigned_to → hr_employees fm_vendor_certifications → hr_credential_types (credential tracking) ``` *** ## See Also * [FM Module Specs](https://github.com/Encore-OS/encoreos/tree/development/specs/fm) * [Asset Management Spec](https://github.com/Encore-OS/encoreos/blob/development/specs/fm/specs/FM-05-asset-management.md) * [Database Schema Overview](/architecture/DATABASE_SCHEMA) # Depreciation Report Source: https://docs.encoreos.io/fm/depreciation-report Asset depreciation schedule and analysis at /fm/depreciation, with category bar chart, YTD totals, and CSV/Excel export. This screen displays depreciation data for all depreciating assets and is available at `/fm/depreciation`. ## Overview The Depreciation Report page uses `useDepreciationReportData` to load assets that have a depreciation method set. Four summary cards display **Depreciating Assets**, **Original Value** (total purchase price), **Current Book Value**, and **YTD Depreciation** (highlighted in destructive color). An optional filter panel allows filtering by Category, Depreciation Method, Date From, and Date To. A bar chart (`BarChart` from Recharts) shows Book Value and YTD Depreciation grouped by asset category. The data table columns include: Asset Tag, Name, Category, Method (`straight_line`/`declining_balance`), Purchase Price, Salvage Value, Book Value, Monthly Depreciation, YTD Depreciation, and Total Depreciation. CSV and Excel export are available. ## Who it's for Requires permission `fm.dashboard.view`. Financial export access should be confirmed with SME. ## Before you start * Assets must have a `depreciation_method`, `purchase_price`, and `expected_life_years` set for meaningful report data. ## Steps Navigate to `/fm/depreciation` via the FM sidebar or from the Assets page. Check total assets, original value, current book value, and YTD depreciation. Click **Filters** and set Category, Depreciation Method, or a date range. Review the bar chart to see Book Value vs. YTD Depreciation by category. Examine per-asset depreciation figures including monthly and YTD amounts. Click any Asset Tag in the table to open that asset's detail page. Click **CSV** or **Excel** to download the report. ## Key concepts * **YTD Depreciation** — `ytd_depreciation` field from `DepreciationReportRow`. * **Depreciation methods** — `straight_line` and `declining_balance` (labels from `DEPRECIATION_METHOD_LABELS`). * **Salvage value** — the residual value at end of asset life, used in depreciation calculations. ## Related Facilities & Inventory core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fm.tsx * src/cores/fm/pages/DepreciationReportPage.tsx # Facilities Source: https://docs.encoreos.io/fm/facilities The /fm route redirects to /fm/dashboard and is not a standalone screen. The route `/fm` redirects to `/fm/dashboard` and is not a standalone screen. ## Overview In `fm.tsx`, `} />` immediately redirects all traffic from `/fm` to `/fm/dashboard`. There is no component rendered at this path. See the [Dashboard](/fm/dashboard) page for the actual landing screen content. ## Who it's for Access follows your organization's role and module configuration. dashboard.view\`. ## Before you start Navigate directly to `/fm/dashboard` or use the FM module navigation link. ## Steps Click the Facilities Management link in the application sidebar; the browser is redirected to /fm/dashboard automatically. ## Related Facilities & Inventory core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fm.tsx # Facilities Forms Source: https://docs.encoreos.io/fm/facilities-forms The /fm/forms route is not defined in fm.tsx and does not exist as a standalone screen. The route `/fm/forms` is not defined in `fm.tsx` and does not render any screen. ## Overview No `` entry exists in `src/routes/fm.tsx`. Visiting this URL falls through to the `NotFound` component. There is no component, hook, or form dialog associated with this path in the codebase. ## Who it's for No route rendered. This screen does not exist in the current implementation. ## Before you start This route is not implemented. Contact your SME to understand the intended scope. ## Steps Verify with your SME whether this screen is planned and when it will be implemented. ## Related Facilities & Inventory core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fm.tsx # Facilities Settings Source: https://docs.encoreos.io/fm/facilities-settings Configure module-level settings for Facilities Management at /fm/settings, including work orders, inventory, maintenance, and asset management options. This screen provides admin-level configuration for the Facilities Management module and is available at `/fm/settings`. ## Overview The FM Settings page is wrapped in a `RequirePermission` for `fm.admin`, in addition to the parent `FMViewGuard`. It loads and saves FM module settings via `useFMModuleSettings`. A settings header displays the module icon, title ("Facilities Management Settings"), and description ("Configure module-level settings for your organization"), with a link to published documentation via `PUBLISHED_DOC_PATHS.moduleSettings.facilities`. A **Module Configuration** card contains `FMSettingsForm`, which is initialized from `transformSettingsForForm(settings)`. The form covers "work orders, inventory, maintenance scheduling, and asset management settings" (per the card description). A guided tour (`fmSettingsTour`) can be started via query parameter `?tour=fm-settings-tour` or the Help button. ## Who it's for Requires permission `fm.admin` (inner `RequirePermission`), plus the outer `FMViewGuard` requiring `fm.dashboard.view`. ## Before you start * Hold the `fm.admin` permission. * Understand the impact of the settings being changed before saving. ## Steps Navigate to `/fm/settings` via the FM admin menu. The Module Configuration card displays current values from `useFMModuleSettings`. Edit fields in `FMSettingsForm` as needed. Submit the form to call `upsert(values)` and persist the settings. Add `?tour=fm-settings-tour` to the URL or click the Help button to walk through the settings page. ## Key concepts * **Module settings** — organization-scoped configuration values for the FM core, stored and retrieved via `useFMModuleSettings`. * **transformSettingsForForm** — utility that maps raw settings data to form-compatible initial values. ## Related Facilities & Inventory core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fm.tsx * src/cores/fm/pages/FMSettingsPage.tsx # Fleet Analytics Source: https://docs.encoreos.io/fm/fleet-analytics Fleet performance metrics and trends at /fm/fleet/analytics with KPI cards, mileage and fuel cost charts, and a per-vehicle comparison table. This screen provides fleet analytics and is available at `/fm/fleet/analytics`. ## Overview The Fleet Analytics page uses `useFleetTrendData` for trend data and computes per-vehicle stats by querying `fm_fleet_mileage_logs`, `fm_fleet_fuel_logs`, and `fm_fleet_trips` directly via Supabase for each vehicle. A **Period** selector controls the analytics timeframe: Last 30 Days, Last 90 Days, Last 6 Months, Last Year. Five KPI stat cards display: **Total Miles**, **Total Fuel Cost**, **Avg MPG**, **Cost per Mile**, and **Total Trips**. Two charts are rendered: `FleetMileageTrendChart` and `FleetFuelCostChart` (both use trend data). A `FleetVehicleComparisonTable` shows per-vehicle: vehicle number, make, model, year, total miles, total fuel cost, avg MPG, cost per mile, and trip count. ## Who it's for Requires permission `fm.dashboard.view`. ## Before you start * Fuel logs, trip logs, and mileage logs must be recorded for meaningful analytics. * The period selector defaults to the last 6 months. ## Steps Navigate to `/fm/fleet/analytics` via the Fleet menu. Use the Period dropdown to choose 30 days, 90 days, 6 months, or 1 year. Check Total Miles, Total Fuel Cost, Avg MPG, Cost per Mile, and Total Trips. Review the Mileage Trend and Fuel Cost trend charts. Scroll to the Vehicle Comparison table to compare per-vehicle performance metrics. ## Key concepts * **Cost per mile** — `totalFuelCost / totalMiles` per vehicle for the selected period. * **Trend period options** — `30d`, `90d`, `6m`, `1y` (values from `TrendPeriod` type). * **Vehicle comparison data** — aggregated from three separate Supabase queries per vehicle run in parallel. ## Related Facilities & Inventory core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fm.tsx * src/cores/fm/pages/FleetAnalyticsPage.tsx # Fleet Dashboard Source: https://docs.encoreos.io/fm/fleet-dashboard Fleet Management overview at /fm/fleet/dashboard showing total vehicles, drivers, monthly mileage, fuel cost, expiration alerts, and charts. This is the Fleet Management overview screen and is available at `/fm/fleet/dashboard`. ## Overview The Fleet Dashboard renders four stat cards via `useFleetAnalytics`: **Total Vehicles** (with active count), **Total Drivers** (with active count), **Miles This Month**, and **Fuel Cost This Month** (with average MPG). An **Expiration Alerts** card surfaces items expiring within 30 days across registration, insurance, inspection, and driver license categories. Two charts are displayed: a **Vehicle Status** pie/bar chart (`VehicleStatusChart`) and a **Fuel Type Distribution** chart (`FuelTypeChart`). A **Fleet Summary** card shows a compact breakdown by vehicle status, fuel type, monthly mileage, fuel costs, and driver counts. A Quick Actions section is rendered for the `fm` module. ## Who it's for Requires permission `fm.dashboard.view` (outer `FMViewGuard`). ## Before you start * Hold `fm.dashboard.view`. * Vehicles and drivers must be entered for meaningful stats. ## Steps Navigate to `/fm/fleet/dashboard` via the Fleet Management menu. Check Total Vehicles, Total Drivers, Miles This Month, and Fuel Cost This Month. If the Expiration Alerts card is visible, click through to the relevant vehicles or drivers to resolve expiring items. Review the Vehicle Status and Fuel Type Distribution charts. Click the Total Vehicles card or the Vehicles button to go to `/fm/fleet/vehicles`. Click **Add Vehicle** in the header to navigate to the vehicle form. ## Key concepts * **Expiration alerts** — registration, insurance, inspection, and driver license items expiring within 30 days are surfaced. * **Average MPG** — `averageMpg` from `useFleetAnalytics` (confirm calculation source with SME). * **Vehicle status** — values from `VEHICLE_STATUS_LABELS` (active, maintenance, retired, disposed). ## Related Facilities & Inventory core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fm.tsx * src/cores/fm/pages/FleetDashboardPage.tsx # Fleet Maintenance Source: https://docs.encoreos.io/fm/fleet-maintenance Manage fleet vehicle maintenance schedules at /fm/fleet/maintenance with overdue detection, trigger-type filters, and work order generation. This screen lists fleet maintenance schedules and is available at `/fm/fleet/maintenance`. ## Overview The Fleet Maintenance page uses `useFleetMaintenance` to load maintenance schedules with pagination (page size 20). URL-synced filters include: vehicle, status (active/inactive/all, defaulting to active), trigger type (from `MAINTENANCE_TRIGGERS`), and overdue toggle. An **overdue count** from the query result is displayed in the header subtitle. When `overdueCount > 0` and the overdue filter is not active, a destructive alert banner appears with a "Show Overdue Only" shortcut. The data table shows: Maintenance name with description, Vehicle, Trigger type badge, Next Due Date (warning color if within 7 days, destructive if past), Next Due Odometer, Status badge, and an Actions dropdown (Edit, Generate Work Order, Activate/Deactivate, Delete). Generating a work order requires confirmation and creates a work order from the schedule. Deleting is a soft delete with confirmation. ## Who it's for Requires permission `fm.dashboard.view`. Write actions require `fm.fleet.edit` or `fm.fleet.admin` — confirm with SME. ## Before you start * Fleet vehicles must exist before maintenance schedules can be created. ## Steps Navigate to `/fm/fleet/maintenance` via the Fleet menu. If the alert banner is visible, click **Show Overdue Only** to filter to overdue items. Use the Vehicle, Status, Trigger Type dropdowns and the Overdue toggle to narrow the list. Click **Add Schedule** to open `FleetMaintenanceFormDialog`. From the Actions dropdown on a row, click **Generate Work Order** and confirm to create a work order for that schedule. Click **Edit Schedule** from the Actions dropdown. Use **Deactivate** or **Delete** from the Actions dropdown; deletions require confirmation. ## Key concepts * **Trigger type** — values from `MAINTENANCE_TRIGGER_LABELS` (e.g., date-based, mileage-based — confirm with SME). * **Next due date warning** — yellow warning color within 7 days; red destructive color if past due. * **Generate Work Order** — creates a new work order and updates the schedule's next due date/mileage automatically. ## Related Facilities & Inventory core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fm.tsx * src/cores/fm/pages/FleetMaintenancePage.tsx # Fleet Management Source: https://docs.encoreos.io/fm/fleet-management The /fm/fleet route redirects to /fm/fleet/dashboard and is not a standalone screen. The route `/fm/fleet` redirects to `/fm/fleet/dashboard` and is not a standalone screen. ## Overview In `fm.tsx`, `} />` immediately redirects all traffic from `/fm/fleet` to `/fm/fleet/dashboard`. There is no component rendered at this path. See [Fleet Dashboard](/fm/fleet-dashboard) for the actual fleet landing screen. ## Who it's for Access follows your organization's role and module configuration. The outer `FMViewGuard` requires `fm.dashboard.view`. ## Before you start Navigate directly to `/fm/fleet/dashboard` or use the Fleet Management module link. ## Steps Click the Fleet Management link in the FM sidebar; the browser redirects to /fm/fleet/dashboard automatically. ## Related Facilities & Inventory core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fm.tsx # Fleet Management Admin Guide Source: https://docs.encoreos.io/fm/fleet-management-admin-guide This guide provides instructions for administrators configuring and managing the Fleet Management module. **Feature ID:** FM-13\ **Module:** FM (Facilities Management) This guide provides instructions for administrators configuring and managing the Fleet Management module. *** ## Overview Fleet Management administration includes: * Module settings configuration * Maintenance schedule setup * FM-01 work order integration * Driver license management * Reporting and analytics configuration *** ## Module Settings ### Accessing Fleet Settings 1. Go to **Settings** → **Facilities Management** → **Fleet Settings** 2. Configure the following options: ### Available Settings **License Alert Days** * Number of days before license expiration to send alerts * Default: 90, 60, 30 days * Format: Comma-separated list (e.g., "90,60,30") **Registration Alert Days** * Number of days before registration expiration to send alerts * Default: 90, 60, 30 days * Format: Comma-separated list (e.g., "90,60,30") **Default Mileage Rate** * Default reimbursement rate for business trips * Default: 0.655 (IRS standard rate) * Format: Decimal (e.g., 0.655) **Prevent Expired License Assignment** * If enabled, prevents assigning vehicles to drivers with expired licenses * Default: true * Options: true/false ### Updating Settings 1. Navigate to Fleet Settings 2. Update desired settings 3. Click **Save** 4. Changes take effect immediately *** ## Maintenance Schedule Setup ### Creating Maintenance Schedules #### Step 1: Navigate to Maintenance Schedules 1. Go to **Fleet** → **Maintenance** → **Schedules** 2. Click **Add Schedule** #### Step 2: Configure Schedule **Required Fields:** * **Vehicle** - Select the vehicle * **Name** - Maintenance type (e.g., "Oil Change", "Tire Rotation") * **Description** - Detailed description * **Trigger Type** - Mileage, Time, or Both **Mileage-Based Triggers:** * **Mileage Interval** - Miles between maintenance (e.g., 5000) * **Next Due Odometer** - Odometer reading when maintenance is due **Time-Based Triggers:** * **Time Interval Days** - Days between maintenance (e.g., 180 for 6 months) * **Next Due Date** - Date when maintenance is due **Both Triggers:** * Configure both mileage and time intervals * Maintenance triggers when either threshold is met #### Step 3: Work Order Integration * **Auto Create Work Order** - Automatically create FM-01 work order when maintenance is due * **Work Order Category** - Category for generated work orders (default: "fleet\_maintenance") * **Work Order Priority** - Priority level (default: "medium") #### Step 4: Save Schedule Click **Save** to create the maintenance schedule. The system will monitor the vehicle and trigger maintenance when thresholds are met. *** ## FM-01 Work Order Integration ### Automatic Work Order Generation When a maintenance schedule triggers (mileage or time threshold met), the system can automatically create a work order in FM-01. ### Configuration 1. Enable **Auto Create Work Order** in the maintenance schedule 2. Set **Work Order Category** (default: "fleet\_maintenance") 3. Set **Work Order Priority** (default: "medium") ### Work Order Details Generated work orders include: * **Vehicle Information** - Make, model, VIN * **Maintenance Type** - Name from schedule * **Description** - Description from schedule * **Due Date** - Based on trigger date * **Priority** - From schedule configuration ### Work Order Completion When a work order is completed in FM-01: * Maintenance schedule is updated with completion date * Next due date/odometer is calculated * Maintenance history is recorded *** ## Driver License Management ### License Expiration Alerts The system automatically monitors driver license expiration dates and sends alerts based on configured settings. ### Alert Configuration * **License Alert Days** - Set in Fleet Settings (default: 90, 60, 30 days) * Alerts are sent at each configured interval before expiration ### License Validation **Prevent Expired License Assignment** * If enabled, prevents assigning vehicles to drivers with expired licenses * Shows warning if license expires within alert period * Blocks assignment if license is expired ### License Information Fields * **License Number** - Driver's license number * **License State** - State of issuance * **License Class** - License class (e.g., Class C, Class B) * **License Expiration** - Expiration date * **CDL Information** - Commercial Driver's License details (if applicable) * **Has CDL** - Yes/No * **CDL Class** - CDL class * **CDL Endorsements** - Array of endorsements * **CDL Expiration** - CDL expiration date *** ## Reporting and Analytics ### Fleet Analytics Dashboard Access the analytics dashboard at **Fleet** → **Analytics**. ### Available Metrics * **Total Fleet Cost** - Combined costs (fuel, maintenance, trips) * **Average MPG** - Average fuel efficiency across fleet * **Total Miles Driven** - Total mileage * **Cost per Mile** - Average cost per mile * **Maintenance Alerts** - Count of due/overdue maintenance ### Reports **Fleet Cost Report** * Detailed cost breakdown by vehicle * Time period filtering * Export to CSV/PDF **Fuel Efficiency Report** * MPG trends by vehicle * Comparison across vehicles * Fuel cost analysis **Trip Summary Report** * Trip activity by vehicle/driver * Cost analysis by trip type * Mileage trends **Maintenance Schedule Report** * Upcoming maintenance items * Maintenance history * Cost analysis ### Report Configuration 1. Navigate to desired report 2. Select date range 3. Apply filters (vehicle, driver, site) 4. Generate report 5. Export if needed *** ## Vehicle Status Management ### Status Options * **Active** - Vehicle is in service * **Maintenance** - Vehicle is in maintenance * **Retired** - Vehicle is retired from service * **Disposed** - Vehicle has been disposed ### Status Transitions * Update status from vehicle detail page * Status changes are logged in audit trail * Maintenance schedules can be paused for non-active vehicles *** ## Best Practices ### Maintenance Scheduling 1. **Set Realistic Intervals** - Base intervals on manufacturer recommendations 2. **Use Both Triggers** - For critical maintenance, use both mileage and time 3. **Regular Review** - Review and update schedules based on actual usage 4. **Work Order Integration** - Enable auto-creation for seamless workflow ### Driver Management 1. **Keep Licenses Current** - Update expiration dates promptly 2. **Enable Alerts** - Configure alerts to prevent expired license assignments 3. **CDL Tracking** - Maintain accurate CDL information for commercial vehicles ### Cost Management 1. **Regular Analytics Review** - Monitor fleet costs monthly 2. **Identify Trends** - Use reports to identify cost-saving opportunities 3. **Fuel Efficiency** - Track MPG trends to identify maintenance needs ### Data Quality 1. **Accurate Odometer Readings** - Ensure mileage logs are accurate 2. **Complete Trip Data** - Require all trip fields for accurate cost tracking 3. **Timely Updates** - Encourage drivers to log trips and fuel promptly *** ## Troubleshooting ### Maintenance Not Triggering * Verify schedule is active * Check trigger thresholds (mileage/time) * Ensure vehicle odometer is being updated * Review maintenance schedule configuration ### Work Orders Not Generated * Verify "Auto Create Work Order" is enabled * Check FM-01 integration is configured * Review work order category/priority settings ### License Alerts Not Sending * Verify license expiration dates are set * Check alert day configuration in settings * Ensure notification system is configured ### MPG Not Calculating * Verify previous odometer reading exists * Check fuel log has odometer reading * Ensure gallons > 0 * Review trigger function logs *** ## Integration Points ### FM-01 Work Orders * Automatic work order generation from maintenance schedules * Work order completion updates maintenance history * Vehicle information included in work orders ### FM-05 Assets * Vehicles can be linked to assets (optional) * Asset information available in vehicle detail * Asset maintenance history integrated ### PF-02 Sites * Vehicles can be assigned to sites * Site-based filtering in reports * Site context in vehicle records *** ## Support For technical issues or advanced configuration: * Review system documentation * Contact platform support * Check integration logs for errors *** ## Related Documentation * [Fleet Management User Guide](/fm/fleet-management-user-guide) - End-user documentation for fleet operations * [FM-13 Fleet Management Specification](https://github.com/Encore-OS/encoreos/blob/development/specs/fm/specs/FM-13-fleet-management.md) - Full technical specification * [FM Integration Contracts](/architecture/integrations/FM_INTEGRATION_CONTRACTS) - Event and API contracts for FM module integrations # Fleet Management User Guide Source: https://docs.encoreos.io/fm/fleet-management-user-guide This guide provides instructions for using the Fleet Management features in the Encore OS platform. **Feature ID:** FM-13\ **Module:** FM (Facilities Management) This guide provides instructions for using the Fleet Management features in the Encore OS platform. *** ## Overview Fleet Management allows you to: * Register and manage fleet vehicles * Track mileage and fuel consumption * Manage driver information and licenses * Log trips and calculate costs * Schedule and track vehicle maintenance * View fleet analytics and reports *** ## Registering a Vehicle ### Step 1: Navigate to Fleet Management 1. Go to **Facilities Management** → **Fleet** → **Vehicles** 2. Click **Add Vehicle** ### Step 2: Enter Vehicle Information **Required Fields:** * **VIN** - Vehicle Identification Number (17 characters) * **Make** - Vehicle manufacturer (e.g., Honda, Toyota) * **Model** - Vehicle model (e.g., Civic, Camry) * **Year** - Model year **Optional Fields:** * **Color** - Vehicle color * **Plate Number** - License plate number * **Plate State** - State of registration * **Registration Expiration** - Registration expiration date * **Insurance Expiration** - Insurance expiration date * **Site** - Associated site/location * **Status** - Active, Maintenance, Retired, or Disposed ### Step 3: Save Vehicle Click **Save** to register the vehicle. The vehicle will appear in your fleet list. *** ## Logging Trips ### Mobile-Optimized Trip Entry The trip logging page is optimized for mobile devices, making it easy for drivers to log trips on the go. ### Step 1: Navigate to Trip Logging 1. Go to **Fleet** → **Trips** → **Log Trip** 2. Or click **Log Trip** from a vehicle detail page ### Step 2: Enter Trip Details * **Vehicle** - Select the vehicle used * **Trip Date** - Date of the trip * **Destination** - Where you went * **Purpose** - Reason for the trip * **Trip Type** - Business, Personal, Maintenance, or Other * **Start Odometer** - Odometer reading at trip start * **End Odometer** - Odometer reading at trip end * **Miles Driven** - Automatically calculated if start/end odometer provided * **Mileage Rate** - Reimbursement rate (if applicable) * **Trip Cost** - Automatically calculated from miles × rate ### Step 3: Save Trip Click **Save** to log the trip. The trip will be recorded and linked to the vehicle. *** ## Recording Fuel Purchases ### Step 1: Navigate to Fuel Logging 1. Go to **Fleet** → **Fuel** → **Log Fuel** 2. Or click **Log Fuel** from a vehicle detail page ### Step 2: Enter Fuel Information * **Vehicle** - Select the vehicle * **Purchase Date** - Date of fuel purchase * **Fuel Type** - Gasoline, Diesel, Electric, Hybrid, or Other * **Gallons** - Amount of fuel purchased * **Price per Gallon** - Cost per gallon * **Total Cost** - Automatically calculated * **Odometer Reading** - Current odometer (for MPG calculation) * **Station Name** - Where fuel was purchased * **Station Location** - Address of station * **Receipt Number** - Optional receipt number ### Step 3: Save Fuel Log Click **Save** to record the fuel purchase. The system will automatically calculate MPG if a previous odometer reading exists. *** ## Viewing Fleet Analytics ### Accessing Analytics 1. Go to **Fleet** → **Analytics** 2. View key metrics: * **Total Fleet Cost** - Combined costs across all vehicles * **Average MPG** - Average fuel efficiency * **Total Miles Driven** - Total mileage across fleet * **Cost per Mile** - Average cost per mile * **Maintenance Alerts** - Upcoming maintenance due ### Reports Available * **Fleet Cost Report** - Detailed cost breakdown by vehicle * **Fuel Efficiency Report** - MPG trends and comparisons * **Trip Summary Report** - Trip activity and costs * **Maintenance Schedule Report** - Upcoming maintenance items *** ## Mobile Usage ### Mobile-Optimized Features * **Trip Logging** - Quick trip entry on mobile devices * **Fuel Logging** - Fast fuel purchase recording * **Vehicle Status** - View vehicle status and alerts * **Maintenance Alerts** - Receive notifications for due maintenance ### Best Practices * Log trips immediately after completion * Record fuel purchases at the pump * Check maintenance alerts regularly * Update odometer readings accurately *** ## Driver Management ### Viewing Driver Information 1. Go to **Fleet** → **Drivers** 2. View driver list with license information 3. Click on a driver to see details ### Driver Details Include * **License Information** - Number, state, expiration * **CDL Information** - Commercial driver's license details (if applicable) * **Assigned Vehicles** - Vehicles currently assigned to driver * **Trip History** - Recent trips logged by driver *** ## Vehicle Detail Page ### Accessing Vehicle Details Click on any vehicle in the fleet list to view its detail page. ### Information Available * **Vehicle Information** - Make, model, year, VIN, registration * **Current Status** - Active, Maintenance, Retired, Disposed * **Odometer** - Current odometer reading * **Assigned Driver** - Current driver assignment * **Recent Trips** - Last 10 trips * **Fuel History** - Recent fuel purchases with MPG * **Maintenance Schedule** - Upcoming maintenance items * **Maintenance History** - Past maintenance records ### Actions Available * **Log Trip** - Record a new trip * **Log Fuel** - Record fuel purchase * **Assign Driver** - Assign or change driver * **Update Status** - Change vehicle status * **View Reports** - Generate vehicle-specific reports *** ## Tips for Effective Fleet Management 1. **Regular Updates** - Log trips and fuel purchases regularly for accurate analytics 2. **Accurate Odometer Readings** - Ensure odometer readings are accurate for MPG calculations 3. **Maintenance Alerts** - Set up maintenance schedules to receive alerts 4. **Driver Assignment** - Keep driver assignments up to date 5. **Cost Tracking** - Review fleet analytics regularly to identify cost-saving opportunities *** ## Related Documentation * [Fleet Management Admin Guide](/fm/fleet-management-admin-guide) - Administrator configuration guide * [FM-13 Fleet Management Specification](https://github.com/Encore-OS/encoreos/blob/development/specs/fm/specs/FM-13-fleet-management.md) - Full technical specification * [FM Integration Contracts](/architecture/integrations/FM_INTEGRATION_CONTRACTS) - Event and API contracts for FM module integrations *** ## Support For questions or issues with Fleet Management: * Contact your organization administrator * Review the Admin Guide for configuration options * Check system documentation for advanced features # Fuel Logs Source: https://docs.encoreos.io/fm/fuel-logs View, filter, and log fleet fuel purchases at /fm/fleet/fuel-logs with summary cards for total cost, gallons, and average MPG. This screen lists fleet fuel log records and is available at `/fm/fleet/fuel-logs`. ## Overview The Fuel Logs page uses `useFleetFuelLogs` with URL-synced filters: vehicle, driver, fuel type, and date range (today, week, month, 30d, 90d, all — defaulting to 30 days). Page size is 20. Three summary cards display **Total Cost**, **Total Gallons**, and **Avg MPG** for the filtered result set. An optional filter panel exposes vehicle, driver, fuel type, and date range dropdowns. The main data table (desktop) shows: Date, Vehicle, Driver, Fuel Type, Gallons, Cost, \$/Gallon, MPG, Station. A mobile card layout renders the same data in a stacked format. Pagination appears when total pages exceed one. A **Log Fuel** button opens `FleetFuelLogFormDialog`. ## Who it's for Requires permission `fm.dashboard.view`. Logging fuel may require `fm.fleet.create` — confirm with SME. ## Before you start * Vehicles and drivers must exist to populate filter dropdowns. ## Steps Navigate to `/fm/fleet/fuel-logs` via the Fleet menu. Check Total Cost, Total Gallons, and Avg MPG for the default 30-day period. Click **Filters** to expand the filter panel; select a date range, vehicle, driver, or fuel type. Review the fuel log table (desktop) or cards (mobile). Click **Log Fuel** to open the creation dialog; provide vehicle, fuel type, gallons, total cost, and station details. Use Previous/Next to navigate large result sets. ## Key concepts * **MPG calculated** — `mpg_calculated` stored per fuel log entry; `—` when not available. * **Price per gallon** — `price_per_gallon` field displayed to 3 decimal places. * **Date range** — defaults to last 30 days; `all` removes date bounds. ## Related Facilities & Inventory core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fm.tsx * src/cores/fm/pages/FleetFuelLogsPage.tsx # Inspections Source: https://docs.encoreos.io/fm/inspections Facility inspections screen at /fm/inspections — currently renders an empty state placeholder pending full implementation. This screen is the Inspections landing page and is available at `/fm/inspections`. ## Overview The Inspections page currently renders an `EmptyState` component with icon `ClipboardCheck`, title "Inspections", and description "Facility inspections will appear here. Create inspection templates and schedule regular inspections." A **New Inspection** action button is present but its `onClick` handler is a no-op (`void 0`). No data fetching, hooks, or dialogs are wired up. This screen is a placeholder for future implementation. ## Who it's for Requires permission `fm.inspections.view` (inner `RequirePermission`), plus the outer `FMViewGuard` requiring `fm.dashboard.view`. ## Before you start * Hold `fm.inspections.view`. * This feature is not yet functional — no inspections can be created or viewed at this time. ## Steps Go to `/fm/inspections` via the FM sidebar. The screen shows a placeholder message indicating inspections are not yet implemented. ## Related Facilities & Inventory core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fm.tsx * src/cores/fm/pages/InspectionsPage.tsx # Inventory Source: https://docs.encoreos.io/fm/inventory Manage inventory items and stock levels — with category and low-stock filters, and a detail view with location quantities, costs, and transaction history. This screen lists all inventory items and is available at `/fm/inventory`. ## Overview The Inventory page loads active items by default (`is_active: true`) via `useInventoryList`. Users can search by text, filter by category using `INVENTORY_CATEGORY_LABELS`, and toggle a **Low Stock Only** switch to surface items at or below their reorder point. The page supports five dialogs: **Add/Edit Item** (`InventoryItemFormDialog`), **Record Purchase** (`RecordPurchaseDialog`), **Record Usage** (`RecordUsageDialog`), **Transfer** (`RecordTransferDialog`), and **Adjust Quantity** (`RecordAdjustmentDialog`). A **Locations** button navigates to `/fm/inventory/locations`. ## Who it's for Requires permission `fm.dashboard.view`. Creating items requires `fm.inventory.create`; editing requires `fm.inventory.edit` (enforced within dialogs). ## Before you start * Hold `fm.dashboard.view` and, for write actions, `fm.inventory.create` or `fm.inventory.edit`. ## Finding an item 1. Navigate to `/fm/inventory` via the FM sidebar or the Low Stock Items stat card on the dashboard. 2. Use the search bar, Category dropdown, or the Low Stock Only toggle to narrow results. 3. Click **Add Item** to open the item creation dialog; fill in name, SKU, category, unit of measure, costs, and reorder settings. 4. From the table row actions, choose Record Purchase, Record Usage, Transfer, or Adjust Quantity to update stock levels. 5. Click an item row to navigate to `/fm/inventory/:id` for the full detail view. 6. Click **Locations** to navigate to `/fm/inventory/locations`. * **Low stock** — an item is considered low stock when `current_quantity` is at or below `reorder_point`. * **Transaction types** — purchase (adds stock), usage (removes stock), transfer (moves stock between locations), adjustment (corrects quantity). ## Viewing an item The Inventory Detail page (`/fm/inventory/:id`) loads a single item by ID via `useInventoryDetail`. It renders three detail cards: **Item Details** (SKU, category, unit of measure, description), **Quantities** (current quantity, reorder point, reorder quantity, in-stock/low-stock/out-of-stock badge), and **Costs & Value** (unit cost, average cost, last purchase cost, total value computed as `current_quantity * (average_cost || unit_cost)`). A **Location Quantities** card shows the item distributed across storage locations. A **Transaction History** card lists recent inventory movements via `InventoryTransactionList`. Action dialogs available from the dropdown: Edit, Record Purchase, Record Usage, Transfer, Adjust Quantity, and Deactivate Item. Requires `fm.dashboard.view`. Edit and transaction actions require `fm.inventory.edit`. Before you start: the inventory item must exist and be active (deactivated items navigate back to `/fm/inventory`). 1. From the Inventory list, click any item row to navigate to `/fm/inventory/:id`. 2. Examine the Item Details, Quantities, and Costs & Value cards. 3. If stock is distributed across locations, review the Location Quantities card. 4. Click **Actions** and choose Record Purchase, Record Usage, Transfer, or Adjust Quantity. 5. Click **Edit** to modify item metadata such as name, SKU, costs, and reorder thresholds. 6. From the Actions dropdown, choose **Deactivate Item** to mark the item inactive and return to the list. 7. Scroll to the Transaction History card to audit recent stock movements. * **Total value** — `current_quantity × (average_cost || unit_cost)`. * **Low stock** / **out of stock** — determined by `isLowStock` and `isOutOfStock` from `inventoryValidation` utilities. * **Location quantities** — per-location breakdown from `item.locationQuantities`. ## Related Facilities & Inventory core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fm.tsx * src/cores/fm/pages/InventoryPage.tsx * src/cores/fm/pages/InventoryDetailPage.tsx # FM Inventory Management - Administrator Guide Source: https://docs.encoreos.io/fm/inventory-admin-guide This guide covers administrative tasks for the Inventory Management module, including setup, configuration, and ongoing management. ## Overview This guide covers administrative tasks for the Inventory Management module, including setup, configuration, and ongoing management. *** ## Initial Setup ### 1. Create Inventory Locations Before adding items, set up storage locations: 1. Navigate to **Facilities → Inventory → Locations** 2. Click **Add Location** 3. Enter: * **Location Name**: Descriptive name (e.g., "Main Warehouse", "Building A Storage") * **Location Type**: Warehouse, Site Storage, Vehicle, or Other * **Site** (optional): Link to a specific site * **Description** (optional): Additional details 4. Click **Save** **Best Practices:** * Create locations that match physical storage areas * Use consistent naming conventions * Assign locations to sites when applicable ### 2. Create Inventory Items To add inventory items: 1. Navigate to **Facilities → Inventory** 2. Click **Add Item** 3. Enter required fields: * **Item Name**: Clear, descriptive name * **Category**: Select appropriate category * **Unit of Measure**: How the item is counted 4. Enter optional fields: * **SKU**: Stock keeping unit or barcode * **Description**: Detailed description * **Site**: Primary site for the item * **Default Location**: Where items are typically stored 5. Set stock management: * **Reorder Point**: Quantity that triggers low stock alert * **Reorder Quantity**: Standard order size * **Unit Cost**: Current cost per unit 6. Click **Add Item** *** ## Reorder Point Management ### Setting Reorder Points Reorder points determine when low stock alerts are triggered: 1. **Calculate based on usage**: Review historical usage rates 2. **Consider lead time**: How long does reordering take? 3. **Add safety stock**: Buffer for unexpected demand **Formula:** ``` Reorder Point = (Daily Usage × Lead Time Days) + Safety Stock ``` **Example:** * Daily usage: 2 units * Lead time: 5 days * Safety stock: 5 units * Reorder point: (2 × 5) + 5 = **15 units** ### Bulk Updates To update reorder points for multiple items: 1. Export item list (CSV) 2. Modify reorder\_point values 3. Import updated file *** ## Location Management ### Location Types | Type | Use Case | Example | | ---------------- | ------------------------- | ------------------------ | | **Warehouse** | Central storage facility | Main Distribution Center | | **Site Storage** | On-site storage room | Building A Supply Closet | | **Vehicle** | Service vehicle inventory | Truck #101 | | **Other** | Miscellaneous locations | Contractor Laydown Area | ### Managing Locations **Deactivating a Location:** 1. Ensure no items have quantity at that location 2. Transfer any remaining inventory 3. Navigate to location settings 4. Click **Deactivate** **Note:** Deactivated locations are hidden but preserved for historical records. *** ## Inventory Categories The system supports these categories: | Category | Icon | Common Items | | ----------------- | ---- | --------------------------------- | | Plumbing | 🔧 | Pipes, fittings, valves, seals | | Electrical | ⚡ | Wire, outlets, switches, bulbs | | HVAC | ❄️ | Filters, refrigerant, thermostats | | Cleaning Supplies | 🧹 | Cleaners, mops, trash bags | | Tools | 🔨 | Hand tools, power tools | | Safety Equipment | ⛑️ | PPE, fire extinguishers | | General | 📦 | Miscellaneous items | *** ## Module Settings Configure inventory settings at **Facilities → Settings → Inventory**: ### Default Settings * **Default Reorder Point**: Applied to new items without specific value * **Auto-Create PO**: Automatically create purchase orders at reorder point * **Low Stock Notification Recipients**: Users who receive alerts ### Cost Tracking * **Cost Method**: Average cost (default) or last purchase cost * **Currency**: Organization currency setting *** ## Reporting ### Available Reports 1. **Inventory Value Report** * Total value by category * Total value by location * Trend over time 2. **Low Stock Report** * Items below reorder point * Days until stockout (estimated) * Recommended order quantities 3. **Usage Analysis** * Most used items (by quantity) * Highest cost items (by total value) * Usage by work order type 4. **Transaction History** * All transactions by date range * Filterable by type, item, user ### Exporting Data Reports can be exported as: * CSV (spreadsheet) * PDF (printable) *** ## Integration with Other Modules ### Work Orders (FM-01) * Material usage links to work orders * Work order costs include material costs * Technicians record usage from work order screen ### Purchase Orders (FA-04) - Future * Low stock can trigger PO creation * Receipts can link to purchase orders * Cost reconciliation with invoices ### Vendors (FM-03) - Future * Preferred vendor per item * Vendor performance tracking * Automatic vendor selection for POs *** ## Security & Access Control ### Role-Based Permissions | Role | View | Record Transactions | Manage Items | Configure Settings | | ------------------ | ---- | ------------------- | ------------ | ------------------ | | Platform Admin | ✅ | ✅ | ✅ | ✅ | | Org Admin | ✅ | ✅ | ✅ | ✅ | | FM Admin | ✅ | ✅ | ✅ | ✅ | | Facilities Manager | ✅ | ✅ | ✅ | ❌ | | Staff | ✅ | ✅ | ❌ | ❌ | | View Only | ✅ | ❌ | ❌ | ❌ | ### Audit Trail All transactions are: * Append-only (cannot be modified or deleted) * Timestamped * Associated with user who performed action * Include reference to work orders, POs, etc. *** ## Troubleshooting ### Common Issues **Item shows wrong quantity** 1. Review transaction history 2. Perform physical count 3. Create adjustment transaction with explanation **Low stock alert not triggering** 1. Verify reorder point is set 2. Check notification settings 3. Ensure user has notification permissions **Cannot deactivate item** 1. Check if item has pending transactions 2. Verify quantity is zero 3. Transfer any remaining stock first ### Data Quality **Periodic Reviews:** * Monthly: Compare physical counts to system * Quarterly: Review reorder points based on usage * Annually: Audit inactive items *** ## Best Practices 1. **Consistent Naming**: Use standard naming conventions 2. **Accurate Categories**: Choose the most specific category 3. **Regular Counts**: Perform periodic physical inventory 4. **Document Adjustments**: Always include reasons for adjustments 5. **Review Alerts**: Respond promptly to low stock alerts 6. **Train Staff**: Ensure all users know proper procedures *** ## Need Help? * **Technical Issues**: Contact system administrator * **Process Questions**: Contact Facilities Manager * **Feature Requests**: Submit through feedback system # Inventory Locations Source: https://docs.encoreos.io/fm/inventory-locations Manage storage locations for inventory at /fm/inventory/locations, with filtering by location type and the ability to add, edit, or deactivate locations. This screen lists and manages inventory storage locations and is available at `/fm/inventory/locations`. ## Overview The Inventory Locations page loads active locations (`is_active: true`) via `useInventoryLocationList`. Users can search by text and filter by location type using `LOCATION_TYPE_LABELS`. The `InventoryLocationTable` supports edit and deactivate actions per row. Deactivation requires confirmation via `ConfirmationDialog` — the dialog message warns that the location will no longer be available for inventory storage. A **Back** button returns to `/fm/inventory`. ## Who it's for Requires permission `fm.dashboard.view`. Adding and editing locations requires `fm.inventory.edit` (confirm with SME). ## Before you start * Hold `fm.dashboard.view`. * Locations that have existing inventory quantities cannot be deactivated until stock is transferred (confirm with SME). ## Steps From the Inventory page, click **Locations** in the header, or navigate to `/fm/inventory/locations`. Use the search bar to find locations by name, or use the Type dropdown to filter by location type. Click **Add Location** to open `InventoryLocationFormDialog`; fill in the location name and type. Click the edit action on a row to open the edit dialog pre-populated with the current location data. Click the deactivate action on a row; confirm in the dialog. The location is removed from active selection for inventory storage. ## Key concepts * **Location type** — values from `LOCATION_TYPE_LABELS` (e.g., warehouse, room, shelf — confirm with SME). * **is\_active** — deactivated locations do not appear in inventory transaction dialogs. ## Related Facilities & Inventory core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fm.tsx * src/cores/fm/pages/InventoryLocationsPage.tsx # FM Inventory Management - User Guide Source: https://docs.encoreos.io/fm/inventory-user-guide The Inventory Management module helps you track materials, supplies, and parts used in maintenance operations. You can view stock levels, record material usage… ## Overview The Inventory Management module helps you track materials, supplies, and parts used in maintenance operations. You can view stock levels, record material usage on work orders, and manage inventory transactions. *** ## Getting Started ### Accessing Inventory 1. Navigate to **Facilities → Inventory** from the main menu 2. The inventory dashboard shows: * Total items count * Low stock alerts * Total inventory value * Recent transactions ### Understanding the Inventory List The inventory list displays all items with key information: * **Item Number**: Unique identifier (auto-generated) * **Name**: Item description * **Category**: Type of item (Plumbing, Electrical, HVAC, etc.) * **Current Quantity**: Stock on hand * **Status**: In Stock, Low Stock, or Out of Stock Use filters to narrow down items by: * Category * Stock status * Location *** ## Recording Transactions ### Record Material Usage (Work Order) When using materials on a work order: 1. Open the inventory item or go to **Actions → Record Usage** 2. Select the **Work Order** the materials are for 3. Enter the **Quantity** used 4. Optionally select the **Location** materials were taken from 5. Add any **Notes** (optional) 6. Click **Record Usage** The system will: * Decrease the item quantity * Link the usage to the work order * Track the cost at time of use ### Record a Purchase When receiving new inventory: 1. Open the inventory item or go to **Actions → Record Purchase** 2. Enter the **Quantity** received 3. Enter the **Unit Cost** (purchase price per unit) 4. Select the **Location** where items are stored 5. Add **Notes** (PO number, vendor, etc.) 6. Click **Record Purchase** The system will: * Increase the item quantity * Update average cost calculation * Record the transaction for audit ### Transfer Inventory To move inventory between locations: 1. Open the inventory item or go to **Actions → Transfer** 2. Select the **From Location** 3. Select the **To Location** 4. Enter the **Quantity** to transfer 5. Add **Notes** (reason for transfer) 6. Click **Transfer** ### Adjust Inventory For physical count corrections: 1. Open the inventory item or go to **Actions → Adjust Quantity** 2. Choose to **Add** or **Subtract** quantity 3. Enter the adjustment amount 4. Enter a **Reason** (required for audit) 5. Add any **Notes** 6. Click **Record Adjustment** *** ## Understanding Stock Status | Status | Meaning | Action | | ---------------- | ---------------------------- | --------------------- | | **In Stock** | Quantity above reorder point | No action needed | | **Low Stock** | Quantity below reorder point | Consider reordering | | **Out of Stock** | Quantity is zero | Urgent reorder needed | ### Low Stock Alerts When an item falls below its reorder point: * A notification is generated * The item shows a warning indicator * The dashboard displays the alert count *** ## Mobile Usage The inventory module is optimized for mobile devices: * **Touch-friendly buttons** for quick actions * **Large tap targets** for easy selection * **Responsive layout** adapts to screen size * **Quick entry forms** for fast transaction recording ### Tips for Mobile 1. Use the search bar to quickly find items 2. Tap an item row to view details 3. Use the Actions menu for transactions 4. Pull down to refresh the list *** ## Viewing Transaction History To see all transactions for an item: 1. Open the item detail page 2. Scroll to **Transaction History** 3. View chronological list of all transactions Each transaction shows: * Date and time * Transaction type (Purchase, Usage, etc.) * Quantity change (+/-) * Unit cost at time of transaction * Reference (work order, notes) *** ## FAQ **Q: Can I undo a transaction?**\ A: Transactions are append-only for audit compliance. To correct an error, create an adjustment transaction. **Q: How is average cost calculated?**\ A: Average cost is recalculated after each purchase based on total cost ÷ total quantity. **Q: Can I use materials from any location?**\ A: Yes, but tracking the source location helps with inventory accuracy. **Q: What if I try to use more than available?**\ A: The system prevents negative inventory and will show an error. *** ## Need Help? Contact your Facilities Manager or system administrator for: * Adding new inventory items * Changing reorder points * Access permission issues # Maintenance Cost Analysis Source: https://docs.encoreos.io/fm/maintenance-cost-analysis Track maintenance spending by asset at /fm/maintenance-cost-report, with monthly trend and top-10 cost charts plus CSV/Excel export. This screen provides a maintenance cost report broken down by asset and is available at `/fm/maintenance-cost-report`. ## Overview The Maintenance Cost Analysis page uses `useMaintenanceCostReportData` to load cost data grouped by asset (`byAsset`) and by month (`byMonth`), plus a `topAssets` list. Four summary cards show **Assets with Maintenance**, **Total Work Orders**, **Total Maintenance Cost**, and **Avg Cost per Asset**. An optional filter panel allows filtering by Category, Date From, and Date To. Two charts are rendered when data is available: a line chart of **Monthly Cost Trend** and a horizontal bar chart of **Top 10 Highest Cost Assets**. The data table shows per-asset columns: Asset Tag, Name, Category, Site, Work Orders count, Total Cost, Avg Cost/WO, and Last Maintenance date. CSV and Excel export are available. ## Who it's for Requires permission `fm.dashboard.view`. Financial export access should be confirmed with SME. ## Before you start * Work orders must have `actual_material_cost` or equivalent cost data recorded for the report to be meaningful. ## Steps Navigate to `/fm/maintenance-cost-report` via the FM sidebar or from the Assets area. Check total assets with maintenance, work order count, total cost, and average cost per asset. Click **Filters** and set Category or a date range to scope the analysis. Review the Monthly Cost Trend line chart to identify spending patterns over time. Check the Top 10 Highest Cost Assets bar chart to identify high-maintenance assets. Examine per-asset cost breakdown in the Cost by Asset table. Click any Asset Tag in the table to open that asset's detail page. Click **CSV** or **Excel** to download the report. ## Key concepts * **Total cost** — `total_cost` aggregated from maintenance work orders linked to each asset. * **Avg Cost/WO** — `avg_cost_per_wo` = total cost / work order count per asset. * **Monthly trend** — `byMonth` data keyed by `YYYY-MM` month strings. ## Related Facilities & Inventory core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fm.tsx * src/cores/fm/pages/MaintenanceCostReportPage.tsx # Facilities, Inventory & Vendors Overview Source: https://docs.encoreos.io/fm/overview Overview of the Facilities, Inventory & Vendors core in Encore OS — purpose, scope, and key responsibilities. The Facilities, Inventory & Vendors core (FM) manages physical operations for Encore OS — facilities maintenance, inventory tracking, vendor management, purchase management, fleet, and facilities administration. **Architecture:** FM is a domain core that depends only on **Platform Foundation**. Purchase-to-pay flows hand off to **Finance & Revenue** for accounts payable. ## Purchase-to-pay & operations Inventory reorder points and maintenance work orders raise requisitions against onboarded vendors. A purchase order is issued, goods are received, and a three-way match clears the bill into Finance accounts payable. ```mermaid theme={null} flowchart LR Inventory["Inventory
(reorder points)"] --> Req["Requisition"] Maint["Maintenance
work orders"] --> Req Vendor["Vendor master
& contracts"] --> PO Req --> PO["Purchase order"] PO --> Receive["Receiving"] Receive --> Match["Three-way match"] Match --> AP["Accounts payable
→ Finance & Revenue"] Facilities["Facilities & spaces"] -.-> Maint Fleet["Fleet"] -.-> Maint ``` Facilities Management work-order queue with status, priority, and category badges ## What FM covers Buildings, spaces, room utilization, and maintenance schedules. Stock items, reorder points, transfers, counts, and lot/serial tracking. Vendor master, contracts, insurance certificates, and performance. Requisitions, purchase orders, receiving, and three-way match. Vehicles, registrations, maintenance, and drivers. Work orders, preventive schedules, and asset history. ## Get oriented in FM Register buildings and spaces, then set preventive maintenance schedules. Manage stock with reorder points, counts, and transfers. Onboard vendors and run requisitions, POs, and receiving — with AP hand-off to Finance. ## By role Buildings, maintenance, and vendor coordination. Stock counts, transfers, and reorder triggers. Vendor onboarding, contracts, and purchase orders. Vehicle assignments and maintenance scheduling. ## Scope at a glance * **Facilities** — buildings, spaces, room utilization, maintenance schedules. * **Inventory** — stock items, reorder points, transfers, counts, lot/serial tracking. * **Vendors** — vendor master, contracts, insurance certificates, performance. * **Purchase management** — requisitions, purchase orders, receiving, three-way match (with FA). * **Fleet** — vehicles, registrations, maintenance, drivers. * **Maintenance** — work orders, preventive schedules, asset history. ## Related Purchase-to-pay hand-off to Finance accounts payable. Source specifications for the FM core. # Preventive Maintenance Administrator Guide Source: https://docs.encoreos.io/fm/pm-admin-guide This guide covers administrative setup and configuration of Preventive Maintenance (PM) in the Facilities Management module. This guide covers administrative setup and configuration of Preventive Maintenance (PM) in the Facilities Management module. *** ## Overview As an FM administrator, you are responsible for: * Creating and managing PM templates * Setting up PM schedules for sites and assets * Configuring automation settings * Monitoring compliance and performance * Troubleshooting PM issues *** ## Initial Setup ### Configure FM Module Settings 1. Navigate to **FM → Settings** 2. Select the **Maintenance** tab 3. Configure PM-specific settings: | Setting | Description | Recommended Value | | -------------------------------- | -------------------------------------------- | ----------------- | | **PM Schedule Lookahead (Days)** | Days before due date to generate work orders | 7-14 days | | **Auto-Generate PM Work Orders** | Automatically create work orders when due | Enabled | 4. Click **Save Settings** ### Verify Cron Job Setup PM automation requires scheduled jobs to run: | Job | Schedule | Purpose | | ------------------------- | -------------------- | ------------------------------------ | | `generate-pm-work-orders` | Daily at 6:00 AM UTC | Creates work orders for upcoming PMs | | `check-overdue-pms` | Daily at 7:00 AM UTC | Identifies and alerts on overdue PMs | Contact your system administrator to verify these are configured. *** ## Creating PM Templates PM templates define the maintenance tasks that will be scheduled. ### Step-by-Step Template Creation 1. Navigate to **FM → PM Templates** 2. Click **New Template** 3. Fill in template details: **Basic Information** * **Name**: Descriptive name (e.g., "HVAC Filter Replacement - Monthly") * **Description**: Detailed explanation of the maintenance * **Asset Type**: Select from picklist (HVAC, plumbing, electrical, etc.) * **Frequency**: How often (daily, weekly, monthly, quarterly, semi-annual, annual) * **Estimated Duration**: Expected completion time in minutes **Assignment** * **Default Assignee**: Technician to assign by default (optional) * **Default Vendor**: External vendor if outsourced (optional) **Compliance** * **Compliance Required**: Toggle if regulatory requirement * **Compliance Category**: Type of compliance (safety, regulatory, insurance) 4. Click **Save** to create the template ### Adding Checklist Items After creating a template, add step-by-step tasks: 1. Open the template detail page 2. Navigate to **Checklist Items** tab 3. Click **Add Item** 4. For each item, specify: * **Description**: What to check or do * **Pass Criteria**: How to determine pass/fail (optional) * **Required**: Whether completion is mandatory * **Display Order**: Sequence in the checklist 5. Repeat for all checklist items **Example Checklist for HVAC Filter Replacement:** 1. Turn off HVAC system 2. Remove access panel 3. Remove old filter and inspect 4. Install new filter with correct orientation 5. Replace access panel 6. Turn on HVAC system and verify operation ### Adding Required Materials Specify materials needed from inventory: 1. Open the template detail page 2. Navigate to **Materials** tab 3. Click **Add Material** 4. Select the inventory item 5. Enter the quantity needed 6. Add notes if applicable 7. Repeat for all materials *** ## Managing PM Schedules PM schedules link templates to specific sites for recurring maintenance. ### Creating a Schedule 1. Navigate to **FM → PM Schedules** 2. Click **New Schedule** 3. Configure the schedule: | Field | Description | | -------------- | ---------------------------------- | | **Template** | Select the PM template to use | | **Site** | Select the site for maintenance | | **Start Date** | When the schedule begins | | **Notes** | Additional schedule-specific notes | 4. Click **Save** The **Next Due Date** is automatically calculated based on the template frequency. ### Pausing and Activating Schedules **To Pause a Schedule:** 1. Open the schedule detail page 2. Click **Pause Schedule** 3. Confirm the action Paused schedules will not generate work orders. **To Reactivate:** 1. Open the paused schedule 2. Click **Activate Schedule** 3. The next due date will be recalculated ### Understanding Due Date Calculation Due dates are calculated based on frequency: | Frequency | Calculation | | ----------- | ---------------------- | | Daily | Add 1 day | | Weekly | Add 7 days | | Monthly | Add 1 month (same day) | | Quarterly | Add 3 months | | Semi-Annual | Add 6 months | | Annual | Add 1 year | **Edge Cases:** * January 31 + 1 month = February 28/29 * Leap years are handled correctly *** ## Work Order Integration ### Automatic Work Order Generation When **Auto-Generate PM Work Orders** is enabled: 1. Daily at 6:00 AM UTC, the system checks all active schedules 2. Schedules with `next_due_date` within the lookahead window are processed 3. Work orders are created with: * **Type**: `preventive_maintenance` * **Priority**: `high` for compliance PMs, `medium` otherwise * **Due Date**: The PM schedule's due date * **Linked Schedule**: Reference to the PM schedule * **Checklist Items**: Copied from template * **Materials**: Suggested from template ### Manual Work Order Generation To manually trigger work order creation: 1. Open the PM schedule 2. Click **Generate Work Order** 3. The work order is created immediately ### Duplicate Prevention The system prevents duplicate work orders: * Only one work order per schedule per due date * Existing open work orders block new generation * Completed work orders update the schedule before next generation *** ## Compliance Tracking ### Compliance Dashboard Monitor PM compliance from the FM Dashboard: | Metric | Calculation | | -------------------- | -------------------------------------- | | **Compliance Rate** | (Completed on time / Total due) × 100% | | **Overdue Count** | Active schedules past due date | | **Critical Overdue** | Overdue compliance-required PMs | ### Overdue Alerts The `check-overdue-pms` job runs daily to: 1. Identify schedules past their due date 2. Calculate days overdue 3. Categorize severity: * **Warning**: 1-3 days overdue * **Critical**: 4-7 days overdue * **Severe**: 7+ days overdue 4. Publish `pm_overdue` events for notification ### Compliance Reporting For compliance audits, generate reports showing: * PM completion history by schedule * On-time completion rates * Failure documentation * Material usage *** ## Cron Job Setup PM automation requires two scheduled jobs. ### Work Order Generation Job **Schedule**: Daily at 6:00 AM UTC ```sql theme={null} SELECT cron.schedule( 'generate-pm-work-orders-daily', '0 6 * * *', $$ SELECT net.http_post( url := 'https://.supabase.co/functions/v1/generate-pm-work-orders', headers := '{"Authorization": "Bearer ", "Content-Type": "application/json"}'::jsonb, body := '{}'::jsonb ); $$ ); ``` ### Overdue Check Job **Schedule**: Daily at 7:00 AM UTC ```sql theme={null} SELECT cron.schedule( 'check-overdue-pms-daily', '0 7 * * *', $$ SELECT net.http_post( url := 'https://.supabase.co/functions/v1/check-overdue-pms', headers := '{"Authorization": "Bearer ", "Content-Type": "application/json"}'::jsonb, body := '{}'::jsonb ); $$ ); ``` ### Verifying Cron Jobs Check if jobs are scheduled: ```sql theme={null} SELECT * FROM cron.job; ``` Check job execution history: ```sql theme={null} SELECT * FROM cron.job_run_details WHERE jobname LIKE '%pm%' ORDER BY start_time DESC LIMIT 10; ``` *** ## Troubleshooting ### Work Orders Not Generating **Symptoms**: PM schedules are due but no work orders created **Checklist**: 1. Verify **Auto-Generate PM Work Orders** is enabled in FM Settings 2. Check if schedule is **Active** (not Paused) 3. Verify schedule's `next_due_date` is within lookahead window 4. Check for existing open work order for this schedule 5. Verify cron job is scheduled and running **Resolution**: * Manually generate work order from schedule page * Check edge function logs for errors * Verify RLS policies allow work order creation ### Due Dates Not Calculating Correctly **Symptoms**: Next due date is wrong after completion **Checklist**: 1. Verify template frequency is set correctly 2. Check that work order is linked to PM schedule 3. Ensure work order status is "completed" **Resolution**: * Manually update schedule's next\_due\_date * Verify the `fm_update_pm_schedule_on_completion` trigger is enabled ### Completion Not Updating Schedule **Symptoms**: Work order completed but schedule not updated **Checklist**: 1. Verify work order has `pm_schedule_id` set 2. Check database trigger is active 3. Look for errors in database logs **Resolution**: * Manually update schedule's last\_completed\_date and next\_due\_date * Contact administrator to check trigger function *** ## Best Practices ### Template Design 1. **Clear Naming**: Use descriptive names with asset type and frequency * Good: "HVAC Filter Change - Monthly" * Bad: "Monthly Maintenance" 2. **Detailed Checklists**: Include specific, actionable steps * Good: "Inspect belt tension, tighten if deflection > 1/2 inch" * Bad: "Check belt" 3. **Pass Criteria**: Define clear pass/fail conditions for compliance PMs 4. **Material Accuracy**: Keep material lists current with correct quantities ### Frequency Selection | Maintenance Type | Recommended Frequency | | ---------------------- | ------------------------ | | Filter changes | Monthly | | Safety inspections | Monthly or Quarterly | | Full equipment service | Quarterly or Semi-Annual | | Annual certifications | Annual | ### Compliance Priority * Mark all regulatory, safety, and insurance-required PMs as **Compliance Required** * These get **High** priority work orders * Monitor compliance PMs separately from routine maintenance ### Schedule Organization * Create separate schedules per site, even for same template * Use consistent start dates for easier planning * Review and clean up unused schedules quarterly *** ## Related Guides * [PM User Guide](/fm/pm-user-guide) - End user documentation * [Inventory Admin Guide](/fm/inventory-admin-guide) - Managing PM materials * [Vendor Admin Guide](/fm/vendor-admin-guide) - Vendor PM assignments # PM Schedules Source: https://docs.encoreos.io/fm/pm-schedules Manage preventive maintenance schedules — compliance stats, status and overdue filters, completion history, and pause/resume controls. This screen lists preventive maintenance schedules and is available at `/fm/pm-schedules`. ## Overview The PM Schedules page loads schedules via `usePMScheduleList` and compliance statistics via `usePMComplianceStats`. Four quick stat cards display: **Total Schedules**, **Active** (highlighted in accent color), **Overdue** (highlighted in destructive color with alert icon when non-zero), and **Completion Rate** (percentage). Filter dropdowns allow filtering by Status (active, paused, completed) and Due Status (overdue only / on track). An **Add Schedule** button opens `PMScheduleFormDialog`. ## Who it's for Requires permission `fm.dashboard.view`. Creating or editing schedules may require `fm.pm-schedules.admin` — confirm with SME. ## Before you start * PM templates must be created before schedules can be defined. * Sites must be configured for site-based scheduling (if applicable). ## Finding a schedule 1. Navigate to `/fm/pm-schedules` via the FM sidebar or Preventive Maintenance section. 2. Check the four stat cards for a quick compliance overview, paying attention to the Overdue count. 3. Use the Status and Due Status dropdowns to narrow the list. 4. Click **Add Schedule** to open `PMScheduleFormDialog`; link it to a PM template and configure the schedule settings. 5. Click any schedule row to navigate to `/fm/pm-schedules/:id`. * **PM schedule** — an instance of a PM template assigned to a specific site or asset on a recurring basis. * **Overdue** — a schedule where `next_due_date` has passed without completion. * **Completion rate** — percentage of schedules completed on time (confirm calculation with SME). ## Viewing a schedule The PM Schedule Detail page (`/fm/pm-schedules/:id`) loads a schedule by ID via `usePMScheduleDetail`, including completion history. The header shows the template name (from `schedule.pm_template.template_name`), status badge, site name, and an overdue badge displaying days overdue when applicable. Three stat cards show **Next Due Date** (in destructive color if overdue), **Last Completed**, and **Start Date**. A **Template Details** card shows the linked template name (linked to `/fm/pm-templates/:id`), asset type, frequency, and estimated duration. A **Configuration** card shows `auto_generate_work_orders`, `lookahead_days`, and status. A `PMCompletionHistory` component renders completion records. Pause and Resume buttons control schedule status via `usePMScheduleMutations`. Requires `fm.dashboard.view`. Pause/Resume actions may require `fm.pm-schedules.admin` — confirm with SME. Before you start: the schedule must exist and be linked to a valid PM template. 1. From the PM Schedules list, click any row to navigate to `/fm/pm-schedules/:id`. 2. Review the Next Due Date card; a destructive color indicates the schedule is overdue. 3. Check the linked template name, asset type, frequency, and estimated duration. 4. Check whether auto work order generation is enabled and what the lookahead period is. 5. Click **Pause** to set status to `paused` — the schedule will not generate work orders while paused. 6. Click **Resume** to set status back to `active`. 7. Scroll to the PMCompletionHistory component to audit past completions. 8. Click **Edit** to open `PMScheduleFormDialog` and modify schedule settings. * **auto\_generate\_work\_orders** — when true, the system creates work orders automatically as due dates approach within `lookahead_days`. * **lookahead\_days** — number of days ahead of the due date that auto-generated work orders are created. * **days\_overdue** — `schedule.days_overdue` field indicating how many days past due the schedule is. ## Related Facilities & Inventory core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fm.tsx * src/cores/fm/pages/PMSchedulesPage.tsx * src/cores/fm/pages/PMScheduleDetailPage.tsx # PM Templates Source: https://docs.encoreos.io/fm/pm-templates Define preventive maintenance procedures — asset type, frequency, and compliance filters, with checklist items and required materials. This screen lists and manages preventive maintenance templates and is available at `/fm/pm-templates`. ## Overview The PM Templates page loads templates via `usePMTemplateList` with filter support for: text search, Asset Type (hvac, generator, elevator, fire\_system, plumbing, electrical, general), Frequency (daily, weekly, monthly, quarterly, semi\_annual, annual), Compliance Required (yes/no), and Active status. The `PMTemplateTable` renders the filtered list. An **Add Template** button opens `PMTemplateFormDialog`. ## Who it's for Requires permission `fm.dashboard.view`. Creating or editing templates may require `fm.pm-templates.admin` — confirm with SME. ## Before you start * Hold `fm.dashboard.view`. * Asset type and frequency values are defined in the component — no picklist dependency for these fields. ## Finding a template 1. Navigate to `/fm/pm-templates` via the FM sidebar or Preventive Maintenance section. 2. Use the search bar and the Asset Type, Frequency, Compliance, and Status dropdowns to narrow the list. 3. Click **Add Template** to open the creation dialog; provide a template name, asset type, frequency, estimated duration, checklist items, and materials. 4. Click any template row to navigate to `/fm/pm-templates/:id`. * **PM template** — a reusable definition of a preventive maintenance procedure including checklist steps and required materials. * **Compliance required** — flag (`is_compliance_required`) indicating whether completion of this PM is required for regulatory compliance. * **Frequency** — how often the PM should recur (daily through annual). ## Viewing a template The PM Template Detail page (`/fm/pm-templates/:id`) loads a template by ID via `usePMTemplateDetail`. The header displays the template name, asset type badge, frequency badge, and active/inactive badge. Four stat cards summarize: **Est. Duration** (hours), **Checklist Items** (count), **Materials** (count), and **Compliance** (required/optional). A **Checklist Items** card lists each step with its `item_description`, optional `pass_criteria`, and a Required badge when `is_required` is true. A **Required Materials** card lists each material with the linked inventory item name and required quantity. An **Edit** button opens `PMTemplateFormDialog`. Requires `fm.dashboard.view`. Editing requires `fm.pm-templates.admin` — confirm with SME. Before you start: the template must exist and not have been deleted. 1. From the PM Templates list, click any row to navigate to `/fm/pm-templates/:id`. 2. Check the asset type, frequency, estimated duration, and compliance setting in the header and stat cards. 3. Examine each checklist item, pass criteria, and whether it is required. 4. Check the Required Materials card to see which inventory items are needed and in what quantities. 5. Click **Edit** to open the edit dialog and modify the template definition. * **Checklist item** — a step in the PM procedure with optional `pass_criteria` to define what a passing result looks like. * **Required material** — links to an inventory item (`inventory_item.item_name`) with a `quantity_required`. * **is\_compliance\_required** — indicates whether completion of this template is tracked for regulatory purposes. ## Related Facilities & Inventory core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fm.tsx * src/cores/fm/pages/PMTemplatesPage.tsx * src/cores/fm/pages/PMTemplateDetailPage.tsx # Preventive Maintenance User Guide Source: https://docs.encoreos.io/fm/pm-user-guide This guide covers how to use the Preventive Maintenance (PM) features in the Facilities Management module. This guide covers how to use the Preventive Maintenance (PM) features in the Facilities Management module. *** ## Overview Preventive Maintenance helps you proactively maintain equipment and facilities by scheduling regular maintenance tasks before problems occur. Benefits include: * **Reduced Downtime**: Prevent unexpected equipment failures * **Extended Asset Life**: Regular maintenance extends equipment lifespan * **Compliance**: Meet regulatory and safety requirements * **Cost Savings**: Planned maintenance costs less than emergency repairs *** ## Getting Started ### Accessing PM Features 1. Navigate to **Facilities Management** from the main menu 2. Click **PM Templates** to view maintenance templates 3. Click **PM Schedules** to view scheduled maintenance ### Understanding the PM Dashboard The FM Dashboard displays PM-related widgets: * **Upcoming PMs**: Schedules due within the next 7 days * **Overdue PMs**: Schedules past their due date * **Compliance Rate**: Percentage of PMs completed on time *** ## Viewing PM Templates PM Templates define the maintenance tasks to perform. Each template includes: ### Template Information | Field | Description | | ----------------------- | -------------------------------------------------- | | **Name** | Template name (e.g., "HVAC Quarterly Maintenance") | | **Asset Type** | Type of asset this applies to | | **Frequency** | How often maintenance occurs | | **Estimated Duration** | Expected time to complete | | **Compliance Required** | Whether this is a regulatory requirement | ### Accessing Templates 1. Go to **FM → PM Templates** 2. Use filters to find specific templates: * **Asset Type**: Filter by HVAC, plumbing, electrical, etc. * **Frequency**: Filter by daily, weekly, monthly, etc. * **Compliance**: Show only compliance-required templates ### Template Details Click on a template to view: * **Description**: Detailed explanation of the maintenance * **Checklist Items**: Step-by-step tasks to complete * **Required Materials**: Parts and supplies needed * **Default Assignment**: Technician or vendor assigned *** ## Viewing PM Schedules PM Schedules track when maintenance is due for specific sites. ### Schedule Status | Status | Description | | ------------- | -------------------------------------------------- | | **Active** | Schedule is running, work orders will be generated | | **Paused** | Schedule is temporarily stopped | | **Completed** | Most recent maintenance is done | | **Overdue** | Past due date, needs attention | ### Accessing Schedules 1. Go to **FM → PM Schedules** 2. View the list with color-coded status: * 🟢 **Green**: On schedule * 🟡 **Yellow**: Due soon (within 7 days) * 🔴 **Red**: Overdue ### Schedule Details Click on a schedule to see: * **Template**: The PM template being used * **Site**: Where maintenance is performed * **Next Due Date**: When the next maintenance is due * **Last Completed**: Date of last completion * **Completion History**: Past maintenance records *** ## Working with PM Work Orders When PM schedules come due, work orders are automatically generated. ### Identifying PM Work Orders PM work orders are marked with: * **Type**: "Preventive Maintenance" * **Linked Schedule**: Reference to the PM schedule * **Checklist**: Pre-populated from the template ### Completing a PM Work Order 1. Open the work order from **FM → Work Orders** 2. Review the **PM Checklist** 3. For each checklist item: * Mark as **Pass** or **Fail** * Add notes if needed 4. Record any **Materials Used** from the suggested list 5. Add completion notes 6. Click **Complete** to finish ### After Completion When you complete a PM work order: * The schedule's **Next Due Date** is automatically calculated * A **Completion Record** is created in history * The dashboard metrics are updated *** ## PM Compliance Dashboard The compliance dashboard helps track maintenance compliance. ### Key Metrics | Metric | Description | | ----------------------- | ----------------------------------- | | **Compliance Rate** | Percentage of PMs completed on time | | **Completed This Week** | Number of PMs finished this week | | **Upcoming Due** | PMs due in the next 7 days | | **Overdue Count** | PMs past their due date | ### Accessing the Dashboard 1. Go to **FM → Dashboard** 2. View the **PM Compliance** widget 3. Click on metrics to drill down to details ### Understanding Compliance Status * **90-100%**: Excellent - maintenance program is on track * **75-89%**: Good - minor improvements needed * **50-74%**: Needs Attention - review overdue items * **Below 50%**: Critical - immediate action required *** ## Mobile Access Access PM features on mobile devices for field work. ### Mobile Features * View assigned PM work orders * Access checklists on-site * Mark checklist items as pass/fail * Record materials used * Complete work orders from the field ### Tips for Mobile Use 1. **Offline Awareness**: Some features require internet connection 2. **Touch-Friendly**: Large buttons and touch targets for easy use 3. **Photos**: Attach photos to work orders for documentation 4. **Quick Actions**: Swipe actions for common tasks ### Accessing on Mobile 1. Open Encore OS in your mobile browser 2. Navigate to **FM → Work Orders** 3. Filter by **Type: Preventive Maintenance** 4. Tap a work order to view and complete *** ## Common Tasks ### Find Overdue PM Schedules 1. Go to **FM → PM Schedules** 2. Filter by **Status: Overdue** 3. Review and prioritize based on compliance requirements ### View PM History for a Site 1. Go to **FM → PM Schedules** 2. Filter by the specific site 3. Click on a schedule 4. View the **Completion History** tab ### Check Materials Needed for Upcoming PMs 1. Go to **FM → PM Schedules** 2. Filter by **Due Soon** 3. Click on each schedule to view required materials 4. Coordinate with inventory for stock levels *** ## Tips & Best Practices 1. **Check Dashboard Daily**: Review upcoming and overdue PMs each morning 2. **Complete on Time**: Aim to complete PMs before the due date 3. **Document Thoroughly**: Add notes and photos for future reference 4. **Report Issues**: Flag any equipment problems discovered during PM 5. **Use Checklists**: Follow the checklist items in order for consistency *** ## Related Guides * [Inventory User Guide](/fm/inventory-user-guide) - Managing parts and supplies * [Vendor User Guide](/fm/vendor-user-guide) - Working with maintenance vendors * [PM Admin Guide](/fm/pm-admin-guide) - Administrative configuration # Preventive Maintenance Source: https://docs.encoreos.io/fm/preventive-maintenance The /fm/preventive-maintenance route is not defined in fm.tsx and does not exist as a standalone screen. The route `/fm/preventive-maintenance` is not defined in `fm.tsx` and does not render any screen. ## Overview No `` entry exists in `src/routes/fm.tsx`. Visiting this URL falls through to the `NotFound` component. Preventive maintenance functionality is available via two distinct routes: [PM Templates](/fm/pm-templates) (`/fm/pm-templates`) and [PM Schedules](/fm/pm-schedules) (`/fm/pm-schedules`). ## Who it's for No route rendered. Navigate to `/fm/pm-templates` or `/fm/pm-schedules` for PM functionality. ## Before you start Use the PM Templates and PM Schedules pages instead. ## Steps Go to `/fm/pm-templates` to define preventive maintenance procedures. Go to `/fm/pm-schedules` to manage active PM schedules and track compliance. ## Related Facilities & Inventory core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fm.tsx # Reservations Source: https://docs.encoreos.io/fm/reservations Manage shared vehicle reservations at /fm/fleet/reservations with status filtering and cancel/edit actions. This screen lists vehicle reservations and is available at `/fm/fleet/reservations`. ## Overview The Fleet Reservations page uses `useFleetReservations` and `useFleetReservationMutations`. The `ListPageLayout` renders with title "Vehicle Reservations" and description "Manage shared vehicle bookings". A Status filter dropdown allows filtering by confirmed or cancelled. The table shows: Vehicle (year/make/model), Driver (first/last name), Start (date/time), End (date/time), Purpose, Status badge (confirmed/cancelled), and Actions (Edit and Cancel, each gated by `PermissionGate permission="fm.fleet.reserve"`). Cancel requires confirmation via `AlertDialog`. A **Reserve Vehicle** button (gated by `fm.fleet.reserve`) opens `FleetReservationFormDialog`. ## Who it's for Requires permission `fm.dashboard.view` (outer `FMViewGuard`). Creating, editing, and cancelling reservations requires `fm.fleet.reserve`. ## Before you start * Hold `fm.fleet.reserve` to create or manage reservations. * Vehicles and drivers must exist to be bookable. ## Steps Navigate to `/fm/fleet/reservations` via the Fleet menu. Use the Status dropdown to view confirmed or cancelled reservations. Click **Reserve Vehicle** to open the reservation form; select vehicle, driver, start time, end time, and purpose. Click **Edit** on a confirmed reservation row to modify it in the form dialog. Click **Cancel** on a confirmed reservation row; confirm the cancellation in the dialog. ## Key concepts * **Reservation status** — `confirmed` or `cancelled` (`ReservationStatus` type). * **Permission gate** — `fm.fleet.reserve` controls access to Reserve, Edit, and Cancel actions. * **start\_at / end\_at** — timestamp fields displayed as `MMM d, yyyy h:mm a`. ## Related Facilities & Inventory core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fm.tsx * src/cores/fm/pages/FleetReservationsPage.tsx # Vehicles Source: https://docs.encoreos.io/fm/vehicles Manage fleet vehicles and drivers — status, fuel type, and site filters, with trip, fuel, mileage, and maintenance history. This screen lists all fleet vehicles and is available at `/fm/fleet/vehicles`. ## Overview The Fleet Vehicles page uses `useFleetVehicles` to load a paginated list of vehicles (page size 20). Filters include: text search (VIN, plate, make, model), **Status** (from `VEHICLE_STATUSES`), **Fuel Type** (from `FUEL_TYPES`), and **Site** (fetched from `pf_sites`). URL query parameters sync with filter state and page number. The data table shows: Vehicle (year/make/model with vehicle number), VIN (truncated, last 6), Plate, Status badge, Odometer, Assigned Driver, and Site. An **Add Vehicle** button opens `FleetVehicleFormDialog`. Pagination controls appear when total pages exceed one. ## Who it's for Requires permission `fm.dashboard.view`. Adding vehicles requires `fm.fleet.create`. ## Before you start * Hold `fm.dashboard.view`. * Sites must be configured for the site filter to populate. ## Finding a vehicle 1. Navigate to `/fm/fleet/vehicles` via the Fleet Dashboard or sidebar. 2. Use the search bar and Status, Fuel Type, and Site dropdowns. 3. Click **Add Vehicle** to open the form dialog; provide VIN, make, model, year, fuel type, and other required fields. 4. Click any vehicle row to navigate to `/fm/fleet/vehicles/:id`. 5. Use Previous/Next buttons to page through large vehicle lists. * **VIN** — Vehicle Identification Number, displayed truncated (last 6 characters) in the table. * **Vehicle status** — values from `VEHICLE_STATUS_LABELS`: active, maintenance, retired, disposed. * **Fuel type** — values from `FUEL_TYPE_LABELS` (from `FUEL_TYPES` array). ## Viewing a vehicle The Vehicle Detail page (`/fm/fleet/vehicles/:id`) loads a vehicle via `useFleetVehicleDetail`. The header shows year/make/model, status badge, and vehicle number. The right side has action buttons: Assign/Reassign Driver, Change Status, and Edit. A two-column grid holds: a **Vehicle Details** card (VIN, plate, color, fuel type, odometer), a **Registration & Insurance** card (registration expiration, insurance expiration, inspection expiration — each in warning color if within 30 days), and a tabbed **History** card with four tabs: **Trips** (date, type, destination, miles), **Fuel** (date, gallons, station, cost, MPG), **Mileage** (odometer readings), and **Maintenance** (schedules with next due date/odometer and overdue badge). A sidebar contains: Assignment (site, assigned driver), Odometer (current reading with Record Reading button), Quick Actions (Log Trip, Log Fuel), and conditional Expiration Alerts. Requires `fm.dashboard.view`. Driver assignment requires `fm.fleet.edit`; confirm with SME. Before you start: the vehicle must exist and not have been deleted. 1. From the Vehicles list, click any row to navigate to `/fm/fleet/vehicles/:id`. 2. Check VIN, plate, color, fuel type, and odometer. 3. Review expiration dates; warnings appear 30 days before expiry. 4. Click **Assign Driver** (or **Reassign**) to open `AssignDriverDialog`. 5. Click **Change Status** to open `ChangeVehicleStatusDialog`. 6. In the sidebar Odometer card, click **Record Reading** to open `RecordMileageDialog`. 7. Click **Log Trip** in the Quick Actions sidebar card to open `FleetTripFormDialog`. 8. Click **Log Fuel** in the Quick Actions sidebar card to open `FleetFuelLogFormDialog`. 9. Use the Trips, Fuel, Mileage, and Maintenance tabs to audit vehicle activity. * **Expiration alerts** — registration, insurance, and inspection expirations within 30 days surface a warning sidebar card. * **Maintenance schedules** — from `vehicle.maintenance_schedules`; overdue schedules show a destructive badge. * **MPG calculated** — computed and stored per fuel log entry. ## Viewing a driver The Driver Detail page (`/fm/fleet/drivers/:id`) loads a driver via `useFleetDriverDetail`. The header shows first/last name, active/inactive badge, CDL badge (if applicable), and email. Action buttons include Activate/Deactivate toggle and Edit. A two-column grid holds: **Contact Information** (email with mailto link, phone with tel link, linked user profile with avatar), **License & CDL** (license number in monospace, state, class, expiration — with warning/destructive color based on days remaining; CDL endorsements displayed as `CDL_ENDORSEMENT_LABELS` badge tooltips and CDL expiration), and tabbed **History** (Assigned Vehicles list linked to vehicle detail pages, Recent Trips with type/destination/miles). A sidebar contains: Status card with Activate/Deactivate button, conditional Expiration Alerts (license and CDL), Notes, and Quick Stats (assigned vehicle and trip counts). A Delete button opens a destructive confirmation dialog. Requires `fm.dashboard.view`. Deactivation and deletion require `fm.fleet.edit` or `fm.fleet.delete` — confirm with SME. Before you start: the driver must exist and not have been soft-deleted. 1. Navigate to `/fm/fleet/drivers/:id` (typically by clicking a driver in the Fleet Dashboard or from a vehicle's assigned driver). 2. Check email, phone, and linked user profile. 3. Check license number, state, class, and expiration; CDL endorsements and expiration if applicable. 4. If the Expiration Alerts sidebar card is visible, license or CDL is expiring within 30 days. 5. Use the Deactivate/Activate button to toggle the driver's active status. 6. Click **Edit** to open `FleetDriverFormDialog` and update driver information. 7. Click **Delete** and confirm the destructive dialog to soft-delete the driver. The driver is unassigned from all vehicles. * **CDL endorsements** — labels from `CDL_ENDORSEMENT_LABELS`, displayed as tooltip badges. * **Expiration alerts** — license and CDL expiration within 30 days; expired dates shown in destructive color. * **Soft delete** — the `softDeleteDriver` mutation; confirm whether data is preserved (confirm with SME). ## Related Facilities & Inventory core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fm.tsx * src/cores/fm/pages/FleetVehiclesPage.tsx * src/cores/fm/pages/FleetVehicleDetailPage.tsx * src/cores/fm/pages/FleetDriverDetailPage.tsx # FM Vendor Management - Administrator Guide Source: https://docs.encoreos.io/fm/vendor-admin-guide This guide covers administrative tasks for the Vendor Management module, including vendor setup, certification tracking, performance monitoring, and integratio… ## Overview This guide covers administrative tasks for the Vendor Management module, including vendor setup, certification tracking, performance monitoring, and integration with work orders and accounts payable. *** ## Initial Setup ### 1. Configure Module Settings Before adding vendors, configure module-level settings: 1. Navigate to **Facilities → Settings → Vendors** 2. Configure: * **Require Vendor Certification**: Whether certifications are required for work order assignment * **Default Certification Alert Days**: When to alert before expiration (default: 90, 60, 30) * **Vendor Approval Required**: Whether new vendors need approval * **Preferred Vendor Limit Per Category**: Maximum preferred vendors per service category ### 2. Create Vendors To add a new vendor: 1. Navigate to **Facilities → Vendors** 2. Click **Add Vendor** 3. Enter required fields: * **Company Name**: Vendor's legal business name * **Vendor Category**: Primary service type 4. Enter contact information: * **Primary Contact Name** * **Phone Number** * **Email Address** * **Business Address** 5. Enter optional fields: * **Hourly Rate**: Standard billing rate * **Tax ID** (EIN/SSN): For 1099 reporting * **Notes**: Additional information 6. Click **Add Vendor** **Note:** New vendors start with "Pending Approval" status if approval workflow is enabled. ### 3. Assign Service Sites Link vendors to specific sites they can service: 1. Open the vendor detail page 2. Go to the **Sites** tab 3. Click **Add Site** 4. Select the site(s) the vendor services 5. Optionally mark as **Preferred Vendor** for that site 6. Click **Save** ### 4. Add Certifications Track vendor compliance documents: 1. Open the vendor detail page 2. Go to the **Certifications** tab 3. Click **Add Certification** 4. Enter: * **Certification Type**: COI, License, Bonding, or Other * **Certification Name**: Specific name (e.g., "General Liability Insurance") * **Certificate Number** (optional) * **Issuing Authority** (optional) * **Effective Date** * **Expiration Date** * **Coverage Amount** (for insurance) 5. Upload the certificate document (optional) 6. Click **Save** *** ## Vendor Categories The system supports these service categories: | Category | Common Services | | ---------------------- | ------------------------------------------------- | | **Plumbing** | Pipe repair, drain cleaning, fixture installation | | **Electrical** | Wiring, panel upgrades, lighting | | **HVAC** | Heating, cooling, ventilation, refrigeration | | **Janitorial** | Cleaning, floor care, waste management | | **Landscaping** | Lawn care, tree service, irrigation | | **Security** | Alarm systems, access control, guards | | **General Contractor** | Construction, renovation, multi-trade | | **Other** | Specialty services not listed above | *** ## Certification Management ### Certification Types | Type | Description | Common Documents | | ----------- | -------------------------- | -------------------------------------- | | **COI** | Certificate of Insurance | General liability, workers comp, auto | | **License** | Professional/trade license | Contractor license, electrical license | | **Bonding** | Surety bond | Payment bond, performance bond | | **Other** | Additional requirements | W-9, service agreements | ### Expiration Alerts The system monitors certification expiration dates: | Alert Level | Days Before Expiration | Action | | ----------- | ---------------------- | ------------------------------------ | | 90-day | 90 days | Informational alert | | 60-day | 60 days | Warning alert | | 30-day | 30 days | Urgent alert | | Expired | Past due | Critical alert, may block assignment | ### Edge Function: Automated Checks The `check-vendor-certifications` edge function runs daily to: * Update certification alert flags * Mark expired certifications * Generate notifications for upcoming expirations *** ## Performance Tracking ### Performance Metrics The system automatically tracks: | Metric | Calculation | | ----------------------- | ------------------------------------------ | | **Total Work Orders** | Count of assigned work orders | | **Completion Rate** | Completed / Total assigned | | **Avg Completion Time** | Average days from assignment to completion | | **On-Time Rate** | Completed by due date / Total completed | | **Satisfaction Rating** | Average of work order ratings (1-5) | ### Viewing Performance 1. Open the vendor detail page 2. Go to the **Performance** tab 3. View: * Current metrics summary * Trend charts over time * Work order history ### Using Performance Data * **Preferred Vendor Selection**: Use metrics to identify top performers * **Vendor Reviews**: Schedule reviews with low-performing vendors * **Rate Negotiations**: Use data to justify rate discussions *** ## Work Order Integration ### Assigning Vendors When assigning vendors to work orders: 1. The system validates: * Vendor is active * Vendor is approved (if required) * Vendor has valid certifications (if required) * Vendor serves the work order site 2. If validation fails, the assignment is blocked with a clear message ### Assignment Workflow ``` Pending → Accepted → In Progress → Completed → Invoiced → Paid ↓ Declined ``` ### Tracking Vendor Assignments The `fm_vendor_work_orders` table tracks: * Assignment status and dates * Quote information * Scheduled work date * Actual start/end times * Invoice and payment status *** ## Tax & Payment Information ### Tax ID Management For 1099 reporting, vendors can store: * **EIN** (Employer Identification Number): XX-XXXXXXX * **SSN** (Social Security Number): XXX-XX-XXXX **Security:** * Tax IDs are masked in the UI (showing only last 4 digits) * Full access requires appropriate permissions * Data is encrypted at rest ### Payment Tracking Each vendor assignment tracks: * **Quote Amount**: Initial estimate * **Invoice Number**: Vendor's invoice reference * **Invoice Amount**: Actual billed amount * **Invoice Date**: Date invoice received * **Payment Status**: Pending, Approved, Paid * **Payment Date**: When payment was processed *** ## Security & Access Control ### Role-Based Permissions | Role | View Vendors | Assign to WO | Create/Edit | Manage Settings | | ------------------ | ------------ | ------------ | ----------- | --------------- | | Platform Admin | ✅ | ✅ | ✅ | ✅ | | Org Admin | ✅ | ✅ | ✅ | ✅ | | FM Admin | ✅ | ✅ | ✅ | ✅ | | Facilities Manager | ✅ | ✅ | ✅ | ❌ | | Staff | ✅ | ✅ | ❌ | ❌ | | View Only | ✅ | ❌ | ❌ | ❌ | ### Multi-Tenant Isolation * Vendors are organization-specific * RLS policies enforce organization boundaries * No cross-organization vendor access ### Audit Trail All changes are tracked: * Created by / created at * Updated by / updated at * Certification changes logged * Assignment status changes logged *** ## Integration with Other Modules ### Work Orders (FM-01) * Vendors assigned to work orders via `fm_vendor_work_orders` * Work order costs include vendor costs * Vendor performance updated on work order completion ### Inventory (FM-02) - Future * Link vendors as preferred suppliers for inventory items * Vendor catalogs with item pricing * Automatic vendor selection for reorders ### Accounts Payable (FA-03) - Future * Vendor invoices flow to AP for processing * 3-way match: Work order ↔ Invoice ↔ Payment * Vendor payment terms and discounts ### Purchase Orders (FA-04) - Future * Create POs for vendor work * Track vendor quotes vs actuals * Vendor contract pricing *** ## Module Settings Reference | Setting | Description | Default | | ------------------------------ | ------------------------------------------ | ------------- | | `require_vendor_certification` | Block assignment if certifications expired | true | | `certification_alert_days` | Days before expiration to alert | \[90, 60, 30] | | `vendor_approval_required` | New vendors need approval | true | | `max_preferred_per_category` | Limit preferred vendors | 3 | | `auto_update_performance` | Update metrics on WO completion | true | *** ## Troubleshooting ### Common Issues **Cannot assign vendor to work order** 1. Check vendor status is Active 2. Check vendor is Approved 3. Check certifications are valid 4. Verify vendor serves the work order's site **Certification alerts not sending** 1. Verify notification settings 2. Check edge function is running 3. Confirm expiration dates are set correctly **Performance metrics not updating** 1. Ensure work orders are marked as completed 2. Check trigger function is enabled 3. Manually trigger recalculation if needed **Tax ID validation errors** 1. EIN format: XX-XXXXXXX or XXXXXXXXX 2. SSN format: XXX-XX-XXXX or XXXXXXXXX 3. Remove extra spaces or special characters *** ## Best Practices 1. **Regular Reviews**: Review vendor certifications monthly 2. **Performance Monitoring**: Check low performers quarterly 3. **Documentation**: Keep digital copies of all certifications 4. **Site Assignment**: Keep vendor-site mappings current 5. **Preferred Vendors**: Limit to top 2-3 per category 6. **Tax Documentation**: Collect W-9 before first payment 7. **Contact Updates**: Verify contact info annually *** ## Need Help? * **Technical Issues**: Contact system administrator * **Process Questions**: Contact Facilities Manager * **Feature Requests**: Submit through feedback system # FM Vendor Management - User Guide Source: https://docs.encoreos.io/fm/vendor-user-guide The Vendor Management module helps you track and manage external service providers, contractors, and suppliers. You can view vendor information, check certific… ## Overview The Vendor Management module helps you track and manage external service providers, contractors, and suppliers. You can view vendor information, check certification status, and assign vendors to work orders. *** ## Getting Started ### Accessing Vendors 1. Navigate to **Facilities → Vendors** from the main menu 2. The vendor list displays: * All registered vendors * Their service categories * Certification status * Preferred vendor indicators ### Understanding the Vendor List The vendor list displays key information for each vendor: * **Vendor Number**: Unique identifier (auto-generated) * **Company Name**: Vendor's business name * **Category**: Service type (Plumbing, Electrical, HVAC, etc.) * **Status**: Active, Pending Approval, or Inactive * **Certification Status**: Valid, Expiring Soon, or Expired Use filters to narrow down vendors by: * Category * Status * Preferred vendor status * Certification status *** ## Viewing Vendor Details To view a vendor's complete profile: 1. Click on the vendor row in the list 2. The detail page shows: * **Contact Information**: Primary contact, phone, email * **Service Information**: Categories, service area, hourly rates * **Performance Metrics**: Work order history, completion rate, satisfaction rating * **Certifications**: Insurance, licenses, and compliance documents *** ## Assigning Vendors to Work Orders When a work order requires an external contractor: ### From the Work Order 1. Open the work order detail page 2. In the **Assignment** section, click **Assign Vendor** 3. Use the Vendor Selector to find an appropriate vendor: * Type to search by name * Filter by category * See certification warnings 4. Select the vendor 5. Optionally enter a **Quote Amount** 6. Click **Assign** ### What the Vendor Selector Shows The dropdown displays helpful information: * ✓ **Green checkmark**: Active vendor with valid certifications * ⚠ **Warning icon**: Vendor has expiring certifications * ✗ **Red X**: Vendor has expired certifications or is inactive *** ## Understanding Certification Status Vendors may have various certifications: | Type | Description | | ----------- | ----------------------------- | | **COI** | Certificate of Insurance | | **License** | Trade or business license | | **Bonding** | Payment or performance bond | | **Other** | Additional required documents | ### Certification Indicators | Status | Indicator | Meaning | | ------------- | --------- | ------------------------------------ | | Valid | ✓ Green | All certifications current | | Expiring Soon | ⚠ Yellow | Certification expires within 90 days | | Expired | ✗ Red | One or more certifications expired | ### Why Certifications Matter * Expired COI = potential liability if vendor causes damage * Expired licenses = may not be legally permitted to perform work * Your organization may require valid certifications before vendor assignment *** ## Vendor Work Order Tracking ### View Vendor Assignments On the vendor detail page, the **Work Orders** tab shows: * All work orders assigned to the vendor * Current status of each assignment * Quote and invoice information * Payment status ### Assignment Statuses | Status | Meaning | | ----------- | ------------------------------- | | Pending | Waiting for vendor acceptance | | Accepted | Vendor confirmed the assignment | | In Progress | Work has started | | Completed | Work finished | | Invoiced | Invoice received | | Paid | Payment processed | | Declined | Vendor declined the work | | Cancelled | Assignment cancelled | *** ## Mobile Usage The vendor module is optimized for mobile devices: * **Touch-friendly buttons** for quick actions * **Large tap targets** for easy selection * **Responsive layout** adapts to screen size * **Quick search** to find vendors on-site ### Tips for Mobile 1. Use the search bar to quickly find vendors 2. Tap a vendor row to view details 3. Use the phone icon to call vendors directly 4. Use the email icon to send messages *** ## FAQ **Q: Can I add new vendors?**\ A: Vendor creation requires Facilities Manager or Admin permissions. Contact your manager to add new vendors. **Q: Why can't I assign a vendor to a work order?**\ A: Check that: * The vendor is active * The vendor is approved * The vendor has valid certifications (if required) * The vendor serves the work order's site **Q: How do I know which vendor to use?**\ A: Consider: * Vendor category matches the work type * Vendor serves the site location * Certification status is valid * Past performance ratings **Q: What if a vendor's certification is expiring?**\ A: Notify your Facilities Manager. The vendor will be contacted to provide updated documentation. *** ## Need Help? Contact your Facilities Manager or system administrator for: * Adding new vendors * Updating vendor information * Access permission issues * Certification questions # Facilities Vendors Source: https://docs.encoreos.io/fm/vendors Manage contractors and service providers — category, active, and preferred filters, with certifications, work orders, and performance. This screen lists all vendors and is available at `/fm/vendors`. ## Overview The Vendors page loads vendors via `useVendorList` and supports pull-to-refresh on mobile via `MobilePullToRefresh`. Users can search by text, filter by **Category** (using `VENDOR_CATEGORY_LABELS`), filter by **Status** (active/inactive), and filter by **Preferred** status (preferred/not preferred). The `VendorTable` renders the list. An **Add Vendor** button opens `VendorFormDialog`. Note: The route `/fm/vendors/new` is not defined in `fm.tsx` and does not render any screen. Vendor creation is performed via the `VendorFormDialog` opened by the **Add Vendor** button on this page. ## Who it's for Requires permission `fm.dashboard.view`. Adding vendors requires `fm.vendors.create`. ## Before you start * Hold `fm.dashboard.view` and, for creating vendors, `fm.vendors.create`. ## Finding a vendor 1. Navigate to `/fm/vendors` via the FM sidebar or the Active Vendors stat card on the dashboard. 2. Use the search bar and the Category, Status, and Preferred dropdowns to narrow the list. 3. Click **Add Vendor** to open the vendor creation dialog; fill in the vendor name, category, contact information, and payment terms. 4. Click any vendor row to navigate to `/fm/vendors/:id`. * **Preferred vendor** — vendors flagged as preferred surface in the preferred filter and may be prioritized in work order assignment (confirm with SME). * **is\_active** — inactive vendors do not appear in work order vendor selection (confirm with SME). ## Viewing a vendor The Vendor Detail page (`/fm/vendors/:id`) loads a vendor by ID via `useVendorDetail`. The header displays vendor name, category badge, and status badges (active, approved, preferred). A two-column grid shows **Contact Information** (contact name, phone, email, address, masked tax ID, payment terms) and a **Vendor Performance Widget**. Below are cards for **Certifications** (with add, renew, and delete actions) and **Work Orders** associated with this vendor. The **Approve** button is shown for active, unapproved vendors; the **Deactivate** button is shown for active vendors. Both require confirmation dialogs. Requires `fm.dashboard.view`. Editing vendors requires `fm.vendors.edit`; approving or deactivating may require additional permissions — confirm with SME. Before you start: the vendor must exist and not have been deleted. 1. From the Vendors list, click any row to navigate to `/fm/vendors/:id`. 2. Check name, phone, email, address, tax ID (masked), and payment terms. 3. The Vendor Performance Widget surfaces performance metrics (confirm with SME what metrics are shown). 4. If the vendor is active but unapproved, click **Approve** to mark them approved. 5. Click **Add** in the Certifications card to add a new certification, or use **Renew** / **Delete** actions per certification. 6. Scroll to the Work Orders card to see work orders linked to this vendor. 7. Click **Edit** to open the vendor edit dialog. 8. Click **Deactivate** and confirm in the dialog to mark the vendor inactive. * **Tax ID masking** — `maskTaxId(vendor.tax_id, vendor.tax_id_type)` is applied before display; raw tax ID is never shown in plaintext. * **Certifications** — each certification has an expiration that can be tracked and renewed. * **Payment terms** — displayed as `{payment_terms_days} days`. ## Related Facilities & Inventory core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fm.tsx * src/cores/fm/pages/VendorsPage.tsx * src/cores/fm/pages/VendorDetailPage.tsx # Work Orders Source: https://docs.encoreos.io/fm/work-orders List, create, and manage maintenance work orders — with status, priority, and category filters, and a detail view with assignment, timeline, costs, and history. This screen displays a searchable, filterable list of work orders and is available at `/fm/work-orders`. ## Overview The Work Orders page renders a tabular list of work orders fetched via `useWorkOrderList`. Users can search by text and filter by **Status**, **Priority**, and **Category** using dropdown selects. Filter options are loaded from the `usePicklistByEnum` hook with enum fallback labels (`WORK_ORDER_STATUS_LABELS`, `WORK_ORDER_PRIORITY_LABELS`, `WORK_ORDER_CATEGORY_LABELS`). A **New Work Order** button opens `WorkOrderFormDialog`. Navigating to `/fm/work-orders?action=new` automatically opens the creation dialog on load. Note: The route `/fm/work-orders/new` redirects to `/fm/work-orders?action=new` and is not a standalone screen. ## Who it's for Requires permission `fm.dashboard.view` (enforced by the parent `FMViewGuard`). Creating a new work order additionally requires `fm.work-orders.create` (enforced within the form dialog). ## Before you start * Hold the `fm.dashboard.view` permission. * To create work orders, hold `fm.work-orders.create`. ## Finding a work order 1. Navigate to `/fm/work-orders` via the FM sidebar or the Open Work Orders stat card on the dashboard. 2. Use the search bar and the Status, Priority, and Category dropdowns to narrow the list. 3. Click any row in the work order table to navigate to its detail page at `/fm/work-orders/:id`. 4. Click **New Work Order** in the header. The creation dialog opens; fill in required fields and submit. 5. Click the **Help** button to start the guided tour for work orders. * **Work order status** — values include `draft`, `submitted`, `assigned`, `in_progress`, `on_hold`, `completed`, `closed`, `cancelled` (from `WORK_ORDER_STATUS_LABELS`). * **Priority** — values from `WORK_ORDER_PRIORITY_LABELS`. * **Category** — values from `WORK_ORDER_CATEGORY_LABELS`. ## Creating a work order Work orders are created via `WorkOrderFormDialog`. The route `/fm/work-orders/new` redirects to `/fm/work-orders?action=new`, which automatically opens the creation dialog. Requires `fm.work-orders.create`. 1. Navigate to `/fm/work-orders/new` (redirected) or click **New Work Order** from the work orders list. 2. The work order creation dialog opens; fill in required fields and submit. ## Viewing a work order The Work Order Detail page (`/fm/work-orders/:id`) loads a work order by ID using `useWorkOrderDetail`. It displays the work order number, title, status badge, and priority badge in the header. The main grid shows a **Details** card (description, type, category, site, location), and sidebar cards for **Assignment** (requester, assignee, assigned date), **Timeline** (created, due date, completed), and **Costs** (estimated hours, actual hours, estimated cost, actual material cost). Below the grid are cards for **Materials**, **Attachments**, and **History**. Context-sensitive action buttons appear based on the current status: Assign (`draft`/`submitted`), Start Work (`assigned`), Put On Hold (`in_progress`), Complete (`in_progress`), and Cancel (all non-terminal states). Requires `fm.dashboard.view`. Actions like Assign and Complete may require `fm.work-orders.edit` or `fm.work-orders.approve` — confirm with SME. Before you start: the work order must exist and not have been deleted. Hold the appropriate permissions for the action you intend to take. 1. From the Work Orders list, click any row to navigate to `/fm/work-orders/:id`. 2. Examine the Details, Assignment, Timeline, and Costs cards. 3. If the work order is in `draft` or `submitted` status, click **Assign** to open the assign dialog and select an assignee. 4. When status is `assigned`, click **Start Work** to move it to `in_progress`. 5. From `in_progress`, click **Complete** to open the completion dialog, or **Put On Hold** to pause. 6. Click **Cancel** on any non-terminal work order; a confirmation dialog is required. 7. Scroll down to view associated materials, file attachments, and the audit history of actions taken on this work order. * **Work order number** — displayed as the primary identifier (e.g., `WO-0001`). * **Status flow** — `draft` → `submitted` → `assigned` → `in_progress` → `completed`/`on_hold`/`cancelled`. * **History entries** — each status change records `action`, optional `notes`, `performed_by_profile`, and `performed_at`. ## Related Facilities & Inventory core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fm.tsx * src/cores/fm/pages/WorkOrdersPage.tsx * src/cores/fm/pages/WorkOrderDetailPage.tsx # Forms & Workflow All Forms Source: https://docs.encoreos.io/fw/all-forms Browse, search, filter, and manage all forms — with a visual form builder for creating new forms with fields, wizard configuration, and PDF preview. The All Forms screen lists every form in the organization and is available at `/fw/forms`. ## Overview This screen renders a searchable, filterable table of forms scoped to the current organization. Each row shows the form name, status (`draft`, `published`, or `archived`), and per-form statistics loaded via `useFormStats`. Users with `fw.forms.create` may create a new form via the **New Form** button in the page header. Per-row actions include edit, clone, view analytics, and archive (archive requires a confirmation dialog). ## Who it's for Requires permission: `fw.forms.view` (`FW_PERMISSIONS.FORMS_VIEW`). * To create forms, you also need `fw.forms.create`. * To archive forms, you also need `fw.forms.delete`. ## Finding and managing forms 1. Navigate to `/fw/forms`. The table loads forms for the current organization. 2. Type in the search box to filter by name, or select a status from the status dropdown (`all`, `draft`, `published`, `archived`). 3. Click the row actions menu (three-dot icon) to edit, clone, view analytics, or archive a form. 4. If archiving, confirm in the alert dialog that appears before the action is applied. * **FormStatus** — one of `draft`, `published`, `archived`; controls badge color and filtering. * **Clone** — creates a copy of an existing form within the same organization. * **Analytics** — navigates to `/fw/analytics/:formId` for per-form submission analytics. ## Creating a form The New Form page opens the Form Editor in creation mode at `/fw/forms/new`. It uses the same `FormEditor` component as the edit route; when no `id` query parameter is present the editor creates a new form on save. Requires `fw.forms.create`, enforced by `RequirePermission` in `src/routes/fw.tsx`. The Form Editor provides a visual builder. Tabs include: Builder (field list and metadata), Wizard (multi-step configuration), and — once the form is saved — Portal, PDF Preview, Permissions, and Versions. A live preview panel can be toggled on or off. Before you start: plan the form name and the fields needed before opening the editor. The editor validates that the name is non-empty and that at least one field exists before allowing a save. Each field requires a `field_key`, `field_type`, and `label`. 1. Navigate to `/fw/forms/new` or select **New Form** from the Forms list. 2. Enter a **Form Name** (required) and optional **Description** in the Form Details card. 3. Optionally toggle **Analytics Tracking** on or off. 4. Add fields using **Add Field**. For each field, configure key, type, label, and any validation rules in the `FieldEditorDialog`. 5. Reorder fields by dragging within the `DraggableFieldList`. 6. Use **Quality Score** to evaluate the field configuration, or **Suggest with AI** to receive AI-generated field suggestions. 7. Optionally switch to the **Wizard** tab to configure multi-step wizard behavior. 8. Select **Save Form**. On success the editor redirects to `/fw/forms/edit?id=` where portal, PDF, permissions, and version history tabs become available. 9. To publish the form for submissions, use the **Publish** button (available after saving when the form is in `draft` status). * **Field key** — A unique identifier for the field within the form; used in `submission_data` JSON. * **Wizard configuration** — Enables multi-page wizard mode for the form via `WizardConfigPanel`. Requires `pages` to be configured. * **PDF Preview** — A client-side preview of how the form renders as a PDF, using `PdfPreviewPanel`. Toggleable sample data shows placeholder values per field type. * **Prefill rules** — Shown in the Builder tab when a field is selected, allowing rules to auto-populate field values. * **Draft vs. published** — A form starts as `draft`. Publishing creates a version and makes the form available for submissions. ## Related Forms & Workflow core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fw\.tsx * src/cores/fw/pages/FormsList.tsx * src/cores/fw/pages/FormEditor.tsx * src/platform/forms/hooks/useFormStats.ts * src/platform/forms/useFormList.ts * src/platform/forms/useFormDefinition.ts * src/platform/forms/useFormMutation.ts * src/cores/fw/components/DraggableFieldList.tsx * src/cores/fw/components/FieldEditorDialog.tsx * src/platform/permissions/constants.ts # Forms & Workflow Analytics Source: https://docs.encoreos.io/fw/analytics Summary analytics across all forms, including submission counts, completion rates, and trends at /fw/analytics. The Analytics screen provides an organization-wide summary of form submission data and is available at `/fw/analytics`. ## Overview This page displays aggregated submission analytics for the current organization over a configurable date range (defaulting to the last 30 days). It renders summary stat cards (loaded via `useFormAnalyticsSummary`) alongside a submission trend chart and two tables: top forms by submission volume and top forms by completion rate. Clicking a form row navigates to the per-form detail at `/fw/analytics/:formId`. ## Who it's for Access follows your organization's role and module configuration. ## Before you start * Access `/fw/analytics` directly or from the Forms & Workflow dashboard. * Adjust the start and end date inputs to change the analytics window. ## Steps Navigate to `/fw/analytics`. Summary cards and the trend chart load for the default 30-day window. Update the **Start Date** and **End Date** fields to narrow or widen the analysis period. Inspect the two tables — top forms by volume (total submissions) and top forms by completion rate. Click a row to open the form's detail analytics at `/fw/analytics/:formId`. ## Key concepts * **Completion rate** — percentage of started submissions that were completed; shown as a badge (green above 70 %). * **Submission trend chart** — rendered by `SubmissionTrendChart` component; time-series data from `useFormCompletionMetrics`. ## Related Forms & Workflow core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fw\.tsx * src/cores/fw/pages/FormAnalyticsPage.tsx * src/platform/permissions/constants.ts # Approval Chains Source: https://docs.encoreos.io/fw/approval-chains Configure and manage multi-step approval workflow chains — with a chain builder for creating and editing chains at /fw/approval-chains. The Approval Chains screen lists all configured multi-step approval chains in the organization and is available at `/fw/approval-chains`. ## Overview This admin screen displays all approval chains for the organization via the `ApprovalChainList` component. Users holding the `fw.chains.create` permission see a **New Chain** button that navigates to `/fw/approval-chains/new`. Existing chains can be edited from the list, navigating to `/fw/approval-chains/:chainId/edit`. ## Who it's for Access follows your organization's role and module configuration. * The **New Chain** action is gated by `fw.chains.create` (`FW_PERMISSIONS.CHAINS_CREATE`). * To edit an existing chain you need `fw.chains.edit`. ## Finding a chain 1. Navigate to `/fw/approval-chains` to see all configured chains. 2. Click **New Chain** (visible with `fw.chains.create`) to open the chain builder at `/fw/approval-chains/new`. 3. Click a chain in the list to navigate to `/fw/approval-chains/:chainId/edit`. **Approval chain** — an ordered sequence of approval steps used to route requests through multiple reviewers before completion. ## Creating a chain The New Approval Chain screen (`/fw/approval-chains/new`) renders a page container with a back button (navigating to `/fw/approval-chains`) and a heading **New Approval Chain** with the subtitle "Create a new multi-step approval workflow." The `ApprovalChainBuilder` component is rendered without pre-populated data. On successful save, the user is navigated to `/fw/approval-chains`. Cancelling also returns to `/fw/approval-chains`. SME: confirm whether `fw.chains.create` is enforced inside `ApprovalChainBuilder`. Before you start: navigate here from the Approval Chains list by clicking **New Chain** (visible when you hold `fw.chains.create`). 1. Navigate to `/fw/approval-chains/new` or click **New Chain** in the Approval Chains list. 2. Use `ApprovalChainBuilder` to define chain steps, approvers, and settings. 3. Click save; on success, you are redirected to `/fw/approval-chains`. 4. Click the back button or cancel to return to `/fw/approval-chains` without saving. ## Editing a chain The Edit Approval Chain screen (`/fw/approval-chains/:chainId/edit`) loads the approval chain identified by `chainId` via `useApprovalChain`. The breadcrumb label is set to `Edit ` via `useEntityBreadcrumb`. A loading skeleton is shown while data loads. If the chain is not found or an error occurs, an error state with a **Back to Chains** button is displayed. Otherwise, the `ApprovalChainBuilder` component is rendered pre-populated with the existing chain configuration. Saving navigates back to `/fw/approval-chains`. SME: confirm whether `fw.chains.edit` is enforced inside `ApprovalChainBuilder`. Before you start: navigate here by clicking an approval chain's edit action in the Approval Chains list. A valid `chainId` must exist in the organization. 1. Navigate to `/fw/approval-chains/:chainId/edit` or click edit on an existing chain. 2. Use `ApprovalChainBuilder` to update the chain steps, approvers, or settings. 3. Click save; successful save navigates back to `/fw/approval-chains`. 4. Click cancel or the back button to return to `/fw/approval-chains` without saving. ## Related Forms & Workflow core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fw\.tsx * src/cores/fw/pages/ApprovalChainsPage.tsx * src/cores/fw/pages/ApprovalChainEditPage.tsx * src/cores/fw/pages/ApprovalChainNewPage.tsx * src/platform/permissions/constants.ts # Forms & Workflow Approval Inbox Source: https://docs.encoreos.io/fw/approval-inbox View and action pending approval requests assigned to the current user, with a detail view to approve, reject, or review each request. The Approval Inbox screen shows pending approval requests for the current user and is available at `/fw/approvals`. ## Overview This screen renders the `ApprovalInbox` component scoped to the current user. A badge in the header shows the count of pending approvals loaded by `usePendingApprovalCount`. Selecting an approval navigates to `/fw/approvals/:requestId`. A link to `/inbox` appears at the top right for the broader platform inbox. An empty-state action button navigates to `/fw/my-requests`. ## Who it's for Access follows your organization's role and module configuration. ## Before you start * Navigate to `/fw/approvals` from the Forms & Workflow sidebar or dashboard. * Pending approvals are filtered to those assigned to the current user. ## Finding approvals 1. Navigate to `/fw/approvals`. The pending count badge loads automatically. 2. Click any approval request in the list to open its detail at `/fw/approvals/:requestId`. 3. If no pending approvals exist, use **View My Requests** to navigate to `/fw/my-requests`. **Pending count** — live count from `usePendingApprovalCount`; updates in real time. ## Viewing an approval The Approval Details screen (`/fw/approvals/:requestId`) shows the full detail of one approval request. This screen reads the `requestId` URL parameter and passes it to the `ApprovalRequestDetail` component. When no `requestId` is present an error state is displayed with a link back to the Approval Inbox. The breadcrumb label is set to the first 8 characters of the request ID via `useBreadcrumbLabel`. Before you start: reach this screen by selecting a request from the Approval Inbox (`/fw/approvals`) or from a direct deep link. A valid `requestId` must be present in the URL. 1. Click a pending request in the Approval Inbox or follow a direct link to `/fw/approvals/:requestId`. 2. The `ApprovalRequestDetail` component renders the full request context. 3. Use the actions provided by the detail component (approve, reject, or other configured steps). 4. Use the back navigation or click **Back to Inbox** if the request ID is missing. ## Related Forms & Workflow core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fw\.tsx * src/cores/fw/pages/ApprovalInboxPage.tsx * src/cores/fw/pages/ApprovalRequestDetailPage.tsx # Approval Routing Rules Source: https://docs.encoreos.io/fw/approval-routing-rules Manage conditional approval routing rules that assign chains by entity type at /fw/approval-routing. The Approval Routing Rules screen lets administrators create and manage conditional routing rules that direct requests to specific approval chains and is available at `/fw/approval-routing`. ## Overview This admin-only screen displays all approval routing rules loaded via `useApprovalRoutingRules`. Each rule card shows its entity type, associated approval chain (from `useApprovalChains`), and an active/inactive toggle. Rules can be created, edited, toggled, and deleted. Manage access is gated by `fw.approval_routing.manage` (`canManage` flag). Deletions require confirmation via an `AlertDialog`. The `ApprovalRoutingRuleDialog` component is used for both create and edit flows. ## Who it's for Requires permission: `fw.approval_routing.view` (route guard). Manage actions additionally require `fw.approval_routing.manage`. ## Before you start * Hold `fw.approval_routing.view` to access this screen. * Hold `fw.approval_routing.manage` to create, edit, toggle, or delete rules. * At least one approval chain must exist before creating routing rules. ## Steps Navigate to `/fw/approval-routing`. Click **New Rule** (visible with `fw.approval_routing.manage`) to open `ApprovalRoutingRuleDialog`. Click the edit icon on a rule card to reopen the dialog with existing values. Click the toggle icon to enable or disable a rule without deleting it. Click the trash icon and confirm in the alert dialog to permanently remove a rule. ## Key concepts * **Routing rule** — a conditional policy that maps an entity type and matching criteria to an approval chain. * **Hit policy** — SME: confirm whether rules are evaluated first-match or all-match (not determinable from code). ## Related Forms & Workflow core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fw\.tsx * src/cores/fw/pages/ApprovalRoutingRulesPage.tsx * src/platform/permissions/constants.ts # Audit & Compliance Source: https://docs.encoreos.io/fw/audit-compliance Export workflow audit data, generate compliance reports, and manage retention settings at /fw/audit-compliance. The Audit & Compliance screen provides tabbed access to workflow execution export, compliance reports, scheduled reports, and retention settings and is available at `/fw/audit-compliance`. ## Overview This admin screen uses a four-tab layout. **Workflow Export** (`WorkflowExecutionExportTab`) allows downloading workflow execution records. **Compliance Reports** (`ComplianceReportsTab`) generates named compliance reports. **Scheduled Reports** (`ScheduledReportsTab`) manages recurring report delivery. **Retention** (`RetentionSettingsTab`) configures how long audit records are retained. All tabs are wrapped in a `PermissionGate` for `fw.audit.view` (`FW_PERMISSIONS.AUDIT_VIEW`). ## Who it's for Requires permission: `fw.audit.view` (`FW_PERMISSIONS.AUDIT_VIEW`). ## Before you start * Hold `fw.audit.view` to access this screen. * Ensure the execution worker is configured if you need real-time execution data. ## Steps Navigate to `/fw/audit-compliance`. Select the **Workflow Export** tab to download execution records. Select the **Compliance Reports** tab and configure a report. Select the **Scheduled Reports** tab to set up recurring report delivery. Select the **Retention** tab to adjust the audit record retention period. ## Key concepts * **Workflow Export** — raw execution-level audit data export. * **Compliance Reports** — structured reports for regulatory or internal review. * **Retention** — controls how long audit records are kept before purge. ## Related Forms & Workflow core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fw\.tsx * src/cores/fw/pages/AuditCompliancePage.tsx * src/platform/permissions/constants.ts # Automations Source: https://docs.encoreos.io/fw/automations Create, manage, and monitor automation rules — with a detail view for trigger configuration, action steps, and execution traces. The Automations screen is the central hub for creating and monitoring automation rules (triggers + actions) and is available at `/fw/automations`. ## Overview This screen renders a tabbed layout with four tabs: a rules list (`AutomationRulesList`), an analytics dashboard (`AutomationAnalyticsDashboard`), an execution monitor (`ExecutionDashboard`), and a log viewer (`AutomationLogViewer`). FW module settings are loaded via `useFWModuleSettings`; when the execution worker is not enabled, an alert notice is displayed. New rules are created in a slide-over `AutomationRuleBuilder`. Existing rules can be edited from the list. Execution records can be viewed, debugged, or replayed via `ExecutionDetailDialog`. Note: There is no dedicated `/fw/automations/new` route. The creation experience launches from the **New Automation** button on this page. ## Who it's for Access follows your organization's role and module configuration. * The execution worker must be enabled (`fw_execution_worker_enabled = true`) in FW settings for automations to run. * If the worker notice is shown, contact your administrator. * An organization must be selected. If no organization is active, the new-rule flow is unavailable. ## Finding and managing automations 1. Navigate to `/fw/automations`. Review any worker configuration notice at the top. 2. The default tab lists all automation rules for the organization. 3. Click **New Automation** to open `AutomationRuleBuilder` and configure a trigger and action set. 4. Click a rule's edit action to reopen `AutomationRuleBuilder` with existing configuration. 5. Switch to the **Executions** tab to view the `ExecutionDashboard`. 6. Click an execution record to open `ExecutionDetailDialog` in view, debug, or replay mode. * **Automation rule** — a named rule pairing a trigger with one or more actions. * **Execution worker** — the platform service that runs automations; controlled by `fw_execution_worker_enabled` in `fw_module_settings`. * **Replay** — re-runs a past execution record; requires `fw.workflow-executions.replay` permission. * **Trigger type** — determines when the rule fires (e.g., `form_submitted` and other event-based or date-relative triggers visible in `useAutomationRules`). ## Viewing an automation The Automation Details screen (`/fw/automations/:id`) shows the full configuration and most recent execution trace for a single automation rule. This screen loads the automation rule matching the `id` URL parameter from `useAutomationRules`. For rules with a trigger type of `event` or `date_relative`, an inline trigger configuration panel (`EventTriggerConfig` or `DateRelativeTriggerConfig`) is shown and can be edited directly. The most recent execution is loaded via `useRealtimeExecutions` and displayed as an `ExecutionTrace`. Domain events are listed via `useDomainEvents`. Action steps are managed through `AutomationActionsBuilder`. Before you start: navigate here from the Automations list (`/fw/automations`) or from a direct deep link. A valid automation ID must be present in the URL. 1. Navigate to `/fw/automations/:id` or click a rule name in the Automations list. 2. For `event` or `date_relative` rules, the trigger config panel is displayed and editable inline. 3. The `AutomationActionsBuilder` section lists the configured action steps. 4. The last execution is shown in the `ExecutionTrace` panel with status and step details. 5. Click save in the trigger config panel; changes are persisted via `useEventTriggerConfig`. * **Trigger type** — `event` (domain event fired) or `date_relative` (scheduled relative to a date field); other types do not show the inline config panel. * **Execution trace** — the step-by-step record of the most recent run of this automation. * **Domain events** — platform events that can trigger automations, loaded via `useDomainEvents`. ## Related Forms & Workflow core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fw\.tsx * src/cores/fw/pages/Automations.tsx * src/cores/fw/pages/AutomationDetail.tsx * src/cores/fw/hooks/useAutomationRules.ts * src/cores/fw/hooks/useFWModuleSettings.ts * src/platform/permissions/constants.ts # Forms & Workflow Dashboard Source: https://docs.encoreos.io/fw/dashboard Forms & Workflow overview dashboard showing active forms, submissions, automations, and pending approvals at /fw/dashboard. The Dashboard screen is the main landing page for the Forms & Workflow core and is available at `/fw/dashboard`. ## Overview This screen renders four stat cards (Active Forms, Total Submissions, Active Automations, Pending Approvals) loaded via `useFWDashboardStats`. Below the stats, a quick-actions section (`QuickActionsSection`) supports both global and module-specific actions for the `fw` module. Three lazy-loaded widgets display recent activity: `KpiOverviewWidget`, `RecentSubmissionsWidget`, and `AutomationStatsWidget`. The route `/fw` redirects here automatically. ## Who it's for Requires permission: `fw.forms.view` (`FW_PERMISSIONS.FORMS_VIEW`). ## Before you start * Hold `fw.forms.view` to access this screen. * The dashboard reflects data for the current organization. ## Steps Navigate to `/fw/dashboard` or `/fw` (which redirects here). Four cards summarize key counts: active forms, total submissions, active automations, and pending approvals. The Quick Actions section provides shortcuts to common Forms & Workflow tasks. The three widgets below show KPI overview, recent submissions, and automation stats. ## Key concepts * **Active Forms** — count of published forms in the organization. * **Pending Approvals** — count of approval requests awaiting the current user's action. * **Quick Actions** — configurable shortcuts for the `fw` module; editable per organization. ## Related Forms & Workflow core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fw\.tsx * src/cores/fw/pages/FWOverview\.tsx * src/platform/permissions/constants.ts # Forms & Workflow Database Tables Source: https://docs.encoreos.io/fw/database-tables The FW module provides a comprehensive form builder and workflow automation engine, including form design, submissions, approval workflows, automation rules, a… **Prefix:** `fw_`\ **Table Count:** 54\ **Last Updated:** 2026-01-10 *** ## Overview The FW module provides a comprehensive form builder and workflow automation engine, including form design, submissions, approval workflows, automation rules, and analytics. *** ## Table Categories ### 1. Form Builder (6 tables) | Table | Columns | Description | | -------------------------- | ------- | ------------------------ | | `fw_forms` | 26 | Form definitions | | `fw_form_fields` | 24 | Field definitions | | `fw_form_versions` | 14 | Form version history | | `fw_form_templates` | 18 | Shareable form templates | | `fw_form_template_ratings` | 10 | Template ratings | | `fw_form_permissions` | 10 | Form access control | **Form Status:** * `draft` → `published` → `archived` **Field Types:** ```typescript theme={null} type FieldType = | 'text' | 'textarea' | 'number' | 'email' | 'phone' | 'date' | 'datetime' | 'time' | 'select' | 'multiselect' | 'radio' | 'checkbox' | 'file' | 'image' | 'signature' | 'address' | 'lookup' | 'calculated' | 'section' | 'repeater' | 'table'; ``` **Form Schema Example:** ```typescript theme={null} interface FormField { id: string; name: string; label: string; type: FieldType; required: boolean; validation?: ValidationRule[]; options?: SelectOption[]; // For select/radio/checkbox lookup_config?: LookupConfig; // For lookup fields calculated_formula?: string; // For calculated fields conditional_logic?: ConditionalRule[]; } ``` ### 2. Form Submissions (5 tables) | Table | Columns | Description | | ------------------------------- | ------- | ------------------------- | | `fw_form_submissions` | 22 | Submission records | | `fw_submission_attachments` | 12 | File attachments | | `fw_submission_notes` | 10 | Internal notes | | `fw_form_submission_signatures` | 14 | E-signature records | | `fw_portal_submissions` | 16 | Public portal submissions | **Submission Data Storage:** ```typescript theme={null} interface Submission { id: string; form_id: string; form_version_id: string; data: Record; // JSONB field data status: 'draft' | 'submitted' | 'processing' | 'completed'; submitted_at?: string; submitted_by?: string; } ``` ### 3. Workflow Engine (8 tables) | Table | Columns | Description | | --------------------------------- | ------- | -------------------- | | `fw_workflow_definitions` | 24 | Workflow definitions | | `fw_workflow_versions` | 16 | Version history | | `fw_workflow_templates` | 18 | Shareable templates | | `fw_workflow_template_versions` | 14 | Template versions | | `fw_workflow_template_ratings` | 10 | Template ratings | | `fw_workflow_template_usage` | 8 | Usage tracking | | `fw_workflow_version_comparisons` | 12 | Version diffs | | `fw_subflows` | 16 | Reusable subflows | **Workflow Definition Schema:** ```typescript theme={null} interface WorkflowDefinition { id: string; name: string; trigger_type: 'form_submission' | 'schedule' | 'event' | 'manual'; trigger_config: TriggerConfig; steps: WorkflowStep[]; variables: WorkflowVariable[]; } interface WorkflowStep { id: string; type: 'action' | 'condition' | 'approval' | 'delay' | 'subflow'; config: StepConfig; next_steps: string[]; // Step IDs on_error?: string; // Error handler step } ``` ### 4. Workflow Execution (4 tables) | Table | Columns | Description | | ------------------------ | ------- | ------------------------- | | `fw_workflow_executions` | 22 | Active workflow instances | | `fw_execution_logs` | 14 | Step execution logs | | `fw_domain_events` | 16 | Event bus records | | `fw_workflow_events` | 12 | Workflow-specific events | **Execution Status:** * `pending` → `running` → `completed` * `failed`, `cancelled`, `paused` ### 5. Approvals (7 tables) | Table | Columns | Description | | ------------------------- | ------- | --------------------------- | | `fw_approval_chains` | 16 | Approval chain definitions | | `fw_approval_steps` | 14 | Steps within chains | | `fw_approval_requests` | 20 | Active approval requests | | `fw_approval_assignments` | 12 | Approver assignments | | `fw_approval_delegations` | 14 | Delegation rules | | `fw_approval_history` | 14 | Approval decision log | | `fw_workflow_approvals` | 12 | Workflow-specific approvals | **Approval Step Types:** * `single` - One approver required * `all` - All approvers must approve * `any` - Any approver can approve * `percentage` - X% must approve **Approval Decision Flow:** ``` fw_approval_requests (pending) ↓ fw_approval_assignments (assigned to approvers) ↓ fw_approval_history (decision recorded) ↓ fw_approval_requests (approved/rejected) ``` ### 6. Automation Rules (4 tables) | Table | Columns | Description | | ----------------------- | ------- | ------------------------- | | `fw_automation_rules` | 20 | Automation definitions | | `fw_automation_actions` | 16 | Action configurations | | `fw_automation_logs` | 14 | Execution logs | | `fw_action_templates` | 14 | Reusable action templates | **Action Types:** ```typescript theme={null} type ActionType = | 'send_email' | 'send_notification' | 'create_record' | 'update_record' | 'delete_record' | 'call_api' | 'call_webhook' | 'assign_task' | 'start_workflow' | 'calculate' | 'transform'; ``` ### 7. Alerts & Notifications (5 tables) | Table | Columns | Description | | -------------------------------------- | ------- | ---------------------- | | `fw_workflow_alert_rules` | 16 | Alert rule definitions | | `fw_workflow_alerts` | 14 | Active alerts | | `fw_workflow_notification_rules` | 14 | Notification configs | | `fw_workflow_notification_preferences` | 12 | User preferences | | `fw_template_update_notifications` | 10 | Template change alerts | ### 8. Analytics (2 tables) | Table | Columns | Description | | --------------------------------- | ------- | ------------------ | | `fw_workflow_path_analytics` | 14 | Path analysis data | | `fw_workflow_performance_metrics` | 16 | Performance KPIs | **Tracked Metrics:** * Execution time per step * Bottleneck identification * Approval turnaround time * Error rates by step type ### 9. Testing & Debugging (6 tables) | Table | Columns | Description | | ----------------------- | ------- | --------------------- | | `fw_test_cases` | 16 | Test case definitions | | `fw_test_datasets` | 12 | Test data sets | | `fw_test_scenarios` | 14 | Test scenarios | | `fw_test_coverage` | 12 | Coverage reports | | `fw_debug_sessions` | 14 | Debug session logs | | `fw_sandbox_executions` | 16 | Sandbox test runs | ### 10. Integration (2 tables) | Table | Columns | Description | | -------------------- | ------- | ---------------------- | | `fw_api_connections` | 18 | External API configs | | `fw_query_whitelist` | 12 | Allowed query patterns | ### 11. Public Portal (3 tables) | Table | Columns | Description | | ----------------------- | ------- | ------------------- | | `fw_form_portal_config` | 16 | Portal settings | | `fw_portal_rate_limits` | 10 | Rate limiting | | `fw_page_templates` | 14 | Portal page layouts | ### 12. Security (1 table) | Table | Columns | Description | | ------------------------ | ------- | --------------------- | | `fw_signature_audit_log` | 12 | Signature audit trail | ### 13. Module Settings (1 table) | Table | Columns | Description | | -------------------- | ------- | ---------------- | | `fw_module_settings` | 27 | FW configuration | **Key Settings:** | Setting | Type | Default | | -------------------------------- | ------- | ------- | | `max_form_fields` | integer | 100 | | `max_workflow_steps` | integer | 50 | | `default_approval_timeout_hours` | integer | 72 | | `enable_public_portals` | boolean | false | | `max_file_size_mb` | integer | 25 | *** ## Common Query Patterns ### Get Form with Fields ```typescript theme={null} const { data } = await supabase .from('fw_forms') .select(` *, fields:fw_form_fields(*) `) .eq('id', formId) .single(); ``` ### Get Pending Approvals ```typescript theme={null} const { data } = await supabase .from('fw_approval_requests') .select(` *, assignments:fw_approval_assignments( *, approver:pf_profiles(first_name, last_name) ) `) .eq('status', 'pending') .contains('assignments.approver_id', [userId]); ``` ### Get Workflow Execution Status ```typescript theme={null} const { data } = await supabase .from('fw_workflow_executions') .select(` *, logs:fw_execution_logs(*) `) .eq('id', executionId) .single(); ``` ### Get Form Submissions ```typescript theme={null} const { data } = await supabase .from('fw_form_submissions') .select(` *, form:fw_forms(name), submitter:pf_profiles(first_name, last_name) `) .eq('form_id', formId) .order('submitted_at', { ascending: false }); ``` *** ## RLS Policies FW uses multi-level RLS: 1. Organization isolation via `organization_id` 2. Form-level permissions via `fw_form_permissions` 3. Submission access based on form settings 4. Approval access for assigned approvers **Helper Functions:** * `fw_user_can_view_form()` - Form view permission * `fw_user_can_submit_form()` - Submission permission * `fw_user_can_approve()` - Approval assignment check *** ## Platform Integration Forms are accessed via Platform Integration Layer: ```typescript theme={null} // ✅ CORRECT - Use platform layer import { FormEmbed, useFormSubmission } from '@/platform/forms'; // ❌ WRONG - Direct core import import { FormEmbed } from '@/cores/fw/components'; ``` *** ## See Also * [FW Module Specs](https://github.com/Encore-OS/encoreos/tree/development/specs/fw) * [Platform Forms Integration](/architecture/integrations/PLATFORM_INTEGRATION_LAYERS) * [Database Schema Overview](/architecture/DATABASE_SCHEMA) # Dead Letter Queue Source: https://docs.encoreos.io/fw/dead-letter-queue Inspect, retry, and discard failed automation executions held in the dead letter queue at /fw/dead-letter-queue. The Dead Letter Queue screen lists failed automation executions with actions to retry or discard them and is available at `/fw/dead-letter-queue`. ## Overview This admin screen loads failed execution entries via `useDeadLetterQueue` with filter support (`DLQFilters`). A stats bar (`DLQStatsBar`) shows summary counts by status. Entries have statuses of `pending`, `retried`, `resolved`, or `discarded`. Per-entry and bulk actions (retry and discard) are available. Individual retry and discard use `useDLQRetry` and `useDLQDiscard`; bulk operations use `useDLQBulkRetry` and `useDLQBulkDiscard`. Retry and discard confirmations are presented in dialogs (`DLQRetryDialog`, `DLQDiscardDialog`). Expanding a row opens a detail panel (`DLQDetailPanel`). ## Who it's for Requires permission: `fw.dead-letter-queue.view` (`FW_PERMISSIONS.DEAD_LETTER_QUEUE_VIEW`). Retry requires `fw.dead-letter-queue.retry`. Discard requires `fw.dead-letter-queue.discard`. ## Before you start * Hold `fw.dead-letter-queue.view` to access this screen. * Hold `fw.dead-letter-queue.retry` to retry entries. * Hold `fw.dead-letter-queue.discard` to discard entries. ## Steps Navigate to `/fw/dead-letter-queue`. Use `DLQFilters` to narrow by status, automation, or date. Click a row to open `DLQDetailPanel` and inspect the failure details. Click the retry button on a row and confirm in `DLQRetryDialog`. Click the discard button and confirm in `DLQDiscardDialog`. Select multiple rows with checkboxes and use the bulk action buttons. ## Key concepts * **Dead letter queue** — a holding area for automation executions that failed all retry attempts. * **DLQ entry statuses** — `pending` (not yet retried), `retried`, `resolved` (succeeded on retry), `discarded`. ## Related Forms & Workflow core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fw\.tsx * src/cores/fw/pages/DeadLetterQueuePage.tsx * src/platform/permissions/constants.ts # Decision Tables Source: https://docs.encoreos.io/fw/decision-tables Browse, create, and edit decision tables with a rule grid, test panel, and version history for rule-based workflow logic. The Decision Tables screen lists all decision tables for the organization with search and filter capabilities and is available at `/fw/decision-tables`. ## Overview This screen renders a list/table of decision tables loaded via `useDecisionTables`, scoped to the current user's organization. Filters include a text search and a status dropdown (`draft`, `published`, `archived`). Each row shows the table name, hit policy (from `HIT_POLICY_LABELS`), status badge, and a link to the editor. A **New Decision Table** button (gated by `fw.decision_tables.manage` via `PermissionGate`) navigates to `/fw/decision-tables/new`. ## Who it's for No explicit route-level permission gate. The **New Decision Table** button is gated by `fw.decision_tables.manage` (`FW_PERMISSIONS.DECISION_TABLES_MANAGE`). * To view decision tables, navigate to `/fw/decision-tables`. * To create or edit tables, hold `fw.decision_tables.manage`. ## Finding a decision table 1. Navigate to `/fw/decision-tables`. 2. Use the search input and status dropdown to locate a specific table. 3. Click a table name to navigate to `/fw/decision-tables/:id/edit`. 4. Click **New Decision Table** (requires `fw.decision_tables.manage`) to navigate to `/fw/decision-tables/new`. * **Hit policy** — determines how matching rules are evaluated (e.g., first match vs. all matches); labels sourced from `HIT_POLICY_LABELS`. * **Decision table status** — `draft`, `published`, or `archived`. ## Creating a decision table The New Decision Table page opens the Decision Table Editor in creation mode at `/fw/decision-tables/new`. It uses the same `DecisionTableEditorPage` component as the edit route; when no `id` query parameter is present the editor creates a new form on save. Requires `fw.decision_tables.manage`. Before you start: choose a descriptive name and select the hit policy that matches your rule evaluation strategy before adding rows, as it affects how multiple matching rules are handled. 1. Navigate to `/fw/decision-tables` and select **New Table**, or navigate directly to `/fw/decision-tables/new`. 2. Enter a **Name** (required) and optional **Description** and **Tags** in the Configuration card. 3. Select a **Hit Policy** from the dropdown. 4. Add input and output columns to the rule grid using the `DecisionTableGrid` controls. 5. Define rule rows by filling in condition values for each input column and result values for each output column. 6. Select **Save**. On success the browser redirects to `/fw/decision-tables/:id/edit` and the table status is `draft`. 7. To make the table available for use, select **Publish** and optionally add a change summary in the confirmation dialog. * **Draft vs. published** — a table starts in `draft` status. Only published tables are available for reference by automations and workflows. * **Version** — each publish action increments the version number displayed in the editor header. ## Editing a decision table The Edit Decision Table screen (`/fw/decision-tables/:id/edit`) provides a full editor for a decision table's metadata, rule grid, test panel, and version history. This screen also serves the create flow (when `id === 'new'`, routing from `/fw/decision-tables/new`). Table metadata (name, description, hit policy) is editable inline. The rule grid (`DecisionTableGrid`) displays input and output columns with editable cells. Four tabs organize the editor: rule grid, test panel (`DecisionTableTestPanel`), version history (`DecisionTableVersionHistory`), and a rule evaluations audit log (`RuleEvaluationsAuditLog`). Actions include save draft, publish (`DecisionTablePublishDialog`), archive, and delete. Edit actions are gated by `fw.decision_tables.manage` (`canManage`). Requires `fw.decision_tables.manage` to perform edits. Viewing is gated by `fw.decision_tables.view`. Before you start: hold `fw.decision_tables.manage` to create or edit tables. Access from the Decision Tables list or navigate directly with a valid `id`. 1. Navigate to `/fw/decision-tables/:id/edit` or click a table in the list. 2. Update the table name, description, and hit policy in the header form. 3. Use the rule grid tab to add, edit, or remove input/output columns and rule rows. 4. Switch to the **Test** tab to run test inputs against the current rule set. 5. Click **Save** to store as draft, or **Publish** to make the table active in automations. 6. Switch to the **Version History** tab to view past versions and the audit log. * **Input columns / Output columns** — structured condition and result definitions for each rule row. * **Publish** — moves the table from `draft` to `published` status, making it available to automations. ## Related Forms & Workflow core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fw\.tsx * src/cores/fw/pages/DecisionTableListPage.tsx * src/cores/fw/pages/DecisionTableEditorPage.tsx * src/cores/fw/hooks/useDecisionTable.ts * src/cores/fw/hooks/useDecisionTableMutation.ts * src/cores/fw/types/decision-tables.ts * src/platform/permissions/constants.ts # Delegations Source: https://docs.encoreos.io/fw/delegations Manage approval authority delegations that transfer your approval rights to another user at /fw/delegations. The Delegations screen lets users manage approval authority delegations and is available at `/fw/delegations`. ## Overview This screen renders the `DelegationManager` component inside a narrow (`maxWidth="2xl"`) page container. All delegation management functionality is encapsulated within `DelegationManager`, which handles creating, editing, and revoking delegations. ## Who it's for Access follows your organization's role and module configuration. ## Before you start * Navigate to `/fw/delegations` from the Forms & Workflow sidebar. * You must be logged in as the user whose delegation authority you are managing. ## Steps Navigate to `/fw/delegations`. Use the controls in `DelegationManager` to delegate approval authority. Use the revoke action within `DelegationManager` to remove an active delegation. ## Related Forms & Workflow core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fw\.tsx * src/cores/fw/pages/DelegationsPage.tsx # Dependency Graph Source: https://docs.encoreos.io/fw/dependency-graph Visualize dependencies between forms, workflows, automations, decision tables, and events at /fw/settings/dependency-graph. The Dependency Graph screen renders an interactive node-edge visualization of relationships between Forms & Workflow entities and is available at `/fw/settings/dependency-graph`. ## Overview This admin screen uses the `@xyflow/react` library to render a graph where nodes represent FW entities (form, form\_field, workflow, automation\_rule, decision\_table, event, lookup\_config) and edges represent dependency relationships, loaded via `useDependencyGraph`. Node colors are mapped by entity type using semantic CSS variables. A search input filters the visible nodes. The graph includes pan/zoom controls and a minimap. A hard cap of 300 nodes is enforced in `buildGraphElements`. ## Who it's for Requires permission: `fw.dependencies.view`. ## Before you start * Hold `fw.dependencies.view` to access this screen. * Large organizations with many entities may be capped at 300 nodes in the visualization. ## Steps Navigate to `/fw/settings/dependency-graph`. Type in the search input to highlight matching nodes. Pan, zoom, and click nodes to explore entity relationships. The minimap at bottom-right provides orientation in large graphs. ## Key concepts * **Entity types** — `form`, `form_field`, `workflow`, `automation_rule`, `decision_table`, `event`, `lookup_config`. * **Node cap** — maximum 300 nodes rendered at once; the graph is truncated for very large dependency sets. ## Related Forms & Workflow core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fw\.tsx * src/cores/fw/pages/DependencyGraphPage.tsx # Durable Execution Worker — Admin Guide Source: https://docs.encoreos.io/fw/durable-execution-worker-admin-guide The durable execution worker processes queued workflow executions via pgmq. It runs on a per-minute cron schedule and processes batches per organization with s… ## Overview The durable execution worker processes queued workflow executions via pgmq. It runs on a per-minute cron schedule and processes batches per organization with semaphore-based concurrency control. *** ## Configuration Worker settings are stored in `fw_module_settings` (one row per organization): | Setting | Column | Default | Description | | ------------------ | -------------------------------------- | ------- | ------------------------------------------------------------- | | Worker Enabled | `fw_execution_worker_enabled` | `false` | Master toggle for the worker | | Batch Size | `fw_worker_batch_size` | `10` | Messages per batch (1–50) | | Visibility Timeout | `fw_worker_visibility_timeout_seconds` | `30` | Seconds before unacked message becomes visible again (30–600) | ### Enabling the Worker 1. Navigate to **FW Settings** → **Worker** tab 2. Toggle **Enable Execution Worker** on 3. Adjust batch size and visibility timeout as needed 4. Save settings ### Recommended Settings | Workload | Batch Size | Visibility Timeout | | ---------------------------- | ---------- | ------------------ | | Low volume (\<100/day) | 5 | 30s | | Medium volume (100–1000/day) | 10 | 60s | | High volume (>1000/day) | 25 | 120s | *** ## Queue Monitoring ### Check Queue Depth ```sql theme={null} SELECT count(*) AS pending_messages FROM pgmq.q_workflow_execution_queue WHERE vt <= now(); ``` ### Check Dead Letter Queue ```sql theme={null} SELECT count(*) AS dlq_messages FROM pgmq.q_workflow_dlq; -- View DLQ message details SELECT msg_id, enqueued_at, message->>'execution_id' AS execution_id, message->>'error' AS error, message->>'failed_at' AS failed_at FROM pgmq.q_workflow_dlq ORDER BY enqueued_at DESC LIMIT 20; ``` ### Worker Run History ```sql theme={null} SELECT organization_id, worker_running, worker_last_run_at, worker_last_batch_size FROM fw_module_settings WHERE fw_execution_worker_enabled = true; ``` *** ## DLQ Handling Messages are routed to the DLQ after 5 failed attempts. To retry a DLQ message: ```sql theme={null} -- Move a message back to the main queue WITH dlq_msg AS ( SELECT msg_id, message FROM pgmq.q_workflow_dlq WHERE msg_id = :msg_id ) SELECT pgmq.send('workflow_execution_queue', jsonb_set(message, '{attempt}', '1'::jsonb) ) FROM dlq_msg; -- Then delete from DLQ SELECT pgmq.delete('workflow_dlq', :msg_id); ``` ### Purge Old DLQ Messages ```sql theme={null} DELETE FROM pgmq.q_workflow_dlq WHERE enqueued_at < now() - interval '30 days'; ``` *** ## Troubleshooting See [Runbook](/fw/durable-execution-worker-runbook) for operational procedures. *** ## Related Documentation * [FW-46 Cron Scheduling](/guides/scheduled-jobs) * [FW-46 API Reference](/fw/durable-execution-worker-api-reference) * [FW-46 Runbook](/fw/durable-execution-worker-runbook) * [FW-46 Integration Doc](/architecture/integrations/durable-execution-worker-integration) # Durable Execution Worker — API Reference Source: https://docs.encoreos.io/fw/durable-execution-worker-api-reference Trigger: pg_cron (every minute) Auth: Service role (via util.invoke_edge_function) ## Edge Function: `workflow-executor-worker` **Trigger:** pg\_cron (every minute)\ **Auth:** Service role (via `util.invoke_edge_function`) ### Response Contract ```json theme={null} { "success": true, "correlationId": "uuid", "results": { "": { "messagesProcessed": 5, "succeeded": 4, "failed": 1, "dlqRouted": 0, "errors": ["exec-id-123: Rule not found"] } } } ``` ### Error Response ```json theme={null} { "error": "Internal server error", "category": "RUNTIME", "correlationId": "uuid", "status": 500 } ``` *** ## RPC: `fw_enqueue_form_submission_automation` **Purpose:** User-callable enqueue path for form-submission automation (Path A fallback). ### Signature ```sql theme={null} fw_enqueue_form_submission_automation( p_form_id UUID, p_submission_id UUID, p_organization_id UUID ) RETURNS UUID ``` ### Parameters | Parameter | Type | Description | | ------------------- | ---- | ----------------------------------------------------- | | `p_form_id` | UUID | Form definition ID | | `p_submission_id` | UUID | Form submission record ID | | `p_organization_id` | UUID | Organization ID (validated via `fw_has_org_access()`) | ### Returns UUID of the created `fw_workflow_executions` record, or NULL if no matching rules found. *** ## RPC: `fw_claim_queued_executions` **Purpose:** Fallback claim path when pgmq is unavailable. Uses `FOR UPDATE SKIP LOCKED`. ### Signature ```sql theme={null} fw_claim_queued_executions( p_batch_size INTEGER, p_org_id UUID ) RETURNS SETOF fw_workflow_executions ``` ### Parameters | Parameter | Type | Description | | -------------- | ------- | --------------------------- | | `p_batch_size` | INTEGER | Max records to claim (1–50) | | `p_org_id` | UUID | Organization ID filter | ### Behavior 1. Selects `fw_workflow_executions` with `status IN ('queued', 'retry_pending')` and `next_retry_at <= now()` 2. Locks rows with `FOR UPDATE SKIP LOCKED` 3. Updates status to `running` 4. Returns claimed records *** ## Queue Message Schema ### `workflow_execution_queue` Message ```json theme={null} { "execution_id": "uuid", "rule_id": "uuid", "trigger_type": "form_submitted | event | manual", "organization_id": "uuid", "attempt": 1, "trigger_data": { "trigger_type": "form_submitted", "submission_id": "uuid", "form_id": "uuid", "organization_id": "uuid", "submission_data": {} } } ``` ### `workflow_dlq` Message ```json theme={null} { "execution_id": "uuid", "rule_id": "uuid", "trigger_type": "form_submitted", "organization_id": "uuid", "attempt": 5, "error": "Rule not found: missing", "failed_at": "2026-03-18T12:00:00Z", "total_attempts": 5 } ``` *** ## Semaphore Columns (`fw_module_settings`) | Column | Type | Description | | ------------------------ | ----------- | ------------------------------------------- | | `worker_running` | BOOLEAN | Per-org lock; `true` while worker processes | | `worker_last_run_at` | TIMESTAMPTZ | Last successful semaphore acquisition | | `worker_last_batch_size` | INTEGER | Messages processed in last run | *** ## Related Documentation * [FW-46 Admin Guide](/fw/durable-execution-worker-admin-guide) * [FW-46 Runbook](/fw/durable-execution-worker-runbook) # Durable Execution Worker — Runbook Source: https://docs.encoreos.io/fw/durable-execution-worker-runbook To temporarily stop the worker without losing queued messages: ## 1. Safe Pause To temporarily stop the worker without losing queued messages: ```sql theme={null} -- Unschedule the cron job SELECT cron.unschedule('process-workflow-queue'); -- Verify it's removed SELECT * FROM cron.job WHERE jobname = 'process-workflow-queue'; ``` Messages remain in pgmq and will be processed when the worker is re-enabled. **To resume:** ```sql theme={null} SELECT cron.schedule( 'process-workflow-queue', '* * * * *', $$SELECT util.invoke_edge_function('workflow-executor-worker', '{}'::jsonb);$$ ); ``` *** ## 2. Reset Stuck Semaphore If `worker_running = true` persists (e.g., worker crashed mid-run): ```sql theme={null} -- Check which orgs are stuck SELECT organization_id, worker_running, worker_last_run_at FROM fw_module_settings WHERE worker_running = true; -- Reset for a specific org UPDATE fw_module_settings SET worker_running = false WHERE organization_id = '' AND worker_running = true; -- Reset all stuck semaphores (use with caution) UPDATE fw_module_settings SET worker_running = false WHERE worker_running = true AND worker_last_run_at < now() - interval '5 minutes'; ``` *** ## 3. Queue Backlog Investigation ```sql theme={null} -- Total pending messages SELECT count(*) FROM pgmq.q_workflow_execution_queue WHERE vt <= now(); -- Messages by org SELECT message->>'organization_id' AS org_id, count(*) FROM pgmq.q_workflow_execution_queue WHERE vt <= now() GROUP BY 1 ORDER BY 2 DESC; -- Oldest unprocessed message SELECT msg_id, enqueued_at, message->>'execution_id' AS execution_id FROM pgmq.q_workflow_execution_queue WHERE vt <= now() ORDER BY enqueued_at ASC LIMIT 1; ``` *** ## 4. Execution Failure Investigation ```sql theme={null} -- Recent failed executions SELECT id, rule_id, organization_id, status, retry_count, last_error, next_retry_at, started_at, completed_at FROM fw_workflow_executions WHERE status IN ('failed', 'retry_pending') ORDER BY completed_at DESC NULLS LAST LIMIT 20; -- DLQ contents SELECT msg_id, enqueued_at, message->>'execution_id' AS execution_id, message->>'error' AS error, message->>'total_attempts' AS attempts FROM pgmq.q_workflow_dlq ORDER BY enqueued_at DESC LIMIT 20; ``` *** ## 5. Emergency: Disable Worker for All Orgs ```sql theme={null} UPDATE fw_module_settings SET fw_execution_worker_enabled = false, worker_running = false; SELECT cron.unschedule('process-workflow-queue'); ``` *** ## 6. Rollback / Cleanup If the feature must be fully reverted: 1. Unschedule cron: `SELECT cron.unschedule('process-workflow-queue');` 2. Disable all orgs: `UPDATE fw_module_settings SET fw_execution_worker_enabled = false, worker_running = false;` 3. Drain queues (optional): `SELECT pgmq.purge_queue('workflow_execution_queue'); SELECT pgmq.purge_queue('workflow_dlq');` 4. Reset stuck executions: `UPDATE fw_workflow_executions SET status = 'failed', last_error = 'Worker rollback' WHERE status IN ('queued', 'retry_pending', 'running');` *** ## 7. Health Check Queries ```sql theme={null} -- Worker last run times SELECT organization_id, worker_last_run_at, worker_last_batch_size, now() - worker_last_run_at AS time_since_last_run FROM fw_module_settings WHERE fw_execution_worker_enabled = true ORDER BY worker_last_run_at DESC NULLS LAST; -- Cron job status SELECT jobid, jobname, schedule, active FROM cron.job WHERE jobname = 'process-workflow-queue'; ``` *** ## Related Documentation * [FW-46 Admin Guide](/fw/durable-execution-worker-admin-guide) * [FW-46 API Reference](/fw/durable-execution-worker-api-reference) * [FW-46 Cron Scheduling](/guides/scheduled-jobs) # Execution Timeout Administration Guide Source: https://docs.encoreos.io/fw/execution-timeout-admin-guide The Execution Timeout & Watchdog feature automatically detects and handles workflow executions that exceed their configured deadline. A background watchdog (pg… ## Overview The Execution Timeout & Watchdog feature automatically detects and handles workflow executions that exceed their configured deadline. A background watchdog (pg\_cron) periodically scans for overdue executions and applies the configured timeout behavior. *** ## Configuration ### Global Settings (FW Settings Page) Navigate to **Settings → Forms & Workflow → Timeouts** tab to configure: | Setting | Default | Range | Description | | -------------------------- | ------- | ------ | --------------------------------------------------- | | Execution Timeout Watchdog | Off | On/Off | Enable/disable automatic timeout detection | | Default Timeout (Minutes) | 60 | 1–1440 | Default maximum execution duration | | Warning Threshold (%) | 80 | 50–99 | Percentage at which warning notifications are sent | | Check Interval (Minutes) | 5 | 1–60 | How often the watchdog scans for overdue executions | ### Per-Workflow Settings (Workflow Editor) Each workflow definition can override timeout settings via the **Timeout Configuration** panel in the workflow editor: | Setting | Default | Description | | ---------------------- | ------- | -------------------------------------------------------------- | | Enable Timeout | Off | Override global setting for this workflow | | Max Duration (Minutes) | 60 | Maximum allowed execution time | | Warning Threshold (%) | 80 | When to send at-risk warnings | | On Timeout | Fail | Action when deadline exceeded: `Fail`, `Cancel`, or `Escalate` | *** ## Timeout Behaviors | Behavior | Description | | ------------ | ----------------------------------------------------------------------------- | | **Fail** | Sets execution status to `timed_out`, records error, routes to DLQ | | **Cancel** | Sets execution status to `cancelled`, records timeout reason | | **Escalate** | Sets execution status to `timed_out`, sends escalation notification to admins | *** ## Deadline Extension Administrators with `fw.workflows.admin` permission can extend a running execution's deadline: 1. Open the execution detail dialog 2. Click the **Extend** button next to the deadline indicator 3. Enter the extension duration (1–1440 minutes) and a reason (minimum 5 characters) 4. Click **Extend Deadline** The extension resets the warning notification flag, allowing a new warning to be sent if the execution approaches the new deadline. *** ## Monitoring ### Execution Detail View The deadline indicator shows real-time status: | Status | Color | Description | | --------------- | --------------- | -------------------------------------------- | | **On Track** | Green | Execution is within safe time limits | | **At Risk** | Yellow/Warning | Execution has exceeded the warning threshold | | **Expired** | Red/Destructive | Execution has exceeded its deadline | | **No Deadline** | Gray | No timeout configured | ### Notifications (PF-10) The watchdog sends two types of notifications: 1. **Timeout Warning** — Sent once when an execution reaches the warning threshold 2. **Execution Timed Out** — Sent when an execution is terminated due to timeout *** ## pg\_cron Setup The watchdog requires a pg\_cron job to be registered. This is **not** included in migrations (contains environment-specific values). Register via the SQL Editor: ```sql theme={null} SELECT cron.schedule( 'workflow-timeout-watchdog', '*/5 * * * *', $$ SELECT net.http_post( url := 'https://.supabase.co/functions/v1/workflow-timeout-checker', headers := '{"Content-Type": "application/json", "Authorization": "Bearer "}'::jsonb, body := concat('{"time": "', now(), '"}')::jsonb ) AS request_id; $$ ); ``` Replace `` and `` with your project values. *** ## Troubleshooting | Issue | Check | | ------------------------- | ------------------------------------------------------------------------------------------------- | | Watchdog not running | Verify pg\_cron job exists: `SELECT * FROM cron.job WHERE jobname = 'workflow-timeout-watchdog'` | | No timeout notifications | Verify `fw_timeout_enabled` is `true` in `fw_module_settings` | | Executions not timing out | Verify `deadline_at` is set on executions and `timeout_config.enabled` on the workflow definition | | Extension failing | Verify user has `fw.workflows.admin` permission and execution is in `running`/`paused` status | # Form Analytics Guide Source: https://docs.encoreos.io/fw/form-analytics-guide Form Analytics provides actionable insights into form usage, completion patterns, and user engagement to help optimize forms and improve completion rates. ## Overview Form Analytics provides actionable insights into form usage, completion patterns, and user engagement to help optimize forms and improve completion rates. ## Features ### Analytics Tracking * **Form Events:** Track form starts, completions, and abandonments * **Field Interactions:** Monitor focus, changes, and validation errors per field * **Device Tracking:** Separate analytics for mobile, tablet, and desktop * **Session Tracking:** Group events by user session for funnel analysis ### Metrics * **Completion Rate:** Percentage of started forms that are completed * **Time to Complete:** Median and P95 completion times * **Drop-off Analysis:** Identify where users abandon forms * **Field Performance:** See which fields cause errors or confusion ## Enabling Analytics Analytics are enabled by default for all new forms. To disable: 1. Open Form Builder 2. Go to Settings tab 3. Toggle "Analytics Enabled" off ## Viewing Analytics ### Form Analytics Dashboard Navigate to `/fw/analytics` to view: * **Overview:** Summary cards with key metrics * **Completion Funnel:** Visualize where users drop off * **Field Performance:** Table showing field-level statistics * **Trends:** Chart showing submission volume over time ### Per-Form Analytics From the Form Builder, click "View Analytics" to see metrics for a specific form. ## Privacy & Security * **No Field Values Logged:** Only field keys and interaction types are tracked * **No PII:** Personal information is never logged * **Aggregate Reporting:** Individual user tracking is not supported * **Opt-Out:** Forms can disable analytics entirely * **Data Retention:** Raw events are retained for 90 days, aggregates indefinitely ## Optimization Tips ### Improving Completion Rates 1. **Identify Drop-off Points:** Look for fields with high abandonment rates 2. **Simplify Complex Fields:** If a field has many errors, consider breaking it into simpler components 3. **Reduce Form Length:** Forms with fewer fields generally have higher completion rates 4. **Optimize Mobile Experience:** Check mobile completion rate vs desktop ### Reducing Time to Complete 1. **Remove Unnecessary Fields:** Every field adds cognitive load 2. **Use Defaults:** Pre-fill fields when possible 3. **Add Helper Text:** Clear instructions reduce errors and speed completion 4. **Use Appropriate Input Types:** Date pickers are faster than text inputs for dates ### Reducing Errors 1. **Clear Validation Messages:** Tell users exactly what's wrong 2. **Inline Validation:** Validate as users type, not just on submit 3. **Format Examples:** Show expected format (e.g., "MM/DD/YYYY") ## API Reference ### `useFormAnalytics` Hook ```typescript theme={null} import { useFormAnalytics } from '@/platform/forms/hooks/useFormAnalytics'; const analytics = useFormAnalytics(formId, { enabled: true, batchSize: 10, batchInterval: 5000, }); // Track events analytics.trackFormStart(); analytics.trackFieldFocus('email'); analytics.trackFieldChange('email', { length: 15 }); analytics.trackValidationError('email', 'Invalid format'); analytics.trackFormComplete(submissionId); ``` ### Analytics Functions #### `log_form_analytics_event()` Logs a single analytics event. ```sql theme={null} SELECT log_form_analytics_event( _form_id := '...', _event_type := 'form_started', _session_id := '...', _field_key := NULL, _submission_id := NULL, _event_data := '{}', _device_type := 'desktop' ); ``` #### `aggregate_completion_metrics()` Aggregates raw events into daily completion metrics. ```sql theme={null} SELECT aggregate_completion_metrics('2025-01-27'); ``` #### `aggregate_field_stats()` Aggregates field-level statistics. ```sql theme={null} SELECT aggregate_field_stats('2025-01-27'); ``` ## Database Schema ### `pf_form_analytics_events` Raw analytics events (pruned after 90 days). | Column | Type | Description | | ---------------- | ----------- | ------------------------------------------------ | | id | UUID | Event ID | | form\_id | UUID | Form being tracked | | session\_id | UUID | User session | | event\_type | TEXT | Event type (form\_started, field\_focused, etc.) | | field\_key | TEXT | Field identifier (for field events) | | event\_timestamp | TIMESTAMPTZ | When event occurred | | device\_type | TEXT | mobile/tablet/desktop | ### `pf_form_completion_metrics` Daily aggregated completion metrics (retained indefinitely). | Column | Type | Description | | ----------------------------------- | ----- | ---------------------- | | form\_id | UUID | Form | | metric\_date | DATE | Aggregation date | | started\_count | INT | Forms started | | completed\_count | INT | Forms completed | | completion\_rate | FLOAT | Completion percentage | | median\_time\_to\_complete\_seconds | INT | Median completion time | ### `pf_field_interaction_stats` Daily aggregated field statistics (retained indefinitely). | Column | Type | Description | | ------------- | ---- | ----------------- | | form\_id | UUID | Form | | field\_key | TEXT | Field identifier | | metric\_date | DATE | Aggregation date | | focus\_count | INT | Times focused | | change\_count | INT | Times changed | | error\_count | INT | Validation errors | ## Troubleshooting ### Events Not Appearing 1. **Check Analytics Enabled:** Ensure the form has `analytics_enabled = true` 2. **Verify RLS Policies:** User must have access to the form's organization 3. **Check Console:** Look for errors in browser console 4. **Aggregation Delay:** Raw events are aggregated every 5 minutes ### Metrics Don't Match Submissions * Metrics are based on sessions, not individual submissions * A user can start a form multiple times in different sessions * Completed count may be less than submission count if analytics was disabled ### Performance Issues * Analytics use batching (5 second intervals) to minimize impact * Raw events are automatically pruned after 90 days * Aggregated metrics use indexed queries for fast access ## Best Practices 1. **Review Analytics Weekly:** Check for trends and issues 2. **A/B Test Changes:** Compare metrics before and after form updates 3. **Focus on High-Volume Forms:** Optimize forms with the most submissions first 4. **Monitor Abandonment:** Set up alerts for sudden drops in completion rate 5. **Respect Privacy:** Never log field values or personally identifiable information # Form Editor Source: https://docs.encoreos.io/fw/form-editor Visual form builder with drag-and-drop fields, wizard config, portal integration, and PDF preview at /fw/forms/edit. The Form Editor screen is a full-featured form builder used to create and edit forms and is available at `/fw/forms/edit` (also `/fw/forms/new` for creation). ## Overview This screen loads an existing form when an `id` query parameter is present (`useFormDefinition`). It exposes a multi-tab editor covering: **Builder** (draggable field list with `DraggableFieldList` and `FieldEditorDialog`), **Wizard** (`WizardConfigPanel` + `WizardPreview`), **Portal** (`PortalConfigPanel`), **PDF** (`PdfExportSettingsPanel` + `PdfPreviewPanel`), **Permissions** (`PermissionManager`), and **History** (`FormVersionHistory`). Fields can be added, edited, reordered, and deleted. AI field suggestions are available via `SuggestWithAIDialog`. Form quality scoring is available via `FormQualityScoringDialog`. Save is blocked when the form name is empty, no organization is selected, or no fields are defined. Saving publishes or drafts the form. ## Who it's for * `/fw/forms/new` — requires `fw.forms.create` (`FW_PERMISSIONS.FORMS_CREATE`). * `/fw/forms/edit` — requires `fw.forms.edit` (`FW_PERMISSIONS.FORMS_EDIT`). ## Before you start * For new forms, hold `fw.forms.create`. * For editing existing forms, hold `fw.forms.edit` and supply the `id` query parameter. * An organization must be selected (from `useOrganization`). ## Steps Navigate to `/fw/forms/new` to create, or `/fw/forms/edit?id=` to edit. Enter the form name and description. Use the **Builder** tab to add fields. Each field opens `FieldEditorDialog` for configuration. Drag fields in `DraggableFieldList` to set the display order. Switch to the **Wizard** tab to set up step-based wizard presentation. Switch to the **Portal** tab to control external portal availability. Switch to the **PDF** tab to configure and preview a PDF export layout. Switch to the **Permissions** tab to manage who can submit this form. Click **Save**. The form is saved as draft or published depending on the current status setting. ## Key concepts * **Prefill rules** — configured via `PrefillRulesPanel`; SME: confirm data sources available for prefill. * **Wizard config** — multi-step presentation of a form; configured via `WizardConfigPanel`. * **Form quality score** — a score computed by `FormQualityScoringDialog`; SME: confirm scoring criteria. ## Related Forms & Workflow core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fw\.tsx * src/cores/fw/pages/FormEditor.tsx * src/platform/permissions/constants.ts # Form Library Source: https://docs.encoreos.io/fw/form-library Browse, preview, and use form templates with AI recommendations and a template generator at /fw/form-templates. The Form Library screen provides a searchable gallery of form templates with preview, customization, and AI recommendation capabilities and is available at `/fw/form-templates`. ## Overview This screen displays form templates loaded via `useFormTemplates`, filtered by category and search text. Templates include both organization-specific and marketplace templates (`includeMarketplace: true`). Each template is shown as a `FormTemplateCard`. Actions include: preview (`FormTemplatePreview`), customize (`FormTemplateCustomizer`), create new template (`CreateFormTemplateDialog`), and AI-generate a template (`GenerateFormTemplateDialog`). AI recommendations are shown via `AITemplateRecommendations` using a transformed template list. Clicking **Use Template** from preview or customizer creates a new form based on the template and navigates to the form editor. ## Who it's for No explicit route-level permission gate. Template creation gated by `fw.templates.create` via `PermissionGate` inside components. ## Before you start * Navigate to `/fw/form-templates` from the Forms & Workflow sidebar. * To create templates you need `fw.templates.create`. * To publish templates you need `fw.templates.publish`. ## Steps Navigate to `/fw/form-templates`. Use the search input and category dropdown to narrow results. Click a `FormTemplateCard` to open `FormTemplatePreview`. From the preview, open `FormTemplateCustomizer` to adjust the template before creating a form. Click **Generate Template** to open `GenerateFormTemplateDialog` and create a template using AI. Click **New Template** (requires `fw.templates.create`) to open `CreateFormTemplateDialog`. ## Key concepts * **Form template** — a reusable form blueprint that can be cloned into a new form. * **Template categories** — defined in `FORM_TEMPLATE_CATEGORIES` from `fw/types/formTemplates`. * **Marketplace** — templates available beyond the current organization (SME: confirm scope). ## Related Forms & Workflow core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fw\.tsx * src/cores/fw/pages/FormTemplateLibraryPage.tsx * src/cores/fw/types/formTemplates.ts * src/platform/permissions/constants.ts # Forms Settings Source: https://docs.encoreos.io/fw/forms-settings Configure Forms & Workflow module settings including submission retention, automation limits, and worker configuration at /fw/settings. The Forms Settings screen allows administrators to configure module-level settings for the Forms & Workflow core and is available at `/fw/settings`. ## Overview This admin screen loads the organization's FW module settings from `fw_module_settings` via `useFWModuleSettings` and renders them in `FWSettingsForm`. A guided tour is available via `useTour` with steps defined in `fwSettingsTour`. If the current user holds `fw.dependencies.view`, links to the Dependency Graph (`/fw/settings/dependency-graph`) and business calendars are shown. A dirty-state tracker (`isDirty`) controls the save button state. Settings include default form status, custom categories, submission retention, anonymous submission policy, automation retry limits, timeout configuration, worker batch sizes, checkpoint settings, and rate limiting for external forms. ## Who it's for Requires permission: `fw.settings.manage` (`FW_PERMISSIONS.SETTINGS_MANAGE`). ## Before you start * Hold `fw.settings.manage` to access and modify these settings. * Changes affect all forms and automations for the current organization. ## Steps Navigate to `/fw/settings`. The form loads the current `fw_module_settings` row for the organization. Modify the desired fields in `FWSettingsForm`. Click **Save**; the settings are persisted to `fw_module_settings`. If you hold `fw.dependencies.view`, click the link to open `/fw/settings/dependency-graph`. ## Key concepts * **`fw_execution_worker_enabled`** — master toggle for the automation execution worker. * **`submission_retention_days`** — how long form submission records are retained. * **`fw_event_schema_validation_mode`** — controls strictness of event schema validation (`off`, `strict`, `warn`). ## Related Forms & Workflow core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fw\.tsx * src/cores/fw/pages/FWSettingsPage.tsx * src/platform/permissions/constants.ts # Forms & Workflows Source: https://docs.encoreos.io/fw/forms-workflows Entry point for the Forms & Workflow core; redirects to the dashboard at /fw/dashboard. The `/fw` route is the entry point for the Forms & Workflow core; it redirects immediately to `/fw/dashboard`. ## Overview The route `/fw` is configured as a `` redirect in `fw.tsx`. It is not a standalone screen and renders no UI of its own. All content is served by the Dashboard screen at `/fw/dashboard`. Alternate primary route: `/fw/dashboard`. ## Who it's for Access follows your organization's role and module configuration. The destination `/fw/dashboard` requires `fw.forms.view`. ## Before you start * Navigating to `/fw` immediately lands you on the Forms & Workflow dashboard. ## Steps The browser is immediately redirected to `/fw/dashboard` — see the Dashboard documentation for usage. ## Related Forms & Workflow core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fw\.tsx # Healthcare Patterns Source: https://docs.encoreos.io/fw/healthcare-patterns Browse and instantiate pre-built healthcare workflow patterns with compliance tags at /fw/healthcare-patterns. The Healthcare Patterns screen provides a library of pre-built healthcare workflow patterns that can be instantiated into the organization's workflow engine and is available at `/fw/healthcare-patterns`. ## Overview This screen loads healthcare patterns via `useHealthcarePatterns`, filterable by category (`HEALTHCARE_PATTERN_CATEGORIES`), compliance tag (`COMPLIANCE_TAGS`), and text search. Patterns are displayed as cards with descriptions and regulatory references. Clicking a pattern opens a detail dialog. From the detail view, clicking **Instantiate** shows a confirmation `AlertDialog`; confirmed instantiation calls `useInstantiatePattern`. A clear-filters button resets all filters. ## Who it's for Requires permission: `fw.healthcare_patterns.view` (`FW_PERMISSIONS.HEALTHCARE_PATTERNS_VIEW`). Instantiation additionally requires `fw.healthcare_patterns.manage`. ## Before you start * Hold `fw.healthcare_patterns.view` to access this screen. * Hold `fw.healthcare_patterns.manage` to instantiate a pattern. ## Steps Navigate to `/fw/healthcare-patterns`. Use the search input, category filter, and compliance tag filter to find relevant patterns. Click a pattern card to open the detail dialog with full description and regulatory references. In the detail dialog, click **Instantiate** and confirm in the alert dialog. Click **Clear filters** to reset all active filters. ## Key concepts * **Healthcare pattern** — a pre-configured workflow template designed for a specific clinical or operational scenario. * **Compliance tags** — regulatory identifiers (e.g., HIPAA) from `COMPLIANCE_TAGS`; SME: confirm accuracy. * **Regulatory references** — structured references of type `RegulatoryReference` attached to each pattern. ## Related Forms & Workflow core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fw\.tsx * src/cores/fw/pages/HealthcarePatternsPage.tsx * src/cores/fw/types/healthcare-patterns.ts * src/platform/permissions/constants.ts # Inbound Webhooks Source: https://docs.encoreos.io/fw/inbound-webhooks Create and manage inbound webhook endpoints for receiving external data with HMAC-SHA256, API key, or OAuth Bearer authentication at /fw/webhooks. The Inbound Webhooks screen lists all inbound webhook endpoints and allows administrators to create, edit, and monitor them at `/fw/webhooks`. ## Overview This admin screen loads webhook endpoints via `useWebhookEndpoints`. Endpoints are displayed in a table with columns for name, slug, authentication type, and status. Status is derived via `deriveEndpointStatus` and shown as a badge (`active`, `inactive`, `suspended`). Authentication types supported: `hmac_sha256`, `api_key`, `oauth_bearer`, `none`. A search input and status filter dropdown narrow the list. Creating and editing endpoints uses `WebhookEndpointDialog`. A **Logs** view is toggled by `showLogs` to render `WebhookLogsTable`. New endpoints require `fw.webhooks.manage` (gated inside `PermissionGate`). ## Who it's for Requires permission: `fw.webhooks.view` (`FW_PERMISSIONS.WEBHOOKS_VIEW`). Endpoint management requires `fw.webhooks.manage`. ## Before you start * Hold `fw.webhooks.view` to access this screen. * Hold `fw.webhooks.manage` to create or edit endpoints. * Hold `fw.webhooks.secrets.rotate` to rotate secrets. * Hold `fw.webhooks.replay` to replay webhook deliveries. ## Steps Navigate to `/fw/webhooks`. Use the search input and status filter to locate a specific endpoint. Click **New Endpoint** (requires `fw.webhooks.manage`) to open `WebhookEndpointDialog`. Click the edit action on a row to open `WebhookEndpointDialog` with existing values. Toggle the logs view to open `WebhookLogsTable` for incoming delivery records. ## Key concepts * **Endpoint slug** — the URL path segment that identifies the webhook endpoint to external senders. * **Auth types** — `hmac_sha256` (signature-based), `api_key`, `oauth_bearer`, `none`. * **Endpoint status** — derived from `deriveEndpointStatus`: `active`, `inactive`, or `suspended`. ## Related Forms & Workflow core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fw\.tsx * src/cores/fw/pages/WebhookEndpointsPage.tsx * src/cores/fw/types/webhook.ts * src/platform/permissions/constants.ts # FW Module Tables Reference Source: https://docs.encoreos.io/fw/module-tables This document provides a reference for all database tables in the Forms & Workflow (FW) module. This document provides a reference for all database tables in the Forms & Workflow (FW) module. ## Table Naming Convention All FW tables use the `fw_` prefix following the platform convention. ## Core Tables ### Forms | Table | Description | | ------------------- | ---------------------------------------------------- | | `fw_forms` | Form definitions with metadata, status, and settings | | `fw_form_fields` | Field definitions for each form | | `fw_form_versions` | Version history for forms | | `fw_form_templates` | Reusable form templates | ### Submissions | Table | Description | | --------------------------- | ----------------------------- | | `fw_form_submissions` | Submitted form data | | `fw_submission_attachments` | Files attached to submissions | | `fw_submission_notes` | Notes/comments on submissions | ### Workflow Definitions | Table | Description | | ------------------------- | -------------------------------------- | | `fw_workflow_definitions` | Workflow structure and steps | | `fw_workflow_nodes` | Individual nodes in a workflow | | `fw_workflow_edges` | Connections between workflow nodes | | `fw_workflow_variables` | Variables used in workflow expressions | ### Automation | Table | Description | | ----------------------------- | -------------------------------------------------------- | | `fw_automation_rules` | Automation rule definitions with triggers and conditions | | `fw_workflow_executions` | Runtime execution records | | `fw_workflow_execution_steps` | Individual step execution records | | `fw_workflow_approvals` | Approval requests and decisions | ### Analytics & Testing | Table | Description | | ------------------------- | ------------------------------ | | `fw_automation_analytics` | Aggregated analytics view | | `fw_test_cases` | Test case definitions | | `fw_test_datasets` | Test data for workflow testing | | `fw_test_scenarios` | End-to-end test scenarios | ## Common Query Patterns ### Get Active Forms Count ```typescript theme={null} const { count } = await supabase .from("fw_forms") .select("*", { count: "exact", head: true }) .eq("organization_id", organizationId) .eq("status", "published"); ``` ### Get Recent Submissions ```typescript theme={null} const { data } = await supabase .from("fw_form_submissions") .select(` id, submitted_at, status, form:fw_forms(name), submitted_by_profile:pf_profiles!fw_form_submissions_submitted_by_fkey(display_name) `) .eq("organization_id", organizationId) .order("submitted_at", { ascending: false }) .limit(5); ``` ### Get Active Automations ```typescript theme={null} const { count } = await supabase .from("fw_automation_rules") .select("*", { count: "exact", head: true }) .eq("organization_id", organizationId) .eq("is_active", true); ``` ### Get Pending Approvals ```typescript theme={null} const { count } = await supabase .from("fw_workflow_approvals") .select("*", { count: "exact", head: true }) .eq("organization_id", organizationId) .is("decision", null); ``` ### Get Workflow Executions (Last 24 Hours) ```typescript theme={null} const oneDayAgo = new Date(Date.now() - 24 * 60 * 60 * 1000).toISOString(); const { count } = await supabase .from("fw_workflow_executions") .select("*", { count: "exact", head: true }) .eq("organization_id", organizationId) .gte("started_at", oneDayAgo); ``` ## Important Notes 1. **Table Naming**: Use `fw_automation_rules` for automation rules, NOT `fw_workflows` 2. **Workflow Definitions**: Use `fw_workflow_definitions` for workflow structures 3. **Executions**: Use `fw_workflow_executions` for runtime execution data 4. **Multi-tenancy**: All queries must include `organization_id` filter ## Related Documentation * [Mobile Navigation Guide](/development/mobile-navigation-guide) - See Quick Actions Pattern section * FW Module Specs # My Requests Source: https://docs.encoreos.io/fw/my-requests View all approval requests submitted by the current user at /fw/my-requests. The My Requests screen shows all approval requests that the current user has submitted and is available at `/fw/my-requests`. ## Overview This screen renders the `MyApprovalRequests` component inside a page container with the heading **My Approval Requests**. All logic for listing, filtering, and displaying the current user's submitted approval requests is encapsulated in `MyApprovalRequests`. ## Who it's for Access follows your organization's role and module configuration. ## Before you start * Navigate to `/fw/my-requests` from the Forms & Workflow sidebar or from the Approval Inbox empty-state action. * Only requests submitted by the current user are shown. ## Steps Navigate to `/fw/my-requests`. The `MyApprovalRequests` component lists all requests you have submitted. Review the status of each request (SME: confirm available statuses). ## Related Forms & Workflow core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fw\.tsx * src/cores/fw/pages/MyApprovalRequestsPage.tsx # FW Operating Runbook Source: https://docs.encoreos.io/fw/operating-runbook On-call runbook for workflow automation: observability dashboards, dead-letter queue recovery, replay, and incident response. **Companion docs:** * [Automation Observability (admin)](/fw/automations) * [Dead Letter Queue (admin)](/fw/dead-letter-queue) * [Workflow Execution Replay (admin)](/fw/forms-workflows) * [Audit & Compliance Reporting (admin)](/fw/audit-compliance) * [FW Developer Reference](/fw/durable-execution-worker-api-reference) *** ## Quick triage table | Symptom | First page to open | Likely cause | First action | | ------------------------------------------------------------- | ---------------------------------------------------------------------- | -------------------------------------- | ------------------------------------------------- | | Workflow executions stuck "in flight" for hours | [Automation Observability](/fw/automations) | Worker crashed or saturated | Confirm worker healthy; if not, restart | | DLQ counter rising fast | [DLQ admin guide](/fw/dead-letter-queue) | External dependency outage | Triage by error class; throttle source | | `fw_workflow_audit_events` hash mismatch (FW-62 once shipped) | [Audit Trail (FW-43)](/fw/audit-compliance) | DBA-level tamper or migration drift | Pause writers; security review | | Inbound webhook 5xx flood | [External Webhooks (Inbound)](/fw/inbound-webhooks) | Source mis-configured | Lower endpoint rate limit; coordinate with source | | KPI snapshot lag (no new snapshots) | [KPI Dashboards & Snapshots](/fw/workflow-kpi-dashboard) | Snapshot cron stuck (deferred edge fn) | Run ad-hoc; track FW-58 deferred items | | Rate-limit saturation across many workflows | [Rate Limiting & Throttling](/fw/rate-limits) | Org-wide spike or runaway workflow | Identify workflow; pause / throttle | | Approval chain stuck without escalation | [Approval Chains](/fw/approval-chains) | Misconfigured SLA or bad assignee | Reassign; fix chain | | Execution timeout cascade | [Retry & Circuit Breakers](/fw/durable-execution-worker-api-reference) | External dependency timeout | Open circuit; address dependency | | Prefill engine returning wrong values | [Form Prefill & Smart Defaults](/fw/all-forms) | Allowlist / mapping bug | Disable rule; rebuild from sample data | *** ## Runbook 1 — Worker stuck (FW-46) ### Symptoms * Queue depth growing in [Automation Observability](/fw/automations). * New executions don't progress past "queued". * p95 wait time spiking. ### Diagnosis 1. Open Automation Observability → switch to **Current** view. 2. Confirm queue depth + zero throughput. 3. Check the platform's edge-function dashboard (Supabase) for `workflow-executor-worker` — is it running? Crashing? Out-of-memory? 4. Check `fw_module_settings.fw_worker_concurrency_ceiling` per org. Is it 0? (Misconfig.) 5. If FW-61 has shipped (planned), open the worker capacity dashboard for saturation telemetry. ### Recovery 1. If the worker has crashed: re-deploy the edge function. Pre-FW-46-EN-02 (planned) the redeploy will lose any in-flight pgmq leases — the watchdog (FW-49) will time them out and re-enqueue. 2. If it's a config issue: raise `fw_worker_concurrency_ceiling` for the affected org via `fw_module_settings`. 3. If it's an external-dependency timeout: see Runbook 5. 4. Confirm queue drains in Automation Observability. ### Postmortem actions * Capture timeline + what you changed. * File an enhancement entry under [`FW-46-ENHANCEMENTS.md`](https://github.com/Encore-OS/encoreos/blob/development/specs/fw/specs/FW-46-ENHANCEMENTS.md) if the issue is structural. * Update this runbook with the specific fix. *** ## Runbook 2 — DLQ growing (FW-47) ### Symptoms * DLQ counter rising in observability. * Workflow owners receiving DLQ notifications. ### Diagnosis 1. Open the [DLQ admin page](/fw/dead-letter-queue). 2. Filter by error class (`transient` / `policy` / `data` / `external`). 3. For `external` failures, identify the dependency and its status. ### Recovery 1. **Confirm affected organization\_id** and ensure all commands include an `organization_id` filter so changes apply to that org only. 2. **External dependency restored** → bulk retry the affected entries (scoped to the confirmed organization\_id). 3. **Bad data at source** → ask the source owner to fix; bulk discard impossible-to-fix entries (scoped to the confirmed organization\_id). 4. **Misconfigured workflow** → disable the workflow until fixed (scoped to the confirmed organization\_id). 5. **Permission policy changed** → grant the needed permission OR discard entries (scoped to the confirmed organization\_id). ### Postmortem * Tighten DLQ retention if the queue is overflowing the dashboard. * Set up a saved filter for the error class to speed future triage. * Consider adding [Rate Limiting](/fw/rate-limits) on the source. *** ## Runbook 3 — Audit chain break (FW-43; FW-62 once shipped) ### Symptoms (FW-62 once shipped) * Audit integrity verifier reports a hash mismatch. * Compliance officer can't reconcile a date range. ### Symptoms (today, pre-FW-62) * Suspected tampering / accidental privileged write. * Audit row count anomaly. ### Diagnosis 1. Confirm the suspected range in [Audit & Compliance Reporting](/fw/audit-compliance). 2. Pre-FW-62: cross-reference application logs vs DB row count for the range. 3. Post-FW-62: open Audit & Compliance > Integrity tab, validate the range, identify the broken hash chain link. ### Recovery 1. **Confirm affected organization\_id** and ensure all pause/restore operations are scoped to that org only. 2. **Pause writers** to the affected tables (scoped to the confirmed organization\_id). 3. **Engage security review.** Determine: privilege misuse, migration error, or true tampering? 4. **Restore** from PF-11 cold-storage archive if available for the range (scoped to the confirmed organization\_id). 5. **Document** in incident ledger; report per HIPAA breach-notification rules if applicable. ### Postmortem * Accelerate FW-62 implementation if not already in progress. * Audit who has `service_role` access; rotate. * File security-auditor pre-flight against `fw_workflow_audit_events`. *** ## Runbook 4 — Webhook flood (FW-59) ### Symptoms * A specific webhook endpoint receiving 100s+ requests / minute. * 429 responses in the endpoint logs (good — rate limit working). * Or downstream workflow saturated (rate limit too loose). ### Diagnosis 1. Open the endpoint's **Logs** tab. 2. Confirm source IP / API key. 3. Confirm rate-limit state. ### Recovery 1. **Confirm affected organization\_id** and ensure all throttle/disable operations are scoped to that org only. 2. **Lower endpoint rate limit** ([Rate Limiting & Throttling](/fw/rate-limits)) to throttle (scoped to the confirmed organization\_id). 3. **Coordinate with source** — they should implement exponential backoff on 429. 4. **Disable the endpoint** if the source is uncoordinated and PHI-touching (scoped to the confirmed organization\_id). 5. **Rotate the secret** if the flood looks malicious (scoped to the confirmed organization\_id). ### Postmortem * Add IP allow-list if the source has stable IPs. * Document the partner's accepted rate in `docs/architecture/integrations/`. * Consider FW-53 budget changes platform-wide. *** ## Runbook 5 — Execution timeout cascade (FW-49) ### Symptoms * Many executions hitting `timed_out` status. * Watchdog auto-cancellation events flooding audit log. ### Diagnosis 1. Open [Automation Observability](/fw/automations), filter status = `timed_out`. 2. Identify common workflow / step. 3. Inspect external dependencies the step calls. ### Recovery 1. **Confirm affected organization\_id** and ensure all circuit breaker/retry operations are scoped to that org only. 2. **Open circuit breaker manually** ([Retry & Circuit Breakers](/fw/durable-execution-worker-api-reference)) on the affected workflow node (scoped to the confirmed organization\_id) — fast-fails subsequent calls so they go to DLQ instead of timing out. 3. **Address the dependency** (restart, scale, etc.). 4. **Reset circuits** when dependency is healthy (scoped to the confirmed organization\_id). 5. **Bulk retry** from DLQ (scoped to the confirmed organization\_id). ### Postmortem * Tune workflow timeout per node based on observed dependency p95. * Consider compensation actions for partial-state recovery. *** ## Runbook 6 — KPI snapshot lag (FW-58) ### Symptoms * KPI dashboard shows stale values. * Trend charts have gaps. ### Diagnosis 1. The scheduled-PDF edge function and snapshot cron are **deferred** in the current FW-58 release. Manual ad-hoc render is the only dispatch path today. 2. Confirm `fw_kpi_snapshots` rows for the period via DB. 3. If snapshot cron has shipped per FW-58 follow-up, check edge function health. ### Recovery 1. Run ad-hoc snapshot from KPI > [KPI page](/fw/workflow-kpi-dashboard) > Refresh. 2. For PDF dispatch: render ad-hoc and email out-of-band until FW-58 deferred items ship. *** ## Runbook 7 — Rate-limit saturation across the org ### Symptoms * Multiple workflows hitting rate limits. * Stats page shows widespread throttling. ### Diagnosis 1. Open [Rate Limiting > Stats](/fw/rate-limits). 2. Identify the top-throttled workflow (single bad actor likely). 3. Cross-check with [Automation Observability](/fw/automations) — is one workflow consuming > 50% of throughput? ### Recovery 1. **Confirm affected organization\_id** and ensure all disable/tune operations are scoped to that org only. 2. **Disable the runaway workflow** until investigated (scoped to the confirmed organization\_id). 3. **Tune the per-org limit** if legitimate growth (raise carefully; scoped to the confirmed organization\_id). 4. **Add a per-workflow limit** on the noisy workflow even after it's restored (scoped to the confirmed organization\_id). *** ## Runbook 8 — Approval queue overload (FW-34) ### Symptoms * Approval inbox showing 100s of pending items for a single approver. * SLA breach alerts piling up. ### Diagnosis 1. Confirm the approver is real and authenticated. 2. Confirm the routing rule isn't broken (FW-54 → all routes lead to one user). 3. Confirm the approver hasn't [delegated](/fw/delegations) (delegation should redistribute). ### Recovery 1. **Bulk reassign** to peers (forms\_admin can do this). 2. **Set up role-based assignment** in the chain so workload distributes. 3. **Configure escalation** so SLA breaches auto-route. *** ## Runbook 9 — Prefill engine failure (FW-60) ### Symptoms * Forms loading with no prefilled values when they should. * Or prefilled with wrong values. ### Diagnosis 1. Open the form's **Prefill** tab. 2. For each rule, confirm the entity record exists / URL parameter present. 3. Check rule priority (first-win). 4. Test in Preview with the same context. ### Recovery 1. **Disable the bad rule** to stop blast radius. 2. **Fix the mapping** (entity field, JSONPath, context key). 3. **Re-enable**. 4. If the issue is in the allowlist: file a request with platform team to extend / fix. *** ## When to escalate * Suspected tampering / breach → security review (Runbook 3). * Worker outage that affects > 5 orgs simultaneously → platform team. * Persistent regression after a FW PR → revert + escalate to FW core lead. * Compliance / regulatory deadline at risk → compliance officer. ## Updating this runbook * After every significant incident, add a new runbook section or update an existing one. * Cross-link to the admin / developer / compliance docs in the Mintlify `docs/fw/` surface. * Bump the version. * Reviewed quarterly. # Forms & Workflow Overview Source: https://docs.encoreos.io/fw/overview Overview of the Forms & Workflow core in Encore OS — purpose, scope, and key responsibilities. The Forms & Workflow core (FW) provides cross-cutting form management and business process automation for Encore OS — form builders, workflow definitions, durable execution, event-driven automation, workflow versioning, and form analytics. **Architecture:** FW is a cross-cutting capability used by multiple cores through the Platform Integration Layer. Other cores consume FW via integration contracts and events — never direct imports. ## How automation flows Authors build forms and compose them into versioned workflow definitions. Triggers — cross-core events, scheduled cron, or webhooks — start a durable, resumable execution whose step history and completion feed analytics. ```mermaid theme={null} flowchart LR Form["Form builder
(schema + logic)"] --> Workflow["Workflow definition
(branching · retries ·
human-in-the-loop)"] Workflow --> Version["Versioning"] Trigger["Triggers
(events · cron · webhooks)"] --> Exec["Durable execution"] Version --> Exec Exec --> Analytics["Analytics
(completion · drop-off ·
time-to-complete)"] Cores["Other cores
(via events)"] -.-> Trigger ``` Forms and Workflow scheduled jobs overview ## What FW covers Schema definitions, conditional logic, validation, and multi-step forms. Durable processes with branching, retries, and human-in-the-loop steps. Long-running, resumable executions with full step history. Triggers from cross-core events, scheduled cron, and webhooks. Schema versioning and migration of in-flight instances. Completion rates, drop-off, and time-to-complete metrics. ## Get oriented in FW Define a schema with conditional logic and validation in the form builder. Compose durable steps with branching, retries, and approvals. Wire [cross-core triggers](/architecture/integrations/event-based-workflow-triggers-integration) so workflows run when other cores publish events. ## By role Design and deploy workflows; manage versions and migrations. Build intake, assessment, and audit forms. Monitor durable executions and debug failed steps. Audit completed forms and workflow evidence. ## Scope at a glance * **Form builders** — schema definitions, conditional logic, validation rules, multi-step forms. * **Workflow definitions** — durable processes, branching, retries, human-in-the-loop steps. * **Event-driven automation** — triggers from cross-core events, scheduled cron, webhook entry. * **Versioning** — form and workflow schema versioning, migration of in-flight instances. * **Analytics** — completion rates, drop-off, time-to-complete metrics. ## Related How FW listens to events from other cores. Workforce forms and workflow automation. Clinical event hand-off into workflows. Practice-management-triggered automation. # Rate Limits Source: https://docs.encoreos.io/fw/rate-limits Monitor workflow execution rate limit utilization against configured thresholds. The Rate Limits page at `/fw/rate-limits` provides a dashboard for monitoring workflow execution utilization against configured rate limits. ## Overview The Rate Limits page wraps the `RateLimitDashboardWidget` in a full-page container with a settings-style header. The page description reads: "Monitor workflow execution utilization against configured rate limits." It links to external documentation via `PUBLISHED_DOC_PATHS.formsRateLimitingThrottling`. ## Who it's for Requires `fw.rate_limits.view` permission, enforced by `RequirePermission` in `src/routes/fw.tsx`. ## Before you start * You must have the `fw.rate_limits.view` permission. * Rate limit configuration must be set up elsewhere (SME: confirm location) before utilization data is meaningful. ## Steps 1. Navigate to `/fw/rate-limits`. 2. Review the `RateLimitDashboardWidget` for current utilization metrics. ## Key concepts * **Rate limit** — A configured threshold on workflow execution frequency or volume, enforced to protect system resources and downstream services. * **Utilization** — The current rate of executions relative to the configured limit, displayed by the `RateLimitDashboardWidget`. ## Related Forms & Workflow core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fw\.tsx * src/cores/fw/pages/RateLimitDashboardPage.tsx * src/cores/fw/components/rate-limiting/RateLimitDashboardWidget.tsx # Regulatory Log Source: https://docs.encoreos.io/fw/regulatory-log Track and manage regulatory changes that affect healthcare workflow patterns and compliance obligations. The Regulatory Log page at `/fw/regulatory-log` provides a list view of regulatory change entries with status filtering, and a dialog for creating or editing entries. ## Overview The Regulatory Change Log displays entries representing regulatory changes that affect healthcare workflow patterns. Each entry includes a regulation identifier, change description, effective date, optional impact assessment, and a lifecycle status. Users with the `fw.healthcare_patterns.manage` permission can create, edit, and delete entries. The page includes an explicit PHI notice in the entry form: fields must not contain patient names, MRNs, or other PHI. This log is for regulatory metadata only. ## Who it's for Requires `fw.healthcare_patterns.manage` permission, enforced by `RequirePermission` in `src/routes/fw.tsx`. Users without this permission cannot access the route. The "Add Entry" button and delete action on each entry are additionally gated by `PermissionGate permission="fw.healthcare_patterns.manage"` within the component. ## Before you start * You must have the `fw.healthcare_patterns.manage` permission. * Do not enter PHI in any field. The form includes explicit reminders that patient names, MRNs, and other PHI must not be entered in the Description or Impact Assessment fields. ## Steps **To view entries:** 1. Navigate to `/fw/regulatory-log`. 2. Use the status filter buttons (All, Pending, Reviewed, Applied, Dismissed) to narrow the list. 3. Click an entry row to open the edit dialog. **To create an entry:** 1. Select "Add Entry." 2. Enter the **Regulation** identifier (e.g., a regulatory citation — do not include PHI). 3. Enter a **Description** of the change. Do not include PHI. 4. Set the **Effective Date**. 5. Optionally enter an **Impact Assessment**. Do not include PHI. 6. Set the **Status** (defaults to `pending`). 7. Select **Create**. **To update an entry:** 1. Click the entry row to open the edit dialog. 2. Update the relevant fields. 3. Select **Update**. **To delete an entry:** 1. Click the trash/Delete button on the entry row. 2. Deletion is immediate (no confirmation dialog visible in the component). ## Key concepts * **Status lifecycle** — Entries move through `pending` → `reviewed` → `applied` (or `dismissed`). Status labels are defined in `REGULATORY_CHANGE_STATUS_LABELS`. * **Regulation** — A free-text identifier for the regulatory citation. SME should confirm the expected format. * **Effective date** — The date the regulation change takes effect. * **Impact assessment** — Optional narrative on how the change affects existing workflows. Must not contain PHI. ## Related Forms & Workflow core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fw\.tsx * src/cores/fw/pages/RegulatoryChangeLogPage.tsx * src/cores/fw/hooks/useHealthcarePatterns.ts * src/cores/fw/types/healthcare-patterns.ts # Subflow Editor Source: https://docs.encoreos.io/fw/subflow-editor Build and configure reusable workflow fragments that can be embedded in other automations. The Subflow Editor at `/fw/subflows/:id` provides a visual canvas for building reusable workflow fragments. When `:id` is `new`, the editor is in creation mode; otherwise it loads and edits an existing subflow definition. ## Overview The Subflow Editor is a full-screen canvas-based editor using `WorkflowCanvas` (powered by React Flow). The left sidebar contains a **Nodes** tab (the `NodePalette` for dragging node types onto the canvas) and a **Settings** tab for configuring subflow metadata and defining input/output parameters. The right sidebar shows properties for the selected node via `NodePropertiesPanel`. Changes to the canvas are debounced and auto-saved. When creating a new subflow (`id === 'new'`), the settings tab shows name and description fields. The "Create Subflow" button saves the record and redirects to the subflows list. ## Who it's for Access follows your organization's role and module configuration. Access control is applied at the data layer. The subflows list and editor are reachable by any authenticated user with an active organization. ## Before you start * An organization must be active. If no organization is selected the editor shows a message and is non-functional. * For new subflows, prepare a name (required) and optionally a description before clicking "Create Subflow." ## Steps **Creating a new subflow:** 1. Navigate to `/fw/subflows` and select "Create Subflow," or navigate directly to `/fw/subflows/new`. 2. In the **Settings** tab in the left sidebar, enter a **Subflow Name** (required) and optional **Description**. 3. Define **Input Parameters** and **Output Parameters** using the `SubflowParameterEditor` in the Settings tab. 4. Drag nodes from the **Nodes** tab onto the canvas and connect them. 5. Configure node properties in the right sidebar by clicking a node. 6. Select **Create Subflow**. The record is saved and the browser returns to `/fw/subflows`. **Editing an existing subflow:** 1. Navigate to `/fw/subflows/:id`. 2. The canvas loads the saved node and edge layout. The settings tab shows existing input/output parameter definitions. 3. Modify the canvas, node configurations, or parameters as needed. 4. Changes are auto-saved after a 1-second debounce. Use "Save Now" to flush immediately. ## Key concepts * **Subflow** — A reusable workflow fragment with defined input and output parameters. Referenced by parent automations via `subflow` node types. * **Input/output schema** — Structured parameter definitions (`SubflowParameter[]`) that declare what data the subflow accepts and returns. * **`usage_count`** — Displayed on the subflows list; indicates how many times this subflow is referenced. * **Auto-save** — The editor debounces saves (1-second delay) after any canvas or parameter change. Explicit "Save Now" flushes immediately. ## Related Forms & Workflow core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fw\.tsx * src/cores/fw/pages/SubflowEditor.tsx * src/cores/fw/hooks/useSubflowDefinition.ts * src/cores/fw/hooks/useSubflows.ts * src/cores/fw/components/SubflowParameterEditor.tsx # Subflows Source: https://docs.encoreos.io/fw/subflows Browse, create, and manage reusable workflow fragments that can be embedded in other automations. The Subflows page at `/fw/subflows` lists all reusable workflow fragments (subflows) for the active organization. From here users can create new subflows, edit existing ones, and delete those that are no longer needed. ## Overview The Subflows list displays each subflow as a card showing its name, optional description, node count, usage count, and input/output parameter counts. A delete action requires confirmation via an alert dialog. The "Create Subflow" button navigates to `/fw/subflows/new`. ## Who it's for Access follows your organization's role and module configuration. All authenticated users with an active organization can view the subflows list. ## Before you start * An organization must be active. If no organization is selected the page shows a message and the list is empty. ## Steps 1. Navigate to `/fw/subflows`. 2. Review the subflow cards. Each shows: * Name * Description (if set) * Node count * Usage count (number of times referenced) * Input and output parameter counts 3. Select the edit icon on a card to open the Subflow Editor at `/fw/subflows/:id`. 4. Select the delete icon to open a confirmation dialog. Confirm to delete. 5. Select "Create Subflow" to navigate to `/fw/subflows/new` and build a new subflow. ## Key concepts * **Subflow** — A reusable workflow fragment with defined input and output parameters that can be embedded in automation workflows using a `subflow` node type. * **Usage count** — The number of parent workflows or automations that reference this subflow. * **Node count** — The number of nodes in the subflow's canvas definition. * **Input/output parameters** — Declared schema entries that define the data interface for the subflow. ## Related Forms & Workflow core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fw\.tsx * src/cores/fw/pages/SubflowsListPage.tsx * src/cores/fw/hooks/useSubflows.ts # Forms & Workflow Submissions Source: https://docs.encoreos.io/fw/submissions View, filter, and export form submissions — with a detail view for status management, notes, attachments, signatures, and PDF export. The Submissions page at `/fw/submissions` provides a paginated, searchable list of all form submissions for the active organization, with filters by form, status, and date range, and support for CSV/JSON export and bulk PDF export. ## Overview The Submissions list displays form submissions in a paginated data table (50 per page). Each row shows: form name (link to detail), submitted by, submitted at, status badge, and action buttons (export as PDF, View). Users can select non-draft submissions for bulk PDF export. Submission data may contain PHI — access is controlled by `fw.submissions.view`. ## Who it's for Requires `fw.submissions.view` permission (`FW_PERMISSIONS.SUBMISSIONS_VIEW`), enforced by `RequirePermission` in `src/routes/fw.tsx`. ## Before you start * You must have the `fw.submissions.view` permission. * Ensure the organization context is set; submissions are scoped to the active organization. ## Finding and exporting submissions **Viewing submissions:** 1. Navigate to `/fw/submissions`. 2. The table loads the first page of submissions (up to 50). 3. Use pagination controls at the bottom to navigate pages. **Filtering:** * **Form filter** — Select a specific form from the dropdown to show only its submissions. * **Status filter** — Select a status (`draft`, `submitted`, `reviewed`, `completed`, `rejected`) to filter by lifecycle state. * **Date range** — Use the date-range popover to filter submissions by submission date. * **Search** — Type in the search box to filter by form name or submitter name/email (client-side filter on the current page). * Select **Clear Filters** to reset form and date filters. **Exporting:** * **Export CSV** — Downloads a CSV of submissions matching the current status filter. * **Export JSON** — Downloads a JSON file of submissions matching the current status filter. * **Bulk PDF export** — Select non-draft submissions using row checkboxes, then select "Export N as PDF" in the bulk action bar. **Viewing a submission:** Select the form name link or the View button to open `/fw/submissions/:id`. **Single PDF export:** Select the PDF icon on any non-draft submission row. The browser navigates to `/fw/submissions/:id?action=pdf`, which auto-opens the export dialog. * **Submission status** — `draft`, `submitted`, `reviewed`, `completed`, `rejected`. Only non-draft submissions are selectable for export. * **Page size** — Fixed at 50 submissions per page. * **Search scope** — Filters by `form_name`, `submitter_name`, and `submitter_email` on the current page's loaded data. * **Bulk PDF export** — Uses `useBulkSubmissionPdfExport`; selection is cleared on successful export. * **PHI** — Submission data frequently contains PHI. Do not export or share without authorization. ## Viewing a submission The Submission Details page (`/fw/submissions/:id`) displays the full contents of a single form submission, along with tools for managing its lifecycle, annotations, and supporting documents. The page includes: * **Submission field values** — All form fields with their submitted responses, including file attachments and signature captures. * **AI Summary Card** — Shown for non-draft submissions (SME: confirm AI summary scope and PHI handling). * **Status workflow** — A dropdown to update the submission status. * **Notes** — A textarea to add internal notes visible to staff. * **Signatures** — A card listing captured signatures when the form includes signature-type fields. * **Attachments** — A drag-and-drop zone for uploading supporting files and a list of existing attachments with download and delete actions. * **PDF export** — Download PDF and Export with Letterhead buttons for non-draft submissions; Signed PDF button when signature fields are present. Before you start: you must have the `fw.submissions.view` permission. The submission must exist. PDF export requires the submission to have a status other than `draft`. **Changing status:** 1. In the Status sidebar card, select a new status from the dropdown. 2. The status updates immediately. Timestamps for reviewed and completed events are shown below the dropdown. **Adding a note:** 1. In the Notes card, enter the note text in the textarea. 2. Select **Add Note**. The note is appended to the list with creator and timestamp. **Uploading an attachment:** 1. In the Attachments card, drag a file onto the drop zone or click to select. 2. The file uploads and appears in the attachments list. **Downloading an attachment:** Select the download icon next to the file. A signed URL is generated with a 1-hour expiry and the file opens in a new tab. **Exporting as PDF:** * **Download PDF** — Generates a standard PDF export. * **Export with Letterhead** — Opens the `FormSubmissionExportDialog` for branding and formatting options. * **Signed PDF** — Available when the form has signature fields; generates a PDF with embedded signatures. * **Submission status lifecycle** — `draft` → `submitted` → `reviewed` → `completed` (or `rejected`). Status changes are persisted via `useSubmissionMutation`. * **PHI** — Form submission data frequently contains PHI. Access is gated by `fw.submissions.view`. Notes and attachments should not contain PHI beyond what is necessary. * **Signature capture** — Signature-type fields that lack a value and have a capturable status show a "Capture Signature" button powered by `SignatureDialog`. * **Attachment storage** — Files are stored in the `submission-attachments` Supabase storage bucket. Download links use signed URLs expiring after 1 hour. ## Related Forms & Workflow core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fw\.tsx * src/cores/fw/pages/SubmissionsList.tsx * src/cores/fw/pages/SubmissionDetailPage.tsx * src/cores/fw/hooks/useSubmissionList.ts * src/cores/fw/hooks/useSubmissionDetail.ts * src/cores/fw/hooks/useSubmissionMutation.ts * src/cores/fw/hooks/useSubmissionExport.ts * src/cores/fw/hooks/useBulkSubmissionPdfExport.ts * src/platform/forms/hooks/useFormSubmissionPdf.ts * src/platform/signatures/SignatureDialog.tsx # Template Marketplace Source: https://docs.encoreos.io/fw/template-marketplace Browse, preview, and clone workflow templates shared across organizations, with AI-powered recommendations. The Template Marketplace page at `/fw/templates/marketplace` displays workflow templates available from the cross-organization marketplace, with filtering by category and rating, sorting options, AI recommendations, and featured template sections. ## Overview The Template Marketplace fetches templates from `useMarketplaceTemplates` and `useFeaturedMarketplaceTemplates`. Featured templates are displayed in a highlighted section when no filters are active. AI recommendations (`AITemplateRecommendations`) are shown above the main grid when no filters are active and templates are loaded. Selecting a template card opens a preview dialog (`TemplatePreview`). From the preview, users can choose to use the template, which opens the `TemplateCustomizer` dialog. On successful customization and clone, a new automation rule is created and the browser navigates to `/fw/automations/:ruleId`. ## Who it's for Access follows your organization's role and module configuration. tsx\`. All authenticated users with access to the FW module can browse the marketplace. ## Before you start * No specific permissions are required to browse. Cloning a template creates an automation rule — confirm any permissions required for that action. ## Steps **Browsing:** 1. Navigate to `/fw/templates/marketplace`. 2. Review featured templates (shown when no filters are active). 3. Review AI recommendations if present. 4. Browse the main template grid. **Filtering and sorting:** * Enter a search term in the search box. * Select a **Category** from the dropdown. * Select a minimum **Rating** threshold. * Select a **Sort** option: Most Popular, Top Rated, or Newest. **Previewing a template:** 1. Click a template card to open the preview dialog. 2. Review the template description and configuration. 3. Select similar templates from the preview if available. **Using a template:** 1. From the template card or preview dialog, select **Use Template**. 2. The `TemplateCustomizer` dialog opens to configure the template for your organization. 3. On success, a new automation rule is created and the browser navigates to `/fw/automations/:ruleId`. ## Key concepts * **Marketplace template** — A workflow template shared across organizations. Featured templates are curated by platform administrators. * **Clone** — Creates a new automation rule in the current organization based on the template's configuration. * **AI recommendations** — Shown when no filters are active; suggests templates based on available template metadata. SME: confirm data sent to AI service. * **Template category** — Classifies templates by domain (e.g., defined in `TEMPLATE_CATEGORIES`). ## Related Forms & Workflow core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fw\.tsx * src/cores/fw/pages/TemplateMarketplacePage.tsx * src/cores/fw/hooks/useMarketplaceTemplates.ts * src/cores/fw/components/templates/TemplateCard.tsx * src/cores/fw/components/templates/TemplateCustomizer.tsx # Unused Entities Source: https://docs.encoreos.io/fw/unused-entities Identify and archive orphaned forms, automations, and decision tables that have no active references. The Unused Entities page at `/fw/settings/unused-entities` lists orphan candidate entities — forms, automation rules, and decision tables that appear to have no active references in the dependency graph. Users with the maintain permission can bulk archive selected entities. ## Overview The Unused Entities page uses `useOrphanReport` to fetch candidate entities for the active organization, filtered optionally by entity type. Each entity is shown in a table with its display name, type badge, status, and creation date. Users with `fw.dependencies.maintain` can select entities and bulk archive them. Archive operations are performed directly against the database: * Forms are soft-deleted (`deleted_at` timestamp). * Automation rules are set to `draft` status. * Decision tables are deactivated (`is_active: false`). ## Who it's for Requires `fw.dependencies.view` permission, enforced by `RequirePermission` in `src/routes/fw.tsx`. The archive action additionally requires `fw.dependencies.maintain` permission (checked via `useHasPermission`). Users without this permission see the list but not the checkboxes or Archive button. ## Before you start * You must have the `fw.dependencies.view` permission to access this page. * Review the entity list carefully before archiving. Archiving affects the entity's availability in workflows and submissions. * Confirm with SME whether archiving is reversible before bulk-archiving large sets. ## Steps **Reviewing orphan candidates:** 1. Navigate to `/fw/settings/unused-entities`. 2. Use the **Type** filter to narrow results to a specific entity type (Forms, Automations, Decision Tables). 3. Review the table: Name, Type, Status, Created date. **Archiving entities (requires `fw.dependencies.maintain`):** 1. Check one or more rows using the checkboxes. Use the header checkbox to select all. 2. Select **Archive (N)** in the toolbar. 3. A confirmation dialog shows the count. Select **Archive** to confirm. 4. The selected entities are archived and the list refreshes. ## Key concepts * **Orphan candidate** — An entity identified as having no active references in the dependency graph. SME: confirm detection methodology. * **Soft delete (forms)** — Sets `deleted_at` on `fw_forms`; the record remains in the database. * **Deactivation (decision tables)** — Sets `is_active: false` on `fw_decision_tables`. * **Draft revert (automation rules)** — Sets `status: 'draft'` on `fw_automation_rules`. * **Dependency view permission** — `fw.dependencies.view` gates page access; `fw.dependencies.maintain` gates archive actions. ## Related Forms & Workflow core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fw\.tsx * src/cores/fw/pages/UnusedEntitiesPage.tsx * src/cores/fw/hooks/useOrphanReport.ts * src/cores/fw/types/dependencyGraph.ts # Wizard Analytics Source: https://docs.encoreos.io/fw/wizard-analytics View completion, drop-off, and performance metrics for a specific wizard template. The Wizard Analytics page at `/fw/wizards/:id/analytics` displays analytics for a specific wizard template, powered by the `WizardAnalyticsDashboard` component. ## Overview The Wizard Analytics page fetches the wizard template by `:id` using `useWizardTemplateDetail`, then renders `WizardAnalyticsDashboard` with the template ID and name. A back button returns to the Wizard Builder at `/fw/wizards/:id/edit`. While loading, skeleton placeholders are shown. ## Who it's for Requires `pf.wizards.view` permission (`PERMISSIONS.PF.WIZARDS_VIEW`), enforced by `RequirePermission` wrapping the page content. ## Before you start * You must have the `pf.wizards.view` permission. * The wizard template must exist. If it cannot be found the analytics dashboard may be empty. ## Steps 1. Navigate to `/fw/wizards/:id/analytics` or select the Analytics action for a wizard from the Wizard Templates page. 2. Review the analytics dashboard for completion rates and step-level metrics. 3. Select **Back to Builder** to return to the Wizard Editor. ## Key concepts * **Wizard template** — The template being analyzed, identified by `:id`. * **WizardAnalyticsDashboard** — The component rendering all metric visualizations; SME should confirm specific metrics displayed. ## Related Forms & Workflow core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fw\.tsx * src/platform/wizards/pages/WizardAnalyticsPage.tsx * src/platform/wizards/components/WizardAnalyticsDashboard.tsx * src/platform/wizards/hooks/useWizardTemplateDetail.ts * src/platform/permissions/constants.ts # Wizard Editor Source: https://docs.encoreos.io/fw/wizard-editor Configure wizard template steps, validation, and visibility conditions using the Wizard Builder. The Wizard Editor at `/fw/wizards/:id/edit` provides the full `WizardBuilder` interface for configuring wizard template steps, step conditions, and overall template settings. Editing is protected by a distributed lock to prevent concurrent modifications. ## Overview The Wizard Editor loads the template identified by `:id` via `useWizardTemplateDetail`. Before rendering the builder, it acquires an edit lock via `useWizardLock`. If a lock conflict is detected (another user is editing), a `LockConflictDialog` is shown with options to retry, start fresh, or cancel. The `WizardBuilder` is only rendered when the lock is held (`hasLock === true`). A `QuickTip` in the header guides users to add steps first, then configure each step's details, and use preview to test. ## Who it's for Requires `pf.wizards.edit` permission (`PERMISSIONS.PF.WIZARDS_EDIT`), enforced by `RequirePermission` wrapping the page content. ## Before you start * You must have the `pf.wizards.edit` permission. * The wizard template must exist. If not found or an error occurs, a destructive alert is shown. * If another user is currently editing the wizard, the lock conflict dialog will appear. ## Steps 1. Navigate to `/fw/wizards/:id/edit` or select the edit action for a wizard from the Wizard Templates page. 2. Wait for the lock to be acquired. If a conflict is detected: * Select **Retry** to attempt to acquire the lock again. * Select **Start Fresh** or **Cancel** to return to the Wizard Templates page. 3. Once the lock is held, the `WizardBuilder` is rendered. 4. Add steps and configure each step's details in the builder. 5. Use the preview capability to test the wizard flow. 6. Save changes within the builder. 7. Select **Back to Wizards** to return to the Wizard Templates list. ## Key concepts * **Edit lock** — A distributed lock (via `useWizardLock`) that prevents concurrent editing. The lock is associated with the template's `executionId`. * **Lock conflict** — Occurs when another user holds the lock. Surfaced via `LockConflictDialog` showing who holds the lock. * **WizardBuilder** — The primary editing component; SME should confirm step types, field types, and visibility condition configuration. * **`is_active`** — Controls whether the wizard template is available for execution. Activation is managed within the builder or templates list. ## Related Forms & Workflow core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fw\.tsx * src/platform/wizards/pages/WizardBuilderPage.tsx * src/platform/wizards/hooks/useWizardLock.ts * src/platform/wizards/hooks/useWizardTemplateDetail.ts * src/platform/wizards/components/WizardBuilder.tsx * src/platform/permissions/constants.ts # Wizard Marketplace Source: https://docs.encoreos.io/fw/wizard-marketplace Discover and clone wizard templates shared by other organizations — with featured listings, search filters, and a detail view for ratings and cloning. The Wizard Marketplace page at `/fw/wizards/marketplace` displays wizard templates shared through the cross-organization marketplace. Users can browse, preview, and clone templates into their own organization. ## Overview The Wizard Marketplace fetches listings from `useMarketplaceListings` and featured listings from `useFeaturedListings`. Featured templates are shown in a horizontally scrollable carousel when no search or module filter is active. All listings are shown in a responsive grid below. A `MarketplacePreviewDialog` allows users to inspect a template before cloning. Cloning uses `useMarketplaceMutation.cloneListing` and redirects to `/fw/wizards/:id/edit` on success. ## Who it's for Access follows your organization's role and module configuration. All authenticated users with access to the FW module can browse the wizard marketplace. Cloning requires an active organization context. ## Browsing and cloning **Browsing:** 1. Navigate to `/fw/wizards/marketplace`. 2. Review featured templates in the horizontal carousel (when no filters are active). 3. Browse all templates in the main grid. **Filtering and sorting:** 1. Use the `MarketplaceFilters` component to filter by search term and/or module. 2. Adjust the sort order (e.g., popular). **Previewing a template:** 1. Select a listing card to open the `MarketplacePreviewDialog`. 2. Review the template details. 3. Select **Clone** to proceed with cloning. **Cloning a template:** 1. From a card or preview, select **Clone**. 2. The `CloneFromMarketplaceDialog` opens for confirmation. 3. Confirm the clone. On success the wizard template is added to the organization and the browser navigates to `/fw/wizards/:id/edit`. * **Marketplace listing** — A wizard template made available by another organization for cloning. * **Featured listing** — A curated marketplace listing shown prominently at the top of the page. * **Clone** — Creates a copy of the marketplace listing's wizard template in the current organization. * **Module filter** — Filters listings by the platform core they are associated with (e.g., `rh`, `hr`, `cl`). ## Viewing a listing The Listing Details screen (`/fw/wizards/marketplace/:listingId`) displays the full detail of a wizard template marketplace listing. This screen loads a marketplace listing via `useMarketplaceListing` identified by `listingId`. The breadcrumb label is set to `listing.title` via `useEntityBreadcrumb`. The listing detail shows metadata and step structure (via `WizardStep` type). User reviews and ratings are loaded via `useListingRatings`. Cloning is initiated by `CloneFromMarketplaceDialog`; on success the user is navigated to `/fw/wizards/:id/edit` for the cloned template. A rating submission form (stars + text review) is present inline, submitted via `useMarketplaceMutation`. Wizard steps are shown in a collapsible list. Before you start: reach this screen from the Marketplace (`/fw/wizards/marketplace`) by clicking a listing. You must be logged in; the current organization is used for cloning. 1. Navigate to `/fw/wizards/marketplace/:listingId` or click a listing in the marketplace. 2. Read the description, steps, and metadata for the wizard template. 3. Scroll to the reviews section to see community ratings via `MarketplaceReviewsList`. 4. Click **Clone** to open `CloneFromMarketplaceDialog` and add this template to your organization. 5. Select a star rating and optionally enter a review, then submit. * **Clone** — copies the marketplace template into the current organization as a new wizard template, then navigates to the wizard builder. * **WizardStep** — the structured steps that define the wizard template flow. ## Related Forms & Workflow core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fw\.tsx * src/platform/wizards/pages/MarketplacePage.tsx * src/platform/wizards/pages/MarketplaceListingDetailPage.tsx * src/platform/wizards/hooks/useMarketplace.ts * src/platform/wizards/hooks/useMarketplaceMutation.ts # Forms & Workflow Wizard Templates Source: https://docs.encoreos.io/fw/wizard-templates Manage multi-step wizard templates — browse custom, system, and migrated wizards, and create new templates with name, module, and type configuration. The Wizard Templates page at `/fw/wizards` displays the organization's wizard templates organized in tabs: My Templates (custom templates), System Templates, and Migration. Users with appropriate permissions can create, edit, and delete templates. ## Overview The Wizard Templates page presents organization-owned wizard templates in a responsive card grid. Each card shows the associated module badge, active/inactive status badge, name, description, step count, and estimated total time. Cards have a dropdown menu for Edit and Delete actions (gated by `pf.wizards.edit` and `pf.wizards.admin` permissions respectively). The "New Wizard" button navigates to `/fw/wizards/new` (gated by `pf.wizards.create`). ## Who it's for Access follows your organization's role and module configuration. All authenticated users can view the Wizard Templates list. Individual actions are permission-gated: * **Create**: `pf.wizards.create` (`PERMISSIONS.PF.WIZARDS_CREATE`) * **Edit**: `pf.wizards.edit` (`PERMISSIONS.PF.WIZARDS_EDIT`) * **Delete**: `pf.wizards.admin` (`PERMISSIONS.PF.WIZARDS_ADMIN`) ## Finding and managing wizard templates **Viewing templates:** 1. Navigate to `/fw/wizards`. 2. The **My Templates** tab loads organization wizard templates. 3. Switch to **System Templates** to view platform-provided templates. 4. Switch to **Migration** for any migration utilities. **Editing a wizard:** 1. Open the dropdown on a template card and select **Edit** (requires `pf.wizards.edit`). 2. The browser navigates to `/fw/wizards/:id/edit`. **Deleting a wizard:** 1. Open the dropdown on a template card and select **Delete** (requires `pf.wizards.admin`). 2. A confirmation dialog warns that the action is permanent. 3. Confirm to delete. The template and all its configuration are removed. **Cloning a system template:** System templates show a clone action in `SystemTemplatesSection`; on success the browser navigates to the editor for the cloned template. * **`is_active`** — Controls whether the wizard template is available for use. Starts as `false` on creation. * **Module** — The platform core the wizard is associated with (displayed as an uppercase badge). * **Step count / estimated time** — Derived from `template.steps`; total estimated time is the sum of `estimated_time_minutes` across all steps. * **System templates** — Platform-provided templates surfaced by `SystemTemplatesSection`; SME should confirm scope. ## Creating a wizard The New Wizard page at `/fw/wizards/new` presents a creation form for multi-step wizard templates. After creation the browser redirects automatically to the Wizard Builder (`/fw/wizards/:id/edit`) so steps and fields can be configured. Requires `pf.wizards.create`. The page collects the minimum metadata required to create a wizard template record: name, optional description, module, and wizard type. The new template is created with `is_active: false` and an empty `steps` array. Before you start: choose the target **Module** that this wizard will serve and a **Wizard Type** that reflects its purpose. The wizard name must be at least 3 characters long. 1. Navigate to `/fw/wizards/new` or select **New Wizard** from the Wizard Templates page. 2. Enter a **Wizard Name** (required, minimum 3 characters). 3. Optionally enter a **Description**. 4. Select a **Module** from the dropdown (defaults to `fw` — Forms & Workflows). 5. Select a **Wizard Type** from the dropdown (defaults to `custom`). 6. Select **Create & Configure**. The wizard template record is saved and the browser redirects to `/fw/wizards/:id/edit` for step configuration. * **Module** — Associates the wizard with a platform core (e.g., `rh`, `hr`, `fa`, `cl`). Determines where the wizard appears and which data contexts are available. * **Wizard type** — Classifies the wizard's purpose: `onboarding`, `admission`, `configuration`, `setup`, `workflow`, or `custom`. * **`DEFAULT_WIZARD_CONFIG`** — Applied at creation; SME should confirm which defaults are set. ## Related Forms & Workflow core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fw\.tsx * src/cores/fw/pages/WizardTemplatesPage.tsx * src/platform/wizards/pages/WizardCreatePage.tsx * src/platform/wizards/hooks/useWizardTemplates.ts * src/platform/wizards/hooks/useWizardTemplateMutation.ts * src/platform/permissions/constants.ts # Workflow Alerts Source: https://docs.encoreos.io/fw/workflow-alerts Monitor and manage workflow issues and alerts surfaced by the automation engine. The Workflow Alerts page at `/fw/alerts` provides a dashboard for monitoring workflow issues and alerts generated by the automation engine. ## Overview The Workflow Alerts page wraps the `AlertsDashboard` component in a page container with a header showing the alert triangle icon and the description "Monitor and manage workflow issues and alerts." There is no explicit `RequirePermission` guard on this route in `src/routes/fw.tsx`. ## Who it's for Access follows your organization's role and module configuration. All authenticated users with access to the FW module can view this page. ## Before you start * No specific permissions are required to access this page based on the current router configuration. ## Steps 1. Navigate to `/fw/alerts`. 2. Review the `AlertsDashboard` for active workflow issues and alerts. ## Key concepts * **Workflow alert** — An issue or warning generated during workflow or automation execution. SME: confirm alert types and severity levels. * **AlertsDashboard** — The primary component rendering alert data; SME should confirm the metrics and actions it provides. ## Related Forms & Workflow core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fw\.tsx * src/cores/fw/pages/WorkflowAlertsPage.tsx * src/cores/fw/components/notifications/AlertsDashboard.tsx # Workflow Analytics Source: https://docs.encoreos.io/fw/workflow-analytics View execution metrics, performance trends, and bottleneck analysis for a specific automation workflow. The Workflow Analytics page at `/fw/workflows/:workflowId/analytics` displays performance metrics and trend data for the automation rule identified by `:workflowId`. ## Overview The Workflow Analytics page reads the `workflowId` route parameter and renders the `PerformanceDashboard` component inside a `Suspense` boundary (fallback: `PerformanceDashboardSkeleton`). The page heading reads "Performance Analytics" with the description "View execution metrics, trends, and identify bottlenecks." If `workflowId` is absent the page shows an error message. There is no explicit `RequirePermission` guard on this route in `src/routes/fw.tsx`. ## Who it's for Access follows your organization's role and module configuration. All authenticated users with access to the FW module can view this page. ## Before you start * The workflow (automation rule) identified by `:workflowId` must exist and have execution history for meaningful analytics. ## Steps 1. Navigate to `/fw/workflows/:workflowId/analytics` or access it from the workflow detail view. 2. Review the `PerformanceDashboard` for execution metrics and trends. 3. Use any available date range or filter controls within the dashboard. ## Key concepts * **`workflowId`** — The route parameter identifying the automation rule. Corresponds to the rule's `id` in `useAutomationRules`. * **PerformanceDashboard** — The analytics component; SME should confirm metric definitions and available time range filters. * **Bottleneck analysis** — SME: confirm whether step-level bottleneck identification is available. ## Related Forms & Workflow core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fw\.tsx * src/cores/fw/pages/WorkflowPerformanceAnalytics.tsx * src/cores/fw/components/analytics/PerformanceDashboard.tsx # Workflow Builder API Reference Source: https://docs.encoreos.io/fw/workflow-api Technical reference for Workflow Builder React components, hooks, and types in the FW core. ## Overview Technical reference for Workflow Builder React components, hooks, and types in the FW core. *** ## React Components ### WorkflowCanvas Visual canvas for designing workflows with React Flow. ```typescript theme={null} import { WorkflowCanvas } from '@/cores/fw/components/workflow/WorkflowCanvas'; ``` **Props:** * `nodes: Node[]` - Array of workflow nodes * `edges: Edge[]` - Array of connections between nodes * `onNodesChange: (changes: NodeChange[]) => void` - Node state changes * `onEdgesChange: (changes: EdgeChange[]) => void` - Edge state changes * `onNodeClick?: (event: React.MouseEvent, node: Node) => void` - Node click handler * `onPaneClick?: () => void` - Canvas click handler * `onDrop?: (event: React.DragEvent) => void` - Node drop handler * `onDragOver?: (event: React.DragEvent) => void` - Drag over handler *** ### NodePalette Sidebar with draggable node types. ```typescript theme={null} import { NodePalette } from '@/cores/fw/components/workflow/NodePalette'; ``` **Features:** * Categorized node groups (Triggers, Actions, Control Flow, etc.) * Drag-to-add interface * Search/filter capability * Collapsible categories *** ### NodePropertiesPanel Configuration panel for selected node. ```typescript theme={null} import { NodePropertiesPanel } from '@/cores/fw/components/workflow/NodePropertiesPanel'; ``` **Props:** * `selectedNode: Node | null` - Currently selected node * `onNodeUpdate: (nodeId: string, data: any) => void` - Update handler * `onDeleteNode: (nodeId: string) => void` - Delete handler *** ### ExecutionTrace Timeline visualization of workflow execution. ```typescript theme={null} import { ExecutionTrace } from '@/cores/fw/components/workflow/ExecutionTrace'; ``` **Props:** * `executionId: string` - Execution record ID * `execution: WorkflowExecution` - Execution data with node states *** ### WorkflowValidation Pre-execution validation and error display. ```typescript theme={null} import { WorkflowValidation } from '@/cores/fw/components/workflow/WorkflowValidation'; console.log(result)} /> ``` **Props:** * `nodes: Node[]` - Workflow nodes to validate * `edges: Edge[]` - Workflow edges to validate * `onValidate?: (result: ValidationResult) => void` - Validation callback **ValidationResult:** ```typescript theme={null} interface ValidationResult { valid: boolean; errors: ValidationError[]; warnings: ValidationWarning[]; } ``` *** ### ErrorDisplay Error presentation component. ```typescript theme={null} import { ErrorDisplay } from '@/cores/fw/components/workflow/ErrorDisplay'; ``` **Props:** * `error: WorkflowError | string` - Error to display * `variant?: 'inline' | 'card'` - Display style (default: 'inline') *** ## React Hooks ### useWorkflowDefinition Fetch and save workflow canvas state. ```typescript theme={null} import { useWorkflowDefinition } from '@/cores/fw/hooks/useWorkflowDefinition'; const { definition, isLoading, isSaving, saveDefinition } = useWorkflowDefinition(ruleId); // Save changes saveDefinition(nodes, edges, viewport); ``` **Parameters:** * `ruleId: string` - Automation rule ID **Returns:** * `definition: WorkflowDefinition | null` - Current canvas state * `isLoading: boolean` - Loading state * `isSaving: boolean` - Saving state * `saveDefinition: (nodes, edges, viewport?) => Promise` - Save function *** ### useWorkflowExecution Manage workflow execution state. ```typescript theme={null} import { useWorkflowExecution } from '@/cores/fw/hooks/useWorkflowExecution'; const { execution, isLoading, pauseExecution, resumeExecution, cancelExecution } = useWorkflowExecution(executionId); ``` **Parameters:** * `executionId: string` - Execution record ID **Returns:** * `execution: WorkflowExecution | null` - Execution data * `isLoading: boolean` - Loading state * `pauseExecution: () => Promise` - Pause function * `resumeExecution: () => Promise` - Resume function * `cancelExecution: () => Promise` - Cancel function *** ### useWorkflowApprovals Fetch and manage approval tasks. ```typescript theme={null} import { useWorkflowApprovals } from '@/cores/fw/hooks/useWorkflowApprovals'; const { approvals, isLoading, approveTask, rejectTask } = useWorkflowApprovals(organizationId); // Approve task await approveTask(approvalId, 'Looks good!'); // Reject task await rejectTask(approvalId, 'Need more information'); ``` **Parameters:** * `organizationId: string` - Organization ID **Returns:** * `approvals: WorkflowApproval[]` - Pending approvals * `isLoading: boolean` - Loading state * `approveTask: (id, notes?) => Promise` - Approve function * `rejectTask: (id, notes?) => Promise` - Reject function *** ### useSubflows Manage reusable subflows. ```typescript theme={null} import { useSubflows } from '@/cores/fw/hooks/useSubflows'; const { subflows, isLoading, createSubflow, updateSubflow, deleteSubflow } = useSubflows(organizationId); // Create new subflow await createSubflow({ name: 'Employee Setup', description: 'Standard onboarding process', input_schema: [...], output_schema: [...] }); ``` **Parameters:** * `organizationId: string` - Organization ID **Returns:** * `subflows: Subflow[]` - Available subflows * `isLoading: boolean` - Loading state * `createSubflow: (data) => Promise` - Create function * `updateSubflow: (id, data) => Promise` - Update function * `deleteSubflow: (id) => Promise` - Delete function *** ### useExecutionTrace Fetch real-time execution trace. ```typescript theme={null} import { useExecutionTrace } from '@/cores/fw/hooks/useExecutionTrace'; const { data: execution, isLoading } = useExecutionTrace(executionId); ``` **Parameters:** * `executionId: string | null` - Execution record ID **Returns:** * React Query result with `execution` data * Auto-polling while execution status is 'running' or 'paused' *** ### useWorkflowVersions Manage workflow version history, rollback, and comparison. ```typescript theme={null} import { useWorkflowVersions } from '@/cores/fw/hooks/useWorkflowVersions'; const { versions, isLoading, error, getVersion, createVersion, isCreatingVersion, rollback, isRollingBack, compareVersions, } = useWorkflowVersions(ruleId); ``` **Parameters:** * `ruleId: string | undefined` - Automation rule ID **Returns:** * `versions: WorkflowVersion[]` - All versions for the rule (newest first) * `isLoading: boolean` - Loading state for initial fetch * `error: Error | null` - Error state * `getVersion: (version: number) => Promise` - Fetch specific version * `createVersion: (options: CreateVersionOptions) => Promise` - Create new version snapshot * `isCreatingVersion: boolean` - Creating version loading state * `rollback: (options: RollbackOptions) => Promise` - Rollback to previous version * `isRollingBack: boolean` - Rollback loading state * `compareVersions: (versionA: number, versionB: number) => Promise` - Compare two versions **Types:** ```typescript theme={null} interface WorkflowVersion { id: string; organization_id: string; rule_id: string; version: number; published_by: string; published_at: string; workflow_snapshot: { nodes: WorkflowNode[]; edges: WorkflowEdge[]; viewport?: { x: number; y: number; zoom: number }; }; notes?: string; tags?: string[]; created_at: string; } interface CreateVersionOptions { notes?: string; tags?: string[]; } interface RollbackOptions { target_version: number; notes?: string; } interface VersionDiff { versionA: WorkflowVersion; versionB: WorkflowVersion; diff: { nodes: { added: WorkflowNode[]; removed: WorkflowNode[]; modified: WorkflowNode[]; }; edges: { added: WorkflowEdge[]; removed: WorkflowEdge[]; }; }; } ``` **Examples:** ```typescript theme={null} // Create new version const versionNum = await createVersion({ notes: 'Added approval gates for budget requests', tags: ['production', 'v2.1'] }); console.log(`Created version ${versionNum}`); // Rollback to version 2 await rollback({ target_version: 2, notes: 'Emergency rollback - approval node timeout issue' }); // Compare current version with version 2 const diff = await compareVersions(2, 4); console.log('Added nodes:', diff.diff.nodes.added.length); console.log('Removed nodes:', diff.diff.nodes.removed.length); console.log('Modified nodes:', diff.diff.nodes.modified.length); // Get specific version const version = await getVersion(3); console.log('Published by:', version.published_by); console.log('Published at:', version.published_at); console.log('Nodes:', version.workflow_snapshot.nodes.length); ``` *** ## TypeScript Types ### Node Types ```typescript theme={null} interface WorkflowNode { id: string; type: 'start' | 'action' | 'branch' | 'switch' | 'loop' | 'parallel_fork' | 'parallel_join' | 'approval' | 'subflow' | 'delay' | 'end'; position: { x: number; y: number }; data: NodeData; } // Node-specific data types interface StartNodeData { label?: string; } interface ActionNodeData { label?: string; actionType: 'send_email' | 'send_notification' | 'update_record' | 'create_record' | 'call_webhook'; config: Record; } interface BranchNodeData { label?: string; conditions: BranchCondition[]; } interface BranchCondition { field: string; operator: 'equals' | 'not_equals' | 'contains' | 'greater_than' | 'less_than' | 'is_empty'; value: any; } interface SwitchNodeData { label?: string; switchField: string; cases: SwitchCase[]; } interface SwitchCase { value: any; label?: string; } interface LoopNodeData { label?: string; loopType: 'for_each' | 'while'; collectionField: string; itemVariable: string; maxIterations: number; } interface ApprovalNodeData { label?: string; assigneeUser?: string; assigneeRole?: string; instructions?: string; timeoutHours?: number; timeoutAction?: 'approve' | 'reject'; } interface SubflowNodeData { label?: string; subflowId: string; inputMapping: Record; outputMapping: Record; } ``` *** ### Workflow Execution Types ```typescript theme={null} interface WorkflowExecution { id: string; rule_id: string; organization_id: string; status: 'running' | 'completed' | 'paused' | 'failed' | 'cancelled'; started_at: string; completed_at?: string; paused_at?: string; resumed_at?: string; current_node_id?: string; error_node_id?: string; error_message?: string; node_states: Record; execution_path: string[]; variables: Record; parallel_branches: any[]; retry_count: number; } interface WorkflowApproval { id: string; execution_id: string; node_id: string; organization_id: string; status: 'pending' | 'approved' | 'rejected' | 'timeout'; assignee_user_id?: string; assignee_role?: string; decided_by?: string; decided_at?: string; decision_notes?: string; timeout_at?: string; timeout_action?: string; created_at: string; } ``` *** ### Subflow Types ```typescript theme={null} interface Subflow { id: string; organization_id: string; name: string; description?: string; nodes: WorkflowNode[]; edges: WorkflowEdge[]; viewport?: Viewport; input_schema: SubflowParameter[]; output_schema: SubflowParameter[]; usage_count: number; created_at: string; updated_at: string; created_by: string; updated_by?: string; } interface SubflowParameter { name: string; type: 'string' | 'number' | 'boolean' | 'object' | 'array'; required: boolean; default?: any; description?: string; } ``` *** ## Edge Function API ### POST /automation-executor Execute workflow based on trigger data. **Endpoint:** `https://{project-ref}.supabase.co/functions/v1/automation-executor` **Headers:** ``` Authorization: Bearer {anon-key} Content-Type: application/json ``` **Request Body:** ```typescript theme={null} { trigger_data: { trigger_type: 'form_submitted' | 'form_updated' | 'schedule' | 'webhook' | 'manual'; submission_id: string; form_id: string; organization_id: string; site_id?: string; submitted_by?: string; submission_data: Record; old_status?: string; new_status?: string; }, dry_run?: boolean; // Test mode (no actions executed) } ``` **Response:** ```typescript theme={null} { success: boolean; dry_run: boolean; rules_evaluated: number; results: Array<{ rule_id: string; rule_name: string; workflow_execution?: boolean; success: boolean; nodes_executed?: number; node_states?: Record; error?: string; }>; } ``` *** ## Database Schema ### fw\_workflow\_definitions ```sql theme={null} CREATE TABLE fw_workflow_definitions ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), organization_id UUID NOT NULL REFERENCES pf_organizations(id), rule_id UUID NOT NULL REFERENCES fw_automation_rules(id), nodes JSONB NOT NULL DEFAULT '[]', edges JSONB NOT NULL DEFAULT '[]', viewport JSONB, version INTEGER NOT NULL DEFAULT 1, custom_fields JSONB NOT NULL DEFAULT '{}', created_at TIMESTAMPTZ NOT NULL DEFAULT now(), updated_at TIMESTAMPTZ NOT NULL DEFAULT now(), created_by UUID NOT NULL REFERENCES pf_profiles(id), updated_by UUID REFERENCES pf_profiles(id), UNIQUE(rule_id, version) ); ``` ### fw\_workflow\_executions ```sql theme={null} CREATE TABLE fw_workflow_executions ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), rule_id UUID NOT NULL REFERENCES fw_automation_rules(id), organization_id UUID NOT NULL REFERENCES pf_organizations(id), log_id UUID REFERENCES fw_automation_logs(id), status TEXT NOT NULL DEFAULT 'running', started_at TIMESTAMPTZ NOT NULL DEFAULT now(), completed_at TIMESTAMPTZ, paused_at TIMESTAMPTZ, resumed_at TIMESTAMPTZ, current_node_id TEXT, error_node_id TEXT, error_message TEXT, node_states JSONB NOT NULL DEFAULT '{}', execution_path JSONB NOT NULL DEFAULT '[]', variables JSONB NOT NULL DEFAULT '{}', parallel_branches JSONB NOT NULL DEFAULT '[]', retry_count INTEGER NOT NULL DEFAULT 0, custom_fields JSONB NOT NULL DEFAULT '{}' ); ``` ### fw\_subflows ```sql theme={null} CREATE TABLE fw_subflows ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), organization_id UUID NOT NULL REFERENCES pf_organizations(id), name TEXT NOT NULL, description TEXT, nodes JSONB NOT NULL DEFAULT '[]', edges JSONB NOT NULL DEFAULT '[]', viewport JSONB, input_schema JSONB NOT NULL DEFAULT '[]', output_schema JSONB NOT NULL DEFAULT '[]', usage_count INTEGER NOT NULL DEFAULT 0, custom_fields JSONB NOT NULL DEFAULT '{}', created_at TIMESTAMPTZ NOT NULL DEFAULT now(), updated_at TIMESTAMPTZ NOT NULL DEFAULT now(), created_by UUID NOT NULL REFERENCES pf_profiles(id), updated_by UUID REFERENCES pf_profiles(id) ); ``` *** ## Examples ### Creating a Simple Workflow Programmatically ```typescript theme={null} const nodes = [ { id: '1', type: 'start', position: { x: 0, y: 0 }, data: { label: 'Start' } }, { id: '2', type: 'action', position: { x: 0, y: 100 }, data: { label: 'Send Email', actionType: 'send_email', config: { to: '{{submission_data.email}}', subject: 'Form Received', body: 'Thank you for your submission' } } }, { id: '3', type: 'end', position: { x: 0, y: 200 }, data: { label: 'End' } } ]; const edges = [ { id: 'e1-2', source: '1', target: '2' }, { id: 'e2-3', source: '2', target: '3' } ]; await saveDefinition(nodes, edges); ``` *** ### Triggering a Workflow ```typescript theme={null} const { data, error } = await supabase.functions.invoke('automation-executor', { body: { trigger_data: { trigger_type: 'form_submitted', submission_id: 'sub-123', form_id: 'form-456', organization_id: 'org-789', submitted_by: 'user-abc', submission_data: { email: 'user@example.com', name: 'John Doe' } }, dry_run: false } }); ``` *** ### Monitoring Execution ```typescript theme={null} const { data: execution } = useExecutionTrace(executionId); // Check status if (execution.status === 'paused') { // Find approval task const approval = execution.node_states[execution.current_node_id]; console.log('Waiting for approval:', approval); } // Check for errors if (execution.status === 'failed') { console.error('Failed at node:', execution.error_node_id); console.error('Error:', execution.error_message); } ``` *** ## Best Practices ### Performance * Keep workflows under 50 nodes for optimal performance * Use parallel execution for independent actions * Set reasonable `maxIterations` on loops * Lazy load node configuration forms ### Error Handling * Always validate workflows before execution * Provide default/else paths in branches * Set timeouts on approval nodes * Use try-catch in custom functions ### Security * Validate all user inputs * Use RLS policies on all tables * Sanitize dynamic values in emails/webhooks * Audit approval decisions ### Maintainability * Use descriptive node labels * Extract reusable logic into subflows * Document complex workflows * Version control workflow definitions *** ## Support For additional API documentation and support: * Review workflow examples in `workflow-examples.md` * Check the user guide in `workflow-builder-guide.md` * Contact technical support for assistance # Workflow Builder User Guide Source: https://docs.encoreos.io/fw/workflow-builder-guide The Encore OS Visual Workflow Builder allows you to create complex automation workflows using a drag-and-drop interface. Workflows can include condition… ## Overview The Encore OS Visual Workflow Builder allows you to create complex automation workflows using a drag-and-drop interface. Workflows can include conditional branching, parallel execution, loops, human approvals, and reusable subflows. *** ## Getting Started ### Creating Your First Workflow 1. Navigate to **Forms & Workflow** → **Automations** 2. Create a new automation rule or edit an existing one 3. Click **"Visual Editor"** to open the workflow builder 4. Drag nodes from the left palette onto the canvas 5. Connect nodes by dragging from one node's output to another's input 6. Configure each node by clicking it and editing properties in the right panel 7. Click **"Save Workflow"** to persist your changes *** ## Node Types ### Triggers #### Start Node * **Purpose:** Entry point for every workflow * **Configuration:** None required * **Outputs:** One (continues to next node) ### Actions #### Action Node * **Purpose:** Execute automation actions (send email, create record, etc.) * **Configuration:** * **Action Type:** send\_email, send\_notification, update\_record, create\_record, call\_webhook * **Action Config:** Type-specific configuration (email addresses, webhook URLs, etc.) * **Dynamic Values:** Use `{{submission_data.field_name}}` to reference form data * **Outputs:** One (continues after execution) ### Control Flow #### Branch Node * **Purpose:** Conditional if/else routing * **Configuration:** * Add conditions (field, operator, value) * Each condition creates a new output path * Default "else" path for unmatched conditions * **Outputs:** One per condition + default #### Switch Node * **Purpose:** Multi-way routing based on exact field value * **Configuration:** * Select field to switch on * Add cases with expected values * Default case for unmatched values * **Outputs:** One per case + default #### Loop Node * **Purpose:** Repeat actions for each item in a collection * **Configuration:** * **Collection Field:** Path to array (e.g., `submission_data.items`) * **Item Variable:** Variable name for current item (default: `item`) * **Max Iterations:** Safety limit (default: 100) * **Outputs:** Two ("body" for loop content, "done" after completion) #### Parallel Fork Node * **Purpose:** Execute multiple branches simultaneously * **Configuration:** Number of parallel branches * **Outputs:** N outputs (one per branch) #### Parallel Join Node * **Purpose:** Wait for parallel branches to complete * **Configuration:** Join mode (all/any) * **Outputs:** One (continues after branches complete) ### Human Interaction #### Approval Node * **Purpose:** Pause workflow for human decision * **Configuration:** * **Assignee:** User ID or role (org\_admin, site\_admin, etc.) * **Timeout:** Optional deadline (auto-approve/reject after timeout) * **Instructions:** Message for approver * **Outputs:** Two ("approved" and "rejected") ### Reusability #### Subflow Node * **Purpose:** Call reusable workflow fragment * **Configuration:** * **Subflow:** Select from available subflows * **Input Mapping:** Map parent variables to subflow inputs * **Output Mapping:** Map subflow outputs to parent variables * **Outputs:** One (continues after subflow completes) ### Utilities #### Delay Node * **Purpose:** Wait before continuing (production feature) * **Configuration:** Duration in milliseconds * **Outputs:** One (continues after delay) * **Note:** Currently skipped in executor (requires job queue) #### End Node * **Purpose:** Terminate workflow execution * **Configuration:** None required * **Outputs:** None *** ## Canvas Features ### Navigation * **Pan:** Click and drag on empty canvas space * **Zoom:** Mouse wheel or zoom controls (bottom-right) * **MiniMap:** Overview of large workflows (bottom-right corner) ### Node Operations * **Add:** Drag from palette or click "+" on palette items * **Select:** Click node to view/edit properties * **Delete:** Select node and press Delete key * **Move:** Drag node to reposition * **Connect:** Drag from output handle (right) to input handle (left) ### Saving * **Auto-save:** Changes are saved automatically 1 second after editing * **Manual Save:** Click "Save Workflow" button * **Status:** Watch for "Saving..." indicator *** ## Best Practices ### Workflow Design 1. **Start Simple:** Begin with linear workflows, add control flow as needed 2. **Name Nodes:** Give descriptive labels to action nodes 3. **Use Subflows:** Extract reusable logic into subflows 4. **Limit Complexity:** Keep workflows under 50 nodes for performance 5. **Test Incrementally:** Save and test after each major change ### Error Handling 1. **Validation:** Check for disconnected nodes before saving 2. **Default Paths:** Always provide default/else branches 3. **Max Iterations:** Set reasonable limits on loops 4. **Timeout Approvals:** Configure timeouts for approval nodes ### Performance 1. **Parallel Execution:** Use parallel forks for independent actions 2. **Conditional Logic:** Use branches to skip unnecessary actions 3. **Subflows:** Organize complex workflows into manageable pieces *** ## Dynamic Values Use double curly braces to reference workflow variables: ``` {{submission_data.email}} // Form field {{submission_data.address.city}} // Nested field {{trigger_data.submitted_by}} // Submitter user ID {{item.name}} // Loop item variable ``` **Supported Locations:** * Email addresses (to, from, cc) * Email subject and body * Notification title and body * Record field values * Webhook payloads *** ## Version History & Rollback ### Publishing Versions Workflows support version control to track changes and enable rollback: 1. Click **"Publish Version"** button in the workflow editor header 2. Add optional notes describing the changes (e.g., "Added approval gates") 3. Add optional tags (e.g., "production", "staging", "v2.0") 4. Version is created as an immutable snapshot **Why Publish Versions?** * Create restore points before major changes * Compliance audit trail (who, what, when, why) * Enable quick rollback if issues occur * Compare versions to understand changes ### Viewing Version History 1. Click **"History"** button in the workflow editor header 2. Side panel opens showing all versions (newest first) 3. View version details: * Version number (v1, v2, v3, etc.) * Published by (user name) * Published at (timestamp) * Notes and tags * Node/edge count 4. Current version is highlighted with a badge ### Rolling Back To restore a previous version: 1. Click the rollback icon (rotate left) next to any previous version 2. Review the warning dialog: * Current workflow will be replaced * Rollback creates a NEW version (preserves history) * Changes are permanent 3. Add optional rollback notes (recommended for audit trail) 4. Click **"Rollback to Version X"** to confirm **Important:** Rollback creates a new version (e.g., v4) that's identical to the target version (e.g., v2). This preserves the complete history without deleting anything. ### Comparing Versions To see what changed between versions: 1. Click the compare icon (split view) next to any version 2. Visual diff dialog shows: * **Added Nodes** (green) - New nodes in the selected version * **Removed Nodes** (red) - Nodes deleted from the current version * **Modified Nodes** (yellow) - Nodes with configuration changes * **Added Connections** - New edges between nodes * **Removed Connections** - Deleted edges Use comparison to: * Understand what changed in a version * Review changes before rollback * Debug issues by identifying when a change was introduced ### Best Practices **Before Publishing:** * Test workflow changes thoroughly * Add descriptive notes (not just "changes") * Use tags to mark production-ready versions **Publishing Frequency:** * Publish before major refactors * Publish after completing a feature * Publish before deploying to production **Tags:** * Use environment tags: `development`, `staging`, `production` * Use release tags: `v1.0`, `v1.1`, `hotfix` * Use feature tags: `feature-approvals`, `feature-notifications` **Rollback:** * Always review diff before rolling back * Add notes explaining why you're rolling back * Test the rolled-back version before publishing again *** ## Execution & Monitoring ### Triggering Workflows Workflows execute automatically when: * Form is submitted (trigger\_type: `form_submitted`) * Form is updated (trigger\_type: `form_updated`) * Schedule triggers (trigger\_type: `schedule`) * Webhook received (trigger\_type: `webhook`) * Manual execution (trigger\_type: `manual`) ### Monitoring Execution 1. View **Automation Logs** for execution history 2. Check **Execution Trace** for node-by-node progress 3. Review **Node States** for action results and errors 4. Check **workflow\_version** field to see which version was used ### Approvals 1. Navigate to **Approvals** page 2. View pending approval tasks 3. Review workflow context 4. Approve or reject with optional notes *** ## Troubleshooting ### Workflow Not Executing * Verify automation rule status is **Active** * Check trigger conditions match event * Review RLS policies on affected tables * Check automation logs for errors ### Node Configuration Errors * Ensure all required fields are configured * Verify field names match form data structure * Check dynamic value syntax (use `{{...}}`) * Validate email addresses and URLs ### Performance Issues * Reduce number of nodes (target: \<30 nodes) * Limit loop iterations * Use parallel execution for independent actions * Consider breaking into multiple workflows *** ## Keyboard Shortcuts | Shortcut | Action | | ------------------------ | -------------------- | | **Ctrl/Cmd + S** | Save workflow | | **Delete** | Delete selected node | | **Ctrl/Cmd + Z** | Undo (limited) | | **Ctrl/Cmd + Shift + Z** | Redo (limited) | | **Escape** | Deselect node | *** ## Need Help? * Review [Workflow Examples](/fw/workflow-examples) for common patterns * Check the [Workflow API Reference](/fw/workflow-api) for advanced usage * Email: [admin@example.org](mailto:admin@example.org) # Workflow Calendars Source: https://docs.encoreos.io/fw/workflow-calendars Define and manage business calendars with working hours and holidays for SLA deadline calculations. The Workflow Calendars page at `/fw/settings/calendars` lists all business calendars for the active organization and provides tools to create, edit, and delete them. Business calendars define working hours and holidays used for SLA deadline calculations in workflow automation. ## Overview The Workflow Calendars page displays calendars in a card grid. Each card shows the calendar name, description, timezone, and a "Default" badge if marked as the organization default. Clicking a card opens the `BusinessCalendarForm` in edit mode. The delete action opens a confirmation dialog warning that deletion permanently removes the calendar and its holidays, and that any SLA definitions using the calendar will lose their business hours configuration. ## Who it's for Requires `fw.settings.manage` permission (`FW_PERMISSIONS.SETTINGS_MANAGE`), enforced by `RequirePermission` in `src/routes/fw.tsx`. ## Before you start * You must have the `fw.settings.manage` permission. * Identify which timezone the calendar should use before creating it. * Note that deleting a calendar that is referenced by SLA definitions will break those SLA calculations. ## Steps **Viewing calendars:** 1. Navigate to `/fw/settings/calendars`. 2. Review the card grid. The default calendar is marked with a "Default" badge and a star icon. **Creating a calendar:** 1. Select "New Calendar." 2. Complete the `BusinessCalendarForm` (name, timezone, working hours, holidays). 3. Save to create the calendar. **Editing a calendar:** 1. Click a calendar card. The `BusinessCalendarForm` opens in edit mode. 2. Modify settings and save. **Deleting a calendar:** 1. Click the trash icon on a calendar card. 2. An alert dialog warns that deletion is permanent and will affect SLA definitions. 3. Confirm to delete. ## Key concepts * **Business calendar** — Defines working days, working hours, and holidays for an organization. Used by SLA configurations to calculate deadlines excluding non-working time. * **Default calendar** — The calendar marked `is_default: true`; SME should confirm how it is applied by default in SLA configurations. * **Timezone** — Each calendar has an associated timezone (e.g., `America/Phoenix`) used for working-hour boundary calculations. * **Holiday** — Non-working days defined within a calendar. Deletion of the calendar also removes its holiday records. ## Related Forms & Workflow core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fw\.tsx * src/cores/fw/pages/BusinessCalendarListPage.tsx * src/cores/fw/hooks/useBusinessCalendars.ts * src/cores/fw/components/BusinessCalendarForm.tsx # Workflow Editor Source: https://docs.encoreos.io/fw/workflow-editor Build and configure the visual workflow graph for an automation rule using a node-based canvas editor. The Workflow Editor at `/fw/automations/:id/workflow` provides a full-screen, node-based visual editor for building the workflow definition associated with an automation rule. It is reached from the automation rule detail view. ## Overview The Workflow Editor is a full-screen layout (no page chrome) with: * **Left sidebar** — `NodePalette` (drag-and-drop node types), `VariablePanel` (workflow variable management), and `VariablePreviewPanel` (sample context preview when variables exist). * **Center canvas** — `WorkflowCanvas` (React Flow-powered graph; supports drag-and-drop from palette, node selection, edge creation). * **Right sidebar** — `NodePropertiesPanel` for configuring the selected node, including trigger configuration for the start node. * **Header toolbar** — Rule name, version badge, auto-save indicator, Save, Publish Version, Generate with AI, Notifications, Testing, Validate, and Version History. Changes to the canvas are debounced (1 second) and auto-saved. Manual save via the "Save" button flushes immediately and runs non-blocking subflow validation. "Publish Version" runs blocking subflow validation before flushing a save and creating a new version. The editor requires `fw.workflows.edit` permission (checked via `useHasPermission`) to enable the "Generate with AI" button. Trigger configuration updates require write access via `useAutomationRuleMutations`. ## Who it's for No explicit `RequirePermission` guard on this route in `src/routes/fw.tsx`. The automation rule is loaded by ID; access is controlled at the data layer. The "Generate with AI" button is disabled unless the user has `fw.workflows.edit`. ## Before you start * An organization must be active. If the current organization is absent or the automation rule is not found, the page shows an error message. * The automation rule identified by `:id` must exist in `useAutomationRules`. ## Steps **Opening the editor:** 1. Navigate to `/fw/automations/:id/workflow` from the automation rule detail page. 2. The canvas loads the saved node and edge layout. **Building the workflow:** 1. Drag node types from the **Node Palette** (left sidebar) onto the canvas. 2. Connect nodes by drawing edges between them. 3. Click a node to open its properties in the **Node Properties Panel** (right sidebar). 4. Configure the start node trigger type and event configuration as needed. **Managing variables:** 1. Use the **Variable Panel** in the left sidebar to add, update, or remove workflow variables. 2. Use the **Variable Preview Panel** to inspect sample values when testing variable expressions. **Saving:** * Changes auto-save after 1 second of inactivity. * Select **Save** to flush immediately. Non-blocking subflow validation runs on save; warnings are shown if violations exist. **Publishing a version:** 1. Select **Publish Version**. 2. Blocking subflow validation runs. If violations are found, publish is blocked and a toast lists the issues. 3. On validation success, the current state is saved and a new version record is created. **Testing:** Select **Testing** to open the `SandboxPanel` in a side sheet for test execution. **Viewing version history:** Select **History** to open the `WorkflowVersionHistory` side sheet. **Generating with AI:** Select **Generate with AI** (requires `fw.workflows.edit`) to open `GenerateWorkflowAIDialog` for AI-assisted workflow generation. ## Key concepts * **Automation rule** — The parent record (identified by `:id`) that owns this workflow definition. * **Workflow definition** — The serialized graph of nodes, edges, viewport, and variables persisted by `useWorkflowDefinition`. * **Trigger type** — Determines when the automation fires (e.g., `form_submitted`, date-relative triggers). Configured on the start node. * **Subflow validation** — `validateSubflowOrchestration` checks that subflow nodes reference valid subflow definitions with compatible input/output schemas. * **Variables** — Named values managed by `useWorkflowVariables`; available in node configurations and expressions. * **Auto-save debounce** — 1-second debounce after any canvas or variable change. ## Related Forms & Workflow core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fw\.tsx * src/cores/fw/pages/WorkflowEditor.tsx * src/cores/fw/hooks/useWorkflowDefinition.ts * src/cores/fw/hooks/useAutomationRules.ts * src/cores/fw/hooks/useSubflows.ts * src/cores/fw/hooks/useWorkflowVariables.ts * src/cores/fw/utils/subflowOrchestrationValidator.ts # Workflow Examples Source: https://docs.encoreos.io/fw/workflow-examples This document provides real-world examples of workflows you can build with the Encore OS Visual Workflow Builder. This document provides real-world examples of workflows you can build with the Encore OS Visual Workflow Builder. *** ## Example 1: Simple Notification Workflow **Use Case:** Send email notification when form is submitted. **Workflow:** ``` [Start] → [Send Email] → [Send In-App Notification] → [End] ``` **Configuration:** 1. **Start Node:** No configuration needed 2. **Send Email Action:** * Action Type: `send_email` * To: `{{submission_data.email}}` * Subject: `Your submission was received` * Body: `Thank you for submitting the form. We'll review your information and get back to you soon.` 3. **Send Notification Action:** * Action Type: `send_notification` * User ID: `{{submitted_by}}` * Type: `form_submitted` * Title: `Form Submitted Successfully` * Body: `Your form has been submitted and is under review.` 4. **End Node:** No configuration needed *** ## Example 2: Approval Workflow **Use Case:** Manager must approve expense reports before processing. **Workflow:** ``` [Start] → [Approval] → {Approved → [Update Record] → [Notify Employee] → [End]} └→ {Rejected → [Notify Employee] → [End]} ``` **Configuration:** 1. **Approval Node:** * Assignee Role: `org_admin` * Instructions: `Please review this expense report` * Timeout: 48 hours (auto-reject) 2. **Update Record (Approved Path):** * Action Type: `update_record` * Table: `expense_reports` * Record ID: `{{submission_id}}` * Updates: `{"status": "approved", "approved_at": "{{now}}"}` 3. **Notify Employee (Both Paths):** * Action Type: `send_notification` * User ID: `{{submitted_by}}` * Title: `Expense Report Decision` * Body: Conditional based on path *** ## Example 3: Branching Workflow **Use Case:** Route high-value purchases to executive approval, low-value purchases auto-approve. **Workflow:** ``` [Start] → [Branch] → {amount > 1000 → [Executive Approval] → [Process Order] → [End]} └→ {else → [Auto-Approve] → [Process Order] → [End]} ``` **Configuration:** 1. **Branch Node:** * Condition 1: * Field: `submission_data.amount` * Operator: `greater_than` * Value: `1000` * Default: Auto-approve path 2. **Executive Approval:** * Assignee Role: `org_admin` * Instructions: `High-value purchase requires approval` 3. **Auto-Approve:** * Action Type: `update_record` * Updates: `{"status": "approved", "auto_approved": true}` 4. **Process Order:** * Action Type: `call_webhook` * URL: `https://api.example.com/orders` * Method: `POST` * Body: `{{submission_data}}` *** ## Example 4: Loop Workflow **Use Case:** Send individual emails to each recipient in a list. **Workflow:** ``` [Start] → [Loop] → {body → [Send Email]} → {done → [End]} ``` **Configuration:** 1. **Loop Node:** * Loop Type: `for_each` * Collection Field: `submission_data.recipients` * Item Variable: `recipient` * Max Iterations: `100` 2. **Send Email (Loop Body):** * Action Type: `send_email` * To: `{{recipient.email}}` * Subject: `Invitation from {{submission_data.sender_name}}` * Body: `Hello {{recipient.name}}, you've been invited...` *** ## Example 5: Parallel Workflow **Use Case:** Send email AND create task simultaneously for efficiency. **Workflow:** ``` [Start] → [Parallel Fork] → {Branch 1 → [Send Email]} └→ {Branch 2 → [Create Task]} → [Parallel Join] → [Update Status] → [End] ``` **Configuration:** 1. **Parallel Fork:** * Branches: 2 2. **Send Email (Branch 1):** * Action Type: `send_email` * To: `{{submission_data.assignee_email}}` * Subject: `New task assigned` 3. **Create Task (Branch 2):** * Action Type: `create_record` * Table: `tasks` * Data: `{"title": "{{submission_data.task_title}}", "assignee_id": "{{submission_data.assignee_id}}"}` 4. **Parallel Join:** * Join Mode: `all` (wait for both branches) 5. **Update Status:** * Action Type: `update_record` * Updates: `{"notification_sent": true, "task_created": true}` *** ## Example 6: Switch Workflow **Use Case:** Route form to different departments based on category. **Workflow:** ``` [Start] → [Switch] → {HR → [Notify HR Team] → [End]} └→ {IT → [Notify IT Team] → [End]} └→ {Finance → [Notify Finance Team] → [End]} └→ {default → [Notify General] → [End]} ``` **Configuration:** 1. **Switch Node:** * Switch Field: `submission_data.department` * Cases: * `HR` → HR notification path * `IT` → IT notification path * `Finance` → Finance notification path * Default: General notifications 2. **Notify Team Nodes:** * Action Type: `send_notification` * User ID/Role: Department-specific * Title: `New request for {{submission_data.department}}` *** ## Example 7: Subflow Workflow **Use Case:** Reuse employee onboarding checklist across multiple forms. **Subflow: Employee Setup** ``` [Input: employee_id, start_date] → [Create HR Record] → [Assign Equipment] → [Schedule Training] → [Send Welcome Email] [Output: success, employee_number] ``` **Parent Workflow:** ``` [Start] → [Validate Data] → [Call Subflow: Employee Setup] → [Update Form] → [End] ``` **Configuration:** 1. **Subflow Node:** * Subflow: `Employee Setup` * Input Mapping: * `employee_id` ← `submission_data.employee_id` * `start_date` ← `submission_data.start_date` * Output Mapping: * `submission_data.employee_number` ← `employee_number` * `submission_data.setup_complete` ← `success` *** ## Example 8: Complex Multi-Stage Workflow **Use Case:** Comprehensive leave request approval with multiple approvers and notifications. **Workflow:** ``` [Start] → [Validate Hours] → [Branch: Leave Type] {Medical → [Manager Approval] → [HR Approval] → [Update Balance] → [Notify Employee] → [End]} {Vacation → [Manager Approval] → [Update Balance] → [Notify Employee] → [End]} {Emergency → [Auto-Approve] → [Notify Manager] → [Update Balance] → [Notify Employee] → [End]} ``` **Configuration:** 1. **Validate Hours:** * Action Type: `run_function` * Function: Check available balance 2. **Branch: Leave Type:** * Conditions for medical, vacation, emergency 3. **Manager Approval:** * Assignee: `{{submission_data.manager_id}}` * Timeout: 24 hours 4. **HR Approval:** * Assignee Role: `org_admin` * Instructions: `Review medical leave request` 5. **Update Balance:** * Action Type: `update_record` * Table: `leave_balances` * Deduct hours from balance 6. **Notifications:** * Send to employee with approval status * CC manager for visibility *** ## Tips for Building Complex Workflows 1. **Start Small:** Build incrementally, test each section 2. **Use Subflows:** Extract common patterns (notifications, approvals) 3. **Add Labels:** Name nodes clearly for readability 4. **Default Paths:** Always handle "else" cases in branches 5. **Error Handling:** Use branch nodes to check for errors 6. **Test Thoroughly:** Use dry-run mode before production 7. **Document:** Add descriptions to complex nodes *** ## Common Patterns ### Pattern: Notify Multiple People ``` [Start] → [Parallel Fork] → {Notify Manager} └→ {Notify HR} └→ {Notify Employee} → [Parallel Join] → [End] ``` ### Pattern: Retry Failed Action ``` [Start] → [Loop While: retry_count < 3] → [Try Action] → [Branch: Success?] {Yes → Break Loop} {No → Increment retry_count} → [Done] → [End] ``` ### Pattern: Conditional Approval ``` [Start] → [Branch: Amount > $5000] {Yes → [CFO Approval]} {No → [Manager Approval]} → [Process Payment] → [End] ``` *** ## Need More Examples? Visit the workflow template library in Encore OS or contact support for custom workflow design assistance. # Workflow KPI Dashboard Source: https://docs.encoreos.io/fw/workflow-kpi-dashboard Track key business metrics and workflow performance indicators with configurable date ranges and drill-down navigation. The Workflow KPI Dashboard at `/fw/kpi` displays configured KPI metric cards for the active organization, with date range filtering, drill-down navigation, metric configuration, and scheduled report delivery. ## Overview The KPI Dashboard fetches configured metric cards via `useKpiDashboard`, scoped to the active organization. The default date range is the last 30 days with weekly period type. Users with `fw.kpi.manage` can add metrics via `KpiConfigDialog` and schedule reports via `KpiScheduleDialog`. Clicking a metric card navigates to a drill-down route defined in `DRILL_DOWN_ROUTES` (e.g., approvals, automations, analytics). ## Who it's for Requires `fw.kpi.view` permission, enforced by `RequirePermission` in `src/routes/fw.tsx`. The "Add Metric" and "Schedule Report" actions are additionally gated by `fw.kpi.manage` via `PermissionGate`. ## Before you start * You must have `fw.kpi.view` to access this page. * For metric configuration and scheduled reports you additionally need `fw.kpi.manage`. * An organization must be active for metrics to be scoped correctly. ## Steps **Viewing metrics:** 1. Navigate to `/fw/kpi`. 2. Review the KPI cards in the grid. Each card shows the metric value and trend. 3. Use the `KpiDateRangeToolbar` to adjust the period type and date range. 4. Click a metric card to navigate to its drill-down route (e.g., `/fw/approvals` for approval metrics). **Adding a metric (requires `fw.kpi.manage`):** 1. Select "Add Metric" in the page header. 2. Configure the metric type and settings in `KpiConfigDialog`. 3. Save. The new card appears in the grid. **Scheduling a report (requires `fw.kpi.manage`):** 1. Select "Schedule Report." 2. Configure the schedule in `KpiScheduleDialog`. 3. Save. **Retrying on error:** If loading fails, an error card with a "Retry" button is shown. Select it to re-fetch. ## Key concepts * **Metric type** — One of: `approval_rate`, `approval_cycle_time`, `sla_compliance`, `form_completion_rate`, `automation_throughput`, `automation_success_rate`, `time_saved_estimate`. * **Period type** — Controls time bucket aggregation (e.g., `weekly`). * **Drill-down route** — Each metric type maps to a related page for detailed analysis (defined in `DRILL_DOWN_ROUTES`). * **KPI card** — A configured metric instance; `configId` links the card to its `KpiConfigDialog` configuration. ## Related Forms & Workflow core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fw\.tsx * src/cores/fw/pages/KpiDashboardPage.tsx * src/cores/fw/hooks/useKpiDashboard.ts * src/cores/fw/components/kpi/KpiCardGrid.tsx * src/cores/fw/components/kpi/KpiConfigDialog.tsx * src/cores/fw/types/kpi.ts # Workflow Optimization Source: https://docs.encoreos.io/fw/workflow-optimization Review AI-powered optimization suggestions and compliance scores for workflow performance and reliability. The Workflow Optimization page at `/fw/optimization` surfaces AI-powered suggestions for improving workflow performance, reliability, and compliance. It also shows a compliance score derived from best-practice checks. ## Overview The page is gated by `fw.optimization.view` via `PermissionGate`. It fetches optimization suggestions via `useOptimizationSuggestions` and compliance scores via `useComplianceScores`, both scoped to the active organization. Suggestions are tabbed into Pending and Resolved. Each suggestion card shows severity (critical, warning, info, optimization), suggestion type, title, and description, with Apply and Dismiss actions for pending suggestions gated by `fw.optimization.manage`. ## Who it's for Requires `fw.optimization.view` permission (enforced by `PermissionGate` wrapping the page content). Users without this permission see a "You do not have permission" message instead of the page content. Apply and Dismiss actions require `fw.optimization.manage` (gated by an inner `PermissionGate`). ## Before you start * You must have `fw.optimization.view` to see optimization data. * You must have `fw.optimization.manage` to apply or dismiss suggestions. * An organization must be active for suggestions to be scoped correctly. ## Steps **Viewing suggestions:** 1. Navigate to `/fw/optimization`. 2. Review the **Compliance Score** card showing the latest overall score and best-practice pass/fail counts. 3. Review the **Pending** tab for actionable suggestions. 4. Switch to the **Resolved** tab for previously applied or dismissed suggestions. **Applying a suggestion (requires `fw.optimization.manage`):** 1. On a pending suggestion card, select **Apply**. 2. On success, a toast confirms "Suggestion applied" and the suggestion moves to the Resolved tab. **Dismissing a suggestion (requires `fw.optimization.manage`):** 1. On a pending suggestion card, select **Dismiss**. 2. On success, a toast confirms "Suggestion dismissed" and the suggestion moves to the Resolved tab. ## Key concepts * **Severity levels** — `critical`, `warning`, `info`, `optimization`. Each has a distinct icon and color coding. * **Suggestion type** — Classifies the nature of the suggestion (e.g., performance, reliability, compliance). Displayed as a secondary badge. * **Compliance score** — An overall percentage score derived from best-practice checks. Color-coded: green ≥ 80%, yellow ≥ 60%, red below 60%. * **Apply vs. Dismiss** — Apply acts on the suggestion (SME: confirm auto-apply scope); Dismiss marks it as resolved without action. ## Related Forms & Workflow core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fw\.tsx * src/cores/fw/pages/WorkflowOptimizationPage.tsx * src/cores/fw/hooks/useOptimizationSuggestions.ts * src/cores/fw/hooks/useComplianceScore.ts * src/cores/fw/hooks/useApplySuggestion.ts * src/cores/fw/types/optimization-suggestions.ts # Workflow schedules Source: https://docs.encoreos.io/fw/workflow-schedules Run automation workflows on a recurring (cron), one-time, or dependency-based trigger — with a guided cron builder, next-run preview, and conflict detection. ## Overview Workflow schedules let you run an automation workflow automatically — on a repeating cron schedule, once at a specific date and time, or after another workflow finishes. Every schedule belongs to exactly one workflow, shows its next runs before you save, and is checked for conflicts with your other schedules. Open **Forms & Workflow → Schedules** (`/fw/schedules`). You need the `fw.schedules.view` permission to see the page and `fw.schedules.create` / `fw.schedules.edit` / `fw.schedules.delete` to manage schedules. Workflow Schedules list ## Creating a schedule Click **New schedule** and pick the workflow to run, then choose a trigger type. ### Recurring (cron) The guided builder turns a frequency, time, and day selection into a cron expression — no cron syntax required. As you adjust it, the **next 5 runs** preview updates in your chosen timezone so you can confirm the timing before saving. New schedule — cron builder Choose **Weekly** to pick specific days of the week: New schedule — weekly days Need an expression the builder doesn't cover (step values, specific months)? Toggle **Advanced** to edit the raw 5-field cron directly — the live preview still validates it. ### One-time Pick **One-time** to run the workflow once at a specific date and time. Past date/times are rejected — a schedule can only point at the future. New schedule — one-time ### After another workflow Pick **After another workflow** to run when a prerequisite workflow completes, succeeds, or fails. The platform detects circular dependencies so a chain can never deadlock. New schedule — dependency ## Conflicts If a new run would start within a minute of an existing schedule, a non-blocking warning appears in the form and a **Conflict** badge shows in the list. You stay in control: pick how conflicts resolve — **Skip** the run, **Delay** and retry, or **Error** and alert — and save anyway, or adjust the timing. ## Pausing and deleting Toggle a schedule's **Active** switch to pause or resume it without losing its configuration. Deleting a schedule removes its trigger; the workflow itself is unaffected and can be rescheduled later. # Workflow Templates Source: https://docs.encoreos.io/fw/workflow-templates Browse, preview, and use pre-built workflow templates to create automations quickly. The Workflow Templates page at `/fw/templates` provides a searchable, filterable library of published workflow templates — including marketplace templates — with AI recommendations, preview, and customization before creating an automation. ## Overview The Workflow Templates page fetches published templates via `useWorkflowTemplates` with `includeMarketplace: true`. AI recommendations (`AITemplateRecommendations`) are shown above the filter controls when templates are loaded and no filters are active. A guided tour is available via `HelpButton`. Templates are displayed in a responsive grid. Selecting a template opens a preview dialog; from there users can choose "Use Template" to open `TemplateCustomizer`. On successful customization, an automation rule is created and the browser navigates to `/fw/automations/:ruleId`. ## Who it's for Access follows your organization's role and module configuration. tsx\`. All authenticated users with access to the FW module can browse templates. ## Before you start * No specific permissions are required to browse. Creating an automation from a template requires a valid organization context. ## Steps **Browsing:** 1. Navigate to `/fw/templates`. 2. Review AI recommendations if displayed. 3. Browse the template grid. **Filtering:** * Enter a search term in the search box. * Select a **Category** to filter by domain. **Previewing a template:** 1. Click a template card to open the preview dialog. 2. Review the template details and related templates. **Using a template:** 1. From the card or preview, select **Use Template**. 2. The `TemplateCustomizer` dialog opens. 3. Configure the template for your organization. 4. On success, an automation rule is created and the browser navigates to `/fw/automations/:ruleId`. **Browsing the marketplace:** Select **Browse Marketplace** to navigate to `/fw/templates/marketplace`. **Creating a new template:** Select **Create Template** to navigate to `/fw/automations/new`. **Taking the guided tour:** Select the help button to start the `templateLibraryTour` guided walkthrough. ## Key concepts * **Published template** — A workflow template with `status: 'published'` fetched with marketplace templates included. * **AI recommendations** — Template suggestions based on available template metadata; shown when no filters are active. * **Template customizer** — A dialog for configuring a template clone before creating the automation rule. * **Guided tour** — A step-by-step walkthrough of the template library UI (provided by `templateLibraryTour`). ## Related Forms & Workflow core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fw\.tsx * src/cores/fw/pages/TemplateLibraryPage.tsx * src/cores/fw/hooks/useWorkflowTemplates.ts * src/cores/fw/components/templates/TemplateCard.tsx * src/cores/fw/components/templates/TemplateCustomizer.tsx * src/cores/fw/types/templates.ts # Workflow Versioning Guide Source: https://docs.encoreos.io/fw/workflow-versioning-guide Workflow versioning provides complete change tracking, rollback capability, and an immutable audit trail for compliance. Every time you publish a workflow, a p… ## Overview Workflow versioning provides complete change tracking, rollback capability, and an immutable audit trail for compliance. Every time you publish a workflow, a permanent snapshot is created that preserves the exact state of nodes, edges, and canvas viewport. *** ## Key Concepts ### Versions vs. Drafts * **Draft Edits**: Changes made in the workflow editor are not versioned automatically * **Publishing**: Creates an immutable version snapshot with an incremented version number * **Version Numbers**: Sequential integers starting at 1: v1, v2, v3, etc. * **Immutability**: Once published, versions cannot be edited or deleted ### Immutability Workflow versions are **permanently immutable**: * Cannot be edited after creation * Cannot be deleted (preserves complete audit trail) * Rollback creates a **new version** (doesn't modify the old one) * All versions remain accessible forever This ensures regulatory compliance and provides a complete history of workflow changes. *** ## Use Cases ### 1. Production Issue Recovery Quickly rollback when workflow changes break production: ```typescript theme={null} // User publishes v2 with bug await createVersion({ notes: 'Added new approval step' }); // Production breaks - rollback to v1 await rollback({ target_version: 1, notes: 'Emergency rollback - approval node causing timeout' }); // Creates v3 (identical to v1) with rollback tag ``` ### 2. Compliance Audit Track who changed what and when for regulatory requirements: * **Who**: `published_by` user ID links to profile * **What**: Complete snapshot of workflow state * **When**: `published_at` timestamp * **Why**: Optional `notes` field for change descriptions Auditors can see: * Version history timeline * Changes between versions (visual diff) * Rollback events and reasons * User attribution for each change ### 3. Debugging Compare versions to understand what changed: ```typescript theme={null} const diff = await compareVersions(2, 3); console.log(diff.nodes.added); // New nodes in v3 console.log(diff.nodes.removed); // Deleted from v2 console.log(diff.nodes.modified); // Changed configuration console.log(diff.edges.added); // New connections console.log(diff.edges.removed); // Disconnected paths ``` ### 4. A/B Testing Run different workflow versions and compare results: ```typescript theme={null} // Deploy v2 to production await createVersion({ notes: 'Test new notification timing', tags: ['production', 'experiment-a'] }); // Later: Deploy v3 with different timing await createVersion({ notes: 'Alternative notification timing', tags: ['production', 'experiment-b'] }); // Compare execution results // SELECT * FROM fw_workflow_executions WHERE workflow_version IN (2, 3) ``` ### 5. Staged Rollouts Use tags to manage deployment stages: ```typescript theme={null} // Development await createVersion({ tags: ['development', 'feature-xyz'] }); // Staging await createVersion({ tags: ['staging', 'feature-xyz'] }); // Production await createVersion({ tags: ['production', 'v2.1.0'] }); ``` *** ## API Reference ### useWorkflowVersions Hook Complete workflow version management hook. ```typescript theme={null} import { useWorkflowVersions } from '@/cores/fw/hooks/useWorkflowVersions'; const { versions, // All versions (newest first) isLoading, // Loading state error, // Error state getVersion, // Fetch specific version createVersion, // Create new version isCreatingVersion, // Creating state rollback, // Rollback to version isRollingBack, // Rolling back state compareVersions, // Visual diff } = useWorkflowVersions(ruleId); ``` #### Creating a Version ```typescript theme={null} // Minimal await createVersion({ notes: 'Bug fix' }); // With tags await createVersion({ notes: 'Added approval gates', tags: ['production', 'v2.0'] }); // Returns: Version number (e.g., 3) ``` #### Rolling Back ```typescript theme={null} await rollback({ target_version: 2, notes: 'Rollback due to production issue #123' }); // Creates new version (e.g., v4) identical to v2 // Tags rollback version automatically ``` #### Comparing Versions ```typescript theme={null} const diff = await compareVersions(1, 3); // Returns: { versionA: { /* Version 1 data */ }, versionB: { /* Version 3 data */ }, diff: { nodes: { added: [/* Nodes added in v3 */], removed: [/* Nodes removed from v1 */], modified: [/* Nodes changed between versions */], }, edges: { added: [/* Connections added in v3 */], removed: [/* Connections removed from v1 */], } } } ``` #### Getting Specific Version ```typescript theme={null} const version = await getVersion(2); console.log(version.version); // 2 console.log(version.published_by); // User ID console.log(version.published_at); // ISO timestamp console.log(version.workflow_snapshot); // { nodes, edges, viewport } console.log(version.notes); // Change description console.log(version.tags); // ['production', 'v1.5'] ``` *** ## Database Schema ### fw\_workflow\_versions Table ```sql theme={null} CREATE TABLE fw_workflow_versions ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), organization_id UUID NOT NULL REFERENCES pf_organizations(id), rule_id UUID NOT NULL REFERENCES fw_automation_rules(id), version INTEGER NOT NULL, published_by UUID NOT NULL REFERENCES auth.users(id), published_at TIMESTAMPTZ NOT NULL DEFAULT now(), workflow_snapshot JSONB NOT NULL, -- { nodes, edges, viewport } notes TEXT, tags TEXT[], created_at TIMESTAMPTZ NOT NULL DEFAULT now(), UNIQUE (rule_id, version) ); ``` **Snapshot Structure:** ```typescript theme={null} interface WorkflowSnapshot { nodes: Array<{ id: string; type: string; position: { x: number; y: number }; data: Record; }>; edges: Array<{ id: string; source: string; target: string; sourceHandle?: string; targetHandle?: string; }>; viewport?: { x: number; y: number; zoom: number; }; } ``` ### Execution Version Linking The `fw_workflow_executions` table links each execution to the version used: ```sql theme={null} CREATE TABLE fw_workflow_executions ( id UUID PRIMARY KEY, rule_id UUID NOT NULL REFERENCES fw_automation_rules(id), workflow_version INTEGER, -- Links to version used status TEXT NOT NULL, -- ... other fields ); ``` Query executions by version: ```sql theme={null} SELECT * FROM fw_workflow_executions WHERE rule_id = 'rule-uuid' AND workflow_version = 2; ``` *** ## Best Practices ### 1. Publish Before Major Changes Create a version before making risky changes: ```typescript theme={null} // Before refactoring await createVersion({ notes: 'Pre-refactor checkpoint', tags: ['checkpoint'] }); // Make changes... // After testing await createVersion({ notes: 'Refactored error handling', tags: ['refactor-complete'] }); ``` ### 2. Add Descriptive Notes Help future maintainers understand changes: ```typescript theme={null} // ❌ Bad await createVersion({ notes: 'Changes' }); // ✅ Good await createVersion({ notes: 'Fixed timeout in approval node (15min → 30min) per ticket #456' }); ``` ### 3. Use Meaningful Tags Organize versions with consistent tagging: ```typescript theme={null} // Environment tags tags: ['development'] tags: ['staging'] tags: ['production'] // Release tags tags: ['v1.0.0', 'production'] tags: ['v1.0.1', 'hotfix'] // Feature tags tags: ['feature-notifications', 'staging'] // Special markers tags: ['rollback', 'emergency'] tags: ['checkpoint', 'pre-refactor'] ``` ### 4. Review Diff Before Rollback Always compare versions before rolling back: ```typescript theme={null} // 1. Compare versions const diff = await compareVersions(currentVersion, targetVersion); // 2. Review changes console.log('Will remove:', diff.nodes.removed.length, 'nodes'); console.log('Will add:', diff.nodes.added.length, 'nodes'); // 3. Confirm and rollback if (userConfirmed) { await rollback({ target_version: targetVersion }); } ``` ### 5. Link Versions to Issues Reference issue tracking systems in notes: ```typescript theme={null} await createVersion({ notes: 'Implemented multi-level approval (JIRA-1234)', tags: ['feature-approvals', 'sprint-23'] }); ``` *** ## Security & Compliance ### Immutability Versions cannot be modified or deleted: * **No UPDATE policy** on `fw_workflow_versions` * **No DELETE policy** on `fw_workflow_versions` * Even platform admins cannot alter versions This ensures audit trail integrity for compliance. ### Multi-Tenant Isolation Row-Level Security (RLS) ensures: * Users can only see versions in their organization * Cross-tenant version access is blocked * Execution version links are organization-scoped ### Audit Trail Every version captures: * **Who**: User ID of publisher * **When**: Timestamp of publication * **What**: Complete workflow state * **Why**: Optional notes explaining changes *** ## Troubleshooting ### Version Creation Fails **Symptom**: `create_workflow_version()` returns error **Causes:** 1. No workflow definition exists for the rule 2. User lacks organization access 3. Invalid rule\_id **Solution:** ```typescript theme={null} // Verify definition exists const { data } = await supabase .from('fw_workflow_definitions') .select() .eq('rule_id', ruleId) .single(); if (!data) { console.error('No workflow definition found'); } ``` ### Rollback Creates Wrong Version **Symptom**: Rolled back version doesn't match target **Cause**: Snapshot stored incorrectly **Solution:** ```typescript theme={null} // Verify target version snapshot const { data: targetVersion } = await supabase .from('fw_workflow_versions') .select('workflow_snapshot') .eq('version', targetVersionNum) .single(); console.log('Target nodes:', targetVersion.workflow_snapshot.nodes); ``` ### Version Comparison Incorrect **Symptom**: Diff shows wrong changes **Cause**: Node IDs changed between versions **Solution**: Version comparison uses node IDs as identity. If you manually change node IDs, comparison will treat them as different nodes. *** ## Migration Guide ### Adding Versioning to Existing Workflows If you have workflows created before versioning was implemented: ```typescript theme={null} // For each existing workflow: const { data: definition } = await supabase .from('fw_workflow_definitions') .select() .eq('rule_id', ruleId) .single(); if (definition) { // Create initial version (v1) await supabase.rpc('create_workflow_version', { p_rule_id: ruleId, p_published_by: currentUserId, p_notes: 'Initial version (migrated)', p_tags: ['migration', 'v1.0'], }); } ``` *** ## Related Documentation * [Workflow Builder Guide](/fw/workflow-builder-guide) - Visual editor usage * [Workflow API Reference](/fw/workflow-api) - Complete API documentation * [FW-07 Specification](https://github.com/Encore-OS/encoreos/blob/development/specs/fw/archive/FW-07-workflow-versioning.md) - Implementation details # Workflows Source: https://docs.encoreos.io/fw/workflows There is no standalone Workflows list route; workflow definitions are managed through automation rules. The worklist entry for route `/fw/workflows` does not correspond to a registered route in `src/routes/fw.tsx`. Workflow definitions in the Forms & Workflow core are associated with automation rules and are accessed through `/fw/automations`. ## Overview Based on the shipped codebase, there is no `/fw/workflows` route in the FW router. The router does define: * `/fw/automations` — Lists all automation rules (each rule has an associated workflow definition). * `/fw/automations/:id/workflow` — The Workflow Editor for a specific automation rule. * `/fw/workflows/:workflowId/analytics` — Analytics for a specific workflow (documented at [Workflow Analytics](/fw/workflow-analytics)). There is also no standalone `/fw/workflows/new` route. Workflow graphs are associated with automation rules: each automation rule can have a visual workflow definition edited at `/fw/automations/:id/workflow`. To create a new workflow, a user first creates an automation rule on the Automations page (`/fw/automations`) and then navigates to its Workflow Editor. If a "Workflows" list page exists, it may be accessible via another route or may be planned for a future release. SME confirmation is required before this content should be considered accurate. ## Who it's for Not applicable — the route is not registered. See `/fw/automations` for automation rule management. ## Steps 1. Navigate to `/fw/automations` to view all automation rules. 2. Open a rule to view or edit its workflow definition. 3. Select the workflow editor icon or link to open `/fw/automations/:id/workflow`. 4. To create a new workflow: navigate to `/fw/automations`, select "New Automation" to open the rule builder dialog, save the automation rule, then open its Workflow Editor. ## Related Forms & Workflow core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/fw\.tsx * src/cores/fw/pages/Automations.tsx * src/cores/fw/pages/WorkflowEditor.tsx # Accreditation Management Admin Guide Source: https://docs.encoreos.io/gr/accreditation-admin-guide This guide covers administrative tasks for managing accreditations, standards, surveys, and evidence in Encore OS. As a Compliance Officer or Administrator, yo… ## Overview This guide covers administrative tasks for managing accreditations, standards, surveys, and evidence in Encore OS. As a Compliance Officer or Administrator, you are responsible for maintaining accreditation records, tracking compliance, and preparing for surveys. *** ## Before You Begin ### Prerequisites * Active user account with Compliance Officer or Administrator role * GR module enabled for your organization ### Required Permissions * Create, edit, delete accreditations * Manage standards and surveys * Upload and verify evidence * Generate reports *** ## Quick Reference | Task | Navigation | | -------------------- | -------------------------------------------------- | | Create accreditation | GR → Accreditations → New Accreditation | | Manage standards | Accreditation Detail → Standards tab | | Schedule survey | Accreditation Detail → Surveys tab → New Survey | | Upload evidence | Accreditation Detail → Evidence tab → New Evidence | | Link to compliance | Standard → Link to Compliance | | Link to audit | Survey → Link to Audit | | Generate reports | GR → Accreditations → Reports | | Configure settings | GR → Settings | *** ## Managing Accreditations ### Creating an Accreditation 1. Navigate to **GR → Accreditations** 2. Click **New Accreditation** 3. Complete the form: | Field | Description | Required | | ---------------------- | ------------------------------------------ | -------- | | **Name** | Descriptive name for this accreditation | Yes | | **Accreditation Body** | CARF, State, NARR, or Other | Yes | | **Status** | Current status (typically Pending for new) | Yes | | **Effective Date** | When accreditation becomes active | Yes | | **Expiration Date** | When accreditation expires | Yes | | **Site** | Specific site (optional) | No | | **Certificate Number** | Official certificate ID | No | | **Contact Name** | Accrediting body contact | No | | **Contact Email** | Contact email address | No | | **Contact Phone** | Contact phone number | No | | **Notes** | Additional information | No | 4. Click **Save** ### Editing an Accreditation 1. Open the accreditation detail page 2. Click **Edit** in the page header 3. Update fields as needed 4. Click **Save** ### Changing Accreditation Status To update status (e.g., from Pending to Active): 1. Open the accreditation detail page 2. Click **Edit** 3. Update the **Status** field 4. Add notes explaining the change 5. Click **Save** ### Renewing an Accreditation When an accreditation is due for renewal: 1. Open the accreditation detail page 2. Click **Renew** 3. Enter new effective and expiration dates 4. Update certificate number if changed 5. Click **Save** *** ## Managing Standards ### Adding Standards 1. Open the accreditation detail page 2. Click the **Standards** tab 3. Click **Add Standard** 4. Complete the form: | Field | Description | Required | | --------------------- | ---------------------------- | -------- | | **Standard Number** | Official standard identifier | Yes | | **Title** | Brief description | Yes | | **Category** | Grouping category | No | | **Description** | Full standard text | No | | **Compliance Status** | Current compliance level | Yes | | **Verification Date** | Last verification date | No | | **Verified By** | Who verified compliance | No | | **Notes** | Additional context | No | 5. Click **Save** ### Bulk Import Standards For new accreditations with many standards: 1. Prepare a CSV file with columns: * standard\_number, title, category, description 2. Click **Import Standards** 3. Upload the CSV file 4. Map columns if needed 5. Click **Import** ### Updating Compliance Status 1. Click on a standard card 2. Click **Edit** 3. Update **Compliance Status** 4. Add verification date and notes 5. Click **Save** Or use the quick action: 1. Click the status badge on the standard card 2. Select new status from dropdown 3. Confirm the change ### Linking Standards to Compliance Requirements Connect standards to your regulatory compliance tracking: 1. Click on a standard card 2. Click **Link to Compliance** icon 3. Search for related requirements 4. Select requirements to link 5. Click **Save Links** Benefits of linking: * See compliance status from both perspectives * Avoid duplicate documentation * Unified reporting *** ## Managing Surveys ### Scheduling a Survey 1. Open the accreditation detail page 2. Click the **Surveys** tab 3. Click **Schedule Survey** 4. Complete the form: | Field | Description | Required | | ------------------------- | ------------------------------ | -------- | | **Survey Type** | Initial, Renewal, Annual, etc. | Yes | | **Scheduled Date** | Planned survey date | Yes | | **Scheduled End Date** | End date (multi-day surveys) | No | | **Status** | Typically "Scheduled" for new | Yes | | **Surveyor Name** | Lead surveyor | No | | **Surveyor Organization** | Surveyor's organization | No | | **Notes** | Special instructions | No | 5. Click **Save** ### Managing Survey Status Update status as the survey progresses: | From | To | When | | ----------- | ----------- | ---------------- | | Scheduled | In Progress | Survey begins | | In Progress | Completed | Survey finished | | Scheduled | Postponed | Survey delayed | | Any | Cancelled | Survey cancelled | ### Recording Survey Outcomes After survey completion: 1. Open the survey 2. Click **Edit** 3. Update: * Status to "Completed" * Completion date * Outcome notes 4. Add any findings as notes 5. Click **Save** ### Linking Surveys to Audits Create an audit record from a survey: 1. Click on a survey card 2. Click **Link to Audit** icon 3. Either: * Link to existing audit * Create new audit from survey 4. Click **Save** Benefits of linking: * Track findings and corrective actions * Unified reporting * Clear audit trail *** ## Managing Evidence ### Adding Evidence 1. Open the accreditation detail page 2. Click the **Evidence** tab 3. Click **Add Evidence** 4. Complete the form: | Field | Description | Required | | ----------------- | ---------------------------------- | -------- | | **Title** | Evidence name | Yes | | **Description** | What this evidence demonstrates | No | | **Evidence Type** | Document, Photo, Certificate, etc. | Yes | | **Standard** | Link to specific standard | No | | **Survey** | Link to specific survey | No | | **Document** | Upload or select from library | No | | **Status** | Pending, Verified, etc. | Yes | | **Evidence Date** | When evidence was created | No | 5. Click **Save** ### Using the Document Selector To link existing documents: 1. Click **Select from Library** 2. Browse or search documents 3. Select document(s) 4. Click **Link Selected** ### Verifying Evidence 1. Review the evidence document 2. Click **Verify** or update status to "Verified" 3. Add verification notes 4. Evidence now shows as verified ### Organizing Evidence Best practices: * Link evidence to specific standards when possible * Use consistent naming conventions * Set expiration dates for time-sensitive evidence * Keep evidence current before surveys *** ## Customizing Dropdown Values Standard categories, priorities, compliance status, survey types, and other accreditation dropdowns are powered by [picklists](/pf/picklists) under the `gr.accreditation.*` namespace. The platform ships defaults so accreditation forms work out of the box, but you can tailor the options to match your accrediting bodies and internal terminology. Common picklists to customize: | Picklist | Where it appears | | ------------------------------------ | ------------------------------ | | `gr.accreditation.standard_category` | Standard form → Category | | `gr.accreditation.standard_priority` | Standard form → Priority | | `gr.accreditation.compliance_status` | Standard compliance badge | | `gr.accreditation.status` | Accreditation lifecycle status | | `gr.accreditation.survey_type` | Schedule survey → Survey type | To customize: 1. Navigate to **Settings → Picklists** (`/settings/picklists`). 2. Filter or search for the `gr.accreditation.*` picklist you want to edit. 3. If the picklist shows the **System** badge, select **Duplicate to Org** to create an editable copy. 4. Add, rename, reorder, or deactivate items as needed. 5. Save your changes — accreditation forms pick up the new values immediately. The full list of governance picklists and their default values is in the [Picklist Reference](/reference/picklists). ## Integration Features ### Compliance Integration Standards can be linked to regulatory compliance requirements: 1. **Purpose**: Track compliance from both accreditation and regulatory perspectives 2. **Benefits**: * Single source of truth * Unified evidence collection * Combined reporting 3. **How**: Use "Link to Compliance" on standard cards ### Audit Integration Surveys can be linked to formal audits: 1. **Purpose**: Track findings and corrective actions 2. **Benefits**: * Formal finding documentation * Corrective action tracking * Evidence-based follow-up 3. **How**: Use "Link to Audit" or "Create Audit" on survey cards ### Notifications The system sends notifications for: | Event | Recipients | Timing | | ---------------------- | ------------------- | ---------------------- | | Renewal Due Soon | Compliance Officers | 90, 60, 30 days before | | Accreditation Expired | Org Admins | On expiration | | Survey Scheduled | Compliance Team | When created | | Survey Due Soon | Compliance Team | 14, 7, 3 days before | | Standard Non-Compliant | Compliance Officers | When marked | *** ## Reporting ### Status Report Shows overall accreditation health: * All accreditations with current status * Standards compliance rates * Expiring accreditations * Recent status changes ### Renewal Tracking Report Monitor upcoming renewals: * Expiring within 30/60/90 days * Renewal application status * Required documentation checklist * Key dates and deadlines ### Standard Compliance Report Analyze compliance across standards: * Compliance rates by accreditation * Compliance by category * Standards needing attention * Evidence gaps ### Survey Preparation Report Prepare for upcoming surveys: * Survey readiness score * Standards not yet compliant * Missing evidence * Action items for preparation ### Exporting Reports All reports can be exported: 1. Select the report 2. Apply filters if needed 3. Click **Export** 4. Choose format (PDF, CSV, Excel) *** ## Best Practices ### Accreditation Lifecycle Management 1. **Planning Phase** * Create accreditation record when pursuing new accreditation * Import all required standards * Identify evidence requirements 2. **Preparation Phase** * Work through standards systematically * Collect and upload evidence * Track compliance status regularly 3. **Survey Phase** * Schedule surveys well in advance * Use survey prep report * Link survey to audit for finding tracking 4. **Maintenance Phase** * Monitor expiration dates * Keep evidence current * Address findings promptly * Plan renewals early ### Evidence Management * **Organize by Standard**: Link evidence to specific standards * **Use Document Library**: Leverage existing documents * **Set Expiration Dates**: Track time-sensitive evidence * **Verify Regularly**: Keep verification status current ### Survey Preparation * **Start Early**: Begin 6+ months before survey * **Use Reports**: Generate prep reports regularly * **Assign Responsibilities**: Delegate standard ownership * **Mock Surveys**: Conduct internal reviews * **Document Gaps**: Create action plans for non-compliance *** ## Common Scenarios ### New Accreditation Application 1. Create accreditation with "Pending" status 2. Import all required standards 3. Assign standards to team members 4. Begin evidence collection 5. Schedule initial survey when ready 6. Update status to "Active" upon approval ### Accreditation Renewal 1. Monitor expiration dates via dashboard 2. Generate renewal tracking report 3. Update any lapsed documentation 4. Schedule renewal survey 5. Complete survey successfully 6. Use "Renew" to update dates ### Survey Preparation 1. Generate survey preparation report 2. Address all non-compliant standards 3. Fill evidence gaps 4. Conduct internal review 5. Update status as issues resolved 6. Confirm readiness before survey date ### Handling Non-Compliance 1. Mark standard as "Non-Compliant" 2. Create corrective action plan 3. Link to audit if formal finding 4. Track remediation progress 5. Collect evidence of resolution 6. Update status when compliant *** ## Troubleshooting ### Accreditation not appearing for staff * Check organization assignment * Verify accreditation is not filtered * Confirm user has GR module access ### Evidence upload failing * Check file size limits * Verify file type is supported * Try using document library instead ### Integration links not working * Ensure target record exists * Check organization matches * Verify user has permissions for both modules *** ## Related Guides * [Accreditation User Guide](/gr/accreditation-user-guide) * [Compliance Admin Guide](/gr/compliance-admin-guide) * [Audit Admin Guide](/gr/audit-admin-guide) * [Policy Admin Guide](/gr/policy-admin-guide) *** **Need Help?** Contact your system administrator. # Accreditation Dashboard Source: https://docs.encoreos.io/gr/accreditation-dashboard Summary dashboard showing accreditation status, renewals due within 30 days, upcoming surveys, and standards compliance by body. This screen provides an at-a-glance overview of all accreditations, including compliance rates, upcoming renewals, and scheduled surveys at route `/gr/accreditations/dashboard`. ## Overview The Accreditation Dashboard displays summary metrics across all accreditations: total count, active count, overall standards compliance rate, renewals due in 30 days, overdue renewals, and upcoming surveys in the next 30 days. Two charts show the breakdown of accreditations by body (pie chart) and standards compliance status (bar chart). Below the charts, the screen lists upcoming renewals (up to 5) and upcoming surveys (up to 5), each linking to the full accreditations list. ## Who it's for Access follows your organization's role and module configuration. Any authenticated user with access to the GR module can view this dashboard. ## Before you start * At least one accreditation record must exist to see meaningful chart data. * Accreditations and surveys are managed from the main `/gr/accreditations` list. ## Steps Open Governance & Compliance and select **Accreditation Dashboard**, or navigate directly to `/gr/accreditations/dashboard`. Inspect the five stat cards: Total, Compliance %, Renewals (30d), Surveys (30d), and Pending. Review the "Accreditations by Body" pie chart and the "Standards Compliance" horizontal bar chart for a visual breakdown. In the **Upcoming Renewals** card, click **View All** to navigate to the full accreditations list and take renewal action. Review the **Upcoming Surveys** card to see scheduled surveys within 30 days. ## Key concepts * **Accreditation body** — one of: `CARF`, `state_licensing`, `NARR`, `joint_commission`, `CMS`, or `other` as coded in the component. * **Standards compliance rate** — percentage of standards with status `compliant` out of all standards across active accreditations. * **Overdue renewals** — renewals whose `renewal_due_date` is before today. ## Related Governance & Compliance core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/gr.tsx * src/cores/gr/pages/AccreditationDashboard.tsx * src/cores/gr/hooks/useAccreditationDashboard.ts * src/cores/gr/hooks/useAccreditationList.ts * src/cores/gr/hooks/useAccreditationSurvey.ts # Accreditation Reports Source: https://docs.encoreos.io/gr/accreditation-reports Generate and view accreditation status and renewal tracking reports across all accreditation bodies. This screen provides two report views — status breakdown and renewal tracking — for all accreditations, accessible at route `/gr/accreditations/reports`. ## Overview The Accreditation Reports page contains two tabs: **Status Report** and **Renewal Tracking**. The Status Report tab shows summary cards (total, active, expiring soon, expired counts), a status breakdown with progress bars, and a breakdown by accreditation body. The Renewal Tracking tab shows cards for overdue, within 30/60/90-day counts, and a list of all upcoming renewals with days remaining until `renewal_due_date`. A **Refresh** button re-fetches the active tab's data. Each report displays a generated timestamp. ## Who it's for Access follows your organization's role and module configuration. Any authenticated user with access to the GR module can view these reports. ## Before you start * Accreditation records with status and renewal dates must exist to populate reports. ## Steps Navigate to `/gr/accreditations/reports` or click **Reports** from an Accreditation Detail page. Check the summary cards for totals, active count, expiring soon, and expired. Review the status and body breakdowns. Click the **Renewal Tracking** tab to see overdue and upcoming renewal counts and the full upcoming renewals list. Click **Refresh** to reload the current tab's data. ## Key concepts * **Renewal Tracking list** — sorted by `renewal_due_date`; overdue renewals are highlighted with a destructive border. * **Generated timestamp** — each report records the time it was generated (`generatedAt`). ## Related Governance & Compliance core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/gr.tsx * src/cores/gr/pages/AccreditationReports.tsx * src/cores/gr/hooks/useAccreditationReports.ts # Accreditation Management User Guide Source: https://docs.encoreos.io/gr/accreditation-user-guide The Accreditation Management feature helps your organization track and maintain accreditations from bodies such as CARF, state licensing agencies, NARR, and ot… ## Overview The Accreditation Management feature helps your organization track and maintain accreditations from bodies such as CARF, state licensing agencies, NARR, and other accrediting organizations. This guide covers how to view accreditation information, understand compliance standards, and track upcoming surveys. *** ## Before You Begin ### Prerequisites * Active user account in Encore OS * Membership in an organization with GR module access ### Required Permissions * All staff can view accreditation information * Only Compliance Officers and Administrators can create or edit accreditations *** ## Quick Reference | Task | Navigation | | ---------------------------- | -------------------------------------------- | | View all accreditations | GR → Accreditations | | View accreditation dashboard | GR → Accreditations → Dashboard | | View accreditation details | GR → Accreditations → Click on accreditation | | View standards | Accreditation Detail → Standards tab | | View surveys | Accreditation Detail → Surveys tab | | View evidence | Accreditation Detail → Evidence tab | | View reports | GR → Accreditations → Reports | *** ## Understanding Accreditations ### What is an Accreditation? An accreditation is a formal recognition that your organization meets specific quality standards set by an accrediting body. Common accrediting bodies include: | Body | Description | | --------- | -------------------------------------------------------- | | **CARF** | Commission on Accreditation of Rehabilitation Facilities | | **State** | State licensing and certification agencies | | **NARR** | National Alliance for Recovery Residences | | **Other** | Other specialized accrediting organizations | ### Accreditation Status | Status | Description | | --------------- | ---------------------------------------- | | **Active** | Currently valid and in good standing | | **Pending** | Application submitted, awaiting decision | | **Provisional** | Temporary status with conditions | | **Expired** | Past expiration date, needs renewal | | **Revoked** | Removed due to non-compliance | *** ## Viewing Accreditations ### Accreditation List 1. Navigate to **GR → Accreditations** 2. View all accreditations with status indicators 3. Use filters to narrow results: * **Status**: Active, Pending, Expired, etc. * **Body**: CARF, State, NARR, Other * **Site**: Filter by location (if applicable) 4. Click on any accreditation to view details ### Accreditation Dashboard The dashboard provides an at-a-glance view of your accreditation status: 1. Navigate to **GR → Accreditations → Dashboard** 2. View key metrics: * Total active accreditations * Upcoming renewals * Standards compliance rate * Scheduled surveys 3. Review charts showing: * Accreditation status distribution * Standards compliance by category * Survey timeline ### Accreditation Detail Click on any accreditation to see: * **Overview Tab**: Key dates, status, contact information * **Standards Tab**: Required standards and compliance status * **Surveys Tab**: Scheduled and completed surveys * **Evidence Tab**: Documentation supporting compliance *** ## Understanding Standards ### What are Standards? Standards are specific requirements that must be met to maintain accreditation. Each standard has: * **Standard Number**: Unique identifier (e.g., "1.A.1") * **Title**: Brief description of the requirement * **Category**: Grouping (Administration, Operations, Safety, etc.) * **Compliance Status**: Current compliance level ### Compliance Status | Status | Description | Color | | ------------------ | -------------------------- | ----- | | **Compliant** | Fully meets requirements | Green | | **In Progress** | Working toward compliance | Blue | | **Pending** | Not yet assessed | Gray | | **Non-Compliant** | Does not meet requirements | Red | | **Not Applicable** | Standard doesn't apply | Gray | ### Viewing Standards 1. Open an accreditation detail page 2. Click the **Standards** tab 3. View all standards with their compliance status 4. Click a standard to see: * Full description * Requirements * Linked evidence * Linked compliance requirements *** ## Understanding Surveys ### What is a Survey? A survey is an on-site or virtual assessment conducted by the accrediting body to verify compliance with standards. Surveys may be: | Type | Description | | ------------- | ----------------------------------- | | **Initial** | First-time accreditation assessment | | **Renewal** | Regular renewal assessment | | **Annual** | Yearly compliance check | | **Focused** | Targeted review of specific areas | | **Follow-up** | Review of corrective actions | ### Survey Status | Status | Description | | --------------- | ------------------------- | | **Scheduled** | Date set, awaiting survey | | **In Progress** | Survey currently underway | | **Completed** | Survey finished | | **Postponed** | Delayed to new date | | **Cancelled** | Survey not proceeding | ### Viewing Surveys 1. Open an accreditation detail page 2. Click the **Surveys** tab 3. View scheduled and completed surveys 4. Each survey shows: * Survey type and date * Surveyor information * Status and outcomes * Linked audit (if applicable) *** ## Understanding Evidence ### What is Evidence? Evidence documents demonstrate compliance with accreditation standards. Types include: | Type | Examples | | --------------- | --------------------------------- | | **Document** | Policies, procedures, manuals | | **Photo** | Facility images, safety equipment | | **Screenshot** | System configurations, reports | | **Certificate** | Training certificates, licenses | | **Report** | Audit reports, assessments | | **Other** | Any other supporting material | ### Evidence Status | Status | Description | | ------------ | ------------------ | | **Pending** | Awaiting review | | **Verified** | Approved as valid | | **Rejected** | Not acceptable | | **Expired** | Past validity date | ### Viewing Evidence 1. Open an accreditation detail page 2. Click the **Evidence** tab 3. View all evidence with status 4. Filter by standard or survey 5. Click to view or download documents *** ## Reports ### Available Reports Navigate to **GR → Accreditations → Reports** to access: | Report | Description | | ----------------------- | ----------------------------------------------- | | **Status Report** | Overview of all accreditations and their status | | **Renewal Tracking** | Upcoming renewals and expiration dates | | **Standard Compliance** | Compliance rates by accreditation | | **Survey Preparation** | Readiness assessment for upcoming surveys | ### Exporting Reports 1. Select the report type 2. Choose date range (if applicable) 3. Click **Export** to download as PDF or CSV *** ## Key Dates to Monitor ### Renewal Dates * Accreditation expiration dates * Renewal application deadlines * Required documentation submission dates ### Survey Dates * Scheduled survey dates * Surveyor arrival times * Post-survey follow-up deadlines ### Compliance Deadlines * Corrective action due dates * Evidence submission deadlines * Progress report due dates *** ## Tips & Best Practices 1. **Monitor the Dashboard**: Check regularly for upcoming renewals and surveys 2. **Review Standards**: Familiarize yourself with requirements in your area 3. **Support Evidence Collection**: Help gather documentation when requested 4. **Report Issues Early**: Notify compliance officers of potential gaps 5. **Stay Prepared**: Know your role during surveys *** ## Troubleshooting ### I can't see an accreditation * Verify you have access to the correct organization * Check if the accreditation is filtered out * Contact your administrator if access is needed ### A standard shows incorrect status * Contact your Compliance Officer * Status may be pending verification ### Evidence appears missing * Check filter settings on the Evidence tab * Evidence may be linked to a specific standard or survey * Contact your Compliance Officer to upload new evidence *** ## Related Guides * [Compliance User Guide](/gr/compliance-user-guide) * [Audit User Guide](/gr/audit-user-guide) * [Policy User Guide](/gr/policy-user-guide) *** **Need Help?** Contact your Compliance Officer or system administrator. # Accreditations Source: https://docs.encoreos.io/gr/accreditations Browse, view, and create accreditation records — with status, body, and renewal tracking and tabbed detail for standards, surveys, and evidence. This screen is the main list of all accreditation records and is reached at route `/gr/accreditations`. ## Overview The Accreditations list page shows quick-stat cards (total, active, pending, renewals due in 30 days) and a searchable, filterable grid of accreditation cards. Users can filter by status (active, pending, expired, revoked) and by accreditation body (CARF, State Licensing, NARR, Joint Commission). Clicking an accreditation card navigates to its detail page at `/gr/accreditations/:id`. An **Add Accreditation** button opens the `AccreditationFormDialog` to create a new record. Pull-to-refresh is supported on mobile. Error states display a sanitized error message. ## Who it's for Access follows your organization's role and module configuration. Any authenticated user with access to the GR module can view this list. ## Before you start * To create an accreditation, have the accreditation body, type, awarded date, expiry date, and renewal due date ready. ## Finding an accreditation 1. Navigate to `/gr/accreditations` from the Governance & Compliance sidebar. 2. Use the search box to search by accreditation body or description; use the Status and Body dropdowns to narrow results. 3. Click any accreditation card to open its detail page. 4. Click **Dashboard** to navigate to the Accreditation Dashboard summary view. ## Viewing an accreditation The detail page (`/gr/accreditations/:id`) shows header metadata (accreditation body, status badge, accreditation number), four summary cards (Standards Progress, Compliance Rate, Surveys count, Days to Expiry), and a tabbed interface. The **Overview** tab displays description, accreditation type, awarded date, expiry date, renewal due date, site assignment, and contact information. The **Standards** tab lists all standards with their compliance status and allows adding new standards. The **Surveys** tab lists scheduled surveys and allows scheduling new ones. The **Evidence** tab lists uploaded evidence documents with their type. The **Tracer Readiness** tab renders the `TracerReadinessHub` component. A **Renew** button appears when status is `active` and days to expiry is less than 180. 1. From `/gr/accreditations`, click an accreditation card to navigate to its detail page. 2. Review the **Overview** tab: check expiry dates, renewal due dates, site assignment, and contact information. 3. Open the **Standards** tab, review compliance status for each standard, and click **Add Standard** to add new ones. 4. Open the **Surveys** tab to see all scheduled surveys and click **Schedule Survey** to add a new one. 5. Open the **Evidence** tab to review evidence documents linked to standards. 6. Open the **Tracer Readiness** tab to assess survey readiness via the `TracerReadinessHub`. 7. If the accreditation is active and expires within 180 days, click **Renew** to extend the expiry by 3 years. **Compliance rate** — compliant standards divided by total standards, shown as a percentage; color-coded: ≥80% success, ≥60% warning, otherwise destructive. **Days to expiry** — computed as the difference between today and `expires_date`; shown in destructive color when ≤90 days. **Evidence type** — rendered from `evidence_type` field on each evidence document; values are not enumerated in this component. ## Creating an accreditation Accreditations are created via `AccreditationFormDialog`, triggered from the **Add Accreditation** button on the Accreditation List page. There is no standalone route at `/gr/accreditations/new`. 1. Navigate to `/gr/accreditations` and click **Add Accreditation**. 2. Complete the form dialog: accreditation body, type, awarded date, expiry date, and renewal due date. 3. Save. The new record appears in the list. **Key concepts:** * **Accreditation body** — the external certifying organization; options include `CARF`, `state_licensing`, `NARR`, `joint_commission`. * **Pending** — accreditations awaiting approval before becoming active. * **Renewals (30d)** — count of accreditations with `renewal_due_date` within the next 30 days. ## Related Governance & Compliance core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/gr.tsx * src/cores/gr/pages/AccreditationList.tsx * src/cores/gr/pages/AccreditationDetail.tsx * src/cores/gr/hooks/useAccreditationList.ts * src/cores/gr/hooks/useAccreditationDetail.ts * src/cores/gr/hooks/useAccreditationMutation.ts # Acknowledgment Tracker Source: https://docs.encoreos.io/gr/acknowledgment-tracker Admin view for tracking policy acknowledgment status across all employees, with filtering and CSV export. This screen provides an organization-wide view of policy acknowledgment compliance at route `/gr/acknowledgments`. ## Overview The Acknowledgment Tracker is an admin-only screen that loads all policy acknowledgments across all employees in `mode: 'admin'`. It shows four stat cards: Total, Pending, Overdue, and Acknowledged. A filter panel allows narrowing by policy and by status (pending or acknowledged). The main table (`PolicyAcknowledgmentTable`) renders all filtered acknowledgments. Admins can export the full list as a CSV file containing employee name, email, policy title, status, due date, and acknowledged date. ## Who it's for Requires permission `gr.policies.admin`. ## Before you start * You must have the `gr.policies.admin` permission. * Policies and acknowledgment assignments must exist to populate the tracker. ## Steps Navigate to `/gr/acknowledgments`. Check the Overdue and Pending counts to identify compliance gaps. Use the **Policy** dropdown to focus on a specific policy, or use the **Status** dropdown to show only pending or acknowledged records. Click **Clear Filters** to reset. Review the acknowledgment table for individual employee records. Click **Export CSV** to download all current acknowledgment data. The file is named `policy-acknowledgments.csv`. ## Key concepts * **Overdue** — acknowledgment has status `pending` and `due_date` is before today. * **Acknowledged** — acknowledgment status is `acknowledged`. * **CSV export** — includes: employee full name, employee email, policy title, status, due date, acknowledged date. ## Related Governance & Compliance core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/gr.tsx * src/cores/gr/pages/PolicyAcknowledgmentTracker.tsx * src/cores/gr/hooks/usePolicyAcknowledgmentList.ts * src/cores/gr/hooks/usePolicyList.ts # AI Advisor Source: https://docs.encoreos.io/gr/ai-advisor The /gr/ai path has no registered standalone route and redirects to the GR dashboard. The path `/gr/ai` has no registered standalone route in the application and does not render a dedicated screen. ## Overview In `src/routes/gr.tsx`, there is no `` entry. Requests to `/gr/ai` are not explicitly handled and will fall through to the `NotFound` route or the catch-all redirect. The AI-related screens in the GR module are registered as child paths: `/gr/ai/suggestions`, `/gr/ai/gap-analysis`, `/gr/ai/audit-prep`, and `/gr/ai/risk-assessment`. This page is not a standalone screen. ## Who it's for Access follows your organization's role and module configuration. — not a standalone screen. ## Related Governance & Compliance core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/gr.tsx # AI Compliance Advisor - Administrator Guide Source: https://docs.encoreos.io/gr/ai-compliance-admin-guide This guide covers administration of the AI Compliance Advisor feature, including enabling AI, managing suggestions, reviewing AI outputs, and configuring setti… ## Overview This guide covers administration of the AI Compliance Advisor feature, including enabling AI, managing suggestions, reviewing AI outputs, and configuring settings. *** ## Enabling AI Features ### Prerequisites * Organization administrator or compliance officer role * Access to GR module settings ### Default State The AI Compliance Advisor is **enabled by default** for every organization as of June 12, 2026. You do not need to opt in. The four GR AI surfaces (gap analysis, audit preparation, AI suggestions, AI prompts) render automatically once a user has the right module permissions. Skip to [Managing AI Suggestions](#managing-ai-suggestions) unless you need to turn the advisor off. ### Re-enable AI for Your Organization If a previous admin disabled the advisor and you want it back: 1. Navigate to **GR → Settings** 2. Click the **AI** tab 3. Toggle **Enable AI Compliance Advisor** to ON 4. Click **Save Changes** Once enabled, AI features will be available to all GR module users. ### Disable AI Features To disable AI for your organization: 1. Navigate to **GR → Settings → AI** 2. Toggle **Enable AI Compliance Advisor** to OFF 3. Click **Save Changes** > **Note:** Disabling AI does not delete existing AI-generated data. Users will retain access to previously generated suggestions. *** ## Managing AI Suggestions ### Review Workflow As a compliance officer, you are responsible for reviewing AI-generated suggestions before they are implemented. **Review Process:** 1. Navigate to **GR → AI → Suggestions** 2. Filter by **Status: Pending** to see unreviewed suggestions 3. Click on a suggestion to review details 4. Take action: * **Accept**: Marks suggestion as approved, may create related records * **Reject**: Dismisses suggestion with a documented reason * **Defer**: Saves for later review ### Bulk Actions For multiple suggestions: 1. Select suggestions using checkboxes 2. Use bulk action buttons: * **Accept Selected** * **Reject Selected** (prompts for reason) ### Suggestion Lifecycle ``` AI Generated → Pending → Review ↓ ┌──────┴──────┐ ↓ ↓ Accepted Rejected ↓ Implemented ``` *** ## Reviewing AI Gap Analyses ### Gap Analysis Workflow 1. **Generate**: User or scheduled job triggers gap analysis 2. **Review**: Compliance officer reviews findings 3. **Validate**: Confirm or adjust gap severity/priority 4. **Action**: Create remediation tasks or dismiss false positives ### Managing Gap Analyses 1. Navigate to **GR → AI → Gap Analysis** 2. View analyses by requirement or date 3. For each gap: * Verify accuracy against actual compliance status * Adjust priority if needed * Create remediation action or dismiss ### Creating Remediation from Gaps 1. Open a gap analysis result 2. Click **Create Remediation** on any gap item 3. The system pre-fills: * Description from gap analysis * Suggested actions as tasks * Priority based on gap priority 4. Assign owner and due date 5. Save to create remediation record *** ## Audit Preparation Management ### Managing AI Audit Prep 1. Navigate to **GR → AI → Audit Prep** 2. View preparation assessments by audit 3. For each assessment: * Review readiness score and narrative * Validate checklist items * Assign checklist items to staff * Track completion ### Readiness Score Interpretation | Score | Status | Action Needed | | --------- | --------- | ----------------------------- | | 90-100% | Excellent | Minor polish, ready for audit | | 70-89% | Good | Address priority items | | 50-69% | Fair | Significant work needed | | Below 50% | Poor | Major remediation required | ### Exporting Audit Prep * Click **Export** to generate a PDF or Excel checklist * Use for team distribution and tracking * Include in audit preparation documentation *** ## AI Risk Assessment Management ### Managing AI Risk Assessments 1. Navigate to **GR → AI → Risk Assessment** 2. View assessments by risk 3. For each assessment: * Compare AI scores with current risk scores * Validate or adjust likelihood/impact * Review suggested mitigation strategy * Create mitigation actions if appropriate ### Applying AI Recommendations When accepting an AI risk assessment: 1. Open the assessment details 2. Click **Apply to Risk** 3. Select which values to update: * Likelihood score * Impact score * Mitigation strategy 4. Add any manual adjustments 5. Save to update the risk record *** ## AI Prompt Templates The AI uses specialized prompts for different functions. Understanding these helps interpret outputs. ### Compliance Chat * General compliance guidance * Regulatory interpretation * Documentation requirements * Best practices ### Requirement Identification Identifies applicable requirements based on: * Organization type * Accreditations held * State of operation * Services provided ### Gap Analysis Analyzes gaps considering: * Evidence gaps (missing documentation) * Check gaps (missing verifications) * Training gaps (staff training needs) * Policy gaps (missing/outdated policies) ### Audit Preparation Assesses readiness based on: * Audit type (CARF, State, CMS) * Historical findings * Current compliance status * Documentation completeness ### Risk Assessment Evaluates risks using: * Likelihood (1-5 scale) * Impact (1-5 scale) * Risk matrix calculation * Mitigation strategy recommendations *** ## AI Model Information The AI Compliance Advisor uses Lovable AI, which provides access to advanced language models. ### Models Used * **Default**: Google Gemini 2.5 Flash (balanced speed/quality) * Complex analysis may use higher-capability models ### Model Capabilities * Regulatory knowledge (CARF, Joint Commission, CMS, HIPAA, SAMHSA) * State licensing requirements * Compliance best practices * Gap identification * Risk assessment methodology ### Model Limitations * Knowledge may not include latest regulatory updates * Cannot access external databases or real-time data * Provides guidance, not legal advice * May not know state-specific variations for all states *** ## Best Practices ### Getting Accurate AI Results 1. **Provide Context**: When using AI chat, include relevant details: * Organization type (recovery housing, behavioral health) * Accreditations (CARF, Joint Commission) * State of operation * Specific services offered 2. **Be Specific**: Ask targeted questions rather than broad ones: * ✅ "What are CARF documentation requirements for medication management?" * ❌ "Tell me about CARF" 3. **Verify Outputs**: Always validate AI suggestions against: * Current regulatory standards * State-specific requirements * Your organization's specific context 4. **Use Confidence Scores**: Pay attention to confidence levels: * High confidence (80%+): Likely accurate * Lower confidence: Requires more validation ### Reviewing AI Suggestions Efficiently 1. **Prioritize by Type**: Review in this order: * Critical priority items first * Requirement suggestions (new compliance needs) * Gap suggestions (current deficiencies) * Remediation suggestions (action items) 2. **Batch Similar Items**: Group related suggestions for efficient review 3. **Document Rejections**: When rejecting, provide clear reasons to: * Inform future AI improvements * Maintain audit trail * Help other reviewers understand decisions *** ## Data Privacy ### What Data is Sent to AI * Anonymized organizational context * Regulatory framework references * Compliance questions and queries * **Never**: PHI, PII, or identifying information ### Data Protection * All AI interactions are logged for audit purposes * No patient/resident identifiable information is included * AI suggestions are stored in your organization's database * Data remains within your organization's tenant ### PHI Protection The system automatically: * Uses anonymized references (e.g., "Resident R-001") * Strips identifying information from prompts * Blocks queries that appear to contain PHI *** ## Rate Limits & Usage ### Understanding Rate Limits AI features have usage limits to ensure fair access: | Error | Meaning | Resolution | | --------------------- | ------------------- | ----------------------- | | 429 Too Many Requests | Rate limit exceeded | Wait a moment and retry | | 402 Payment Required | Credits depleted | Contact administrator | ### Managing Usage * Monitor usage through the AI dashboard * Prioritize AI use for high-value activities * Use batch operations when possible * Cache results rather than regenerating *** ## Troubleshooting ### Common Issues | Issue | Cause | Solution | | ------------------------ | ------------------- | --------------------------------- | | AI features not visible | Not enabled | Enable in GR Settings → AI | | "Rate limited" error | Too many requests | Wait and retry | | "Credits depleted" error | Usage limit reached | Contact workspace admin | | Inaccurate suggestions | Missing context | Provide more organization context | | Slow responses | High demand | Wait for completion, don't retry | ### AI Not Working 1. Verify AI is enabled: **GR → Settings → AI** 2. Check for error messages in the UI 3. Try a simple test query in AI Chat 4. Check network connectivity 5. Contact system administrator if issues persist ### Reporting AI Issues To report problems with AI outputs: 1. Note the specific suggestion/analysis ID 2. Document what was incorrect 3. Provide the expected correct answer if known 4. Submit feedback through the suggestion interface *** ## Module Settings Reference ### AI Settings Tab | Setting | Description | Default | | ---------------------------- | --------------------------------- | ------- | | Enable AI Compliance Advisor | Master toggle for all AI features | ON | ### Related Settings Other GR settings that affect AI behavior: * Organization type and accreditations (contextual) * State of operation (regulatory context) * Services offered (requirement filtering) *** ## Security Considerations ### Access Control * All org members can view AI suggestions * All org members can generate AI content * Only compliance officers can accept/reject suggestions * Only compliance officers can delete AI data ### Audit Trail All AI interactions are logged including: * User who triggered generation * Timestamp * Input context * Generated output * Accept/reject decisions with reasons ### Data Retention AI-generated data follows your organization's data retention policies. To remove AI data: 1. Navigate to the AI dashboard 2. Select items to delete 3. Confirm deletion (compliance officer only) *** ## Related Documentation * [AI User Guide](/gr/ai-compliance-user-guide) * [AI Prompts Reference](/gr/ai-prompts-reference) * [Compliance Admin Guide](/gr/compliance-admin-guide) * [Audit Admin Guide](/gr/audit-admin-guide) * [Risk Admin Guide](/gr/risk-admin-guide) # AI Compliance Advisor - User Guide Source: https://docs.encoreos.io/gr/ai-compliance-user-guide The AI Compliance Advisor is an intelligent assistant that helps your organization maintain regulatory compliance. It uses advanced AI to analyze your complian… ## Overview The AI Compliance Advisor is an intelligent assistant that helps your organization maintain regulatory compliance. It uses advanced AI to analyze your compliance posture, identify gaps, prepare for audits, and assess risks. > **Important:** The AI Compliance Advisor provides guidance based on regulatory requirements and best practices. It does **not** provide legal advice. For complex compliance issues, consult your legal counsel. *** ## Accessing AI Features ### Prerequisites * AI features must be enabled by your organization administrator (Settings → AI → Enable AI Compliance) * You must have access to the GR module ### Navigation | Feature | Route | Description | | ----------------- | ------------------------ | ---------------------------------------- | | AI Suggestions | `/gr/ai/suggestions` | View and manage AI-generated suggestions | | Gap Analysis | `/gr/ai/gap-analysis` | Analyze compliance gaps for requirements | | Audit Preparation | `/gr/ai/audit-prep` | Prepare for upcoming audits | | Risk Assessment | `/gr/ai/risk-assessment` | AI-assisted risk analysis | *** ## AI Suggestions Dashboard The AI Suggestions Dashboard shows all AI-generated recommendations organized by type and status. ### Viewing Suggestions 1. Navigate to **GR → AI → Suggestions** 2. Filter by: * **Type**: Requirements, Gaps, Remediation, Evidence * **Status**: Pending, Accepted, Rejected * **Priority**: Critical, High, Medium, Low 3. Click on a suggestion to view details ### Suggestion Types | Type | Description | Example | | --------------- | -------------------------------------- | -------------------------------------------------- | | **Requirement** | New regulatory requirements identified | "CARF 1.A.1 requires documented intake procedures" | | **Gap** | Compliance gaps detected | "Missing evidence for staff background checks" | | **Remediation** | Recommended actions | "Update policy to include new state requirements" | | **Evidence** | Documentation recommendations | "Collect fire drill logs for Q4" | ### Acting on Suggestions **For All Staff:** * View suggestion details and reasoning * Add comments or questions **For Compliance Officers:** * **Accept**: Implement the suggestion * **Reject**: Dismiss with reason * **Defer**: Save for later review *** ## Using AI Chat The AI Chat provides an interactive way to ask compliance questions and get immediate guidance. ### Starting a Chat 1. Navigate to any AI page or find the AI Chat panel 2. Type your question in natural language 3. Press Enter or click Send ### Example Questions * "What are the CARF documentation requirements for medication management?" * "How often should fire drills be conducted in recovery housing?" * "What evidence do I need for state licensing renewal?" * "Explain the HIPAA requirements for patient records storage" ### Chat Guidelines ✅ **Do:** * Ask specific compliance questions * Reference particular regulations (CARF, State, CMS) * Ask about documentation requirements * Request clarification on compliance procedures ❌ **Don't:** * Share identifiable patient/resident information (use "Resident R-001") * Ask for legal advice on specific incidents * Expect the AI to make compliance decisions for you ### Understanding Responses The AI will provide: * **Clear answers** based on regulatory requirements * **Specific citations** when applicable (e.g., "Per CARF 1.A.1...") * **Action recommendations** for compliance * **Caveats** when requirements vary by state or situation *** ## Gap Analysis Gap Analysis helps identify where your organization may not meet regulatory requirements. ### Running a Gap Analysis 1. Navigate to **GR → AI → Gap Analysis** 2. Select a requirement or requirement category 3. Click **Generate Analysis** 4. Review the identified gaps ### Understanding Results Each gap includes: * **Gap Type**: Evidence, Check, Training, or Policy * **Description**: What's missing or incomplete * **Priority**: Critical, High, Medium, Low * **Recommendation**: How to address the gap * **Suggested Actions**: Specific steps to remediate ### Gap Types Explained | Type | Description | Example | | ------------ | ---------------------------- | ----------------------------------------------------------- | | **Evidence** | Missing documentation | "No fire drill logs found for October" | | **Check** | Missing verification | "Background checks not documented for 3 employees" | | **Training** | Staff training gaps | "2 staff missing HIPAA training certification" | | **Policy** | Missing or outdated policies | "Medication administration policy last updated 2 years ago" | *** ## Audit Preparation The Audit Preparation feature helps you get ready for upcoming surveys and inspections. ### Generating Audit Prep 1. Navigate to **GR → AI → Audit Prep** 2. Select the audit type (CARF, State, CMS, etc.) 3. Click **Generate Readiness Assessment** 4. Review the results ### Readiness Report The AI generates: * **Readiness Score**: 0-100% overall preparedness * **Assessment Narrative**: Summary of current state * **Gap Areas**: Key areas needing attention * **Potential Findings**: What auditors might cite * **Preparation Checklist**: Prioritized action items ### Checklist Items Each checklist item shows: * **Status**: Ready ✅, Needs Attention ⚠️, Not Ready ❌ * **Priority**: High, Medium, Low * **Description**: What needs to be done ### Using the Checklist 1. Focus on High priority items first 2. Assign items to responsible staff 3. Track completion status 4. Re-run analysis to update readiness score *** ## Risk Assessment AI-assisted risk assessment helps evaluate and prioritize organizational risks. ### Generating a Risk Assessment 1. Navigate to **GR → AI → Risk Assessment** 2. Select a risk from the register 3. Click **Generate Assessment** 4. Review AI recommendations ### Understanding Results The AI provides: * **Likelihood Score**: 1-5 (Rare to Almost Certain) * **Impact Score**: 1-5 (Negligible to Catastrophic) * **Risk Score**: Likelihood × Impact (1-25) * **Risk Rating**: Low, Medium, High, Critical * **Mitigation Strategy**: Avoid, Reduce, Transfer, Accept * **Suggested Actions**: Specific mitigation steps ### Likelihood Scale | Score | Rating | Description | | ----- | -------------- | ------------------------------------------- | | 1 | Rare | May occur only in exceptional circumstances | | 2 | Unlikely | Could occur at some time | | 3 | Possible | Might occur at some time | | 4 | Likely | Will probably occur | | 5 | Almost Certain | Expected to occur | ### Impact Scale | Score | Rating | Description | | ----- | ------------ | ------------------------------------------ | | 1 | Negligible | Minor inconvenience | | 2 | Minor | Some operational disruption | | 3 | Moderate | Significant disruption, possible citations | | 4 | Major | Serious harm, regulatory action | | 5 | Catastrophic | Loss of license, legal liability | *** ## Understanding AI Confidence Many AI outputs include a **Confidence Score** (0-100%). | Range | Meaning | Recommendation | | --------- | ------------------- | ---------------------------------------- | | 80-100% | High confidence | Likely accurate, verify key details | | 60-79% | Moderate confidence | Review carefully, may need adjustments | | 40-59% | Low confidence | Treat as suggestion, validate thoroughly | | Below 40% | Very low confidence | AI is uncertain, manual review required | *** ## Limitations The AI Compliance Advisor **cannot**: * Provide legal advice * Make compliance decisions for you * Access external systems or real-time data * Guarantee audit outcomes * Replace human judgment for complex situations The AI Compliance Advisor **can**: * Provide regulatory guidance based on known requirements * Identify potential gaps and risks * Suggest remediation actions * Help prepare documentation * Answer compliance questions *** ## FAQ ### Q: Is my data shared with external AI services? A: Your data is processed securely. No personally identifiable information (PHI/PII) is sent to AI services. The system uses anonymized identifiers. ### Q: How current is the AI's regulatory knowledge? A: The AI is trained on major regulatory frameworks (CARF, Joint Commission, CMS, HIPAA, SAMHSA) and state requirements. For the latest regulatory changes, verify with official sources. ### Q: Can I trust the AI's suggestions? A: AI suggestions are recommendations, not mandates. Always verify against official regulatory sources and consult with compliance experts for critical decisions. ### Q: What if I get an error message? A: If you see "Rate limited" or "Credits depleted," wait a moment and try again. If issues persist, contact your administrator. ### Q: How do I report incorrect AI suggestions? A: Use the feedback button on any suggestion, or mark it as rejected with a reason. This helps improve future recommendations. *** ## Need Help? * **Technical Issues**: Contact your system administrator * **Compliance Questions**: Contact your compliance officer * **AI Feature Access**: Check with your administrator that AI is enabled *** **Related Documentation:** * [AI Admin Guide](/gr/ai-compliance-admin-guide) * [Compliance User Guide](/gr/compliance-user-guide) * [Audit User Guide](/gr/audit-user-guide) # AI Compliance Advisor - Prompts Reference Source: https://docs.encoreos.io/gr/ai-prompts-reference This document provides technical reference for the AI prompts and schemas used in the AI Compliance Advisor. Understanding these prompts helps interpret AI out… ## Overview This document provides technical reference for the AI prompts and schemas used in the GR-06 AI Compliance Advisor. Understanding these prompts helps interpret AI outputs and customize behavior. *** ## Prompt Templates ### Compliance Chat System Prompt **Location:** `src/cores/gr/ai/prompts.ts` → `COMPLIANCE_CHAT_PROMPT` **Purpose:** General compliance chat assistant **Specializations:** * CARF (Commission on Accreditation of Rehabilitation Facilities) * Joint Commission accreditation * State licensing requirements for behavioral health and recovery housing * CMS (Centers for Medicare & Medicaid Services) regulations * HIPAA privacy and security requirements * SAMHSA guidelines for substance use treatment **Guidelines Enforced:** * Provides clear, actionable guidance * References specific regulatory standards when applicable * Identifies potential compliance risks * Considers organizational context * Never provides legal advice * Uses anonymized references for cases * Flags state/accreditor variations *** ### Requirement Identification Prompt **Location:** `src/cores/gr/ai/prompts.ts` → `REQUIREMENT_IDENTIFICATION_PROMPT` **Purpose:** Analyze organizational context and identify applicable regulatory requirements **Output Structure:** For each requirement identified: 1. Clear title and description 2. Regulatory body (CARF, Joint Commission, State, CMS, SAMHSA, HIPAA) 3. Specific reference code (e.g., "CARF 1.A.1", "42 CFR Part 2") 4. Priority (critical, high, medium, low) 5. Confidence score (0-100) **Focus Areas:** * Directly applicable requirements * Currently in effect or upcoming * Commonly cited in audits * High-risk for non-compliance **Tool Called:** `extract_requirements` *** ### Gap Analysis Prompt **Location:** `src/cores/gr/ai/prompts.ts` → `GAP_ANALYSIS_PROMPT` **Purpose:** Analyze requirements and current compliance status to identify gaps **Gap Types:** | Type | Definition | | ---------- | ---------------------------------------------- | | `evidence` | Missing documentation or proof of compliance | | `check` | Missing or incomplete compliance verification | | `training` | Staff training gaps related to the requirement | | `policy` | Missing or outdated policies/procedures | **Output Structure:** For each gap: 1. Gap type classification 2. Clear description 3. Priority (critical, high, medium, low) 4. Specific recommendation 5. 2-4 concrete remediation actions **Prioritization Criteria:** * Likely audit citations * Patient/resident safety risks * Approaching deadlines * Ease of remediation **Tool Called:** `analyze_gaps` *** ### Audit Preparation Prompt **Location:** `src/cores/gr/ai/prompts.ts` → `AUDIT_PREPARATION_PROMPT` **Purpose:** Assess audit readiness and generate preparation plan **Output Structure:** 1. **Readiness Score**: 0-100 2. **Assessment Narrative**: Current state summary 3. **Gap Areas**: Areas needing attention 4. **Potential Findings**: Likely audit citations 5. **Checklist Items**: Prioritized tasks **Checklist Item Status:** * `ready` - No action needed * `needs_attention` - Some work required * `not_ready` - Significant work needed **Considerations:** * Audit type (CARF survey, state inspection, CMS review) * Historical findings * Current compliance status * Documentation completeness * Staff interview readiness **Tool Called:** `prepare_audit` *** ### Risk Assessment Prompt **Location:** `src/cores/gr/ai/prompts.ts` → `RISK_ASSESSMENT_PROMPT` **Purpose:** Assess risks and recommend mitigation strategies **Likelihood Scale (1-5):** | Score | Rating | Description | | ----- | -------------- | ------------------------------------------- | | 1 | Rare | May occur only in exceptional circumstances | | 2 | Unlikely | Could occur at some time | | 3 | Possible | Might occur at some time | | 4 | Likely | Will probably occur | | 5 | Almost Certain | Expected to occur | **Impact Scale (1-5):** | Score | Rating | Description | | ----- | ------------ | ------------------------------------------ | | 1 | Negligible | Minor inconvenience | | 2 | Minor | Some operational disruption | | 3 | Moderate | Significant disruption, possible citations | | 4 | Major | Serious harm, regulatory action | | 5 | Catastrophic | Loss of license, legal liability | **Risk Rating Calculation:** * Score = Likelihood × Impact (1-25) * 1-4: Low * 5-9: Medium * 10-16: High * 17-25: Critical **Mitigation Strategies:** | Strategy | Definition | | ---------- | ---------------------------------------------- | | `avoid` | Eliminate the activity creating risk | | `reduce` | Implement controls to reduce likelihood/impact | | `transfer` | Transfer risk through insurance or contracts | | `accept` | Accept risk with monitoring | **Output Structure:** 1. Likelihood score (1-5) 2. Impact score (1-5) 3. Risk score (calculated) 4. Risk rating 5. Mitigation strategy recommendation 6. 2-5 specific mitigation actions 7. Reasoning for assessment **Tool Called:** `assess_risk` *** ## Structured Output Schemas ### Requirement Suggestion Schema **Location:** `src/cores/gr/ai/schemas.ts` → `requirementSuggestionSchema` ```typescript theme={null} { suggestions: [{ title: string, // Clear title for the requirement description: string, // Detailed description regulatoryBody: string, // CARF, Joint Commission, State, CMS, SAMHSA, HIPAA referenceCode?: string, // Specific reference code priority: 'critical' | 'high' | 'medium' | 'low', confidence: number // 0-100 }] } ``` *** ### Gap Analysis Schema **Location:** `src/cores/gr/ai/schemas.ts` → `gapAnalysisSchema` ```typescript theme={null} { gaps: [{ type: 'evidence' | 'check' | 'training' | 'policy', description: string, priority: 'critical' | 'high' | 'medium' | 'low', recommendation: string, suggestedActions: string[] // 2-4 items }] } ``` *** ### Audit Preparation Schema **Location:** `src/cores/gr/ai/schemas.ts` → `auditPrepSchema` ```typescript theme={null} { readinessScore: number, // 0-100 assessment: string, // Narrative assessment gapAreas: string[], // Key areas needing attention potentialFindings: string[], // Potential audit findings checklistItems: [{ item: string, status: 'ready' | 'needs_attention' | 'not_ready', priority: 'high' | 'medium' | 'low' }] } ``` *** ### Risk Assessment Schema **Location:** `src/cores/gr/ai/schemas.ts` → `riskAssessmentSchema` ```typescript theme={null} { likelihood: number, // 1-5 impact: number, // 1-5 riskScore: number, // 1-25 (likelihood × impact) riskRating: 'low' | 'medium' | 'high' | 'critical', reasoning: string, suggestedStrategy: 'avoid' | 'reduce' | 'transfer' | 'accept', suggestedActions: string[], // 2-5 items confidence: number // 0-100 } ``` *** ## Context Building ### buildComplianceContext Function **Location:** `src/cores/gr/ai/prompts.ts` → `buildComplianceContext()` **Purpose:** Build context string for AI prompts based on organization data **Parameters:** ```typescript theme={null} { organizationType?: string, // e.g., "Recovery Housing" accreditations?: string[], // e.g., ["CARF", "State License"] state?: string, // e.g., "California" services?: string[] // e.g., ["Residential Treatment", "Outpatient"] } ``` **Output Format:** ``` Organization Type: Recovery Housing Accreditations: CARF, State License State: California Services: Residential Treatment, Outpatient ``` *** ## Module Context All GR AI hooks pass module context to Platform AI: ```typescript theme={null} { module: 'gr', feature: 'compliance-advisor' | 'gap-analysis' | 'audit-prep' | 'risk-assessment' } ``` This enables: * Module-specific rate limiting * Usage tracking per module * Feature-level analytics *** ## AI Hooks Reference ### useAIComplianceChat **Purpose:** Interactive compliance chat **Platform Hook:** `useAIChat` **System Prompt:** `COMPLIANCE_CHAT_PROMPT` ### useAIRequirementIdentification **Purpose:** Identify applicable requirements **Platform Hook:** `useAIStructuredOutput` **System Prompt:** `REQUIREMENT_IDENTIFICATION_PROMPT` **Schema:** `requirementSuggestionSchema` ### useAIGapAnalysis **Purpose:** Analyze compliance gaps **Platform Hook:** `useAIStructuredOutput` **System Prompt:** `GAP_ANALYSIS_PROMPT` **Schema:** `gapAnalysisSchema` ### useAIAuditPreparation **Purpose:** Audit readiness assessment **Platform Hook:** `useAIStructuredOutput` **System Prompt:** `AUDIT_PREPARATION_PROMPT` **Schema:** `auditPrepSchema` ### useAIRiskAssessment **Purpose:** Risk assessment **Platform Hook:** `useAIStructuredOutput` **System Prompt:** `RISK_ASSESSMENT_PROMPT` **Schema:** `riskAssessmentSchema` *** ## PHI Protection All AI prompts enforce PHI protection: * System prompts instruct AI to use anonymized references * The Platform AI layer includes PHI detection * Identifiable information is blocked before reaching AI **Example anonymization:** * ❌ "John Smith in Room 204" * ✅ "Resident R-001" *** ## Error Handling AI hooks should handle these errors: | Error Code | Meaning | User Message | | ---------- | ---------------- | --------------------------------------------- | | 429 | Rate limited | "AI is busy. Please try again in a moment." | | 402 | Credits depleted | "AI credits depleted. Contact administrator." | | 500 | AI service error | "AI service temporarily unavailable." | *** ## Customization Options (Future) Potential future customization points: * Organization-specific prompt additions * Custom regulatory body definitions * State-specific requirement overrides * Custom risk matrix thresholds *** ## Related Documentation * [AI User Guide](/gr/ai-compliance-user-guide) * [AI Admin Guide](/gr/ai-compliance-admin-guide) * [Platform AI Integration](/architecture/integrations/index) # AI Suggestions Source: https://docs.encoreos.io/gr/ai-suggestions Dashboard for reviewing and managing AI-generated compliance recommendations, organized by status: all, pending, accepted, rejected. This screen surfaces AI-generated compliance suggestions for review and action at route `/gr/ai/suggestions`. ## Overview The AI Suggestions Dashboard requires the AI Compliance Advisor feature to be enabled via GR settings (`gr.admin` controls this). When disabled, the page shows an informational message with a link to settings. When enabled, it displays four stat cards (Total Suggestions, Pending Review, Accepted, Rejected) and a tabbed list with tabs for All, Pending, Accepted, and Rejected suggestions. Each tab renders the `AISuggestionsList` component filtered by status. A jurisdiction badge shows the current compliance jurisdiction. Users can open the AI Chat Panel (`AIComplianceChatPanel`) with the **Ask AI Advisor** button. ## Who it's for Access follows your organization's role and module configuration. Any authenticated user with access to the GR module can view this screen if the AI Compliance feature is enabled in settings. ## Before you start * AI Compliance must be enabled in GR settings (`/gr/settings`). * Jurisdiction profile must be configured for jurisdiction-aware suggestions. ## Steps Go to `/gr/ai/suggestions`. If the AI Compliance Advisor is disabled, click **Go to Settings** and enable the feature under GR settings. Click the **Pending** tab to see suggestions awaiting action. Use the actions within `AISuggestionsList` to accept or dismiss individual suggestions. Click **Ask AI Advisor** to open the compliance chat panel for freeform questions. ## Key concepts * **Suggestion statuses** — `pending` (awaiting review), `accepted` (applied), `rejected` (dismissed). * **JurisdictionBadge** — displays the configured jurisdiction from the organization's `JurisdictionProfile`. * **AI Compliance Advisor** — must be enabled in GR settings; when disabled this screen shows a blocked state. ## Related Governance & Compliance core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/gr.tsx * src/cores/gr/pages/AISuggestionsDashboard.tsx * src/cores/gr/hooks/useAIComplianceEnabled.ts * src/cores/gr/ai/index.ts # Governance Analytics Source: https://docs.encoreos.io/gr/analytics Procedure execution metrics, policy coverage heatmap, compliance effectiveness scores, trends, and benchmarking at /gr/procedures/analytics. This screen provides analytics across procedure executions and compliance effectiveness at route `/gr/procedures/analytics`. ## Overview The Procedure Analytics Dashboard shows four KPI cards (Total Executions, Completion Rate, Overdue count, Zero-Execution count) and a tabbed view. The **Procedures** tab shows a detailed analytics table with filters. The **Coverage** tab renders the `PolicyCoverageTable` (policy coverage heatmap data). The **Scores** tab renders `ComplianceScoreCards`. The **Trends** tab shows the `ComplianceScoreTrendCard`. The **Benchmarking** tab is conditionally rendered behind the `gr.procedure-analytics.benchmark.view` permission. A staleness footer shows when analytics were last refreshed. ## Who it's for Requires permission `gr.procedure-analytics.view`. The Benchmarking tab additionally requires `gr.procedure-analytics.benchmark.view`. ## Before you start * You must have the `gr.procedure-analytics.view` permission. * Procedures with execution records must exist to produce meaningful analytics. ## Steps Navigate to `/gr/procedures/analytics`. Check Total Executions, Completion Rate, Overdue count, and Zero-Execution count at the top. Review the analytics table; use filters (`ProcedureAnalyticsFilters`) to narrow by category or date range. Open the **Coverage** tab to review the policy coverage heatmap. Open the **Scores** tab to see compliance effectiveness scores by procedure. Open the **Trends** tab to view compliance score trend over time. If you have the `gr.procedure-analytics.benchmark.view` permission, open **Benchmarking** to compare against benchmarks. ## Key concepts * **Overdue** — procedures with executions past their due date as computed by `useProcedureAnalytics`. * **Zero-Execution count** — procedures with no recorded executions in the analytics period. * **Completion Rate** — overall completion percentage across all procedure executions (`overallCompletionRate`). * **Last refreshed** — displayed from `procedure_analytics_last_refreshed_at` in GR module settings. ## Related Governance & Compliance core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/gr.tsx * src/cores/gr/pages/ProcedureAnalyticsDashboardPage.tsx * src/cores/gr/hooks/useProcedureAnalytics.ts * src/cores/gr/hooks/usePolicyCoverageHeatmap.ts * src/cores/gr/hooks/useComplianceEffectivenessScore.ts * src/cores/gr/hooks/useGRModuleSettings.ts # GR Audit Management - Admin Guide Source: https://docs.encoreos.io/gr/audit-admin-guide This guide covers how to plan, conduct, and manage audits including scheduling, team management, checklist creation, finding documentation, corrective action t… ## Overview This guide covers how to plan, conduct, and manage audits including scheduling, team management, checklist creation, finding documentation, corrective action tracking, and readiness assessment. > **Required Role:** Compliance Officer or Organization Admin *** ## Initial Setup ### 1. Configure Module Settings 1. Navigate to **GR → Settings** 2. Configure Audit Management settings: * Enable/disable audit reminders * Set default reminder days for upcoming audits (14, 7, 3 days) * Set finding due date reminder intervals * Set corrective action reminder intervals 3. Save your settings ### 2. Define Audit Types The system includes standard audit types: * Internal, External, Regulatory, Accreditation, Financial, Operational Custom types can be configured in module settings if needed. *** ## Planning & Scheduling Audits ### Creating a New Audit 1. Navigate to **GR → Audits** 2. Click **New Audit** 3. Complete the planning form: | Field | Description | Required | | ------------------- | ------------------------------------ | -------- | | **Title** | Clear audit name | Yes | | **Type** | Internal, External, Regulatory, etc. | Yes | | **Scheduled Start** | Planned start date | Yes | | **Scheduled End** | Planned end date | Yes | | **Scope** | What will be audited | Yes | | **Lead Auditor** | Primary auditor | Yes | | **Sites** | Sites included in audit | No | | **Departments** | Departments included | No | | **Notes** | Additional planning notes | No | 4. Click **Create Audit** ### Audit Lifecycle ``` Planned → In Progress → Completed ↓ Cancelled ``` ### Best Practices for Planning 1. **Schedule in advance**: Give staff time to prepare 2. **Define clear scope**: Document what will and won't be reviewed 3. **Assign experienced lead**: Choose lead auditors with relevant expertise 4. **Consider timing**: Avoid peak operational periods 5. **Notify stakeholders**: Send advance notification to affected areas *** ## Managing Audit Teams ### Assigning Team Members 1. Open the audit detail page 2. Go to the **Team** tab 3. Click **Add Team Member** 4. Select the employee 5. Choose their role: * **Lead Auditor**: Primary responsibility for audit * **Auditor**: Participates in audit activities * **Observer**: Watches but doesn't conduct review * **Subject Matter Expert**: Provides expertise for specific areas ### Team Roles & Responsibilities | Role | Responsibilities | | ---------------- | --------------------------------------------------------------------- | | **Lead Auditor** | Plans audit, assigns tasks, manages findings, signs off on completion | | **Auditor** | Conducts reviews, documents findings, interviews staff | | **Observer** | Learns audit process, may assist with documentation | | **SME** | Provides technical expertise when specialized knowledge is needed | *** ## Creating Audit Checklists ### Generating from Compliance Requirements 1. Open the audit detail page 2. Go to the **Checklist** tab 3. Click **Generate from Requirements** 4. Select regulatory body and categories to include 5. The system creates checklist items from GR-03 requirements ### Creating Custom Checklist Items 1. Go to the **Checklist** tab 2. Click **Add Item** 3. Enter: * **Description**: What to verify * **Category**: Grouping for the item * **Requirement Link**: Optional link to GR-03 requirement 4. Click **Add** ### Checklist Item Status | Status | Meaning | | ------------------ | --------------------------- | | **Pending** | Not yet reviewed | | **Compliant** | Item verified, no issues | | **Non-Compliant** | Issue identified | | **Not Applicable** | Doesn't apply to this audit | *** ## Executing Audits ### Starting an Audit 1. Open the audit 2. Click **Start Audit** to change status to "In Progress" 3. The actual start date is recorded ### Documenting Reviews For each checklist item: 1. Review the requirement or standard 2. Gather evidence of compliance 3. Interview staff if needed 4. Update the item status 5. Add notes documenting your observations ### Real-Time Documentation * Document observations as you go * Take photos if applicable * Note staff interviewed * Reference documents reviewed * Record both compliant and non-compliant findings ### Completing an Audit 1. Ensure all checklist items are addressed 2. Document all findings 3. Assign corrective actions for non-compliant items 4. Click **Complete Audit** 5. Enter the actual end date 6. Add summary notes *** ## Recording Audit Findings ### Creating a Finding 1. From the checklist item or audit detail page 2. Click **Record Finding** 3. Complete the form: | Field | Description | Required | | ------------------ | ----------------------------------- | -------- | | **Title** | Brief description | Yes | | **Description** | Detailed explanation | Yes | | **Severity** | Critical, Major, Minor, Observation | Yes | | **Category** | Clinical, Safety, HR, etc. | Yes | | **Checklist Item** | Link to checklist item | No | | **Requirement** | Link to GR-03 requirement | No | | **Due Date** | When resolution is expected | Yes | | **Assigned To** | Person responsible for resolution | No | 4. Click **Create Finding** ### Finding Severity Guidelines | Severity | Definition | Response Time | | --------------- | ----------------------------------------------------- | ------------- | | **Critical** | Immediate risk to health, safety, or compliance | 24-48 hours | | **Major** | Significant non-compliance requiring prompt attention | 30 days | | **Minor** | Gap that should be addressed but not urgent | 90 days | | **Observation** | Improvement opportunity, not a true deficiency | Optional | ### Finding Status Workflow ``` Open → In Remediation → Resolved → Closed ``` *** ## Managing Corrective Actions ### Creating a Corrective Action 1. From a finding, click **Create Corrective Action** 2. Or navigate to **GR → Audits → Corrective Actions** → **New** 3. Complete the form: | Field | Description | Required | | --------------------- | ----------------------------------- | -------- | | **Finding** | Associated finding | Yes | | **Description** | What needs to be done | Yes | | **Responsible Party** | Who will complete it | Yes | | **Due Date** | Deadline for completion | Yes | | **Priority** | Critical, High, Medium, Low | Yes | | **Action Type** | Corrective, Preventive, Improvement | No | 4. Click **Create** ### Corrective Action Workflow ``` Pending → In Progress → Completed → Verified ``` ### Tracking Progress 1. Navigate to **GR → Audits → Corrective Actions** 2. Filter by: * Status (Pending, In Progress, Completed, Verified) * Priority * Responsible Party * Due Date * Audit 3. Review progress notes and updates ### Verifying Completion When a corrective action is marked "Completed": 1. Review the resolution notes 2. Examine attached evidence 3. Verify the finding is properly addressed 4. Update status to **Verified** 5. Close the associated finding if fully resolved *** ## Audit Readiness Assessment ### Pre-Audit Readiness Before scheduled audits, use readiness assessment: 1. Navigate to **GR → Audits → Readiness** 2. Click **Start Readiness Assessment** 3. Select the upcoming audit 4. System generates readiness checklist ### Readiness Dashboard | Metric | Description | | -------------------------- | -------------------------------------- | | **Readiness Score** | Percentage of items ready | | **Open Findings** | Unresolved findings from prior audits | | **Pending Actions** | Corrective actions not yet complete | | **Expiring Evidence** | Certifications/documents expiring soon | | **Training Gaps** | Required training not complete | | **Policy Acknowledgments** | Pending acknowledgments | ### Gap Analysis The readiness assessment identifies: * Missing or expired documentation * Outstanding corrective actions from prior audits * Incomplete training requirements * Pending policy acknowledgments * Compliance requirements at risk ### Preparing Evidence Packages 1. From the readiness dashboard, click **Prepare Evidence** 2. Select the regulatory requirements to include 3. System compiles: * Linked policies * Training records * Compliance check history * Supporting documents 4. Export as PDF or organize for auditor access *** ## Evidence Management ### Linking Evidence to Findings 1. Open the finding detail page 2. Go to the **Evidence** tab 3. Click **Add Evidence** 4. Select evidence type: * **Document**: Upload or select file * **Photo**: Upload image * **Policy**: Link from GR-01 * **Training**: Link from GR-02 * **Compliance Check**: Link from GR-03 5. Add description of how it addresses the finding 6. Click **Link** ### Evidence for Resolution When resolving findings, ensure evidence demonstrates: * What action was taken * When it was completed * Who completed it * How it prevents recurrence *** ## Audit Reporting ### Available Reports | Report | Description | | ---------------------------- | ------------------------------------ | | **Audit Summary** | Overview of audit with key metrics | | **Finding Report** | All findings with status and details | | **Corrective Action Status** | Progress on all corrective actions | | **Trend Analysis** | Finding patterns over time | | **Readiness Report** | Pre-audit readiness assessment | ### Generating Reports 1. Navigate to **GR → Audits** 2. Open the audit or click **Reports** 3. Select report type 4. Choose filters (date range, severity, status) 5. Export as PDF or CSV *** ## Notifications & Reminders ### Automated Reminders The system sends automatic reminders for: | Reminder | When Sent | Recipients | | ----------------------------- | -------------------- | ------------------------ | | **Audit Upcoming** | 14, 7, 3 days before | Lead auditor, team | | **Audit Starting** | Day of start | All team members | | **Finding Due** | 7, 3 days before | Assigned party | | **Finding Overdue** | When past due | Assigned + supervisor | | **Corrective Action Due** | 7, 3 days before | Responsible party | | **Corrective Action Overdue** | When past due | Responsible + supervisor | ### Configuring Reminders 1. Navigate to **GR → Settings** 2. Under **Audit Management**: * Toggle reminder types on/off * Adjust reminder intervals * Set escalation rules 3. Save settings ## Customizing Dropdown Values Audit type, scope, finding category, finding severity, and audit evidence type are powered by [picklists](/pf/picklists) under the `gr.audit.*` namespace. The platform ships defaults so audit forms work out of the box, but you can tailor the options to match your audit program and accrediting bodies. Common audit picklists to customize: | Picklist | Where it appears | | --------------------------- | ----------------------------------- | | `gr.audit.type` | New Audit → Audit type | | `gr.audit.scope` | New Audit → Scope | | `gr.audit.finding_category` | Audit finding form → Category | | `gr.audit.finding_severity` | Audit finding form → Severity | | `gr.audit.evidence_type` | Audit evidence form → Evidence type | To customize: 1. Navigate to **Settings → Picklists** (`/settings/picklists`). 2. Filter or search for the `gr.audit.*` picklist you want to edit. 3. If the picklist shows the **System** badge, select **Duplicate to Org** to create an editable copy. 4. Add, rename, reorder, or deactivate items as needed. 5. Save your changes — audit forms pick up the new values immediately. Status values (audit lifecycle, finding status) and numeric scoring scales stay fixed because they drive workflow logic. The full list of governance picklists and their default values is in the [Picklist Reference](/reference/picklists). *** ## Best Practices ### Audit Planning 1. **Create annual audit calendar** to plan ahead 2. **Rotate auditors** to get fresh perspectives 3. **Document scope clearly** to set expectations 4. **Allow adequate time** for thorough review 5. **Prepare staff** with advance notice ### During Audits 1. **Be objective** and document everything 2. **Verify with evidence** not just verbal confirmation 3. **Interview multiple people** to corroborate findings 4. **Document positives** as well as gaps 5. **Prioritize findings** by risk and impact ### After Audits 1. **Create corrective actions immediately** while findings are fresh 2. **Set realistic due dates** based on complexity 3. **Follow up regularly** on outstanding actions 4. **Verify resolutions** don't just accept completion claims 5. **Conduct root cause analysis** for recurring issues ### Common Pitfalls to Avoid * **Incomplete findings**: Document all details including evidence reviewed * **Vague corrective actions**: Be specific about what needs to be done * **Unrealistic timelines**: Allow enough time for proper resolution * **Missing verification**: Always verify before closing findings * **No trend analysis**: Look for patterns across audits *** ## Troubleshooting ### Common Issues | Issue | Solution | | ------------------------------ | ---------------------------------- | | Can't create audit | Verify compliance officer role | | Checklist not generating | Ensure requirements exist in GR-03 | | Can't assign corrective action | User must be in organization | | Reminders not sending | Check module settings | | Report not generating | Check date filters | ### Getting Help For technical issues: 1. Check this documentation 2. Contact your system administrator 3. Submit a support ticket *** ## Related Guides * [Audit User Guide](/gr/audit-user-guide) - For all staff * [Compliance Admin Guide](/gr/compliance-admin-guide) - Compliance tracking * [Policy Admin Guide](/gr/policy-admin-guide) - Policy management * [Training Admin Guide](/gr/training-admin-guide) - Training management * [GR Documentation Index](/gr/overview) - GR module overview *** **Need Help?** Contact your system administrator. # Audit Findings Source: https://docs.encoreos.io/gr/audit-findings Cross-audit list of all audit findings with status and severity filters, overdue tracking, and finding detail navigation. This screen aggregates findings from all audits in one filterable list at route `/gr/audits/findings`. ## Overview The Audit Findings page loads all findings across all audits using `useAuditFindingList`. Five stat cards show: Total, Open (clickable to filter), In Remediation, Resolved, and Overdue. Users can search by description or category and filter by status and severity using dropdown selects. Findings are listed with status badge (`AuditFindingStatusBadge`), severity badge (`AuditSeverityBadge`), due date, and overdue indication. Clicking a finding navigates to its associated audit detail or finding record. ## Who it's for Access follows your organization's role and module configuration. Any authenticated user with access to the GR module can view findings. ## Before you start * Audits with logged findings must exist. * The URL supports a `?status=` query parameter to pre-filter on page load. ## Steps Navigate to `/gr/audits/findings`. Check the Overdue stat card to identify findings past their due date. Use the search box to find findings by description or category. Use the Status and Severity dropdowns to narrow results. Click the **Open** stat card to quick-filter to open findings. Click a finding row to navigate to its associated audit detail page. ## Key concepts * **Open** — finding status `open`; typically requires action. * **In Remediation** — finding status `in_remediation`; corrective action is underway. * **Resolved** — finding status `resolved`; no further action required. * **Overdue** — finding has a `due_date` before today and status is not `resolved` or `closed`. ## Related Governance & Compliance core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/gr.tsx * src/cores/gr/pages/AuditFindingList.tsx * src/cores/gr/hooks/useAuditFinding.ts # Audit Management Source: https://docs.encoreos.io/gr/audit-management Browse, create, and manage audits — with upcoming-audit tracking, guided tour, and a tabbed detail view for checklist, findings, team, and evidence. This screen is the main list for managing all audits in the GR module at route `/gr/audits`. ## Overview The Audit Management page shows a quick-stats area (total audits, and upcoming-audits counts within 30 days). Users can search audits by text and filter by status and audit type via dropdowns. Audits are rendered as `AuditCard` components in a list; clicking a card navigates to `/gr/audits/:id`. Creating a new audit requires permission `gr.audits.manage` and opens `AuditFormDialog`. A guided tour (`auditManagementTour`) can be started via the help button. Error states display a sanitized error message via `sanitizeErrorMessage`. ## Who it's for Access follows your organization's role and module configuration. Creating a new audit requires permission `gr.audits.manage`. ## Before you start * To create an audit, you need the `gr.audits.manage` permission. * Have the audit title, type, scheduled date, and responsible team ready before creating. ## Finding an audit 1. Navigate to `/gr/audits` from the Governance & Compliance sidebar. 2. Use the text search and the Status/Type dropdowns to locate audits. 3. Click an audit card to navigate to its detail page. 4. Click **Create Audit** to open the creation dialog (requires `gr.audits.manage`). 5. Click the help button to start the audit management guided tour. **Upcoming audits** — audits with `scheduled_date` within the next 30 days, shown in the stats area. ## Viewing an audit The Audit Detail page (`/gr/audits/:id`) shows the audit title, status badge, type badge, and severity badge in the header, plus action buttons (Start Audit, Complete Audit, Edit, Add Finding). It renders five tabs: **Overview** (audit metadata), **Checklist** (audit checklist items via `useAuditChecklist`), **Findings** (findings via `useFindingsByAudit`), **Team** (team members via `useAuditTeam`), and **Evidence** (evidence documents via `useAuditEvidence`). Start and Complete Audit actions call the respective mutations (`startAudit`, `completeAudit`) and update the audit status. Creating audits requires `gr.audits.manage`; managing the audit's state is available to any user who can view it. Before you start: you must have the audit `id` from the Audit Management list (`/gr/audits`). To start or complete an audit, the audit must be in the appropriate status. 1. From `/gr/audits`, click an audit card to navigate to `/gr/audits/:id`. 2. Review the **Overview** tab: check audit type, severity, scheduled date, and responsible team. 3. Open the **Checklist** tab; review checklist items and update their status as the audit progresses. 4. Open the **Findings** tab to see existing findings or click **Add Finding** to log a new one via `AuditFindingFormDialog`. 5. Review assigned team members in the **Team** tab. 6. Open the **Evidence** tab to see documents linked to this audit. 7. Click **Start Audit** to change status to in-progress, or **Complete Audit** when all checklist items are done. **Audit status** — drives which action buttons are shown (Start vs. Complete). **Corrective actions** — findings with unresolved status feed the Corrective Actions list at `/gr/audits/corrective-actions`. ## Creating an audit The New Audit page (`/gr/audits/new`) renders `AuditSetupWizardPage`, a full-page wizard powered by `ModuleWizardRenderer` (PF-41). Requires `gr.audits.manage`. The wizard creates a `gr_audits` row (authoritative insert), `gr_audit_team_assignments` rows, and `gr_audit_checklists` rows. Wizard events are tracked via `trackWizardEvent` using template ID `'gr-audit-setup-wizard'`. On completion, navigation returns to `/gr/audits`. Before you start: ensure you have identified the audit scope, type, team members, and checklist items. 1. Navigate to `/gr/audits/new` or click the create audit action from `/gr/audits`. The wizard loads its steps from the `audit_setup` template. 2. Follow each step as prompted by the `ModuleWizardRenderer`. Steps cover audit identification, team assignment, and checklist configuration. 3. On the final review step, submit the wizard. The platform creates the `gr_audits` record, team assignments, and checklists in sequence. 4. After completion, you are navigated to `/gr/audits`. The new audit appears in the list. 5. Click the **Back** arrow at any point to return to `/gr/audits` without creating an audit. **ModuleWizardRenderer (PF-41)** — platform component that renders wizard steps from a `pf_wizard_templates` database record identified by `wizardType`. **audit\_setup** — wizard type identifier for audit creation. **gr\_audit\_team\_assignments / gr\_audit\_checklists** — ancillary records created alongside the primary `gr_audits` row. **trackWizardEvent** — telemetry utility that records step progression using PHI-free identifiers (IDs, step indices, timing only). ## Related Governance & Compliance core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/gr.tsx * src/cores/gr/pages/AuditList.tsx * src/cores/gr/pages/AuditDetail.tsx * src/cores/gr/hooks/useAuditList.ts * src/cores/gr/hooks/useAuditDetail.ts * src/cores/gr/hooks/useAuditMutation.ts * src/cores/gr/wizards/audit-setup/AuditSetupWizardPage.tsx * src/platform/permissions/constants.ts # Audit Preparation Source: https://docs.encoreos.io/gr/audit-preparation AI-powered audit readiness assessment that generates preparation recommendations for a selected upcoming audit. This screen uses AI to generate audit readiness recommendations for a selected audit at route `/gr/ai/audit-prep`. ## Overview The AI Audit Preparation page requires the AI Compliance Advisor to be enabled in GR settings. When disabled, it shows a blocked state with a link to settings. When enabled, users select an audit from a dropdown of all audits, then click **Run Preparation** to generate an AI readiness assessment. The prompt sent to the AI includes the audit title, type, status, and scheduled date. Previously generated preparation results are listed below the selector using `useAIAuditPrepList`. An AI chat panel is accessible via the **Ask AI Advisor** button. ## Who it's for Access follows your organization's role and module configuration. AI Compliance must be enabled in GR settings. ## Before you start * AI Compliance must be enabled in GR settings (`/gr/settings`). * At least one audit must exist to select for preparation. ## Steps Go to `/gr/ai/audit-prep`. If the AI Compliance Advisor is disabled, click **Go to Settings** and enable it. Use the audit dropdown to choose the audit you are preparing for. Click **Run Preparation** to generate an AI readiness assessment for the selected audit. Review the preparation results listed below the selector. Click **Ask AI Advisor** to open the compliance chat panel for follow-up questions. ## Key concepts * **AI Compliance Advisor** — must be enabled in GR settings before this screen is functional. * **Preparation prompt** — constructed from audit title, type, status, and scheduled date; passed to the AI generation function. * **Prep results** — stored results returned by `useAIAuditPrepList`, optionally filtered by the selected audit ID. ## Related Governance & Compliance core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/gr.tsx * src/cores/gr/pages/AIAuditPrep.tsx * src/cores/gr/hooks/useAIComplianceEnabled.ts * src/cores/gr/ai/index.ts * src/cores/gr/hooks/useAuditList.ts # Audit Readiness Source: https://docs.encoreos.io/gr/audit-readiness Dashboard showing an overall readiness score and per-category readiness breakdown for upcoming audits within 90 days. This screen assesses readiness for upcoming audits using a scored dashboard at route `/gr/audits/readiness`. ## Overview The Audit Readiness page displays a circular gauge showing the Overall Readiness Score as a percentage, colored success (≥90%), warning (≥70%), or destructive otherwise. Below it, per-category readiness scores are shown as labeled progress bars. The screen also shows a list of upcoming audits (within 90 days) using `useUpcomingAudits(90)`, each displaying type badge and scheduled date. Area navigation cards link to related sections (requirements, audit management). ## Who it's for Access follows your organization's role and module configuration. Any authenticated user with access to the GR module can view this screen. ## Before you start * Compliance requirements and audit records must exist to generate a meaningful readiness score. ## Steps Navigate to `/gr/audits/readiness`. Check the circular gauge for the overall readiness percentage and color-coded health indicator. Review the per-category progress bars to identify which areas are below target. Review the list of audits scheduled within the next 90 days. Use the navigation cards to jump to the requirements library or audit list to address gaps. ## Key concepts * **Overall Readiness Score** — percentage computed by `useAuditReadiness`; based on requirement compliance and documentation. * **By category** — readiness broken down by compliance category from `byCategory` array. * **Upcoming audits** — audits with `scheduled_date` within 90 days. ## Related Governance & Compliance core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/gr.tsx * src/cores/gr/pages/AuditReadiness.tsx * src/cores/gr/hooks/useAuditReadiness.ts * src/cores/gr/hooks/useAuditList.ts # GR Audit Management - User Guide Source: https://docs.encoreos.io/gr/audit-user-guide The Audit Management module helps your organization prepare for, conduct, and track the results of internal and external audits. This guide covers how to under… ## Overview The Audit Management module helps your organization prepare for, conduct, and track the results of internal and external audits. This guide covers how to understand audits, view findings, and manage corrective actions assigned to you. *** ## Getting Started ### Accessing Audit Information 1. Navigate to **GR → Audits** from the main menu 2. View upcoming and recent audits affecting your site or department 3. Check your assigned corrective actions on the dashboard ### What You'll See | Section | Description | | ------------------------- | -------------------------------------------------- | | **Upcoming Audits** | Audits scheduled for your site in the next 30 days | | **Active Audits** | Audits currently in progress | | **Recent Findings** | Findings from recent audits | | **My Corrective Actions** | Actions assigned to you for resolution | *** ## Understanding Audit Types | Type | Description | Who Conducts | | ----------------- | ------------------------------------ | ---------------------------- | | **Internal** | Self-assessment by your organization | Internal audit team | | **External** | Third-party evaluation | External auditors | | **Regulatory** | Government agency inspection | State/Federal inspectors | | **Accreditation** | Standards body evaluation | CARF, Joint Commission, etc. | | **Financial** | Financial records review | CPAs, external accountants | | **Operational** | Process and procedure review | Internal or external teams | *** ## Understanding Audit Status | Status | Meaning | | --------------- | ---------------------------------------- | | **Planned** | Audit is scheduled but not yet started | | **In Progress** | Audit is actively being conducted | | **Completed** | Audit has finished, findings documented | | **Cancelled** | Audit was cancelled and will not proceed | *** ## Understanding Finding Severity When auditors identify issues, they are classified by severity: | Severity | Meaning | Impact | | --------------- | --------------------------------------------------- | -------------------------------- | | **Critical** | Immediate risk to safety, compliance, or operations | Requires immediate action | | **Major** | Significant issue requiring prompt attention | Must be addressed within 30 days | | **Minor** | Smaller issue that should be corrected | Address within 90 days | | **Observation** | Opportunity for improvement | Optional but recommended | *** ## Understanding Finding Status | Status | Meaning | | ------------------ | ----------------------------------------------------- | | **Open** | Finding identified, corrective action not yet started | | **In Remediation** | Actively being addressed | | **Resolved** | Issue has been fixed, pending verification | | **Closed** | Finding fully resolved and verified | *** ## Your Role in Audits ### Before an Audit * **Review relevant policies** assigned to you * **Complete required training** before the audit date * **Gather documentation** if requested by your supervisor * **Know your responsibilities** for audit day ### During an Audit * **Be available** if auditors request to speak with you * **Answer honestly** when interviewed * **Provide requested documents** through proper channels * **Follow normal procedures** - auditors want to see typical operations ### After an Audit * **Review findings** that affect your area * **Complete assigned corrective actions** on time * **Implement changes** as directed by supervisors * **Report progress** on your assigned actions *** ## Managing Your Corrective Actions ### Viewing Your Actions 1. Navigate to **GR → Audits → Corrective Actions** 2. Filter by **Assigned to Me** to see your tasks 3. Or check the GR Dashboard for pending actions ### Corrective Action Status | Status | Meaning | | --------------- | ----------------------------------------- | | **Pending** | Action created but not yet started | | **In Progress** | You are actively working on it | | **Completed** | You have finished the action | | **Verified** | Compliance officer has verified your work | ### Updating Your Progress 1. Click on the corrective action 2. Click **Update Status** or **Add Progress Note** 3. Describe what you've done 4. Attach evidence if applicable 5. When finished, mark as **Completed** ### Evidence for Corrective Actions Provide proof that the issue is resolved: | Evidence Type | Examples | | -------------------- | --------------------------------------- | | **Documents** | Updated policies, procedures, forms | | **Photos** | Before/after images of physical changes | | **Training Records** | Completed training certificates | | **Attestations** | Signed acknowledgments of changes | *** ## Audit Notifications ### Types of Notifications You May Receive | Notification | When | Action Needed | | ------------------------------ | ----------------------------- | -------------------------- | | **Audit Scheduled** | Audit announced for your site | Be prepared | | **Corrective Action Assigned** | You're assigned a task | Review and begin work | | **Due Date Reminder** | 7 and 3 days before due | Complete your action | | **Overdue Alert** | Past due date | Immediate attention needed | | **Verification Complete** | Your action was verified | Informational | ### Responding to Notifications 1. Click the notification to see details 2. Review the corrective action or finding 3. Take required action before the due date 4. Update progress in the system *** ## Audit Readiness ### Self-Assessment Before scheduled audits, you may be asked to: 1. **Complete readiness checklists** for your area 2. **Verify documentation** is current and accessible 3. **Confirm training** is up to date 4. **Report any concerns** to your supervisor ### Preparing Your Area * Keep documentation organized and accessible * Ensure posted information is current * Follow all policies and procedures consistently * Address known issues before the audit *** ## FAQ ### I was assigned a corrective action but I don't understand it Contact your supervisor or the compliance officer who created the action. They can clarify expectations and provide guidance. ### The due date for my corrective action is unrealistic Contact your supervisor immediately. Due dates can sometimes be extended if there's a valid reason, but this must be approved before the due date passes. ### I completed my corrective action but it still shows "Pending" Make sure you updated the status in the system: 1. Open the corrective action 2. Update status to **Completed** 3. Add completion notes 4. Attach evidence if required The compliance officer will then verify and close it. ### How are audits different from compliance checks? | Audits | Compliance Checks | | ------------------------- | ------------------------- | | Comprehensive review | Single requirement review | | Conducted periodically | Ongoing monitoring | | Multiple findings at once | One status per check | | Often by external parties | Usually internal | ### Who can I ask for help with audit preparation? * Your direct supervisor * Site compliance officer * Organization compliance administrator * Department lead for your area *** ## Related Guides * [Audit Admin Guide](/gr/audit-admin-guide) - For compliance officers * [Compliance User Guide](/gr/compliance-user-guide) - Understanding compliance requirements * [Policy User Guide](/gr/policy-user-guide) - Policy acknowledgments * [Training User Guide](/gr/training-user-guide) - Training requirements * [GR Documentation Index](/gr/overview) - GR module overview *** **Need Help?** Contact your compliance officer or system administrator. # CEU Transcript Source: https://docs.encoreos.io/gr/ceu-transcript Personal continuing education unit transcript showing completed training, credits earned by category, with date-range filtering and CSV export. This screen displays the current user's CEU (Continuing Education Unit) transcript at route `/gr/ceu-transcript`. ## Overview The CEU Transcript page fetches the current user's transcript via `useMyCEUTranscript` for a configurable date range (defaults to current calendar year). It displays: total credits earned, a breakdown of credits by category, and a tabular list of all completions with course title, completion date, category, and credits earned. Users can adjust the date range using calendar date pickers for start and end date. An **Export CSV** button downloads the filtered completions as a CSV file. ## Who it's for Access follows your organization's role and module configuration. Each user sees only their own transcript (loaded via `useMyCEUTranscript`). ## Before you start * Training completions with CEU credits must be recorded to appear on the transcript. * The default date range is the current calendar year (January 1 to December 31). ## Steps Navigate to `/gr/ceu-transcript`. Use the start-date and end-date calendar pickers to change the reporting period. Check the credits breakdown by category to see how credits are distributed. Scroll through the completion list showing course, completion date, category, and credits. Click **Export CSV** to download completions as `ceu-transcript.csv`. ## Key concepts * **CEU credits** — continuing education units earned from completed training; totaled as `credits.total` and broken down by `credits.byCategory`. * **Period** — the transcript is filtered by `periodStartDate` and `periodEndDate`; defaults to the current year. * **CSV export** — includes: course title, completion date, category, credits earned. ## Related Governance & Compliance core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/gr.tsx * src/cores/gr/pages/CEUTranscript.tsx * src/cores/gr/hooks/useCEUTranscript.ts # GR Compliance Tracking - Admin Guide Source: https://docs.encoreos.io/gr/compliance-admin-guide This guide covers how to configure and manage regulatory compliance tracking, including managing regulatory bodies and requirements, performing compliance chec… ## Overview This guide covers how to configure and manage regulatory compliance tracking, including managing regulatory bodies and requirements, performing compliance checks, collecting evidence, and tracking remediations. > **Required Role:** Compliance Officer or Organization Admin *** ## Initial Setup ### 1. Configure Module Settings 1. Navigate to **GR → Settings** 2. Configure Compliance Tracking settings: * Enable/disable compliance reminders * Set default check reminder days (30, 14, 7 before due) * Set remediation reminder frequency 3. Save your settings ### 2. Set Up Regulatory Bodies Before adding requirements, define the regulatory bodies your organization must comply with: 1. Navigate to **GR → Compliance → Requirements** 2. Click **Manage Regulatory Bodies** 3. Add relevant bodies (e.g., CARF, State Licensing, OSHA) 4. Include contact information and website for reference ### 3. Import or Create Requirements Add regulatory requirements: * **Manual entry**: Create requirements one by one * **Bulk import**: Import from a CSV template * **Templates**: Use industry-standard requirement templates *** ## Managing Regulatory Bodies ### Creating a Regulatory Body 1. Navigate to **GR → Compliance → Requirements** 2. Click **Manage Regulatory Bodies** → **Add Body** 3. Fill in required information: * **Name**: Official name (e.g., "CARF International") * **Abbreviation**: Short code (e.g., "CARF") * **Type**: Federal, State, Accreditation, Internal * **Website**: Reference URL * **Contact Info**: Email or phone 4. Click **Save** ### Regulatory Body Types | Type | Description | Examples | | ----------------- | ----------------------------------- | ---------------------- | | **Federal** | U.S. federal agency requirements | OSHA, CMS, HHS | | **State** | State licensing and regulations | State Licensing Board | | **Accreditation** | Voluntary accreditation standards | CARF, Joint Commission | | **Internal** | Organization policies and standards | Internal Quality | *** ## Managing Requirements ### Creating a Requirement New Compliance Requirement wizard on the Basic Information step 1. Navigate to **GR → Compliance → Requirements** 2. Click **New Requirement** 3. Complete the form: | Field | Description | Required | | ------------------- | ---------------------------------------- | -------- | | **Title** | Clear, descriptive name | Yes | | **Description** | Detailed explanation | Yes | | **Regulatory Body** | Which body requires this | Yes | | **Category** | Grouping (Clinical, Safety, HR, etc.) | Yes | | **Priority** | Critical, High, Medium, Low | Yes | | **Check Frequency** | How often to verify compliance | Yes | | **Citation** | Reference code (e.g., "29 CFR 1910.134") | No | | **Effective Date** | When requirement takes effect | No | | **Expiration Date** | When requirement expires (if applicable) | No | | **Sites** | Which sites this applies to | No | 4. Click **Save** ### Requirement Categories | Category | Covers | | ------------------ | --------------------------------------------------------- | | **Clinical** | Patient care, treatment protocols, clinical documentation | | **Safety** | Physical safety, emergency procedures, hazard prevention | | **HR** | Employment, training, credentialing | | **Administrative** | Record keeping, reporting, governance | | **Physical Plant** | Facilities, equipment, accessibility | | **Quality** | Performance improvement, outcomes measurement | ### Check Frequency Options | Frequency | When to Use | | --------------- | ---------------------------------------------------- | | **Monthly** | Critical requirements needing frequent verification | | **Quarterly** | High-priority items with regular review needs | | **Semi-Annual** | Standard requirements | | **Annual** | Most requirements, aligned with accreditation cycles | | **As Needed** | Requirements triggered by specific events | *** ## Performing Compliance Checks ### Creating a Compliance Check 1. Navigate to **GR → Compliance → Requirements** 2. Select the requirement to check 3. Click **Record Check** or use the quick action menu 4. Complete the check form: | Field | Description | | ------------------ | ------------------------------------------ | | **Check Date** | When the check was performed | | **Status Result** | Compliant, Non-Compliant, At Risk, Pending | | **Performed By** | Who conducted the check | | **Notes** | Observations, findings, comments | | **Evidence** | Link supporting documentation | | **Next Check Due** | Auto-calculated or manually set | 5. Click **Save Check** ### Check Status Results | Status | When to Use | Follow-up Required | | ------------------ | -------------------------------------- | -------------------------- | | **Compliant** | All criteria met, evidence sufficient | None - schedule next check | | **Non-Compliant** | Gap identified, requirement not met | Create remediation | | **At Risk** | Minor issues or evidence expiring soon | Monitor closely | | **Pending Review** | Awaiting additional information | Follow up for info | | **Not Applicable** | Requirement doesn't apply | Document reason | ### Best Practices for Compliance Checks 1. **Document everything**: Add detailed notes for each check 2. **Link evidence**: Attach proof of compliance 3. **Be consistent**: Use same criteria across checks 4. **Follow up promptly**: Create remediations immediately for gaps 5. **Verify evidence validity**: Check expiration dates *** ## Collecting and Managing Evidence ### Types of Evidence | Type | Source | How to Link | | --------------- | ------------------------- | -------------------------- | | **Policy** | GR-01 Policy Management | Select from policy library | | **Training** | GR-02 Training Management | Select completed training | | **Document** | Uploaded files | Upload or link document | | **Attestation** | Manual declaration | Create attestation record | ### Linking Evidence to Requirements 1. Open the requirement detail page 2. Go to the **Evidence** tab 3. Click **Link Evidence** 4. Select evidence type and choose items: * **Policy**: Search and select from approved policies * **Training**: Select training course completions * **Document**: Upload or select existing document 5. Add notes explaining relevance 6. Click **Link** ### Evidence Management Tips 1. **Maintain current evidence**: Remove expired or outdated items 2. **Cross-link where appropriate**: One policy may satisfy multiple requirements 3. **Track expiration dates**: Set reminders for expiring certifications 4. **Use descriptive notes**: Explain how evidence satisfies the requirement ### Automated Evidence Collection Encore OS can generate compliance evidence automatically when staff activity proves a requirement is being met. Once you link a policy or incident category to a regulatory requirement, the platform creates an evidence record on the requirement every time a qualifying event occurs — no manual upload needed. | Event | Becomes evidence for | | ------------------------------------------- | ----------------------------------------------------- | | A staff member acknowledges a linked policy | Each requirement the policy is linked to | | A linked incident is resolved | Each requirement the incident's category is linked to | | A staff member completes linked training | Each requirement the training is linked to | Automated evidence rows include the source record ID and a timestamp, so you can trace every entry back to the underlying activity. Re-runs of the same event are skipped — you won't see duplicate evidence on the same requirement. **To enable automated evidence:** 1. Open the policy, incident category, or training course you want to use as evidence. 2. Open the **Regulatory Requirements** (or **Linked Requirements**) section. 3. Select the regulatory requirements this evidence should satisfy. 4. Save. From this point forward, qualifying acknowledgments, resolutions, and completions generate evidence on the linked requirements. Use the **Evidence Coverage** and **Evidence Gaps** cards on the [Compliance Dashboard](/gr/compliance-dashboard) to spot requirements that still need links. Linking high-volume policies and training courses to broad requirements is usually the fastest way to close gaps. Manual evidence (uploaded documents, attestations) continues to work alongside automated evidence — both appear on the requirement's Evidence tab. *** ## Customizing Dropdown Values Compliance check types, evidence types, and remediation severities are powered by [picklists](/pf/picklists) under the `gr.*` namespace. Audits, incidents, risks, contracts, QI projects, procedures, and training use the same pattern. The platform ships defaults so forms work out of the box, but you can tailor the options to match your organization's terminology and regulatory bodies. Common compliance-related picklists to customize: | Picklist | Where it appears | | ------------------------------------ | ---------------------------------- | | `gr.compliance.check_type` | Compliance check form → Check type | | `gr.compliance.evidence_type` | Link Evidence → Evidence type | | `gr.compliance.remediation_severity` | Remediation form → Severity | To customize: 1. Navigate to **Settings → Picklists** (`/settings/picklists`). 2. Filter or search for the `gr.compliance.*` picklist you want to edit. 3. If the picklist shows the **System** badge, select **Duplicate to Org** to create an editable copy. 4. Add, rename, reorder, or deactivate items as needed. 5. Save your changes — compliance forms pick up the new values immediately. A small number of fields stay fixed because they drive workflow logic — for example, compliance **status** (Compliant, Non-Compliant, At Risk, Pending) and check **result** are not org-configurable. If you don't see a picklist for a dropdown, the values are intentionally fixed. The full list of governance picklists and their default values is in the [Picklist Reference](/reference/picklists). *** ## Managing Remediations ### Creating a Remediation When a compliance check identifies a gap: 1. From the check result, click **Create Remediation** 2. Or navigate to **GR → Compliance → Remediation** → **New** 3. Complete the form: | Field | Description | | --------------- | --------------------------------- | | **Requirement** | Which requirement has the gap | | **Description** | Detailed description of the issue | | **Priority** | Critical, High, Medium, Low | | **Assigned To** | Person responsible for resolution | | **Due Date** | Deadline for resolution | | **Action Plan** | Steps to resolve the issue | 4. Click **Create** ### Remediation Workflow ``` Open → In Progress → Resolved → Verified → Closed ↓ Escalated (if past due) ``` ### Tracking Remediation Progress 1. Navigate to **GR → Compliance → Remediation** 2. View all active remediations 3. Filter by status, priority, or assignee 4. Click on a remediation to update: * Add progress notes * Update status * Attach evidence of resolution * Request verification ### Resolving a Remediation 1. Open the remediation 2. Update status to **Resolved** 3. Add resolution notes explaining what was done 4. Attach evidence if applicable 5. Request verification from compliance officer ### Verifying Resolution 1. Review the resolution notes and evidence 2. Confirm the issue is fully addressed 3. Update status to **Verified** 4. The requirement will update to show compliance 5. Close the remediation *** ## Using the Compliance Dashboard ### Dashboard Metrics | Metric | Description | | --------------------------- | ------------------------------------- | | **Overall Compliance Rate** | % of requirements currently compliant | | **Compliant** | Count of compliant requirements | | **Non-Compliant** | Count of requirements with gaps | | **At Risk** | Requirements needing attention soon | | **Pending** | Awaiting check or review | ### Filtering Dashboard Data Filter by: * **Regulatory Body**: View specific agency requirements * **Category**: Focus on Clinical, Safety, etc. * **Site**: See site-specific compliance * **Priority**: Focus on critical items ### Dashboard Widgets | Widget | Shows | | --------------------- | ---------------------------------- | | **Status Summary** | Donut chart of compliance status | | **Upcoming Checks** | Checks due in next 30 days | | **Open Remediations** | Active remediation items | | **Trend Chart** | Compliance rate over time | | **By Category** | Compliance by requirement category | *** ## Compliance Reports ### Available Reports | Report | Description | | ---------------------- | ------------------------------------------ | | **Compliance Summary** | Overall compliance status by body/category | | **Requirement Status** | Detailed status of all requirements | | **Check History** | Log of all compliance checks | | **Remediation Log** | Active and closed remediations | | **Evidence Report** | Evidence linked to requirements | | **Audit Preparation** | Comprehensive audit-ready report | ### Generating Reports 1. Navigate to **GR → Compliance** 2. Click **Reports** or the export icon 3. Select report type 4. Choose filters (date range, body, category) 5. Export as PDF or CSV *** ## Notifications & Reminders ### Automated Reminders The system sends automatic reminders for: | Reminder | When Sent | Recipients | | ----------------------- | ------------------------- | ---------------------------- | | **Check Due** | 30, 14, 7 days before due | Assigned compliance officers | | **Remediation Due** | 14, 7 days before due | Assigned personnel | | **Remediation Overdue** | When past due date | Assignee + supervisor | | **Evidence Expiring** | 60, 30 days before | Compliance officers | ### Configuring Reminders 1. Navigate to **GR → Settings** 2. Under **Compliance Tracking**: * Toggle reminders on/off * Adjust reminder intervals * Set escalation rules 3. Save settings *** ## Best Practices ### Audit Preparation 1. **Regular reviews**: Conduct checks on schedule 2. **Current evidence**: Ensure all evidence is valid and linked 3. **Clean remediations**: Close resolved items 4. **Document everything**: Maintain detailed notes 5. **Run audit report**: Generate comprehensive report before audits ### Ongoing Maintenance 1. **Weekly review**: Check upcoming due dates 2. **Monthly dashboard review**: Assess overall compliance rate 3. **Quarterly audit**: Review all requirements and evidence 4. **Annual update**: Review requirements for regulatory changes ### Common Pitfalls to Avoid * **Missing check dates**: Set reminders and stick to schedule * **Stale evidence**: Regularly review and update linked evidence * **Unresolved remediations**: Follow up on overdue items * **Incomplete documentation**: Always add detailed notes *** ## Troubleshooting ### Common Issues | Issue | Solution | | ------------------------- | ------------------------------- | | Can't create requirements | Verify compliance officer role | | Evidence not linking | Ensure evidence type is correct | | Reminders not sending | Check module settings | | Dashboard not updating | Refresh page, check filters | | Can't assign remediation | User must be in organization | ### Getting Help For technical issues: 1. Check this documentation 2. Contact your system administrator 3. Submit a support ticket *** ## Related Guides * [Compliance User Guide](/gr/compliance-user-guide) - For all staff * [Policy Admin Guide](/gr/policy-admin-guide) - Policy management * [Training Admin Guide](/gr/training-admin-guide) - Training management * [GR Documentation Index](/gr/overview) - GR module overview *** **Need Help?** Contact your system administrator. # Governance Compliance Dashboard Source: https://docs.encoreos.io/gr/compliance-dashboard Main compliance dashboard showing overall compliance score, requirement counts, upcoming deadlines, and remediation summary. This screen is the primary compliance overview for the GR module at route `/gr/compliance`. ## Overview The Compliance Dashboard displays four primary stat cards (Total Requirements, Compliant, Non-Compliant, Pending) and four secondary cards (Overdue Checks, Upcoming \[30d], Open Remediations, Training Compliance). It fetches data from `useComplianceDashboard`, `useUpcomingDeadlines(30)`, and `useRemediationSummary`. The Overdue Checks card navigates to the requirements list with a `check_due=overdue` filter. The Open Remediations card navigates to `/gr/compliance/remediation`. Area navigation cards link to Requirements, Audits, Remediation, and Training sections. The dashboard also surfaces two evidence-focused cards powered by `useComplianceEvidenceCoverage`: * **Evidence Coverage** — per-category breakdown of requirements that have at least one piece of linked evidence, expressed as a coverage percentage. * **Evidence Gaps** — a priority-sorted list of requirements with no evidence linked, so you can close the highest-priority gaps first. ## Who it's for Access follows your organization's role and module configuration. Any authenticated user with access to the GR module can view this dashboard. ## Before you start * Compliance requirements must exist and be configured with check due dates. ## Steps Navigate to `/gr/compliance`. Check the overall compliance rate shown in the primary stats. Click the Non-Compliant card or navigate to Requirements to see which items need attention. Click the **Overdue Checks** card to navigate to requirements filtered by overdue status. Click the **Open Remediations** card to go to `/gr/compliance/remediation` to manage open remediation items. Use the **Evidence Coverage** card to see which categories are well-documented and the **Evidence Gaps** card to prioritize requirements that still need supporting evidence. ## Key concepts * **Compliance Score** — overall compliance rate as a percentage from `complianceStats.complianceScore`. * **Overdue Checks** — requirements with check dates in the past, surfaced via `check_due=overdue` query parameter. * **Open Remediations** — remediation items in an open state from `remediationSummary`. * **Evidence Coverage** — percentage of requirements per category with at least one piece of linked evidence. * **Evidence Gaps** — priority-sorted list of requirements that currently have no evidence linked. ## Related Governance & Compliance core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/gr.tsx * src/cores/gr/pages/ComplianceDashboard.tsx * src/cores/gr/hooks/useComplianceDashboard.ts * src/cores/gr/hooks/useComplianceEvidenceCoverage.ts # GR Compliance Tracking - User Guide Source: https://docs.encoreos.io/gr/compliance-user-guide The Compliance Tracking module helps your organization monitor regulatory compliance, track evidence of compliance, and address non-compliance issues. This gui… ## Overview The Compliance Tracking module helps your organization monitor regulatory compliance, track evidence of compliance, and address non-compliance issues. This guide covers how to view compliance status, understand requirements, and participate in compliance activities. *** ## Getting Started ### Accessing the Compliance Dashboard 1. Navigate to **GR → Compliance** from the main menu 2. The Compliance Dashboard shows overall compliance metrics 3. View status breakdowns by regulatory body, category, and priority ### What You'll See | Section | Description | | --------------------------- | ---------------------------------------------------- | | **Overall Compliance Rate** | Percentage of requirements currently in compliance | | **Status Breakdown** | Counts by Compliant, Non-Compliant, At Risk, Pending | | **Upcoming Checks** | Requirements due for compliance check soon | | **Recent Remediations** | Non-compliance issues being addressed | *** ## Understanding Compliance Status ### Status Types | Status | Meaning | Icon | | ------------------ | ---------------------------------------------- | --------- | | **Compliant** | Requirement is met with valid evidence | ✅ Green | | **Non-Compliant** | Requirement is not met, remediation needed | ❌ Red | | **At Risk** | Compliance check due soon or evidence expiring | ⚠️ Yellow | | **Pending Review** | Awaiting compliance check or review | 🔄 Blue | | **Not Applicable** | Requirement does not apply to your site | ➖ Gray | ### Priority Levels | Priority | Description | | ------------ | ----------------------------------------------------------- | | **Critical** | Regulatory requirements with severe consequences if not met | | **High** | Important requirements with significant impact | | **Medium** | Standard compliance requirements | | **Low** | Nice-to-have or internal best practices | *** ## Viewing Regulatory Requirements ### Requirements Library 1. Navigate to **GR → Compliance → Requirements** 2. Browse all regulatory requirements for your organization 3. Use filters to narrow by regulatory body, category, or status ### Requirement Details Click on any requirement to see: * **Description**: What the requirement covers * **Regulatory Body**: Which agency/standard requires it (e.g., CARF, State, OSHA) * **Category**: Grouping (Clinical, Safety, HR, etc.) * **Check Frequency**: How often compliance is verified * **Current Status**: Latest compliance check result * **Evidence**: Documents, policies, or training linked as proof *** ## Evidence of Compliance ### What Counts as Evidence? Evidence proves that your organization meets a requirement: | Evidence Type | Examples | | -------------------- | ------------------------------------------- | | **Policies** | Written policies addressing the requirement | | **Training Records** | Completed training courses for staff | | **Documents** | Certificates, inspection reports, licenses | | **Attestations** | Signed acknowledgments or declarations | ### How Evidence Links to Requirements 1. Compliance officers link evidence to requirements 2. Each piece of evidence shows when it was added and who added it 3. Evidence may have expiration dates (e.g., certifications) 4. When evidence expires, the requirement may move to "At Risk" *** ## Your Role in Compliance ### For All Employees * **Complete assigned training** on time to maintain compliance * **Acknowledge required policies** before due dates * **Follow procedures** outlined in organizational policies * **Report concerns** to your supervisor or compliance officer ### Site-Specific Requirements Some requirements apply only to specific sites: * Your site's compliance officer manages these * You may see site-specific training or policies assigned to you * Different sites may have different regulatory requirements *** ## Compliance Notifications ### Types of Notifications | Notification | When | Who Receives | | ------------------------ | ------------------------------- | ---------------------------- | | **Check Due** | Compliance check is due soon | Assigned compliance officers | | **Check Complete** | Compliance status updated | Stakeholders | | **Remediation Created** | Non-compliance issue identified | Assigned personnel | | **Remediation Resolved** | Issue has been fixed | Stakeholders | ### Staying Informed 1. Check your notifications regularly (bell icon in header) 2. Click notifications to go directly to related items 3. Complete any assigned tasks before due dates *** ## Understanding Remediations ### What is a Remediation? When a compliance check finds a gap: 1. A **remediation** is created to track fixing the issue 2. Someone is assigned to address it 3. A due date is set for resolution 4. Progress is tracked until resolved ### Remediation Status | Status | Meaning | | --------------- | ------------------------------------------ | | **Open** | Issue identified, work not yet started | | **In Progress** | Actively being addressed | | **Resolved** | Issue has been fixed | | **Verified** | Resolution confirmed by compliance officer | | **Closed** | Fully resolved and closed | *** ## FAQ ### Why is my site showing "At Risk" status? This usually means: * A compliance check is due soon * Evidence is expiring soon * A remediation is still in progress Contact your compliance officer for details. ### I completed training but compliance still shows a gap * Allow time for the system to update * Ensure the training is properly recorded as complete * The training must be linked as evidence to the specific requirement * Contact your compliance officer if the issue persists ### Who do I contact about compliance concerns? Reach out to your: 1. Direct supervisor 2. Site compliance officer 3. Organization compliance administrator ### How often is compliance checked? It depends on the requirement: * **Critical requirements**: Monthly or quarterly * **Standard requirements**: Annually * **Low priority**: As needed Check the requirement details for specific frequency. *** ## Related Guides * [Compliance Admin Guide](/gr/compliance-admin-guide) - For compliance officers * [Policy User Guide](/gr/policy-user-guide) - Policy acknowledgments * [Training User Guide](/gr/training-user-guide) - Training requirements * [GR Documentation Index](/gr/overview) - GR module overview *** **Need Help?** Contact your compliance officer or system administrator. # Contract Management Admin Guide Source: https://docs.encoreos.io/gr/contract-admin-guide This guide covers administrative functions for Contract Management, including creating contracts, managing approvals, tracking obligations, and configuring ale… ## Overview This guide covers administrative functions for Contract Management, including creating contracts, managing approvals, tracking obligations, and configuring alert settings. *** ## Creating Contracts ### Create a New Contract New Contract wizard on the Contract Details step 1. Navigate to **GR → Contracts** 2. Click **New Contract** button 3. Complete the contract form: #### Basic Information * **Contract Number**: Unique identifier (auto-generated if enabled) * **Contract Name**: Descriptive name * **Contract Type**: Vendor, Service, Lease, Employment, Compliance, Other * **Description**: Detailed description of contract purpose #### Parties * **External Party Name**: Vendor, client, or partner name * **External Party Type**: Vendor, Client, Partner, Government, Other * **Internal Party**: Your organization contact (optional) #### Dates * **Effective Date**: When contract begins * **Expiration Date**: When contract ends * **Renewal Type**: Fixed term, Auto-renew, Evergreen * **Auto-Renew Notice Days**: Days before expiration to send renewal notice #### Financial Terms * **Contract Value**: Total contract value * **Currency**: USD (default) * **Payment Terms**: Net 30, Net 60, etc. * **Payment Frequency**: Monthly, Quarterly, Annual, One-time #### Settings * **Site**: Assign to specific location (optional) * **Alert Days**: When to send expiration alerts (e.g., 90, 60, 30) * **Is Confidential**: Restrict visibility * **Tags**: Add searchable tags 4. Click **Save as Draft** or **Submit for Approval** *** ## Contract Lifecycle Management ### Contract Status Workflow ``` Draft → Pending Approval → Active → Expiring Soon → Expired ↓ ↓ Rejected Terminated / Renewed ``` ### Approval Process 1. Contract creator submits for approval 2. Authorized approvers receive notification 3. Approver reviews and either: * **Approves**: Contract becomes Active on effective date * **Rejects**: Returns to Draft with comments 4. Creator can revise and resubmit ### Renewing Contracts 1. Open the contract detail page 2. Click **Renew** button 3. Enter new expiration date and any term changes 4. A new contract version is created, linked to the original ### Terminating Contracts 1. Open the contract detail page 2. Click **Terminate** button 3. Enter termination date and reason 4. Affected obligations are automatically cancelled *** ## Managing Obligations ### Add an Obligation 1. Open contract detail page 2. Select **Obligations** tab 3. Click **Add Obligation** 4. Complete the form: * **Title**: Brief description * **Description**: Detailed requirements * **Type**: Deliverable, Payment, Report, Review, Compliance, Other * **Due Date**: When obligation must be fulfilled * **Is Recurring**: Enable for repeating obligations * **Responsible Party**: Assign to staff member (optional) * **Payment Amount**: If applicable ### Track Obligation Progress 1. Click on obligation row to open detail 2. Update status: Pending → In Progress → Completed 3. Add completion notes and evidence 4. Mark as completed when fulfilled ### Recurring Obligations For recurring obligations: * Set recurrence pattern (daily, weekly, monthly) * System automatically creates new instances * Each instance tracks independently *** ## Managing Milestones ### Add a Milestone 1. Open contract detail page 2. Select **Milestones** tab 3. Click **Add Milestone** 4. Complete the form: * **Name**: Milestone title * **Description**: What this milestone represents * **Target Date**: Expected completion date * **Dependencies**: Other milestones that must complete first (optional) ### Track Milestone Progress 1. Update status as work progresses 2. Add completion notes when achieved 3. System tracks actual vs. target dates *** ## Managing Amendments ### Record an Amendment 1. Open contract detail page 2. Select **Amendments** tab 3. Click **Add Amendment** 4. Complete the form: * **Amendment Number**: Sequential number * **Title**: Brief description of change * **Description**: Full details of amendment * **Effective Date**: When amendment takes effect * **Changes Summary**: List of specific changes * **Document**: Attach amendment document *** ## Module Settings Configure contract management at **GR → Settings → Contract Management**: ### Alert Settings * **Default Expiration Alert Days**: 90, 60, 30 (customizable) * **Renewal Notice Days**: Days before expiration to notify for renewal ### Numbering Settings * **Auto-Generate Contract Numbers**: Enable/disable * **Contract Number Prefix**: Customize prefix (e.g., "CON-") ### Approval Settings * **Require Contract Approval**: Enable/disable approval workflow * **Approval Threshold Amount**: Contracts above this value require approval ### Obligation Settings * **Obligation Reminder Days**: Days before due date to send reminders * **Auto-Mark Obligations Overdue**: Automatically flag overdue obligations ### AI Settings (Future) * **AI Risk Analysis Enabled**: Use AI to assess contract risks * **AI Renewal Recommendations**: AI suggestions for renewals *** ## Dashboard Widgets The GR Overview dashboard includes contract widgets: ### Contract Summary Widget * Active contracts count * Pending approval count * Expiring soon count * Recently added contracts ### Expiring Contracts Widget * Contracts expiring within 30/60/90 days * Renewal status tracking * Quick actions for renewal ### Obligation Tracker Widget * Pending obligations count * Overdue obligations (highlighted) * Completion rate metrics *** ## Reports ### Available Reports 1. **Contract Status Report**: All contracts by status 2. **Expiring Contracts Report**: Upcoming expirations 3. **Obligation Summary Report**: Obligation status across contracts 4. **Contract Value Report**: Financial summary ### Exporting Reports 1. Navigate to the contracts list 2. Apply desired filters 3. Click **Export** button 4. Select format: PDF, CSV, or Excel *** ## Customizing Dropdown Values Contract type and related dropdowns are powered by [picklists](/pf/picklists) under the `gr.contract.*` namespace. The platform ships defaults so contract forms work out of the box, but you can tailor the options to match your procurement and vendor categories. Common contract picklists to customize: | Picklist | Where it appears | | ------------------ | ----------------------------- | | `gr.contract.type` | Contract form → Contract type | To customize: 1. Navigate to **Settings → Picklists** (`/settings/picklists`). 2. Filter or search for the `gr.contract.*` picklist you want to edit. 3. If the picklist shows the **System** badge, select **Duplicate to Org** to create an editable copy. 4. Add, rename, reorder, or deactivate items as needed. 5. Save your changes — contract forms pick up the new values immediately. Contract status and party type stay fixed (or free-form) because they drive workflow logic or aren't drawn from a configurable list. The full list of governance picklists and their default values is in the [Picklist Reference](/reference/picklists). *** ## Best Practices ### Contract Creation * Use consistent naming conventions * Always attach the signed contract document * Set appropriate alert thresholds based on contract complexity ### Obligation Management * Assign clear ownership for each obligation * Set realistic due dates with buffer time * Track completion evidence for audit purposes ### Renewal Management * Review expiring contracts 90+ days in advance * Document renewal decisions and negotiations * Maintain version history with amendments *** ## Troubleshooting ### Common Issues | Issue | Solution | | --------------------- | -------------------------------------------- | | Can't create contract | Verify you have contract manager permissions | | Alerts not sending | Check notification settings in GR Settings | | Missing obligations | Verify contract is in Active status | | Export not working | Check for browser popup blockers | *** ## Related Documentation * [Contract User Guide](/gr/contract-user-guide) (v1.0.0) - For general staff * [GR Overview](/gr/overview) (v1.0.0) - All GR module features * [Notifications Guide](/pf/notifications-guide) (v1.0.0) - Alert configuration *** **Need Help?** Contact your system administrator. # Contract Dashboard Source: https://docs.encoreos.io/gr/contract-dashboard Overview dashboard for the contract portfolio showing stats, contracts expiring within 90 days, and recently active contracts. This screen provides a summary overview of the organization's contract portfolio at route `/gr/contracts/dashboard`. ## Overview The Contract Dashboard shows a header with **View All Contracts** and **New Contract** buttons (New Contract only shown if the user has `gr.contracts.create` permission). Below the header, `ContractStatsWidget` displays aggregate contract statistics. A two-column grid shows `ContractExpirationWidget` (contracts expiring within 90 days, up to 5) and an Active Contracts list (from `useActiveContracts`). Each active contract shows its name, type badge, status badge, and a link to its detail page. A **View All** button navigates to `/gr/contracts`. ## Who it's for Requires permission `gr.contracts.view`. ## Before you start * You must have the `gr.contracts.view` permission. * Contract records with status and expiry dates must exist. ## Steps Navigate to `/gr/contracts/dashboard`. Check the `ContractStatsWidget` for aggregate counts by status. Review the expiration widget for contracts expiring within 90 days. Check the Active Contracts list for currently active contracts. If you have `gr.contracts.create`, click **New Contract** to launch the contract creation wizard. ## Key concepts * **ContractExpirationWidget** — shows contracts with expiry dates within the configured `days` window (90 days). * **Active contracts** — contracts with status `active` from `useActiveContracts`. ## Related Governance & Compliance core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/gr.tsx * src/cores/gr/pages/ContractDashboard.tsx * src/cores/gr/hooks/useContractList.ts * src/cores/gr/hooks/useContractStats.ts # Contract Management User Guide Source: https://docs.encoreos.io/gr/contract-user-guide The Contract Management module allows you to view and track contracts relevant to your work, including vendor agreements, service contracts, and employment con… ## Overview The Contract Management module allows you to view and track contracts relevant to your work, including vendor agreements, service contracts, and employment contracts. You can monitor contract status, upcoming expirations, and assigned obligations. *** ## Accessing Contracts ### View Contract List 1. Navigate to **GR → Contracts** in the main menu 2. Use the search bar to find contracts by name, number, or party 3. Use filters to narrow results: * **Status**: Draft, Pending Approval, Active, Expiring Soon, Expired, Terminated * **Type**: Vendor, Service, Lease, Employment, Compliance, Other * **Site**: Filter by specific location ### View Contract Details 1. Click on any contract row in the list to open the detail page 2. The detail page shows: * Contract summary information * External and internal party details * Key dates (effective, expiration, renewal) * Contract value and payment terms * Associated documents *** ## Understanding Contract Status | Status | Meaning | Color | | -------------------- | --------------------------------------- | ------ | | **Draft** | Contract is being prepared | Gray | | **Pending Approval** | Awaiting manager approval | Yellow | | **Active** | Contract is in effect | Green | | **Expiring Soon** | Expires within alert threshold | Orange | | **Expired** | Contract has expired | Red | | **Terminated** | Contract was ended early | Red | | **Renewed** | Contract was renewed (see new contract) | Blue | *** ## Tracking Obligations Obligations are commitments within a contract that must be fulfilled by specific dates. ### View Your Obligations 1. On the contract detail page, select the **Obligations** tab 2. See all obligations with due dates and status 3. Filter to see only obligations assigned to you ### Obligation Status | Status | Description | | --------------- | ---------------------------- | | **Pending** | Not yet started | | **In Progress** | Currently being worked on | | **Completed** | Successfully fulfilled | | **Overdue** | Past due date, not completed | | **Cancelled** | No longer required | *** ## Tracking Milestones Milestones mark significant events in the contract lifecycle. ### View Milestones 1. On the contract detail page, select the **Milestones** tab 2. See milestone timeline with target dates 3. Completed milestones show completion date and notes ### Milestone Status | Status | Description | | --------------- | ------------------------------------- | | **Pending** | Not yet reached | | **In Progress** | Currently working toward | | **Completed** | Successfully achieved | | **Missed** | Target date passed without completion | | **Cancelled** | No longer applicable | *** ## Receiving Alerts The system automatically sends alerts for important contract events: ### Expiration Alerts * **90 days before**: Early warning for upcoming expiration * **60 days before**: Reminder to start renewal discussions * **30 days before**: Urgent renewal or termination decision needed ### Obligation Reminders * Reminders are sent before obligation due dates * Overdue obligations generate escalation alerts ### How to Receive Alerts Alerts are sent via: * In-app notifications (bell icon) * Email notifications (if configured) *** ## Dashboard Overview The GR Overview dashboard includes contract metrics: * **Active Contracts**: Total number of active contracts * **Expiring Soon**: Contracts expiring within 30 days * **Pending Obligations**: Obligations awaiting completion * **Contract Value**: Total value of active contracts *** ## Related Documentation * [Contract Admin Guide](/gr/contract-admin-guide) - For contract managers * [GR Overview](/gr/overview) - All GR module features *** **Need Help?** Contact your contract manager or system administrator. # Governance Contracts Source: https://docs.encoreos.io/gr/contracts Browse, view, create, and manage contracts with status and type filters, tabbed detail, and a multi-step creation wizard. This screen is the main list of all contracts in the GR module at route `/gr/contracts`. ## Overview The Contracts list page loads all contracts via `useContractList` with support for text search, status filter, and contract type filter. Users can toggle between a grid view and table view (`ContractTable`). Contract type and status filter options are statically defined. Clicking a contract navigates to its detail page at `/gr/contracts/:id`. Creating a new contract is gated by `PermissionGate` with `gr.contracts.create`. Error states display a sanitized error message. ## Who it's for Requires permission `gr.contracts.view`. Creating a new contract requires `gr.contracts.create`. ## Before you start * You must have the `gr.contracts.view` permission. * To create a contract, you also need `gr.contracts.create`. ## Finding a contract 1. Navigate to `/gr/contracts`. 2. Use the search input to find contracts by name or number; use the Status and Type dropdowns to narrow results. 3. Toggle between grid and table view using the view-mode buttons. 4. Click a contract card or row to navigate to its detail page. **Contract statuses** — `draft`, `pending_approval`, `active`, `expired`, `terminated`, `renewed`. **Contract types** — `vendor`, `client`, `service`, `lease`, `employment`, `partnership`, `nda`, `other`. **Grid vs. table** — the view mode toggle persists within the session. ## Viewing a contract The Contract Detail page (`/gr/contracts/:id`) uses a tabbed `DetailPageLayout`. The **Overview** tab shows contract name, number, type badge, status badge, party/vendor name, value, start date, expiry date, and description. The **Obligations** tab renders `ObligationList`. The **Milestones** tab renders `MilestoneList`. The **Amendments** tab renders `AmendmentList`. Action buttons include: **Edit** (opens `ContractFormDialog`), **Approve** (calls `approveContract`), and **Terminate** (calls `terminateContract` with a fixed reason string). The page uses `useEntityBreadcrumb` to populate the breadcrumb with the contract name or number. 1. From `/gr/contracts` or the dashboard, click a contract to navigate to `/gr/contracts/:id`. 2. Review the **Overview** tab: check contract parties, value, dates, type, and current status. 3. Open the **Obligations** tab to see contracted obligations. 4. Open the **Milestones** tab to check milestone dates and completion status. 5. Open the **Amendments** tab to see any contract amendments. 6. Click **Edit** to open the contract form dialog and update details. 7. Click **Approve** to approve the contract, or **Terminate** to end it. **Obligations** — contractual commitments tracked in `ObligationList`. **Milestones** — key dates and deliverables tracked in `MilestoneList`. **Amendments** — contract changes tracked in `AmendmentList`. **Terminate reason** — currently hardcoded as `'Terminated by user'`; confirm with SME if a configurable reason is required. ## Creating a contract The New Contract page (`/gr/contracts/new`) renders `ContractCreationWizardPage`, a full-page wizard powered by `ModuleWizardRenderer` (PF-41) that creates a new `gr_contracts` record. Requires permission `gr.contracts.create`. Before you start: have the contract type, counterparty details, key dates (start, expiration), and obligation schedule ready. For contracts above the approval threshold (`contract_approval_threshold_amount` in settings), an approval workflow may be triggered after creation. 1. Navigate to `/gr/contracts/new` or use the create contract action from `/gr/contracts`. The wizard loads from the `contract_creation` template. 2. Select a contract type (from `useContractTypes`); this may pre-fill defaults. 3. Follow each step in the `ModuleWizardRenderer` — typically covering contract details, parties, terms, and obligations. 4. On the final review step, click the submit button (labeled "Save as Draft" or another label per `getSubmitButtonLabel`). The wizard validates via `validateFinalSubmit` before submitting. 5. After completion you are navigated to `/gr/contracts` where the new contract appears. **ModuleWizardRenderer (PF-41)** — platform component rendering wizard steps from `pf_wizard_templates`. **contract\_creation** — wizard type identifier for contract creation. **mapWizardDataToPayload** — local mapper that converts `GrContractWizardFormData` to the `gr_contracts` insert payload. **executionId** — optional query param linking this wizard run to a workflow execution. ## Related Governance & Compliance core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/gr.tsx * src/cores/gr/pages/ContractListPage.tsx * src/cores/gr/pages/ContractDetailPage.tsx * src/cores/gr/hooks/useContractList.ts * src/cores/gr/hooks/useContractDetail.ts * src/cores/gr/hooks/useContractMutation.ts * src/cores/gr/wizards/contract-creation/ContractCreationWizardPage.tsx * src/platform/permissions/constants.ts # Corrective Actions Source: https://docs.encoreos.io/gr/corrective-actions Cross-audit list of all corrective actions with status tracking, overdue detection, search, and status filter. This screen tracks all corrective actions arising from audit findings at route `/gr/audits/corrective-actions`. ## Overview The Corrective Actions page loads all corrective actions via `useCorrectiveActionList` with an optional status filter. Five stat cards show: Total, Open, In Progress, Completed (includes `verified`), and Overdue. Users can search by `action_description` or `notes`, and filter by status using a dropdown. Each action card displays its description, status badge (open: destructive, in\_progress: secondary, completed/verified: default), due date, and overdue indication. Overdue is computed as `due_date < today` for non-completed/non-verified actions. ## Who it's for Access follows your organization's role and module configuration. Any authenticated user with access to the GR module can view corrective actions. ## Before you start * Audit findings with corrective actions must exist. ## Steps Navigate to `/gr/audits/corrective-actions`. Check the Overdue stat card to identify actions past their due date. Use the Status dropdown to focus on Open, In Progress, or Completed actions. Use the search box to find actions by description or notes. Navigate to the associated audit finding to update the corrective action status. ## Key concepts * **Open** — corrective action status `open`; requires attention. * **In Progress** — status `in_progress`; corrective action is underway. * **Completed/Verified** — status `completed` or `verified`; action is resolved. * **Overdue** — `due_date` is before today and status is not `completed` or `verified`. ## Related Governance & Compliance core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/gr.tsx * src/cores/gr/pages/CorrectiveActionList.tsx * src/cores/gr/hooks/useAuditCorrectiveAction.ts # Governance Dashboard Source: https://docs.encoreos.io/gr/dashboard GR module overview dashboard showing compliance score, pending actions, risk and audit stats, and navigation to all GR areas. This screen is the main landing page for the Governance & Compliance module at route `/gr/dashboard`. ## Overview The GR Overview page (rendered at `/gr/dashboard`) shows four consolidated stat cards: Compliance Score, Pending Actions (sum of pending acknowledgments + open remediations + open corrective actions), Risk Level (from `useRiskStats`), and Active Audits (from `useAuditStats`). It also shows AI-enabled status and QI stats when available. Area navigation cards link to all major GR sections: Policies, Training, Compliance, Audits, Risks, Quality Improvement, and Accreditations. Quick Actions are rendered via `QuickActionsSection`. The organization name is shown in the header from `useOrganization`. ## Who it's for Access follows your organization's role and module configuration. Any authenticated user with access to the GR module can view this dashboard. ## Before you start * No preconditions required. The dashboard loads data from multiple stats hooks with safe defaults when no records exist. ## Steps Navigate to `/gr/dashboard` or click the Governance & Compliance item in the navigation. Review the primary compliance score stat card to assess overall compliance health. Check the Pending Actions count to identify outstanding acknowledgments, remediations, and corrective actions. Click any area navigation card to jump to Policies, Training, Compliance, Audits, Risks, QI, or Accreditations. Use the Quick Actions section to jump to common tasks. ## Key concepts * **Pending Actions** — sum of `policyStats.pendingAcknowledgments` + `complianceStats.openRemediations` + `auditStats.openCorrectiveActions`. * **AI Compliance** — shown in the UI when the AI Compliance Advisor is enabled in GR settings. ## Related Governance & Compliance core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/gr.tsx * src/cores/gr/pages/GROverview\.tsx * src/cores/gr/hooks/useComplianceStats.ts * src/cores/gr/hooks/usePolicyStats.ts * src/cores/gr/hooks/useAuditStats.ts * src/cores/gr/hooks/useRiskStats.ts * src/cores/gr/hooks/useQIStats.ts # Governance & Risk Database Tables Source: https://docs.encoreos.io/gr/database-tables The GR module provides comprehensive governance, risk management, and compliance capabilities including policy management, risk assessment, compliance tracking… **Prefix:** `gr_`\ **Table Count:** 49\ **Last Updated:** 2026-01-10 *** ## Overview The GR module provides comprehensive governance, risk management, and compliance capabilities including policy management, risk assessment, compliance tracking, contract management, audits, accreditation, training, and quality improvement. *** ## Table Categories ### 1. Policy Management (5 tables) | Table | Columns | Description | | ---------------------------- | ------- | ------------------------ | | `gr_policies` | 28 | Policy definitions | | `gr_policy_versions` | 16 | Version history | | `gr_policy_acknowledgments` | 12 | Employee acknowledgments | | `gr_policy_assignments` | 10 | Policy distribution | | `gr_policy_regulatory_links` | 8 | Regulatory mappings | **Policy Lifecycle:** ``` draft → review → approved → published → archived ↓ acknowledgments required ``` **Policy Fields:** * `title`, `description`, `content` * `category`, `department_id` * `effective_date`, `review_date`, `expiration_date` * `owner_id`, `approver_id` * `requires_acknowledgment` ### 2. Risk Management (4 tables) | Table | Columns | Description | | --------------------- | ------- | ------------------ | | `gr_risks` | 30 | Risk register | | `gr_risk_assessments` | 22 | Risk evaluations | | `gr_risk_mitigations` | 18 | Mitigation plans | | `gr_risk_links` | 8 | Risk relationships | **Risk Matrix:** ``` Impact Low Med High Critical Likelihood ┌────┬────┬────┬────────┐ Rare │ 1 │ 2 │ 3 │ 4 │ Unlikely │ 2 │ 4 │ 6 │ 8 │ Possible │ 3 │ 6 │ 9 │ 12 │ Likely │ 4 │ 8 │ 12 │ 16 │ Almost │ 5 │ 10 │ 15 │ 20 │ └────┴────┴────┴────────┘ ``` **Risk Categories:** * `strategic` - Strategic risks * `operational` - Operational risks * `financial` - Financial risks * `compliance` - Compliance risks * `reputational` - Reputational risks * `technology` - Technology/cyber risks ### 3. Compliance Management (4 tables) | Table | Columns | Description | | --------------------------- | ------- | ---------------------- | | `gr_compliance_checks` | 20 | Compliance assessments | | `gr_compliance_evidence` | 14 | Evidence attachments | | `gr_compliance_submissions` | 16 | Regulatory submissions | | `gr_compliance_remediation` | 18 | Remediation tracking | **Compliance Status:** * `compliant` - Meets requirements * `non_compliant` - Does not meet requirements * `partial` - Partially compliant * `not_applicable` - N/A for organization * `under_review` - Assessment in progress ### 4. Regulatory Framework (2 tables) | Table | Columns | Description | | ---------------------------- | ------- | ------------------- | | `gr_regulatory_bodies` | 16 | Regulatory agencies | | `gr_regulatory_requirements` | 22 | Requirement catalog | **Common Regulatory Bodies:** * HIPAA (Healthcare) * OSHA (Workplace Safety) * State Licensing Boards * CARF/Joint Commission (Accreditation) * CMS (Medicare/Medicaid) ### 5. Contract Management (6 tables) | Table | Columns | Description | | ------------------------- | ------- | --------------------- | | `gr_contracts` | 32 | Contract records | | `gr_contract_types` | 12 | Contract type catalog | | `gr_contract_amendments` | 16 | Amendment tracking | | `gr_contract_obligations` | 18 | Obligation tracking | | `gr_contract_milestones` | 14 | Milestone tracking | | `gr_contract_alerts` | 14 | Renewal/expiry alerts | **Contract Status:** * `draft` → `negotiation` → `pending_approval` → `active` * `expired`, `terminated`, `renewed` **Contract Types:** * Vendor/Supplier Agreements * Client Service Agreements * Employment Contracts * Lease Agreements * Insurance Policies * Grant Agreements ### 6. Audit Management (6 tables) | Table | Columns | Description | | ----------------------------- | ------- | -------------------- | | `gr_audits` | 26 | Audit records | | `gr_audit_checklists` | 16 | Audit checklists | | `gr_audit_findings` | 20 | Finding records | | `gr_audit_evidence` | 14 | Evidence attachments | | `gr_audit_corrective_actions` | 18 | CAP tracking | | `gr_audit_team_assignments` | 10 | Auditor assignments | **Audit Types:** * `internal` - Internal audit * `external` - External audit * `regulatory` - Regulatory inspection * `accreditation` - Accreditation survey * `financial` - Financial audit **Finding Severity:** * `observation` - Minor observation * `minor` - Minor finding * `major` - Major finding * `critical` - Critical finding ### 7. Accreditation (6 tables) | Table | Columns | Description | | ----------------------------------- | ------- | --------------------- | | `gr_accreditations` | 24 | Accreditation records | | `gr_accreditation_standards` | 18 | Standard requirements | | `gr_accreditation_evidence` | 14 | Evidence tracking | | `gr_accreditation_surveys` | 20 | Survey tracking | | `gr_accreditation_audit_links` | 8 | Audit linkages | | `gr_accreditation_compliance_links` | 8 | Compliance linkages | **Common Accreditations:** * CARF (Commission on Accreditation of Rehabilitation Facilities) * Joint Commission * NCQA (National Committee for Quality Assurance) * State Certification Programs ### 8. Training Management (5 tables) | Table | Columns | Description | | -------------------------- | ------- | ------------------ | | `gr_training_courses` | 22 | Course definitions | | `gr_training_enrollments` | 14 | Enrollment records | | `gr_training_completions` | 16 | Completion records | | `gr_training_policy_links` | 8 | Policy linkages | | `gr_ceu_credits` | 14 | CEU tracking | **Training Types:** * `required` - Mandatory compliance training * `role_based` - Role-specific training * `optional` - Professional development * `remedial` - Corrective training ### 9. Quality Improvement (6 tables) | Table | Columns | Description | | --------------------------- | ------- | ------------------- | | `gr_qi_projects` | 24 | QI project records | | `gr_qi_project_templates` | 16 | Project templates | | `gr_qi_metrics` | 18 | Quality metrics | | `gr_qi_metric_measurements` | 14 | Measurement data | | `gr_qi_improvements` | 16 | Improvement actions | | `gr_qi_pdsa_cycles` | 18 | PDSA cycle tracking | **PDSA Cycle:** ``` Plan → Do → Study → Act → (repeat) ``` ### 10. AI Assistance (4 tables) | Table | Columns | Description | | ------------------------------ | ------- | -------------------- | | `gr_ai_audit_prep` | 16 | AI audit preparation | | `gr_ai_compliance_suggestions` | 14 | AI compliance help | | `gr_ai_gap_analyses` | 16 | AI gap analysis | | `gr_ai_risk_assessments` | 16 | AI risk analysis | ### 11. Module Settings (1 table) | Table | Columns | Description | | -------------------- | ------- | ---------------- | | `gr_module_settings` | 37 | GR configuration | **Key Settings:** | Setting | Type | Default | | ------------------------------ | ---------- | ----------- | | `policy_review_interval_days` | integer | 365 | | `contract_alert_days` | integer\[] | \[30,60,90] | | `training_grace_period_days` | integer | 14 | | `risk_assessment_frequency` | text | 'quarterly' | | `audit_response_deadline_days` | integer | 30 | *** ## Common Query Patterns ### Get Risk Register ```typescript theme={null} const { data } = await supabase .from('gr_risks') .select(` *, assessments:gr_risk_assessments( likelihood, impact, risk_score, assessed_at ), mitigations:gr_risk_mitigations( title, status, due_date ) `) .eq('organization_id', orgId) .eq('status', 'active') .order('risk_score', { ascending: false }); ``` ### Get Policies Requiring Acknowledgment ```typescript theme={null} const { data } = await supabase .from('gr_policies') .select(` *, acknowledged:gr_policy_acknowledgments( acknowledged_at ) `) .eq('status', 'published') .eq('requires_acknowledgment', true) .is('acknowledged.user_id', userId); ``` ### Get Upcoming Contract Renewals ```typescript theme={null} const { data } = await supabase .from('gr_contracts') .select(` *, type:gr_contract_types(name), alerts:gr_contract_alerts(alert_type, alert_date) `) .eq('organization_id', orgId) .eq('status', 'active') .lte('end_date', addDays(new Date(), 90)); ``` ### Get Audit Findings Summary ```typescript theme={null} const { data } = await supabase .from('gr_audit_findings') .select(` severity, status, audit:gr_audits(title, audit_type) `) .eq('organization_id', orgId) .neq('status', 'closed'); ``` ### Get Training Compliance ```typescript theme={null} const { data } = await supabase .from('gr_training_courses') .select(` *, completions:gr_training_completions( employee_id, completed_at, expiration_date ) `) .eq('organization_id', orgId) .eq('is_required', true); ``` *** ## RLS Policies GR uses department-based RLS: * Policy access based on assignments * Risk visibility by department/role * Audit access for audit team members **Helper Functions:** * `gr_user_can_view_policy()` - Policy access check * `gr_user_can_manage_risk()` - Risk management access * `gr_user_is_audit_team_member()` - Audit access check *** ## Cross-Module Integration **GR → HR Integration:** ``` gr_training_completions → hr_employee_credentials gr_policy_acknowledgments → hr_employees ``` **GR → FA Integration:** ``` gr_contracts → fa_vendors (vendor contracts) gr_contracts → fa_purchase_orders (contract-based POs) ``` *** ## See Also * [GR Module Specs](https://github.com/Encore-OS/encoreos/tree/development/specs/gr) * [Compliance Tracking Spec](https://github.com/Encore-OS/encoreos/blob/development/specs/gr/specs/GR-03-compliance-tracking.md) * [Database Schema Overview](/architecture/DATABASE_SCHEMA) # Governance Documents Source: https://docs.encoreos.io/gr/documents The /gr/documents path has no registered standalone route in the application. The path `/gr/documents` has no registered standalone route in the application. ## Overview In `src/routes/gr.tsx`, there is no `` entry. Requests to `/gr/documents` are not handled and will fall through to the `NotFound` route. Document-related features in the GR module are available as sub-sections: evidence within `/gr/accreditations/:id` (Evidence tab), evidence within `/gr/audits/:id` (Evidence tab), and Document Retention within `/gr/governance` (Retention tab). This page is not a standalone screen. ## Who it's for Access follows your organization's role and module configuration. — not a standalone screen. ## Related Governance & Compliance core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/gr.tsx # Evidence Source: https://docs.encoreos.io/gr/evidence The /gr/accreditations/:id/evidence path is not a standalone route; evidence is a tab within the Accreditation Details page. The path `/gr/accreditations/:id/evidence` has no registered standalone route; evidence documents are accessible as a tab within the Accreditation Details page. ## Overview In `src/routes/gr.tsx`, there is no `` entry. The Evidence tab is rendered inside the `AccreditationDetail` component (at `/gr/accreditations/:id`) as a `TabsContent value="evidence"` panel. It lists uploaded evidence documents showing: document title, linked standard number, and evidence type badge. Evidence documents are loaded via the `accreditation.evidence` relation in `useAccreditationDetail`. This path is not a standalone screen and requests to it will fall through to the `NotFound` route. ## Who it's for Access follows your organization's role and module configuration. — accessed via the Evidence tab within the Accreditation Details page at `/gr/accreditations/:id`. ## Related Governance & Compliance core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/gr.tsx * src/cores/gr/pages/AccreditationDetail.tsx # Executive Compliance Dashboard Source: https://docs.encoreos.io/gr/executive-compliance-dashboard Executive compliance-posture heatmap across regulatory bodies and categories, with drill-down, tenant-configurable thresholds, and a board-ready PDF report. # Executive Compliance Dashboard > Audience: compliance leaders and executives reviewing organization-wide posture. > Spec: `specs/gr/plans/GR-21-compliance-dashboard-executive-reporting-PLAN.md`. The Executive Compliance Dashboard rolls up existing governance compliance data — regulatory-requirement status, audit findings, and remediation/action items — into a single executive posture view at `/gr/compliance/executive-dashboard`, gated on `gr.compliance-dashboard.view`. All reporting is aggregate counts only — no PHI or PII. ## Compliance posture heatmap The centerpiece is a color-coded heatmap of regulatory bodies (rows) × requirement categories (columns). Clicking a cell drills down to the underlying findings and action items. Compliant / at-risk / non-compliant banding is tenant-configurable via a thresholds dialog (`gr.compliance-dashboard.configure`), and posture history is captured daily into an immutable snapshot table. Executive Compliance Dashboard showing the compliance posture heatmap with Compliant, At risk, and Non-compliant cells across regulatory bodies and requirement categories, plus the board report generator ## Board-ready executive report A one-click generator produces a board-ready report — an executive summary with the overall compliance score, the embedded heatmap, a posture-trend chart, and top compliance findings — exportable as a branded, timestamped PDF. Board-ready executive compliance report with overall score, heatmap, posture-trend chart, top findings, and an Export to PDF action ## Related The operational compliance overview. Governance module overview. # Governance Gap Analysis Source: https://docs.encoreos.io/gr/gap-analysis AI-powered compliance gap analysis that generates an assessment of gaps for a selected regulatory requirement. This screen uses AI to analyze compliance gaps against a selected regulatory requirement at route `/gr/ai/gap-analysis`. ## Overview The AI Gap Analysis page requires the AI Compliance Advisor to be enabled in GR settings. When disabled, it shows a blocked state. When enabled, users select a regulatory requirement from a dropdown populated by `useRegulatoryRequirementList`. Clicking **Run Analysis** sends a prompt to the AI containing the requirement title, description, category, and current status. Previous analysis results for the selected requirement are listed via `useAIGapAnalysesList`. An AI Chat Panel is accessible via **Ask AI Advisor**. ## Who it's for Access follows your organization's role and module configuration. AI Compliance must be enabled in GR settings. ## Before you start * AI Compliance must be enabled in GR settings (`/gr/settings`). * Regulatory requirements must exist in the system. ## Steps Go to `/gr/ai/gap-analysis`. If the AI Compliance Advisor is disabled, click **Go to Settings** and enable it. Choose a regulatory requirement from the dropdown. Click **Run Analysis** to generate an AI gap assessment for the selected requirement. Review the generated and previously stored analyses listed below the selector. Click **Ask AI Advisor** to open the chat panel for follow-up questions. ## Key concepts * **Gap analysis prompt** — includes requirement title, description, category, and current compliance status. * **AI Compliance Advisor** — must be enabled in GR settings. * **Previous analyses** — retrieved by `useAIGapAnalysesList` filtered by the selected requirement ID. ## Related Governance & Compliance core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/gr.tsx * src/cores/gr/pages/AIGapAnalysis.tsx * src/cores/gr/hooks/useAIComplianceEnabled.ts * src/cores/gr/hooks/useRegulatoryRequirement.ts * src/cores/gr/ai/index.ts # Governance & Learning Overview Source: https://docs.encoreos.io/gr/governance The Governance & Learning module (/gr) serves as the entry point and immediately redirects to /gr/dashboard, which renders the GROverview component with… The Governance & Learning module (`/gr`) serves as the entry point and immediately redirects to `/gr/dashboard`, which renders the `GROverview` component with module-wide statistics and navigation cards. ## Overview Navigating to `/gr` triggers an immediate client-side redirect to `/gr/dashboard` (rendered by `GROverview`). The dashboard displays four summary stat cards — Compliance Score, Pending Actions, Active Risks, and Training Completion Rate — alongside area navigation cards for every GR sub-module. Alternate primary route: `/gr/dashboard`. ## Who it's for Access follows your organization's role and module configuration. The redirect itself requires no permission; individual sub-module cards surface behind their own permission gates. ## Before you start * Ensure your account has been assigned to an organization within the platform. * Sub-module cards (Compliance, Audits, Risks, Policies, Training, QI) each enforce their own permissions — you will only see controls relevant to your role. ## Steps Go to `/gr` in the application. You will be redirected automatically to `/gr/dashboard`. Four stat cards display at the top: Compliance Score, Pending Actions, Active Risks, and Training Complete. Cards marked warning or destructive indicate items needing attention. The Quick Actions section below the header provides shortcuts to common tasks for your role (up to 6 module actions and 3 global actions). Click any area navigation card to open the corresponding GR sub-module (e.g., Policy Library, Compliance Dashboard, Audit Management, Risk Register, Quality Improvement, Training Library). ## Key concepts * **Compliance Score** — organization-wide compliance rate computed from `gr_compliance_checks` data via `useComplianceStats`. * **Pending Actions** — sum of pending policy acknowledgments, open remediations, and open corrective actions. * **Active Risks** — count of active risks (critical / total) from `useRiskStats`. * **Training Complete** — organization training completion rate from `useTrainingStats`. * **AI Compliance Advisor** — shown conditionally when `useAIComplianceEnabled` returns `true`. ## Related Governance & Compliance core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/gr.tsx * src/cores/gr/pages/GROverview\.tsx * src/cores/gr/hooks/useComplianceStats.ts * src/cores/gr/hooks/usePolicyStats.ts # Governance Controls Source: https://docs.encoreos.io/gr/governance-controls Tabbed hub for nonprofit governance: COI attestations, whistleblower reports, board minutes, board resolutions, and document retention. This screen is the central hub for nonprofit governance controls at route `/gr/governance`. ## Overview The Governance Controls page is a URL-synced tabbed hub with five tabs: **COI Attestations** (gated by `gr.coi.view`), **Whistleblower** (gated by `gr.whistleblower.view`), **Board Minutes** (gated by `gr.board.view`), **Resolutions** (gated by `gr.board.view`), and **Retention** (gated by `gr.governance.admin`). A `CoiDashboardStats` widget is shown above the tabs for users with `gr.coi.view`. The tab state is synced to the URL via `nuqs` (`?tab=` query parameter). Each tab renders its respective component: `CoiAttestationsTab`, `WhistleblowerReportsTab`, `BoardMinutesTab`, `BoardResolutionsTab`, `DocumentRetentionTab`. ## Who it's for Requires permission `gr.compliance.view` (set on the route). Individual tabs have additional permission requirements: * COI Attestations: `gr.coi.view` * Whistleblower: `gr.whistleblower.view` * Board Minutes/Resolutions: `gr.board.view` * Document Retention: `gr.governance.admin` ## Before you start * You must have `gr.compliance.view` to access this page. * Individual tabs are additionally gated; users without specific permissions will see empty content for those tabs. ## Steps Navigate to `/gr/governance`. Open the **COI Attestations** tab to review conflict of interest attestation records and stats (requires `gr.coi.view`). Open the **Whistleblower** tab to view whistleblower intake reports (requires `gr.whistleblower.view`). Open the **Board Minutes** tab to manage board meeting minutes records (requires `gr.board.view`). Open the **Resolutions** tab to manage board resolutions (requires `gr.board.view`). Open the **Retention** tab to manage document retention schedules (requires `gr.governance.admin`). ## Key concepts * **COI Attestation** — conflict of interest disclosure by board members or staff; recorded via `CoiAttestationsTab`. * **Whistleblower tab** — records submitted via the public whistleblower intake form (registered in `public.tsx`). * **URL-synced tab** — the `?tab=` parameter allows deep-linking to a specific tab. ## Related Governance & Compliance core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/gr.tsx * src/cores/gr/pages/GovernanceControlsPage.tsx * src/platform/permissions/constants.ts # Governance Forms Source: https://docs.encoreos.io/gr/governance-forms Lists all forms owned by the Governance core, enabling staff to view and launch GR-scoped workflow forms created in the Forms & Workflows module. The Governance Forms page (`/gr/forms`) renders `GRFormsPage`, which displays all `fw_forms` records where `owning_core = 'gr'` using the shared `ModuleFormsPage` platform component. ## Overview This page is a filtered view of the platform forms library, scoped to forms whose `owning_core` is `'gr'`. It uses the shared `ModuleFormsPage` component with `moduleDisplayName="Governance"`. New forms can be created by navigating to `/fw/forms/new?core=gr`, subject to `FW_PERMISSIONS.FORMS_CREATE` (`fw.forms.create`). ## Who it's for Requires permission: `fw.forms.view` (`FW_PERMISSIONS.FORMS_VIEW`). Users without this permission cannot access this route. ## Before you start * You must hold the `fw.forms.view` permission. * To create new governance forms, you also need `fw.forms.create` and must navigate to the Forms & Workflows module. ## Steps Navigate to `/gr/forms`. The page lists all forms with `owning_core = 'gr'`. Use the search and filter controls provided by the `ModuleFormsPage` component to locate a specific governance form. Click a form row to open its detail or submission view. The available actions depend on your permissions. If you hold `fw.forms.create`, click the create action. You will be directed to `/fw/forms/new?core=gr` in the Forms & Workflows module. ## Key concepts * **owning\_core** — the `fw_forms.owning_core` column that scopes forms to a specific platform core (`'gr'` for governance). * **ModuleFormsPage** — shared PF-08 platform component that renders a filtered, permission-aware forms list. ## Related Governance & Compliance core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/gr.tsx * src/cores/gr/pages/GRFormsPage.tsx * src/platform/forms/ModuleFormsPage.tsx # Governance Reports Source: https://docs.encoreos.io/gr/governance-reports Hub page linking to QI reports, accreditation reports, and audit management — surfaces available report destinations behind per-tile permission gates. The Governance Reports hub (`/gr/reports`) renders `GRReportsHubPage`, a tile-based landing page that links to distinct report surfaces across the GR module, gating each tile behind its own permission. ## Overview `GRReportsHubPage` presents three report tiles, each guarded by a separate `PermissionGate`: | Tile | Destination route | Required permission | | --------------------- | --------------------------------- | ------------------------ | | QI reports | `/gr/quality-improvement/reports` | `gr.qi.view` | | Accreditation reports | `/gr/accreditations/reports` | `gr.accreditations.view` | | Audit management | `/gr/audits` | `gr.audits.view` | Tiles whose permission the current user lacks will not display an **Open** button (the gate hides the control). ## Who it's for Access follows your organization's role and module configuration. Individual tiles are gated by `GR_PERMISSIONS.QI_VIEW`, `GR_PERMISSIONS.ACCREDITATIONS_VIEW`, and `GR_PERMISSIONS.AUDITS_VIEW`. ## Before you start * Hold at least one of `gr.qi.view`, `gr.accreditations.view`, or `gr.audits.view` to interact with any tile. * To export reports from the destination surfaces, additional export permissions may be required (e.g., `gr.compliance.export`). ## Steps Navigate to `/gr/reports`. The hub displays up to three report tiles depending on your permissions. Click **Open** on the desired tile. You will be navigated to the corresponding report or list page. Each destination page (QI reports, accreditation reports, audit list) provides its own filters and export controls. ## Key concepts * **PermissionGate** — platform component that hides its children when the current user lacks the specified permission. Used here to conditionally show the **Open** button per tile. * **REPORT\_TILES** — static array in `GRReportsHubPage` defining title, description, route, permission, and icon for each tile. ## Related Governance & Compliance core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/gr.tsx * src/cores/gr/pages/GRReportsHubPage.tsx * src/platform/permissions/constants.ts # Governance Settings Source: https://docs.encoreos.io/gr/governance-settings The Governance Settings page (/gr/settings) renders GRSettingsPage, which loads and saves organization-level module configuration via useGRModuleSettings and… The Governance Settings page (`/gr/settings`) renders `GRSettingsPage`, which loads and saves organization-level module configuration via `useGRModuleSettings` and `GRSettingsForm`. ## Overview `GRSettingsPage` calls `useGRModuleSettings()` (which reads/upserts `gr_module_settings` per organization) and renders `GRSettingsForm`. Settings are organized into the following groups as reflected in `GRModuleSettingsFormValues`: * **Policy Management** — review period, approval requirement, categories, version naming * **Compliance** — alert days, auto-task creation, default audit frequency * **Training** — expiration days, acknowledgment requirement, reminder days, self-enrollment * **Document** — categories, approval requirement, retention days * **AI** — `ai_compliance_enabled` * **QI** — enable/disable QI, cycle duration, reminder days, PDSA/metric notifications * **Contract Management** — expiration alerts, renewal notice, numbering, approval threshold, obligation reminders, AI risk analysis, AI renewal recommendations * **Procedure Analytics** — overdue threshold days A guided tour is available via `grSettingsTour` and can be launched with `?tour=gr-settings-tour`. ## Who it's for Requires permission: `gr.admin` (`GR_PERMISSIONS.ADMIN`). Users without this permission cannot access this route. ## Before you start * You must hold the `gr.admin` permission. * Changes apply organization-wide and affect all users in the tenant. * Review the SME items above before modifying any retention, approval, or compliance-threshold settings. ## Steps Navigate to `/gr/settings`. The page loads the current organization settings. A loading skeleton is shown while data is fetched. Configure the default policy review period, whether policy approval is required, allowed policy categories, and version naming convention. Set compliance alert lead times, training expiration and reminder days, and whether staff can self-enroll in training. Configure document retention, contract numbering, approval thresholds, and AI-powered features (risk analysis, renewal recommendations). Click the save action in `GRSettingsForm`. The form calls `upsert(values)` via `useGRModuleSettings`, which writes to `gr_module_settings`. Click the help button or append `?tour=gr-settings-tour` to the URL to start a step-by-step tour of the settings page. ## Key concepts * **gr\_module\_settings** — database table (one row per organization) that stores all GR module configuration. * **useGRModuleSettings** — hook that reads and upserts `gr_module_settings` for the current tenant. * **GRSettingsForm** — form component that maps `GRModuleSettingsFormValues` fields to UI controls. * **grSettingsTour** — guided tour definition used by the `GuidedTour` + `useTour` platform pattern. ## Related Governance & Compliance core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/gr.tsx * src/cores/gr/pages/GRSettingsPage.tsx * src/cores/gr/types/index.ts * src/cores/gr/hooks/useGRModuleSettings.ts # Governance Incidents Source: https://docs.encoreos.io/gr/incidents Browse, report, and view organizational incidents — with category, severity, and status filters and a tabbed detail with investigation and corrective actions. The Incidents page (`/gr/incidents`) renders `IncidentListPage`, which displays all incidents for the organization with stats, filters, and a table view. Incident reporting must be enabled in Governance Settings. ## Overview `IncidentListPage` calls `useIncidentList` (with search and filter params) and `useIncidentStats` to display a four-card stats header (Total Incidents, Open, Critical, Overdue Actions) and a filterable table. Filters include category, severity, and status. Each row navigates to `/gr/incidents/:id`. A **Report Incident** button is shown to users with `gr.incidents.report`; clicking it opens `ReportIncidentDialog`. Alternatively, users can navigate directly to `/gr/incidents/report` for the full wizard. The page respects the `gr_incident_reporting_enabled` feature flag from `useGRModuleSettings` — if disabled, an empty state is shown instead of the list. ## Who it's for Requires permission: `gr.incidents.view` (`GR_PERMISSIONS.INCIDENTS_VIEW`). The report-incident action additionally requires `gr.incidents.report`. ## Before you start * Incident reporting must be enabled in Governance Settings (`gr_incident_reporting_enabled = true`). * You need `gr.incidents.view` to access this page. * To file a new incident, you also need `gr.incidents.report`. ## Finding an incident 1. Navigate to `/gr/incidents`. The page loads the incident list with stats. 2. Check the four stat cards: Total Incidents, Open, Critical, and Overdue Actions. 3. Use the search box to find incidents by title. Use the Category, Severity, and Status dropdowns to narrow results. Available categories come from `INCIDENT_CATEGORIES`; severities from `INCIDENT_SEVERITIES`; statuses from `INCIDENT_STATUSES`. 4. Click any table row to navigate to `/gr/incidents/:id` for full detail. 5. If you hold `gr.incidents.report`, click **Report Incident** to open the quick-report dialog, or navigate to `/gr/incidents/report` for the step-by-step wizard. **INCIDENT\_CATEGORIES / INCIDENT\_SEVERITIES / INCIDENT\_STATUSES** — constant arrays from `src/cores/gr/types/incidents.ts` that drive the filter dropdowns. **useIncidentStats** — hook returning `total`, `open`, `critical`, `overdue_actions` for the stats header. **gr\_incident\_reporting\_enabled** — module settings flag; disabling it shows an empty state and prevents reporting. ## Viewing an incident The Incident Details page (`/gr/incidents/:id`) renders `IncidentDetailPage`, a tabbed layout showing all information about a single incident including its timeline, investigations, corrective actions, and regulatory reporting obligations. `IncidentDetailPage` loads a single incident via `useIncidentDetail(id)` and renders four tabs: | Tab | Content | | ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | | **Overview** | Incident details (category, description, location) and timeline (incident date, reported date, resolved date, resolution summary) | | **Investigation** | `InvestigationTab` — investigations and findings attached to the incident | | **Actions** | `CorrectiveActionsTab` — corrective action items | | **Regulatory** | `RegulatoryReportsTab` — shown only to users with `gr.incident_regulatory_reports.view`; badge turns destructive when overdue reports exist | Header actions: * **Resolve** — available to `gr.incidents.close` when status is not `resolved` or `closed`; calls `resolveIncident` * **Close Incident** — available to `gr.incidents.close` when status is `resolved`; calls `closeIncident` The active tab is synced to the URL via `useTabUrlState` (`?tab=`). Additional permissions used within this page: * `gr.incidents.close` — to resolve or close the incident * `gr.incident_regulatory_reports.view` — to see the Regulatory tab 1. Navigate to `/gr/incidents/:id` directly, or click a row in the Incidents list. The page header shows the incident title, reported date, location (if set), severity badge, and status badge. 2. Review the **Overview** tab: read the incident category, description, and location. The Timeline card shows incident date, reported date, and (if resolved) resolution date and summary. 3. Click the **Investigation** tab to see any investigation records and their findings. 4. Click the **Actions** tab; a badge shows the count of corrective action items. 5. Click the **Regulatory** tab (visible with `gr.incident_regulatory_reports.view`); a destructive badge indicates overdue reports. 6. If you hold `gr.incidents.close`: click **Resolve** to mark the incident resolved, or **Close Incident** if it is already in `resolved` status. **useIncidentDetail** — hook fetching a single incident with its `investigations`, `findings`, and `corrective_actions` arrays. **useIncidentRegulatoryReports** — hook fetching regulatory reports linked to the incident; exposes `is_overdue` per report. **SeverityBadge / StatusBadge** — visual components from `src/cores/gr/components/incidents/`. ## Related Governance & Compliance core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/gr.tsx * src/cores/gr/pages/IncidentListPage.tsx * src/cores/gr/pages/IncidentDetailPage.tsx * src/cores/gr/types/incidents.ts * src/cores/gr/hooks/useIncidentList.ts * src/cores/gr/hooks/useIncidentDetail.ts * src/cores/gr/hooks/useIncidentRegulatoryReports.ts # Governance Meetings Source: https://docs.encoreos.io/gr/meetings Governance meetings list — this route does not exist in the current application. A dedicated meetings page has not been implemented. The `/gr/meetings` route does not exist in the shipped application. There is no `Route` entry in `src/routes/gr.tsx` for this path, and no corresponding page component was found. ## Overview No page component or route is registered for `/gr/meetings`. Board-related records (minutes and resolutions) are currently available under `/gr/governance` via `GovernanceControlsPage`, which requires `gr.compliance.view`. There is also no `/gr/meetings/new` route in the shipped application. Board minutes and resolution records are currently available under `/gr/governance` via `GovernanceControlsPage`. ## Related Governance & Compliance core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/gr.tsx * src/cores/gr/pages/GovernanceControlsPage.tsx # Members Source: https://docs.encoreos.io/gr/members Governance members list — this route does not exist in the current application. A dedicated members page has not been implemented. The `/gr/members` route does not exist in the shipped application. There is no `Route` entry in `src/routes/gr.tsx` for this path, and no corresponding page component was found. ## Overview No page component or route is registered for `/gr/members`. Member or staff directory functionality may be served by other platform cores (HR, PF). There is also no `/gr/members/new` route in the shipped application. No page component or route is registered for `/gr/members/new`, and there is no evidence in shipped code of a GR-scoped member creation flow. ## Related Governance & Compliance core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/gr.tsx # My Acknowledgments Source: https://docs.encoreos.io/gr/my-acknowledgments The My Acknowledgments page (/gr/my-acknowledgments) renders MyPolicyAcknowledgments, a self-service view for each user to see and act on the policy… The My Acknowledgments page (`/gr/my-acknowledgments`) renders `MyPolicyAcknowledgments`, a self-service view for each user to see and act on the policy acknowledgment assignments scoped to their account. ## Overview `MyPolicyAcknowledgments` calls `usePolicyAcknowledgmentList({ mode: 'my' })` to fetch only the current user's assignments. The page organizes acknowledgments into three tabs: * **Pending** — acknowledgments with `status = 'pending'` and a future or absent due date * **Overdue** — pending acknowledgments whose `due_date` is in the past (highlighted in destructive color) * **Completed** — acknowledgments with `status = 'acknowledged'` Three stat cards at the top show counts for Pending, Overdue (destructive variant when > 0), and Completed. Clicking **View & Acknowledge** on a pending card opens `PolicyAcknowledgmentDialog`. ## Who it's for Access follows your organization's role and module configuration. Any authenticated user can access their own acknowledgment queue. ## Before you start * You must be authenticated. The page displays only acknowledgments assigned to your user account. * To acknowledge a policy, review the policy content within the dialog before confirming. ## Steps Navigate to `/gr/my-acknowledgments`. The page loads your assigned policy acknowledgments. Review the three stat cards: Pending, Overdue, and Completed. A destructive badge on Overdue indicates items needing immediate attention. Click the **Overdue** tab to see policies past their due date. Due dates display in destructive color. On any pending card, click **View & Acknowledge**. The `PolicyAcknowledgmentDialog` opens with the policy content and an acknowledgment control. Complete and submit the acknowledgment. Click the **Completed** tab to see previously acknowledged policies with their acknowledgment dates. ## Key concepts * **usePolicyAcknowledgmentList** — hook with `mode: 'my'` that fetches only the current user's `gr_policy_acknowledgments` rows. * **PolicyAcknowledgmentDialog** — dialog component that renders policy content and the acknowledgment submission form. * **due\_date** — field on `gr_policy_acknowledgments`; absent due date means no deadline; past due date triggers the overdue state. * **policy\_version** — the version number shown on each acknowledgment card identifies the exact policy version the user is acknowledging. ## Related Governance & Compliance core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/gr.tsx * src/cores/gr/pages/MyPolicyAcknowledgments.tsx * src/cores/gr/hooks/usePolicyAcknowledgmentList.ts # My QI Dashboard Source: https://docs.encoreos.io/gr/my-qi-dashboard Personal Quality Improvement dashboard showing the current user's assigned improvements, QI projects they own, and active PDSA cycles. The My QI Dashboard (`/gr/my-quality-improvement`) renders `MyQIDashboard`, a personal view scoped to the current user's quality improvement workload across improvements, projects, and PDSA cycles. ## Overview `MyQIDashboard` calls three hooks scoped to the current user: * `useMyImprovements()` — improvement action items assigned to the user * `useMyQIProjects()` — QI projects owned by the user * `useMyPDSACycles()` — active PDSA cycles the user participates in Four stat cards show: My Improvements (total), My Projects (total and active count), Active Cycles (PDSA cycles in progress or planning), and Overdue (improvements past due). Three tabs display the data: **My Improvements**, **My Projects**, and **My PDSA Cycles**. Clicking any card navigates to the corresponding QI project detail at `/gr/quality-improvement/:id`. ## Who it's for Access follows your organization's role and module configuration. Any authenticated user can view their own QI workload. ## Before you start * You must be authenticated. Data is scoped to your user account. * The QI module must be enabled (`qi_enabled` in Governance Settings) for projects and cycles to appear. ## Steps Navigate to `/gr/my-quality-improvement`. The page loads your improvements, projects, and PDSA cycles. Check the four stat cards. A destructive Overdue count means improvement actions are past their due date. Click the **My Improvements** tab to see assigned improvement actions. Overdue items have a destructive border. Click any card to navigate to its parent QI project. Click **My Projects** to see QI projects you own. Status badges indicate active, planning, on hold, or completed. Click a card to go to the project detail. Click **My PDSA Cycles** to see cycles you are participating in that are in progress or planning. Each card shows the cycle number, phase, status, and parent project. ## Key concepts * **PDSA cycle** — Plan-Do-Study-Act improvement cycle; phases are `plan`, `do`, `study`, `act`. * **useMyImprovements / useMyQIProjects / useMyPDSACycles** — hooks returning data scoped to the authenticated user's ID. * **qi\_enabled** — module settings flag in `gr_module_settings`; must be `true` for QI functionality to be active. ## Related Governance & Compliance core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/gr.tsx * src/cores/gr/pages/MyQIDashboard.tsx * src/cores/gr/hooks/useMyQIProjects.ts * src/cores/gr/hooks/useMyPDSACycles.ts # My Training Source: https://docs.encoreos.io/gr/my-training Personal training enrollment dashboard — view assigned courses by status (pending, in progress, completed, overdue) and access course materials or certificates. The My Training page (`/gr/my-training`) renders `MyTraining`, a self-service enrollment dashboard that shows all training courses assigned to the current user with status filters and progress tracking. ## Overview `MyTraining` calls `useMyEnrollments` to fetch the current user's `gr_training_enrollments` records. Four stat cards show Total Assigned, In Progress, Completed, and Overdue counts. Tabs filter the list: **All**, **Pending**, **In Progress**, **Completed**, and **Overdue**. Each enrollment card renders via `EnrollmentCard`, which calls `useTrainingCourseDetail` to show the course title, category badge, status badge, due date, CEU credits (if any), and estimated duration. Action buttons on each card: * Not started → **Start Training** * In progress → **Continue Training** * Completed → **View Certificate** Overdue courses receive a destructive border. The search input filters by `course_id`. ## Who it's for Access follows your organization's role and module configuration. Any authenticated user can view their own training assignments. ## Before you start * You must be authenticated. The page shows only your enrolled courses. * Course content and completion mechanics are handled outside this list view (navigation target depends on course configuration). ## Steps Navigate to `/gr/my-training`. The page loads your training enrollments. Check the stat cards: Total Assigned, In Progress, Completed, and Overdue. A destructive Overdue count means courses are past their due date. Click a tab (Pending, In Progress, Completed, Overdue) to narrow the list. Use the search box to look up a specific course. Click **Start Training** or **Continue Training** on a course card to access the course content. For completed courses, click **View Certificate** to access the completion certificate. ## Key concepts * **useMyEnrollments** — hook fetching `gr_training_enrollments` scoped to the current user; supports `status` and `is_overdue` filters. * **TrainingStatusBadge / TrainingCategoryBadge** — visual components from `src/cores/gr/components/`. * **ceu\_credits** — CEU credit value on the course; displayed on the enrollment card when > 0. * **duration\_minutes** — course duration converted to hours for display. ## Related Governance & Compliance core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/gr.tsx * src/cores/gr/pages/MyTraining.tsx * src/cores/gr/hooks/useTrainingEnrollmentList.ts * src/cores/gr/hooks/useTrainingCourseList.ts # Governance & Compliance Overview Source: https://docs.encoreos.io/gr/overview Overview of the Governance & Compliance core in Encore OS — purpose, scope, and key responsibilities. ## Overview The Governance & Compliance (GR) module provides organizational governance, policy management, training & CEU tracking, compliance monitoring, and audit management capabilities for recovery housing organizations. ## How governance flows Regulatory requirements drive compliance monitoring; gaps surface findings in audits, which generate corrective actions tracked to closure. Policies and training set expectations and evidence, while risk and quality improvement run as continuous-improvement loops feeding back into requirements. ```mermaid theme={null} flowchart LR Reqs["Regulatory
requirements"] --> Compliance["Compliance
monitoring"] Policies["Policies +
acknowledgments"] --> Compliance Training["Training & CEU"] --> Compliance Compliance --> Audits["Audits"] Audits --> Findings["Findings"] Findings --> Corrective["Corrective actions"] Corrective --> Verified["Resolved & verified"] Risk["Risk register"] --> Mitigation["Mitigations"] Mitigation --> Reqs QI["Quality improvement
(PDSA)"] --> Reqs ``` Governance compliance requirement wizard *** ## Explore GR Policy lifecycle, acknowledgments, and reviews. Courses, enrollments, and CEU transcripts. Requirements, evidence, and remediation. Audit tracking, findings, and corrective actions. Risk register, assessments, and mitigations. QI projects, PDSA cycles, and metrics. ## Features | Feature | Status | Description | | -------------------------------- | ---------- | -------------------------------------------------------------------------- | | Policy Management (GR-01) | ✅ Complete | Policy lifecycle, acknowledgments, and compliance tracking | | Training & CEU Tracking (GR-02) | ✅ Complete | Training programs, enrollments, and continuing education credits | | Compliance Tracking (GR-03) | ✅ Complete | Regulatory compliance monitoring, evidence collection, remediation | | Audit Management (GR-04) | ✅ Complete | Internal and external audit tracking, findings, corrective actions | | Risk Assessment (GR-05) | ✅ Complete | Risk identification, assessment, and mitigation | | AI Compliance Advisor (GR-06) | ✅ Complete | AI-assisted compliance chat, gap analysis, audit prep, risk assessment | | Quality Improvement (GR-07) | ✅ Complete | QI projects, PDSA cycles, metrics tracking, improvement actions | | Accreditation Management (GR-08) | ✅ Complete | Accreditation tracking, standards, surveys, evidence management | | Contract Management (GR-10) | ✅ Complete | Contract lifecycle, obligations, milestones, expiration alerts | | Procedures Management (GR-11) | ✅ Complete | Visual procedure editor, policy linkage, execution tracking, AI generation | *** ## User Guides ### For All Staff * [Policy User Guide](/gr/policy-user-guide) - View policies and complete acknowledgments * [Training User Guide](/gr/training-user-guide) - Complete training and track CEU credits * [Compliance User Guide](/gr/compliance-user-guide) - View compliance status and requirements * [Audit User Guide](/gr/audit-user-guide) - Understand audits and manage assigned corrective actions * [Risk User Guide](/gr/risk-user-guide) - Understand risks and manage assigned mitigations * [AI Compliance Advisor User Guide](/gr/ai-compliance-user-guide) - Use AI for compliance assistance * [QI User Guide](/gr/qi-user-guide) - View and complete QI improvements * [Accreditation User Guide](/gr/accreditation-user-guide) - View accreditations, standards, and surveys * [Contract User Guide](/gr/contract-user-guide) - View contracts and track obligations * [Procedure User Guide](/gr/procedure-user-guide) - View and execute procedures ### For Compliance Officers & Administrators * [Policy Admin Guide](/gr/policy-admin-guide) - Manage policies, assignments, and compliance * [Training Admin Guide](/gr/training-admin-guide) - Manage courses, enrollments, and CEU tracking * [Compliance Admin Guide](/gr/compliance-admin-guide) - Manage requirements, checks, and remediations * [Audit Admin Guide](/gr/audit-admin-guide) - Plan audits, record findings, track corrective actions * [Risk Admin Guide](/gr/risk-admin-guide) - Manage risks, assessments, and mitigations * [AI Compliance Advisor Admin Guide](/gr/ai-compliance-admin-guide) - Configure and manage AI features * [QI Admin Guide](/gr/qi-admin-guide) - Manage QI projects, PDSA cycles, metrics * [Accreditation Admin Guide](/gr/accreditation-admin-guide) - Manage accreditations, standards, surveys * [Contract Admin Guide](/gr/contract-admin-guide) - Manage contracts, obligations, milestones * [Procedure Admin Guide](/gr/procedure-admin-guide) - Create procedures, visual editor, AI generation ### Technical Reference * [AI Prompts Reference](/gr/ai-prompts-reference) - AI prompt templates and schemas *** ## Quick Links ### Policy Management | Page | Route | Description | | ---------------------- | ------------------------ | ------------------------------------------ | | GR Overview | `/gr` | Module dashboard with compliance metrics | | Policy Library | `/gr/policies` | Browse and search all policies | | My Acknowledgments | `/gr/my-acknowledgments` | View pending and completed acknowledgments | | Acknowledgment Tracker | `/gr/acknowledgments` | Admin: Track employee acknowledgments | | Policy Reviews | `/gr/reviews` | Admin: Manage policy review cycles | ### Training & CEU Management | Page | Route | Description | | ---------------- | -------------------- | -------------------------------------- | | Training Library | `/gr/training` | Browse and search all training courses | | Training Detail | `/gr/training/:id` | View course details and enrollments | | My Training | `/gr/my-training` | View pending and completed training | | CEU Transcript | `/gr/ceu-transcript` | View and export CEU credit history | ### Compliance Tracking | Page | Route | Description | | -------------------- | --------------------------------- | ----------------------------------------- | | Compliance Dashboard | `/gr/compliance` | Monitor overall compliance status | | Requirements Library | `/gr/compliance/requirements` | Browse and manage regulatory requirements | | Requirement Detail | `/gr/compliance/requirements/:id` | View requirement details and evidence | | Remediation Tracker | `/gr/compliance/remediation` | Track non-compliance issues | ### Audit Management | Page | Route | Description | | ------------------ | ------------------------------- | ------------------------------------------------- | | Audit List | `/gr/audits` | Browse and manage audits | | Audit Detail | `/gr/audits/:id` | View audit details, checklist, findings, evidence | | Audit Findings | `/gr/audits/findings` | All findings across audits | | Audit Readiness | `/gr/audits/readiness` | Readiness assessment dashboard | | Corrective Actions | `/gr/audits/corrective-actions` | Track corrective action completion | ### Risk Management | Page | Route | Description | | ------------- | --------------- | ------------------------------------------- | | Risk Register | `/gr/risks` | Browse and manage organizational risks | | Risk Detail | `/gr/risks/:id` | View risk details, assessments, mitigations | ### AI Compliance Advisor | Page | Route | Description | | ------------------ | ------------------------ | ----------------------------------- | | AI Suggestions | `/gr/ai/suggestions` | AI-generated compliance suggestions | | AI Gap Analysis | `/gr/ai/gap-analysis` | AI-assisted gap analysis | | AI Audit Prep | `/gr/ai/audit-prep` | AI-assisted audit preparation | | AI Risk Assessment | `/gr/ai/risk-assessment` | AI-assisted risk assessment | ### Quality Improvement | Page | Route | Description | | -------------- | ----------------------------------- | ------------------------------------------ | | QI Projects | `/gr/quality-improvement` | Browse and manage QI projects | | QI Dashboard | `/gr/quality-improvement/dashboard` | QI overview statistics | | QI Reports | `/gr/quality-improvement/reports` | Export QI data as PDF, CSV, Excel | | QI Templates | `/gr/quality-improvement/templates` | Manage reusable QI project templates | | Project Detail | `/gr/quality-improvement/:id` | Project with cycles, metrics, improvements | | My QI | `/gr/my-quality-improvement` | Personal QI dashboard | ### Accreditation Management | Page | Route | Description | | ----------------------- | ------------------------------ | ---------------------------------------------------- | | Accreditation List | `/gr/accreditations` | Browse and manage accreditations | | Accreditation Dashboard | `/gr/accreditations/dashboard` | Accreditation overview and metrics | | Accreditation Detail | `/gr/accreditations/:id` | View accreditation with standards, surveys, evidence | | Accreditation Reports | `/gr/accreditations/reports` | Status, renewal, compliance reports | ### Contract Management | Page | Route | Description | | --------------- | ------------------- | ------------------------------------------------------ | | Contract List | `/gr/contracts` | Browse and manage contracts | | Contract Detail | `/gr/contracts/:id` | View contract with obligations, milestones, amendments | ### Procedures Management | Page | Route | Description | | ---------------- | ------------------------- | ----------------------------------------------- | | Procedure List | `/gr/procedures` | Browse and manage procedures | | Procedure Detail | `/gr/procedures/:id` | View procedure with steps, versions, executions | | Procedure Editor | `/gr/procedures/:id/edit` | Visual workflow editor | ### Settings | Page | Route | Description | | ----------- | -------------- | -------------------------------- | | GR Settings | `/gr/settings` | Admin: Configure module settings | *** ## Getting Started ### For Employees #### Policy Acknowledgments 1. Navigate to **GR → My Acknowledgments** to see pending policies 2. Click on a policy to view details and download the document 3. Complete the acknowledgment form before the due date 4. Track your acknowledgment history on the same page #### Training & CEU 1. Navigate to **GR → My Training** to see pending training assignments 2. Click on a course to view details and access materials 3. Complete training requirements before the due date 4. View your CEU credits at **GR → CEU Transcript** #### Corrective Actions 1. Navigate to **GR → Audits → Corrective Actions** 2. Filter by **Assigned to Me** to see your tasks 3. Update progress and mark complete when finished 4. Attach evidence of resolution ### For Compliance Officers #### Policy Management 1. Navigate to **GR → Settings** to configure reminder notifications 2. Create policies at **GR → Policies** → **New Policy** 3. Assign policies to employees based on role, department, or site 4. Monitor compliance at **GR → Acknowledgments** 5. Manage review cycles at **GR → Reviews** #### Training Management 1. Create training courses at **GR → Training** → **New Course** 2. Configure CEU credits and expiration periods 3. Enroll employees individually or in bulk 4. Track completions and compliance at **GR → Training** 5. Monitor expiring certifications on the GR Overview dashboard #### Audit Management 1. Create audits at **GR → Audits** → **New Audit** 2. Assign audit teams and generate checklists 3. Execute audits and document findings 4. Create corrective actions for findings 5. Track resolution at **GR → Audits → Corrective Actions** 6. Use readiness assessment for upcoming audits *** ## Key Concepts ### Policy Status Workflow ```text theme={null} Draft → In Review → Approved → Active ↓ Deprecated → Archived ``` ### Training Status Workflow ```text theme={null} Not Started → In Progress → Completed ↓ ↓ Overdue ────→ Overdue ``` ### Audit Status Workflow ```text theme={null} Planned → In Progress → Completed ↓ Cancelled ``` ### Finding Status Workflow ```text theme={null} Open → In Remediation → Resolved → Closed ``` ### Corrective Action Status Workflow ```text theme={null} Pending → In Progress → Completed → Verified ``` ### Risk Status Workflow ```text theme={null} Active → Mitigated → Resolved → Closed ``` ### Mitigation Status Workflow ```text theme={null} Planned → In Progress → Completed → Verified ``` ### Risk Rating Levels | Rating | Score Range | Description | | ------------ | ----------- | -------------------------------------- | | **Critical** | 16-25 | Immediate executive attention required | | **High** | 10-15 | Active mitigation required | | **Medium** | 5-9 | Monitor monthly | | **Low** | 1-4 | Monitor quarterly | ### Finding Severity Levels | Severity | Description | Response Time | | --------------- | ----------------------------------------------------- | ------------- | | **Critical** | Immediate risk to health, safety, or compliance | 24-48 hours | | **Major** | Significant non-compliance requiring prompt attention | 30 days | | **Minor** | Gap that should be addressed but not urgent | 90 days | | **Observation** | Improvement opportunity, not a true deficiency | Optional | ### Acknowledgment Types * **Required**: Employee must acknowledge to remain compliant * **Recommended**: Suggested reading, not required * **Informational**: FYI only, no acknowledgment needed ### Training Types * **Online**: Web-based self-paced modules * **In-Person**: Classroom or hands-on training * **Webinar**: Live online sessions * **Self-Paced**: Materials for independent study * **On-the-Job**: Supervised practical training ### CEU Credit Categories * **State Licensing**: Credits for state license renewal * **Professional Certification**: Credits for professional credentials * **Organization Required**: Internal training requirements ### Review Cycles * **Annual**: Review every 12 months * **Biennial**: Review every 24 months * **As Needed**: No scheduled review *** ## Related Documentation * [Platform Notifications Guide](/pf/notifications-guide) * [Document Management Guide](/pf/document-management-guide) *** ## Module Settings Compliance officers can configure GR module settings at **GR → Settings**: ### Policy Settings * Enable/disable reminder notifications * Set default reminder days (30, 14, 7 days before due) * Configure review cycle defaults ### Training Settings * Enable/disable training reminders * Set expiration reminder days (90, 60, 30 days before) * Configure default course settings ### Audit Settings * Enable/disable audit reminders * Set upcoming audit reminder days (14, 7, 3 days before) * Set finding due date reminder intervals * Set corrective action reminder intervals ### Risk Settings * Enable/disable risk reminders * Set default risk review frequency * Set mitigation due date reminder intervals * Configure risk rating thresholds ### AI Settings * Enable/disable AI Compliance Advisor * AI features include: compliance chat, gap analysis, audit preparation, risk assessment ### QI Settings * Enable/disable Quality Improvement module * Set default PDSA cycle duration * Enable PDSA completion notifications * Enable metric goal achievement alerts * Configure improvement reminder intervals ### Contract Settings * Default expiration alert days (90, 60, 30) * Renewal notice days before expiration * Auto-generate contract numbers * Contract number prefix * Require contract approval * Approval threshold amount * Obligation reminder days * Auto-mark obligations overdue *** **Need Help?** Contact your system administrator or compliance officer. # Policy Acknowledgment Forms Source: https://docs.encoreos.io/gr/policy-acknowledgment-forms Admin settings page for managing GR-owned forms that can be attached to a policy as its custom acknowledgment form, overriding the default attestation fields. The Policy Acknowledgment Forms page (`/gr/settings/policy-acknowledgment-forms`) renders `PolicyAcknowledgmentFormsPage`, which lists `fw_forms` records owned by the GR core that are eligible to be attached to policies as acknowledgment forms. ## Overview `PolicyAcknowledgmentFormsPage` calls `useEntityBreadcrumb` for navigation context and renders an informational `Alert` explaining the purpose of the page, followed by `ModuleFormsPage` filtered to `owning_core='gr'` with `moduleDisplayName='Policy Acknowledgment'`. The alert reads: *"These forms can be attached to a policy as its acknowledgment form. When set, signers see the configured fields (instead of the default attestation) inside the acknowledgment dialog."* New forms are created via `/fw/forms/new?core=gr&purpose=policy_acknowledgment`, subject to `FW_PERMISSIONS.FORMS_CREATE` (`fw.forms.create`). ## Who it's for Requires permission: `gr.policies.acknowledgment-forms.manage` (`GR_PERMISSIONS.POLICIES_ACKNOWLEDGMENT_FORMS_MANAGE`). Users without this permission cannot access this route. ## Before you start * You must hold `gr.policies.acknowledgment-forms.manage`. * Forms created here appear as options in the policy detail page's acknowledgment form selector. * Coordinate with legal or compliance before deploying a custom acknowledgment form. ## Steps Navigate to `/gr/settings/policy-acknowledgment-forms`. The page lists all GR-owned acknowledgment forms. Browse the list of `fw_forms` scoped to `owning_core='gr'`. Existing forms can be opened for editing. If you hold `fw.forms.create`, use the create action. You are directed to `/fw/forms/new?core=gr&purpose=policy_acknowledgment` in the Forms & Workflows module. After creating the form, navigate to the relevant policy's detail page (`/gr/policies/:id`) and set the `acknowledgment_form_id` field to this form. The form will then appear to signers in the acknowledgment dialog. ## Key concepts * **acknowledgment\_form\_id** — foreign key on `gr_policies` that links a policy to a specific `fw_forms` record, overriding the default attestation UI. * **ModuleFormsPage (PF-08)** — shared platform component rendering a filtered, permission-aware forms list. * **purpose=policy\_acknowledgment** — query parameter passed to the form builder to pre-configure the new form's intended use. ## Related Governance & Compliance core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/gr.tsx * src/cores/gr/pages/settings/PolicyAcknowledgmentFormsPage.tsx * src/platform/permissions/constants.ts * src/platform/forms/ModuleFormsPage.tsx # GR Policy Management - Admin Guide Source: https://docs.encoreos.io/gr/policy-admin-guide This guide covers policy management administration including creating policies, managing the approval workflow, assigning policies to employees, tracking ackno… ## Overview This guide covers policy management administration including creating policies, managing the approval workflow, assigning policies to employees, tracking acknowledgments, and managing review cycles. *** ## Initial Setup ### Configuring GR Module Settings 1. Navigate to **GR → Settings** 2. Configure the following options: | Setting | Description | Default | | -------------------- | ----------------------------------------- | --------- | | Enable Reminders | Send automatic acknowledgment reminders | Yes | | Reminder Days | Days before due date to send reminders | 30, 14, 7 | | Default Review Cycle | Default review frequency for new policies | Annual | | Enable AI Assistance | AI-powered policy analysis | Yes | ### Setting Up Policy Categories Policy categories are managed via Picklists: 1. Navigate to **Platform → Picklists** 2. Find or create the `gr_policy_category` picklist 3. Add categories as needed (HR, Safety, Clinical, etc.) *** ## Managing Policies ### Creating a New Policy 1. Navigate to **GR → Policies** 2. Click **New Policy** 3. Complete the form: | Field | Required | Description | | ---------------- | -------- | --------------------------------------------- | | Title | Yes | Policy name (e.g., "Workplace Safety Policy") | | Description | No | Brief summary of the policy | | Category | Yes | Policy category from picklist | | Document | Yes | Upload the policy document (PDF recommended) | | Owner | Yes | Employee responsible for the policy | | Review Cycle | Yes | How often the policy should be reviewed | | Effective Date | No | When the policy takes effect | | Regulatory Links | No | Related regulatory requirements | 4. Click **Create Policy** (saves as Draft) ### Policy Status Workflow ``` ┌─────────┐ ┌───────────┐ ┌──────────┐ │ Draft │ ──> │ In Review │ ──> │ Approved │ └─────────┘ └───────────┘ └──────────┘ │ ▼ ┌────────────┐ ┌──────────┐ │ Deprecated │ ──> │ Archived │ └────────────┘ └──────────┘ ``` | Status | Description | Visibility | | ---------- | -------------------- | --------------------------- | | Draft | Being created/edited | Compliance officers only | | In Review | Pending approval | Compliance officers only | | Approved | Active and visible | All assigned employees | | Deprecated | Being phased out | All employees (with notice) | | Archived | No longer active | Compliance officers only | ### Approving a Policy 1. Navigate to **GR → Policies** and filter by "In Review" 2. Click on the policy to view details 3. Review the policy content and document 4. Click **Approve** to activate the policy 5. Optionally set the **Effective Date** ### Deprecating a Policy When a policy is being replaced or retired: 1. Open the policy details 2. Click **Deprecate** 3. Optionally link to the **Replacement Policy** 4. Add a **Deprecation Notice** explaining the change 5. Set when the deprecation takes effect ### Archiving a Policy After a policy has been deprecated for sufficient time: 1. Open the deprecated policy 2. Click **Archive** 3. The policy is hidden from regular users 4. Historical acknowledgments are preserved *** ## Policy Versioning ### When to Create a New Version Create a new version when: * Significant content changes are made * Regulatory requirements change * Re-acknowledgment is required Minor corrections (typos, formatting) typically don't require a new version. ### Creating a New Version 1. Open the policy details 2. Click **Create New Version** 3. Upload the updated document 4. Enter a **Change Summary** describing what changed 5. Choose whether to **Require Re-acknowledgment** 6. Click **Create Version** ### Version History All versions are preserved and viewable in the **Version History** tab: * Version number and date * Change summary * Who created the version * Document for that version *** ## Policy Assignments ### Assignment Types Policies can be assigned based on: | Type | Description | Example | | ------------- | ---------------------------- | ------------------------------ | | All Employees | Everyone in the organization | Company-wide policies | | By Role | Specific job roles | Clinical Policies → Counselors | | By Department | Department members | HR Policies → HR Department | | By Site | Site-specific employees | Site A Safety → Site A staff | | Individual | Specific employees | Specialized training | ### Creating an Assignment 1. Open the policy details 2. Click **Manage Assignments** or go to the **Assignments** tab 3. Click **Add Assignment** 4. Select the assignment type and criteria: * For roles: Select one or more roles * For departments: Select one or more departments * For sites: Select one or more sites * For individuals: Select specific employees 5. Set the **Due Date** for acknowledgment 6. Choose **Acknowledgment Type** (Required, Recommended, Informational) 7. Click **Create Assignment** ### How Assignments Work When an assignment is created: 1. System identifies matching employees 2. Creates pending acknowledgments for each 3. Employees see the policy in "My Acknowledgments" 4. Reminders are sent based on due date ### Re-Assignment on New Versions When a new policy version requires re-acknowledgment: 1. System creates new pending acknowledgments 2. Employees who acknowledged the old version must re-acknowledge 3. Previous acknowledgments are preserved in history *** ## Regulatory Mapping ### Linking to Regulations Connect policies to regulatory requirements for audit preparation: 1. Open the policy details 2. Go to the **Regulatory Links** tab 3. Click **Add Link** 4. Enter: * **Regulation Type**: CARF, State Licensing, NARR, HIPAA, etc. * **Requirement ID**: Specific section/requirement number * **Description**: What requirement this policy addresses 5. Click **Save** ### Using Regulatory Links * Filter policies by regulation during audits * Generate compliance reports * Track coverage of regulatory requirements *** ## Tracking Acknowledgments ### Acknowledgment Tracker Navigate to **GR → Acknowledgments** to view all acknowledgments: | Column | Description | | ------------ | ------------------------------ | | Employee | Staff member name | | Policy | Policy title and version | | Assigned | Assignment date | | Due Date | Acknowledgment deadline | | Status | Pending, Acknowledged, Overdue | | Acknowledged | When completed (if applicable) | ### Filtering Acknowledgments Filter by: * **Policy**: Specific policy * **Status**: Pending, Acknowledged, Overdue * **Employee**: Specific staff member * **Due Date Range**: Date window ### Sending Manual Reminders 1. Select one or more pending acknowledgments 2. Click **Send Reminder** 3. Employees receive immediate notification ### Voiding an Acknowledgment If an acknowledgment was made in error: 1. Find the acknowledgment in the tracker 2. Click **Void** 3. Enter a **Reason** for voiding 4. The employee will need to re-acknowledge *** ## Policy Review Cycles ### Review Dashboard Navigate to **GR → Reviews** to manage policy reviews: | Section | Description | | -------------- | ------------------------------- | | Overdue | Policies past their review date | | Due This Month | Reviews due in current month | | Upcoming | Reviews due in next 90 days | ### Completing a Review 1. Click on a policy needing review 2. Review the policy content and relevance 3. Decide: * **No Changes**: Mark as reviewed * **Update Needed**: Create new version * **Deprecate**: Begin deprecation process 4. Click **Mark as Reviewed** or take appropriate action 5. Next review date is automatically set ### Review Cycle Options | Cycle | Frequency | | --------- | ------------------ | | Annual | Every 12 months | | Biennial | Every 24 months | | As Needed | Manual review only | *** ## Reporting ### Dashboard Metrics The GR Overview dashboard shows: * Total active policies * Pending acknowledgments * Overdue acknowledgments * Compliance rate percentage * Upcoming reviews ### Acknowledgment Reports Generate reports for: * Policy compliance by department * Employee acknowledgment status * Overdue acknowledgment list * Acknowledgment history ### Exporting Data 1. Navigate to the relevant list view 2. Apply desired filters 3. Click **Export** to download as CSV *** ## Troubleshooting ### Employee doesn't see assigned policy 1. Check if the policy is **Approved** (not Draft) 2. Verify the assignment rule matches the employee 3. Check the employee's role, department, and site 4. Review RLS policies if using custom roles ### Reminders aren't sending 1. Verify **Enable Reminders** is on in GR Settings 2. Check that the scheduled job is running 3. Verify employee has valid notification preferences 4. Check edge function logs for errors ### Policy stuck in Draft Policies require explicit approval action: 1. Submit the policy for review 2. Have an authorized user approve it 3. Check approval thresholds if configured *** ## Best Practices ### Policy Naming * Use clear, descriptive titles * Include version indicator if needed (e.g., "2024 Edition") * Avoid abbreviations unless standard ### Document Organization * Use consistent formatting across policies * Include effective date in the document * Add revision history section * Use PDF format for best compatibility ### Review Cycle Recommendations | Policy Type | Recommended Cycle | | ---------------- | ------------------------------- | | Safety/Emergency | Annual | | HR/Employment | Annual | | Clinical | Annual or as regulations change | | Administrative | Biennial | | IT/Security | Annual | ### Acknowledgment Timing * Give employees at least 14 days to acknowledge * Schedule major policy updates during slower periods * Stagger assignments to avoid overwhelming employees * Use reminder automation to reduce manual follow-up *** ## Related Guides * [Policy User Guide](/gr/policy-user-guide) - For employees * [GR Documentation Index](/gr/overview) - GR module overview * [Notifications Guide](/pf/notifications-guide) - Platform notifications *** **Need Help?** Contact your system administrator or refer to the [GR module documentation](/gr/overview). # Policy Custom Fields Source: https://docs.encoreos.io/gr/policy-custom-fields Admin settings page for managing custom field definitions on GR policy records — create, edit, enable/disable, and delete per-tenant policy metadata fields. The Policy Custom Fields page (`/gr/settings/policy-custom-fields`) renders `PolicyCustomFieldsPage`, which manages `pf_custom_field_definitions` records scoped to `entity_type = 'gr_policy'`. ## Overview `PolicyCustomFieldsPage` uses the platform PF-16 custom fields system: * `useCustomFieldDefinitions('gr_policy')` — fetches all custom field definitions for the `gr_policy` entity type. * `useCustomFieldMutation` — provides `createDefinition`, `updateDefinition`, and `deleteDefinition` mutations. The page renders a table with columns for field name, type, and enabled/disabled toggle (a `Switch`). Each row has edit (pencil) and delete (trash) icon buttons. A **+ Add Field** button opens a `Dialog` containing `CustomFieldDefinitionForm`. Deletion uses a confirmation `AlertDialog`. The `ENTITY_TYPE` constant is `'gr_policy'`, ensuring fields defined here appear only on policy forms and detail views. ## Who it's for Requires permission: `gr.policies.custom-fields.manage` (`GR_PERMISSIONS.POLICIES_CUSTOM_FIELDS_MANAGE`). Users without this permission cannot access this route. ## Before you start * You must hold `gr.policies.custom-fields.manage`. * Custom fields defined here will appear on the policy creation wizard and policy detail forms for all users in the organization. * Coordinate with compliance before adding fields that might capture regulated data. ## Steps Navigate to `/gr/settings/policy-custom-fields`. The page loads all `pf_custom_field_definitions` for `entity_type='gr_policy'`. The table shows each field's name, type, and enabled status. Use the toggle switch to enable or disable a field without deleting it. Click **+ Add Field**. The `CustomFieldDefinitionForm` dialog opens. Enter the field name, select a type, and set options if applicable. Save to create the definition. Click the pencil icon on a field row. The same form opens pre-populated with the field's current values. Save to update. Click the trash icon. A confirmation dialog (`AlertDialog`) asks you to confirm deletion. Confirm to call `deleteDefinition`. ## Key concepts * **pf\_custom\_field\_definitions** — platform table (PF-16) storing per-tenant custom field schemas; scoped by `entity_type`. * **entity\_type = 'gr\_policy'** — ensures these fields appear only on policy records. * **CustomFieldDefinitionForm** — shared platform form component for creating or editing a custom field definition. * **enabled toggle** — controls whether the field appears on forms without permanently removing the definition. ## Related Governance & Compliance core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/gr.tsx * src/cores/gr/pages/settings/PolicyCustomFieldsPage.tsx * src/platform/permissions/constants.ts * src/platform/custom-fields/index.ts # Policy Library Source: https://docs.encoreos.io/gr/policy-library Browse and create organizational policies — searchable list, 4-step creation wizard, and tabbed detail for versions and acknowledgments. The Policy Library page (`/gr/policies`) renders `PolicyLibrary`, the central browsing and management surface for all `gr_policies` records in the organization. ## Overview `PolicyLibrary` calls `usePolicyList({ filters })` with pagination. It provides: * **Search** — text input for policy title search (deferred value pattern for performance). * **Filters** — category and status selects derived from `PolicyListFilters`. * **View toggle** — grid (`LayoutGrid`) and list (`List`) view modes. * **Pagination** — sliding-window page number navigation. * **Create policy** — opens `PolicyCreationWizardDialog` (4-step wizard); visible to users with the appropriate permission checked inside `PolicyLibrary` using `useHasPermission(GR_PERMISSIONS...)`. * **Guided tour** — `policyManagementTour` launched via `useTour`; starts automatically if `?tour=policy-management-tour` is in the URL. Each policy card renders via `PolicyCard`. Clicking a card navigates to `/gr/policies/:id`. ## Who it's for Access follows your organization's role and module configuration. Any authenticated user can browse the policy library. The create action inside the page is conditionally rendered based on the user's permissions. ## Before you start * No special permission is required to browse policies. * To create a policy, the appropriate GR admin permission is required (checked within the component). ## Finding a policy 1. Navigate to `/gr/policies`. The library loads with the first page of policies. 2. Type in the search box to filter policies by title. The list updates with a deferred search. 3. Use the Category and Status selects to narrow the list. 4. Click the grid or list icon to toggle between card grid and tabular list views. 5. Click a `PolicyCard` to navigate to `/gr/policies/:id` for full detail. 6. Append `?tour=policy-management-tour` to the URL or click the help button to start the guided tour. **usePolicyList** — hook with pagination and filter support for `gr_policies` records. **PolicyListFilters** — typed filter object with `category`, `status`, `review_due`, and other fields. **Sliding-window pagination** — `getPageNumbers` helper that generates page numbers with ellipsis around the current page. ## Viewing a policy The Policy Details page (`/gr/policies/:id`) renders `PolicyDetail`, a tabbed view for a single `gr_policies` record with full lifecycle management capabilities for authorized users. `PolicyDetail` loads a policy via `usePolicyDetail(id)` and renders four tabs: | Tab | Content | | ------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | | **Overview** | Policy metadata: title, category, status badge, owner, approved-by, site, description | | **Versions** | `PolicyVersionHistory` — version list with download support | | **Acknowledgments** | `PolicyAcknowledgmentTable` — admin view of all assignments for this policy (loaded via `usePolicyAcknowledgmentList` in `mode: 'admin'`) | | **Assignments** | `PolicyAssignmentList` + `PolicyAssignmentDialog` — role/group assignments | Header actions (conditionally rendered by permission): * **Approve** — available to users with `gr.policies.approve` (`canApprove`); calls `updatePolicy` to set status to approved. * **Deprecate** — available to users with `gr.policies.deprecate` (`canDeprecate`); calls `deprecatePolicy`. * **Edit** — opens `PolicyFormDialog`. * **New Version** — opens `PolicyVersionDialog`. * **Assign** — opens `PolicyAssignmentDialog`. The active tab syncs to the URL via `useTabUrlState` (`?tab=`). Viewing a policy detail requires only authentication and organization membership. Specific actions within the page require `gr.policies.approve`, `gr.policies.deprecate`, or admin-level permissions. 1. Navigate to `/gr/policies/:id`. The overview tab is displayed by default. 2. Read the policy metadata: category badge, status badge, owner, approved-by, site association, and description. 3. Click the **Versions** tab to see all `gr_policy_versions` records. Documents can be downloaded. 4. Click **Acknowledgments** to see the admin view of all policy acknowledgment assignments and their completion status. 5. Click **Assignments** to see and modify which roles or groups are assigned to acknowledge this policy. 6. If you hold `gr.policies.approve`, click **Approve** to mark the policy approved. If you hold `gr.policies.deprecate`, click **Deprecate**. **gr.policies.approve / gr.policies.deprecate** — permissions gating the approve and deprecate header actions. **useTabUrlState** — syncs the active tab to `?tab=` in the URL. ## Creating a policy Policy creation is performed via `PolicyCreationWizardDialog`, a dialog-based 4-step wizard launched from this page. There is no standalone `/gr/policies/new` route. `PolicyCreationWizardDialog` is a `DialogWizardShell`-based 4-step wizard: | Step | ID | Description | | ---- | ----------- | ----------------------------------------------- | | 1 | `details` | Title, category, owner (4 fields) | | 2 | `document` | Attach policy file (1 field) | | 3 | `lifecycle` | Review schedule and regulatory links (3 fields) | | 4 | `review` | Confirm and create | Wizard events are tracked with template ID `'gr-policy-creation-wizard'`. Before you start: navigate to `/gr/policies` and locate the create policy action. Have the policy title, category, owner, relevant document file, and intended review schedule ready. 1. Navigate to `/gr/policies`. Click the action to create a new policy. The `PolicyCreationWizardDialog` opens. 2. **Step 1 — Policy Details:** enter the policy title, select a category, and assign an owner. 3. **Step 2 — Document:** attach the policy document file. 4. **Step 3 — Lifecycle:** set the review schedule and any regulatory links. 5. **Step 4 — Review and create:** review the entered information. Click submit to create the policy. You will be navigated to the new policy's detail page. **DialogWizardShell** — platform dialog component that manages step navigation within a modal. **STEP\_DEFS** — static step configuration array in `PolicyCreationWizardDialog` defining step IDs, titles, descriptions, and icons. **GrPolicyWizardFormData** — typed form data structure for the creation wizard. **PolicyCreationWizardDialog** — 4-step dialog wizard launched from this page for new policy creation. ## Related Governance & Compliance core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/gr.tsx * src/cores/gr/pages/PolicyLibrary.tsx * src/cores/gr/pages/PolicyDetail.tsx * src/cores/gr/hooks/usePolicyList.ts * src/cores/gr/hooks/usePolicyDetail.ts * src/cores/gr/hooks/usePolicyAcknowledgmentList.ts * src/cores/gr/wizards/policy-creation/PolicyCreationWizardDialog.tsx # Policy Reviews Source: https://docs.encoreos.io/gr/policy-reviews Compliance officer dashboard for managing policy review cycles — view overdue and upcoming reviews, filter by category, and mark policies as reviewed. The Policy Reviews page (`/gr/reviews`) renders `PolicyReviewDashboard`, a compliance officer tool for identifying and acting on policies that need review. ## Overview `PolicyReviewDashboard` calls `usePolicyList({ filters })` with a `review_due` filter and `usePolicyStats` for the stats header. Key behaviors: * **Review filter** — defaults to `'overdue'`; options are `'all'`, `'overdue'`, and `'upcoming'`. * **Category filter** — populated from `usePolicyCategories`. * **Stats** — uses `usePolicyStats` for overdue and upcoming review counts. * **Mark Reviewed** — calls `updatePolicy` via `usePolicyMutation` to record a review. Only visible to users with `gr.policies.review` (`canReviewPolicies`). Only policies with `status = 'active'` are shown. ## Who it's for Requires permission: `gr.policies.admin` (route-level guard from `gr.tsx`). The mark-reviewed action additionally checks `gr.policies.review`. ## Before you start * You must hold `gr.policies.admin` to access this page. * Ensure the `default_policy_review_period_days` setting is configured in Governance Settings to drive review scheduling. ## Steps Navigate to `/gr/reviews`. The page defaults to showing overdue active policies. The **Overdue** filter is selected by default. Review each policy card for review deadline information. Select **Upcoming** in the review filter to see policies whose review date is approaching. Use the category dropdown to focus on a specific policy type. If you hold `gr.policies.review`, click **Mark Reviewed** on a policy card. The `updatePolicy` mutation records the review. Click a policy card title to navigate to `/gr/policies/:id` for the full detail view. ## Key concepts * **usePolicyList with review\_due filter** — fetches active policies filtered by `review_due: 'overdue'` or `'upcoming'`. * **usePolicyStats** — returns `overdueReviews` and `upcomingReviews30Days` counts for the stats header. * **gr.policies.review** — permission required to submit the mark-reviewed action. * **default\_policy\_review\_period\_days** — module setting that controls how frequently policies are scheduled for review. ## Related Governance & Compliance core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/gr.tsx * src/cores/gr/pages/PolicyReviewDashboard.tsx * src/cores/gr/hooks/usePolicyList.ts * src/cores/gr/hooks/usePolicyMutation.ts # GR Policy Management - User Guide Source: https://docs.encoreos.io/gr/policy-user-guide The Policy Management module helps you stay informed about organizational policies and complete required acknowledgments. This guide covers how to view policie… ## Overview The Policy Management module helps you stay informed about organizational policies and complete required acknowledgments. This guide covers how to view policies, acknowledge them, and track your compliance status. *** ## Getting Started ### Accessing the Policy Library 1. Navigate to **GR → Policies** from the main menu 2. The Policy Library shows all approved policies for your organization 3. Use search and filters to find specific policies ### Accessing My Acknowledgments 1. Navigate to **GR → My Acknowledgments** from the main menu 2. View pending acknowledgments that require your action 3. Track completed acknowledgments and history *** ## Viewing Policies ### Policy Library The Policy Library displays all approved policies with key information: | Column | Description | | ---------------- | ---------------------------------------- | | **Title** | Policy name and description | | **Category** | Policy type (HR, Safety, Clinical, etc.) | | **Version** | Current version number | | **Status** | Approved, Deprecated, or Archived | | **Last Updated** | When the policy was last modified | ### Using Filters Filter policies by: * **Category**: HR, Safety, Clinical, Operations, etc. * **Status**: Approved, Deprecated * **Search**: Find by title or description ### Viewing Policy Details 1. Click on a policy title to open the detail view 2. View the full policy description and summary 3. Download or preview the attached document 4. See version history and regulatory references *** ## My Acknowledgments ### Understanding Pending Acknowledgments When you're assigned a policy, you'll see it in **My Acknowledgments**: | Column | Description | | ------------ | --------------------------------- | | **Policy** | Policy title and category | | **Assigned** | When you were assigned | | **Due Date** | Deadline for acknowledgment | | **Status** | Pending, Overdue, or Acknowledged | ### Due Date Reminders You'll receive automatic reminders at: * 30 days before due date * 14 days before due date * 7 days before due date (if still pending) Check your notifications regularly to stay compliant. *** ## Acknowledging Policies ### Step-by-Step Process 1. Navigate to **GR → My Acknowledgments** 2. Find the pending policy you need to acknowledge 3. Click **Acknowledge** or the policy title 4. In the dialog: * **Download/view** the policy document (required before acknowledging) * **Read** the acknowledgment statement * **Check** the confirmation checkbox * Optionally add **notes** or comments 5. Click **Submit Acknowledgment** ### What Happens After * Your acknowledgment is recorded with timestamp * The policy moves to your "Completed" list * Your compliance status updates on the dashboard * Compliance officers can see your acknowledgment ### Important Notes * You must view/download the document before acknowledging * Acknowledgments cannot be undone (voiding requires admin action) * If a new version is published, you may need to re-acknowledge *** ## Acknowledgment History ### Viewing Completed Acknowledgments 1. Navigate to **GR → My Acknowledgments** 2. Switch to the **Completed** tab 3. View all policies you've acknowledged ### History Details For each completed acknowledgment, you can see: * When you acknowledged * Which version you acknowledged * Any notes you added * The policy document as it was at acknowledgment time *** ## Understanding Policy Versions ### Why Versions Matter When a policy is updated with significant changes: 1. A new version is created 2. You may be required to re-acknowledge 3. Your previous acknowledgment is preserved in history ### Version Indicators * **Current**: The active version you should follow * **Previous**: Archived versions for reference *** ## Notifications & Reminders ### Types of Notifications | Notification | When | Action Required | | ------------------ | ---------------------- | ------------------------ | | New Assignment | When assigned a policy | Acknowledge by due date | | Reminder (30 days) | 30 days before due | Review and acknowledge | | Reminder (14 days) | 14 days before due | Acknowledge soon | | Reminder (7 days) | 7 days before due | Urgent - acknowledge now | | Overdue | After due date | Acknowledge immediately | ### Viewing Notifications 1. Check the notification bell in the header 2. Click to view all pending notifications 3. Click a notification to go directly to the acknowledgment *** ## FAQ ### Why do I need to acknowledge this policy again? The policy was updated with significant changes (new version). You need to acknowledge the updated version to confirm you've read the changes. ### I can't find a policy I'm looking for * Check your filters (ensure "Approved" is selected) * Try searching by keyword * Contact your compliance officer if the policy isn't listed ### What if I have questions about a policy? Contact the **Policy Owner** listed in the policy details, or reach out to your supervisor or compliance officer. ### Can I acknowledge on mobile? Yes, the policy acknowledgment system works on mobile devices. Navigate to **GR → My Acknowledgments** on your phone or tablet. ### What happens if I miss the due date? Your acknowledgment will be marked as **Overdue** and escalated to your supervisor and compliance officer. Complete the acknowledgment as soon as possible. *** ## Related Guides * [Policy Admin Guide](/gr/policy-admin-guide) - For compliance officers * [GR Documentation Index](/gr/overview) - GR module overview *** **Need Help?** Contact your compliance officer or system administrator. # GR Procedures Management - Admin Guide Source: https://docs.encoreos.io/gr/procedure-admin-guide This guide helps compliance officers and administrators create, manage, and monitor procedures. > **Purpose:** This guide helps compliance officers and administrators create, manage, and monitor procedures. *** ## Overview The Procedures Management module enables compliance officers to create visual step-by-step procedures, link them to policies, track executions, and use AI to generate procedure drafts. ### Admin Responsibilities | Responsibility | Description | | ------------------ | ----------------------------------------------------- | | Create Procedures | Build visual workflows with step-by-step instructions | | Manage Lifecycle | Move procedures through draft → review → approved | | Link to Policies | Connect procedures to implementing policies | | Monitor Compliance | Track procedure execution across the organization | | Use AI Generation | Generate procedure drafts from policy content | *** ## Prerequisites ### Required Permissions Administrators need these permissions: | Permission | Purpose | | ----------------------- | ---------------------------------------- | | `gr.procedures.admin` | Full administrative access to procedures | | `gr.procedures.create` | Create new procedures | | `gr.procedures.edit` | Edit existing procedures | | `gr.procedures.approve` | Change procedure status | | `gr.settings.manage` | Configure module settings | *** ## Creating Procedures ### Quick Create 1. Navigate to **GR → Procedures** 2. Click **Add Procedure** 3. Fill in required fields: * **Title**: Clear, descriptive name (e.g., "SOP-001: Medication Administration") * **Category**: Clinical, Operational, Safety, HR, Financial, IT, Emergency, Other * **Description**: Brief overview of procedure purpose 4. Click **Save** to create a draft ### Using AI Generation Generate procedure drafts from existing policies: 1. Navigate to **GR → Procedures → New** 2. Click **Generate with AI** button 3. Select an approved policy from the dropdown 4. (Optional) Add additional context for the AI 5. Click **Generate Procedure** 6. Review the generated steps and confidence score 7. Click **Apply to Procedure** to populate the editor 8. Edit and refine as needed > **Note:** AI generation is only available when AI features are enabled for your organization. *** ## Visual Workflow Editor ### Canvas Overview The procedure editor uses a visual canvas where you can: * Add different step types * Position steps by dragging * Connect steps with edges * Configure step properties ### Adding Steps 1. Open procedure in edit mode 2. Click step type button in the toolbar: * **Action**: Standard task * **Decision**: Branch point * **Verify**: Sign-off step * **Reference**: Link to document * **System**: Automated action 3. New step appears on canvas 4. Drag to position ### Configuring Steps Click on any step to open the properties panel: | Property | Description | | ------------------------- | ------------------------------------------------- | | **Title** | Clear, concise step name | | **Instructions** | Detailed step-by-step instructions | | **Responsible Role** | Who performs this step (e.g., "Nurse", "Manager") | | **Duration** | Estimated time in minutes | | **Requires Signature** | Enable for verification steps | | **Verification Criteria** | What must be verified (for verification steps) | | **Decision Options** | Branch labels (for decision steps) | ### Connecting Steps 1. Hover over a step's bottom handle (output) 2. Drag to another step's top handle (input) 3. Edge connects the steps 4. Label edges as needed (especially for decisions) ### Decision Branches For decision steps: 1. Add the decision step to the canvas 2. Configure decision options (e.g., "Yes", "No", "Escalate") 3. Each option creates a separate output handle 4. Connect each handle to the appropriate next step 5. Label each edge with the decision option *** ## Procedure Lifecycle ### Status Workflow | Status | Description | Who Can View | | -------------- | ---------------------------- | ------------------------ | | **Draft** | Being created/edited | Compliance officers only | | **Review** | Under review before approval | Compliance officers only | | **Approved** | Active procedure | All staff | | **Deprecated** | Being phased out | All staff (with warning) | | **Archived** | Historical record | Compliance officers only | ### Approving Procedures Before approving: 1. Review all steps and connections 2. Verify linked policy (if applicable) 3. Check that all steps have clear instructions 4. Ensure responsible roles are assigned To approve: 1. Open the procedure 2. Click **Change Status** button 3. Select **Approved** 4. Set effective date 5. Procedure becomes visible to staff ### Creating New Versions When updating an approved procedure: 1. Open the approved procedure 2. Click **Create Version** 3. Enter a change summary 4. Version snapshot is created (immutable) 5. Continue editing the current version 6. Re-approve when changes are complete *** ## Linking to Policies ### Why Link Procedures to Policies? * Demonstrates policy implementation * Enables compliance traceability * Required for accreditation audits * Shows staff "the why" behind procedures ### Creating Links 1. Open procedure in edit mode 2. Find "Implements Policy" dropdown 3. Select the policy this procedure implements 4. Link is created automatically 5. Appears on both procedure and policy detail pages ### Link Types | Type | Description | | -------------- | ------------------------------------------------ | | **Implements** | Procedure implements the policy requirements | | **References** | Procedure references but doesn't fully implement | | **Related** | Procedure is related to the policy | *** ## Monitoring Executions ### Execution Dashboard View all procedure executions: 1. Navigate to **GR → Procedures** 2. Open any procedure 3. Click the **Executions** tab Execution status breakdown: | Status | Description | | --------------- | ------------------------- | | **In Progress** | Currently being executed | | **Completed** | Successfully finished | | **Abandoned** | Started but not completed | ### Compliance Reporting Use execution data for: * Track which procedures are being followed * Identify procedures with low execution rates * Audit execution records for accreditation * Verify staff compliance with SOPs ### Execution Details View execution details to see: * Who executed the procedure * When each step was completed * Notes added during execution * Decisions made at branch points * Electronic signatures captured *** ## Module Settings ### Available Settings Navigate to **GR → Settings → Procedures**: | Setting | Default | Description | | -------------------------------------- | ------- | -------------------------------------- | | `procedure_number_prefix` | "SOP" | Prefix for auto-numbering | | `procedure_review_reminder_days` | 30 | Days before review due | | `procedure_auto_save_interval_seconds` | 30 | Auto-save frequency in editor | | `require_policy_link` | false | Require procedures to link to policies | ### Configuring Settings 1. Navigate to **GR → Settings** 2. Open "Procedures" tab 3. Modify settings as needed 4. Click **Save** *** ## AI Generation Best Practices ### Getting Good Results 1. **Select clear policies**: Policies with detailed requirements generate better procedures 2. **Add context**: Describe specific roles, environment, or constraints 3. **Review confidence score**: Higher scores indicate better AI understanding 4. **Edit generated content**: Always review and refine AI output ### What AI Generates * Procedure title and description * Ordered steps with appropriate types * Responsible role suggestions * Time estimates * Verification points * Decision branches ### What to Review * Verify step order makes sense * Check role assignments are correct * Ensure decision options are complete * Add organization-specific details * Remove any generic placeholder content *** ## Troubleshooting ### Common Issues #### Issue: Staff Can't See Procedure **Symptoms:** Staff report procedure not visible **Cause:** Procedure may be in draft/review status **Resolution:** 1. Check procedure status 2. If draft/review, approve the procedure 3. Set effective date if needed *** #### Issue: AI Generation Not Working **Symptoms:** Generate with AI button missing or failing **Cause:** AI features not enabled for organization **Resolution:** 1. Verify AI compliance features enabled in GR settings 2. Check LOVABLE\_API\_KEY secret is configured 3. Contact administrator if still not working *** #### Issue: Execution Not Recording **Symptoms:** Steps complete but execution not saved **Cause:** Permission or connectivity issue **Resolution:** 1. Check user has `gr.procedures.execute` permission 2. Verify network connectivity 3. Refresh page and try again *** ### Escalation Path If issues can't be resolved: 1. Check system logs for errors 2. Review recent changes to procedures 3. Contact technical support with: * Error messages * Steps to reproduce * User and organization details *** ## Customizing Dropdown Values Procedure categories are powered by [picklists](/pf/picklists) under the `gr.procedure.*` namespace. The platform ships defaults so procedure forms work out of the box, but you can tailor the options to match your operational areas. Common procedure picklists to customize: | Picklist | Where it appears | | ----------------------- | ------------------------- | | `gr.procedure.category` | Procedure form → Category | To customize: 1. Navigate to **Settings → Picklists** (`/settings/picklists`). 2. Filter or search for the `gr.procedure.*` picklist you want to edit. 3. If the picklist shows the **System** badge, select **Duplicate to Org** to create an editable copy. 4. Add, rename, reorder, or deactivate items as needed. 5. Save your changes — procedure forms pick up the new values immediately. Procedure status values (Draft, In Review, Approved, Active, Retired) stay fixed because they drive the procedure lifecycle. The full list of governance picklists and their default values is in the [Picklist Reference](/reference/picklists). *** ## Best Practices ### Creating Effective Procedures * ✅ Keep step instructions clear and actionable * ✅ Use active voice ("Review the form" not "The form should be reviewed") * ✅ Assign specific roles, not generic "staff" * ✅ Include time estimates for each step * ✅ Add verification steps after critical actions ### Managing Procedures * ✅ Review procedures quarterly for accuracy * ✅ Update when policies change * ✅ Archive rather than delete outdated procedures * ✅ Use version history to track changes ### Monitoring Compliance * ✅ Check execution rates regularly * ✅ Follow up on abandoned executions * ✅ Use execution data in audits * ✅ Identify training needs from execution patterns *** ## Data Management ### Version History All procedure versions are stored: * Version snapshots are immutable * Change summaries document updates * Previous versions available for audit ### Data Retention | Data Type | Retention Period | Notes | | ------------------- | ---------------- | --------------------------- | | Active procedures | Indefinite | Until archived | | Archived procedures | 7 years | Per compliance requirements | | Execution records | 7 years | Per audit requirements | | Version history | Indefinite | For traceability | *** ## Related Documentation * **User Guide:** `docs/gr/procedure-user-guide.md` - For staff members * **Policy Admin Guide:** `docs/gr/policy-admin-guide.md` - Managing linked policies * **AI Compliance Guide:** `docs/gr/ai-compliance-admin-guide.md` - AI features * **Module Overview:** `docs/gr/overview.md` - GR module documentation *** **Last Updated:** 2026-01-28\ **Technical Support:** Contact your system administrator # GR Procedures Management - User Guide Source: https://docs.encoreos.io/gr/procedure-user-guide This guide helps staff members view procedures and record procedure executions. > **Purpose:** This guide helps staff members view procedures and record procedure executions. *** ## Overview The Procedures Management module provides standardized step-by-step instructions for completing tasks consistently across your organization. Procedures implement policies and provide the "how-to" for compliance. ### Key Capabilities * **View Procedures:** Browse approved procedures in the procedure library * **Visual Workflow:** See step-by-step instructions in a visual flowchart * **Execute Procedures:** Record your completion of procedure steps * **Track Progress:** Monitor your in-progress procedure executions ### Who Should Use This Guide | Role | Use Case | | ------------- | ------------------------------------ | | All Staff | View and execute approved procedures | | Supervisors | Monitor team procedure execution | | New Employees | Learn standard operating procedures | *** ## Prerequisites ### Permissions Required To use Procedures Management, you need: | Permission | Description | | ----------------------- | -------------------------------------- | | `gr.procedures.view` | View approved procedures | | `gr.procedures.execute` | Execute procedures and record progress | > **Note:** Contact your organization administrator if you don't have the required permissions. *** ## Getting Started ### Accessing the Procedure Library 1. Navigate to **GR → Procedures** from the main menu 2. Browse the list of approved procedures 3. Use search and filters to find specific procedures ### Finding Procedures by Category Procedures are organized into categories: | Category | Description | | --------------- | -------------------------------- | | **Clinical** | Patient/resident care procedures | | **Operational** | Day-to-day operations | | **Safety** | Safety and emergency procedures | | **HR** | Human resources procedures | | **Financial** | Financial operations | | **IT** | Technology procedures | | **Emergency** | Emergency response procedures | *** ## Viewing Procedures ### Procedure Library The library shows all approved procedures in your organization: | Column | Description | | ------------ | ----------------------------------------------------------- | | **Title** | Procedure name (e.g., "SOP-001: Medication Administration") | | **Category** | Type (Clinical, Operational, Safety, etc.) | | **Status** | Approved, Deprecated (with warning) | | **Owner** | Person responsible for the procedure | | **Steps** | Number of steps in the procedure | ### Viewing Procedure Details 1. Click on a procedure to open the detail view 2. View the tabs: * **Overview**: Description, metadata, linked policy * **Steps**: Visual workflow of all steps * **Versions**: Version history * **Executions**: Your execution records ### Understanding the Visual Workflow The Steps tab shows a flowchart with different step types: | Icon | Step Type | Description | | ---- | ---------------- | ------------------------------- | | ▶️ | **Action** | Standard task to perform | | 🔀 | **Decision** | Branch point requiring judgment | | ✓ | **Verification** | Step requiring sign-off | | 📄 | **Reference** | Link to document or form | | ⚡ | **System** | Automated system action | ### Reading Procedure Steps Each step displays: * **Title**: What the step is * **Instructions**: How to complete the step * **Responsible Role**: Who should perform this step * **Duration**: Estimated time to complete * **Signature Required**: Whether sign-off is needed *** ## Executing Procedures ### Starting an Execution 1. Open an approved procedure 2. Click the **Execute** button 3. (Optional) Link to a related entity (resident, incident, etc.) 4. Your execution instance is created ### Recording Step Completion As you work through the procedure: 1. Complete each step in order 2. Click **Mark Complete** on each step 3. Add notes if there were any deviations 4. For decision steps, select the branch you took 5. For verification steps, provide electronic signature ### Completing an Execution 1. Complete all required steps 2. Your execution is automatically marked "Completed" 3. The execution record serves as compliance evidence ### Abandoning an Execution If you cannot complete a procedure: 1. Click the **⋮** menu on your execution 2. Select **Abandon Execution** 3. Provide a reason for abandoning 4. The execution is marked as "Abandoned" *** ## Tracking Your Executions ### My Executions View your execution history: 1. Go to **GR → Procedures** 2. Click the **My Executions** tab 3. See all your in-progress and completed executions ### Execution Status | Status | Description | | --------------- | ----------------------------- | | **In Progress** | Started but not yet completed | | **Completed** | All steps completed | | **Abandoned** | Started but not finished | *** ## Mobile Access Procedures are mobile-friendly: * View procedures on any device * Visual workflow displays in read-only mode * Scroll through steps vertically * Execute procedures from mobile devices *** ## Tips and Best Practices ### Do's * ✅ Complete steps in order as shown in the workflow * ✅ Add notes for any deviations from instructions * ✅ Complete verification steps promptly * ✅ Review the full procedure before starting execution ### Don'ts * ❌ Skip required steps * ❌ Leave executions in progress indefinitely * ❌ Ignore decision points - always record the branch taken *** ## Frequently Asked Questions **Q: Who can see procedures?** A: All staff can view approved procedures. Draft and review procedures are only visible to compliance officers. **Q: Can I edit a procedure?** A: No. Only compliance officers can edit procedures. Staff members can view and execute procedures. **Q: How do I report an issue with a procedure?** A: Contact your supervisor or the procedure owner listed on the procedure detail page. **Q: What if a procedure seems outdated?** A: Report it to your supervisor or the compliance team. They can review and update the procedure. **Q: Can I see who else has executed a procedure?** A: Compliance officers can see all executions. Staff can only see their own executions. *** ## Related Documentation * **Admin Guide:** `docs/gr/procedure-admin-guide.md` - For compliance officers * **Policy User Guide:** `docs/gr/policy-user-guide.md` - For understanding linked policies * **Module Overview:** `docs/gr/overview.md` - GR module documentation *** ## Glossary | Term | Definition | | ------------------ | ------------------------------------------------------------------ | | **Procedure** | Step-by-step instructions for completing a task | | **Execution** | A recorded instance of someone following a procedure | | **Step** | An individual action within a procedure | | **Workflow** | The visual representation of procedure steps and their connections | | **Verification** | A step requiring sign-off or confirmation | | **Decision Point** | A step where different paths can be taken based on conditions | *** **Last Updated:** 2026-01-28\ **Questions?** Contact your organization administrator or compliance team. # Procedures Source: https://docs.encoreos.io/gr/procedures Browse, view, create, and edit operational procedures — with category and status filters, visual workflow canvas, and version history. The Procedures page is the main library for all organizational procedures. It is located at route `/gr/procedures` and provides search, category/status filtering, and grid or list view toggle. ## Overview The page fetches procedures using `useProcedureList` with live search (deferred for performance) and filters for category and status. Users with `gr.procedures.create` see an **Add Procedure** button that navigates to `/gr/procedures/new`. Each card links to the Procedure Details page. View can be toggled between grid and list layout. Available categories: `clinical`, `operational`, `safety`, `hr`, `financial`, `it`, `emergency`, `other`. Available statuses: `draft`, `review`, `approved`, `deprecated`, `archived`. ## Who it's for Requires permission: `gr.procedures.view` ## Before you start * Your account must have the `gr.procedures.view` permission. * Creating procedures additionally requires `gr.procedures.create`. ## Finding a procedure 1. Go to **Governance & Compliance → Procedures** at `/gr/procedures`. 2. Use the search bar to filter by title or keyword. 3. Apply **Category** and **Status** filters as needed. 4. Toggle between grid and list views using the layout buttons. 5. Select a procedure card to open the Procedure Details page. 6. To create a new procedure, select **Add Procedure** (requires `gr.procedures.create`). | Concept | Description | | ---------------- | --------------------------------------------------------------------------- | | Category | Classifies the procedure domain (clinical, safety, operational, etc.) | | Status lifecycle | `draft` → `review` → `approved`; deprecated/archived for retired procedures | | Deferred search | Search input is debounced via React's `useDeferredValue` | ## Viewing a procedure The Procedure Details page (`/gr/procedures/:id`) displays a single procedure record — its metadata, visual step canvas, version history, and execution log. The page renders four tabs — **Overview**, **Steps**, **Versions**, and **Executions** — controlled via URL query parameter `?tab=`. The active tab persists in the URL for shareability. A visual canvas (`ProcedureCanvas`) renders workflow nodes and edges in read-only mode. Users with `gr.procedures.edit` see an **Edit** button; users with `gr.procedure_executions.create` see an **Execute** button when the procedure status is `approved`. Users with `gr.procedure_templates.contribute` may save an approved procedure as a template from this page. 1. Navigate to **Governance & Compliance → Procedures** at `/gr/procedures`. 2. Select a procedure card or row to open its detail page. 3. Review the **Overview** tab for title, owner, category, effective date, review cycle, current version, and linked policy (if any). 4. Select the **Steps** tab to view the visual workflow canvas. 5. Select the **Versions** tab to review published version history. 6. Select the **Executions** tab to view execution records. 7. Use the **Execute** button (visible on approved procedures with the required permission) to record a new execution. 8. Use **Edit** to open the procedure editor. | Concept | Description | | ---------------------------------------------------- | ----------------------------------------------------------------- | | `procedure_number` | Unique identifier displayed in monospace; assigned at creation | | Workflow canvas | Read-only visual diagram of `workflow_nodes` and `workflow_edges` | | Tabs (`overview`, `steps`, `versions`, `executions`) | URL-synced via `?tab=` param | | Status | `draft` → `review` → `approved` → `deprecated` / `archived` | | `review_cycle_months` | Displayed on the Overview tab; defaults to 12 | ## Creating a procedure The New Procedure page (`/gr/procedures/new`) renders `ProcedureEditPage` in creation mode for a new `gr_procedures` record. Requires `gr.procedures.create`. Before you start: have the procedure title, category, responsible owner, and content ready. 1. Navigate to `/gr/procedures/new` or use the create action from `/gr/procedures`. The `ProcedureEditPage` loads in creation mode. 2. Fill in the procedure title, category, and assign an owner. Complete the procedure content using the editor. 3. Optionally enter description, linked policy (optional), and review cycle in months. 4. Click the save action. The procedure is inserted into `gr_procedures`. 5. After creation you are navigated to the procedure detail or list page. You can edit the procedure from its detail page (`/gr/procedures/:id/edit`) with `gr.procedures.edit`. ## Editing a procedure The Edit Procedure page (`/gr/procedures/:id/edit`) provides the full editor for updating an existing procedure. Also reached at `/gr/procedures/new` for new procedure creation. Requires `gr.procedures.edit`. The page renders two panels side-by-side: a left-side metadata form (title, description, category, linked policy, review cycle in months) and a right-side interactive workflow canvas (`ProcedureCanvas`) where step nodes and edges can be added or manipulated. When creating a new procedure, an `AIProcedureGenerator` panel can optionally populate the form fields and canvas with AI-generated content. On save, `useProcedureMutation` creates or updates the procedure and navigates to the procedure's detail page. The form uses `zod` validation with `react-hook-form`. Before you start: to create a procedure — have title, category, and at least one workflow step ready. To edit — you must have the procedure's `id` and the `gr.procedures.edit` permission. Linking to a policy requires that the policy exists in the policy library. 1. Navigate to `/gr/procedures/:id/edit` to edit, or `/gr/procedures/new` to create. 2. Enter the procedure title (required), description, category, linked policy (optional), and review cycle in months (optional). 3. Add step nodes to the `ProcedureCanvas` and connect them with edges to define the procedure flow. 4. Click the AI generator option to auto-populate form fields and canvas nodes from a prompt (new procedures only). 5. Click **Save** to create or update the procedure. The page navigates to the procedure detail page on success. **Category** — one of: `clinical`, `operational`, `safety`, `hr`, `financial`, `it`, `emergency`, `other`. **Implements policy** — optional UUID link to a policy record (`implements_policy_id`). **Review cycle** — integer in months (1–60), used to schedule periodic reviews. **Workflow canvas** — uses `@xyflow/react` for the visual node/edge editor (`ProcedureCanvas`). **ProcedureEditPage** — shared page component used for both new-procedure creation and editing an existing procedure; behavior is determined by whether an `:id` param is present. ## Related Governance & Compliance core overview. Documentation coverage and governance. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/gr.tsx * src/cores/gr/pages/ProcedureListPage.tsx * src/cores/gr/pages/ProcedureDetailPage.tsx * src/cores/gr/pages/ProcedureEditPage.tsx * src/cores/gr/hooks/useProcedureList.ts * src/cores/gr/hooks/useProcedureDetail.ts * src/cores/gr/hooks/useProcedureMutation.ts * src/platform/permissions/constants.ts # Quality Improvement Admin Guide Source: https://docs.encoreos.io/gr/qi-admin-guide This guide covers administration of the Quality Improvement module, including project management, PDSA cycles, metrics tracking, and improvement action managem… ## Overview This guide covers administration of the Quality Improvement module, including project management, PDSA cycles, metrics tracking, and improvement action management. *** ## Getting Started ### Prerequisites 1. Ensure QI is enabled in **Governance → Settings → Quality Improvement** 2. Configure notification settings for reminders 3. Familiarize yourself with the PDSA methodology ### Key Routes | Page | Route | Purpose | | -------------- | ----------------------------------- | -------------------------- | | QI Projects | `/gr/quality-improvement` | Browse and manage projects | | QI Dashboard | `/gr/quality-improvement/dashboard` | Overview statistics | | Project Detail | `/gr/quality-improvement/:id` | Manage single project | *** ## Creating QI Projects ### From Scratch 1. Navigate to **Governance → Quality Improvement** 2. Click **New Project** 3. Fill in required fields: * **Title**: Clear, descriptive name * **Category**: clinical, operational, safety, compliance, or outcomes * **Description**: Problem statement and improvement goal * **Owner**: Person responsible for the project 4. Click **Create Project** ### From a Compliance Requirement When a compliance requirement needs improvement: 1. Navigate to the requirement detail page 2. Click **Create QI Project** 3. The project will be linked to the requirement ### From an Audit Finding When an audit finding warrants systematic improvement: 1. Navigate to the finding detail page 2. Click **Create QI Project** 3. The project will be linked to the finding *** ## Managing PDSA Cycles ### Creating a Cycle 1. Open a project detail page 2. Navigate to the **PDSA Cycles** tab 3. Click **New Cycle** 4. Enter the hypothesis and plan details 5. Click **Create Cycle** ### Advancing Through Phases Each cycle progresses through four phases: #### Plan Phase Document: * What change are you testing? * What do you predict will happen? * How will you collect data? #### Do Phase Document: * Carry out the test * Record observations * Note any problems or surprises #### Study Phase Document: * Compare results to predictions * What did you learn? * Were there unexpected outcomes? #### Act Phase Document: * What will you do next? * Adopt (implement broadly), Adapt (modify and test again), or Abandon ### Advancing a Cycle 1. Complete documentation for current phase 2. Click **Advance Phase** 3. Confirm the transition 4. The cycle moves to the next phase ### Completing a Cycle After the Act phase: 1. Review all documentation 2. Click **Complete Cycle** 3. Document the outcome and next steps *** ## Tracking Metrics ### Creating Metrics 1. Open a project detail page 2. Navigate to the **Metrics** tab 3. Click **New Metric** 4. Enter: * **Name**: What you're measuring * **Description**: How it's measured * **Category**: outcome, process, or balancing * **Unit**: Measurement unit (%, count, days, etc.) * **Baseline Value**: Starting measurement * **Goal Value**: Target to achieve ### Recording Measurements 1. Click **Record Measurement** on a metric 2. Enter the new value 3. Add any notes about the measurement 4. Click **Save** The system automatically calculates trend based on the last 3 measurements. ### Understanding Trends | Trend | Criteria | | ------------- | --------------------- | | **Improving** | Moving toward goal | | **Stable** | Within 5% of previous | | **Declining** | Moving away from goal | *** ## Managing Improvements ### Creating Improvement Actions 1. Open a project detail page 2. Navigate to the **Improvements** tab 3. Click **New Improvement** 4. Enter: * **Title**: Action to take * **Description**: Detailed steps * **Responsible Party**: Who will do it * **Due Date**: When it should be complete 5. Optionally link to a PDSA cycle or metric ### Tracking Progress Monitor improvements through: * Project detail page (per-project view) * QI Dashboard (organization-wide view) * My QI page (per-user view) ### Handling Overdue Improvements 1. Check the QI Dashboard for overdue items 2. Contact responsible parties 3. Either extend the deadline or reassign *** ## QI Dashboard ### Overview Statistics The QI Dashboard shows: * **Total Projects**: All projects in the organization * **Active Projects**: Currently in progress * **Active PDSA Cycles**: Cycles in planning or execution * **Open Improvements**: Not yet completed * **Overdue Improvements**: Past due date ### Charts and Breakdowns * **By Category**: Distribution of projects by type * **By Status**: Project status breakdown * **Metric Trends**: Improving vs. stable vs. declining *** ## Settings Configuration Navigate to **Governance → Settings → Quality Improvement**: ### Module Settings | Setting | Description | Default | | -------------------------- | --------------------------- | ------- | | **Enable QI Module** | Toggle QI feature on/off | Enabled | | **Default Cycle Duration** | Days for typical PDSA cycle | 30 | ### Notification Settings | Setting | Description | Default | | --------------------------------- | ---------------------------- | ------- | | **Improvement Reminders** | Days before due to remind | 7, 3, 1 | | **PDSA Completion Notifications** | Alert when cycles complete | Enabled | | **Metric Goal Alerts** | Alert when metrics hit goals | Enabled | *** ## Integration with Other Modules ### GR-03: Compliance Requirements * Create QI projects from requirements needing improvement * Link projects to specific regulatory requirements * Track compliance improvements systematically ### GR-04: Audit Findings * Create QI projects from audit findings * Use PDSA methodology for corrective actions * Document improvement evidence ### GR-05: Risk Assessment * Address high-risk items through QI projects * Track risk reduction through metrics * Document mitigation improvements *** ## Customizing Dropdown Values QI project categories, metric categories, and frequencies are powered by [picklists](/pf/picklists) under the `gr.qi.*` namespace. The platform ships defaults so QI forms work out of the box, but you can tailor the options to match your quality program. Common QI picklists to customize: | Picklist | Where it appears | | ------------------------ | ------------------------------- | | `gr.qi.project_category` | QI project form → Category | | `gr.qi.metric_category` | QI metric form → Category | | `gr.qi.frequency` | QI project / metric → Frequency | To customize: 1. Navigate to **Settings → Picklists** (`/settings/picklists`). 2. Filter or search for the `gr.qi.*` picklist you want to edit. 3. If the picklist shows the **System** badge, select **Duplicate to Org** to create an editable copy. 4. Add, rename, reorder, or deactivate items as needed. 5. Save your changes — QI forms pick up the new values immediately. Project status and PDSA cycle status values stay fixed because they drive workflow logic. The full list of governance picklists and their default values is in the [Picklist Reference](/reference/picklists). *** ## Best Practices ### Project Scope * Keep projects focused on specific, measurable improvements * Start small with pilot tests before broad implementation * Set realistic timelines based on complexity ### PDSA Cycles * Complete cycles quickly (2-4 weeks typical) * Test small changes before scaling * Document thoroughly even when things don't work ### Metrics * Choose metrics that directly measure the improvement goal * Collect baseline data before making changes * Balance outcome metrics with process metrics ### Improvements * Assign clear ownership for each action * Set realistic due dates * Follow up regularly on progress *** ## Reporting ### Available Reports Access through the QI Dashboard: * Project status summary * Improvement completion rates * Metric trend analysis * Overdue item reports ### Export Options * Export project lists to CSV * Generate PDF summaries * Share dashboard views *** ## Troubleshooting ### "QI feature not available" Ensure QI is enabled in GR Settings. ### "Cannot create improvement" Check that the project is in Active or Planning status. ### "Metric trend not updating" Record at least 3 measurements for trend calculation. *** ## Related Documentation * [QI User Guide](/gr/qi-user-guide) - Staff guide * [Risk Admin Guide](/gr/risk-admin-guide) - Risk management * [Audit Admin Guide](/gr/audit-admin-guide) - Audit management * [Compliance Admin Guide](/gr/compliance-admin-guide) - Compliance tracking *** **Need Help?** Contact your system administrator or platform support. # QI Dashboard Source: https://docs.encoreos.io/gr/qi-dashboard Aggregate dashboard showing Quality Improvement project metrics, trend charts, and overdue improvement alerts. The QI Dashboard provides an organization-wide view of Quality Improvement activity, including project counts by category, metric trend distributions, active projects, and overdue improvement items. It is located at route `/gr/quality-improvement/dashboard`. ## Overview The dashboard renders three data sources in parallel: `useQIDashboard` (aggregate stats), `useActiveQIProjects`, and `useOverdueImprovements`. Visualizations include a pie chart of projects by category and a bar chart of metric trends (improving, stable, declining). Active QI project cards and overdue improvement cards are listed below the charts. No permission gate is declared on this route in `gr.tsx`. ## Who it's for Access follows your organization's role and module configuration. ## Before you start * Navigate from the Quality Improvement section in the GR core sidebar. * QI projects must exist to see meaningful data. ## Steps 1. Go to **Governance & Compliance → Quality Improvement → Dashboard** at `/gr/quality-improvement/dashboard`. 2. Review the category distribution chart to understand where QI effort is concentrated. 3. Review the metric trend chart for improving vs. declining indicators. 4. Scroll to active projects and select any to open the QI Project Details page. 5. Review overdue improvement items and navigate to the relevant project to address them. ## Key concepts | Concept | Description | | -------------------- | ------------------------------------------------------------------ | | PDSA cycles | Plan-Do-Study-Act improvement cycles tracked within QI projects | | Metric trends | `improving`, `stable`, `declining` — trend direction of QI metrics | | Overdue improvements | Improvement items past their due date; surfaced as alerts | | Categories | `clinical`, `operational`, `safety`, `compliance`, `outcomes` | ## Related Governance & Compliance core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/gr.tsx * src/cores/gr/pages/QIDashboard.tsx * src/cores/gr/hooks/useQIDashboard.ts * src/cores/gr/hooks/useQIProjectList.ts # QI Overview Source: https://docs.encoreos.io/gr/qi-overview Quality Improvement project list with search, filters, and summary stats — with full project detail and a creation wizard. The QI Overview page is the main entry point for the Quality Improvement module. It lists all QI projects with search, category/status filtering, and quick stats. It is located at route `/gr/quality-improvement`. ## Overview The page is rendered by `QIProjectList` and calls `useQIProjectList` with search and filter parameters. Quick-stats cards (active projects, completed, on hold, total) are sourced from `useQIDashboard`. A **New Project** button opens `QIProjectFormDialog` — no additional permission gate is declared on this route in `gr.tsx`; the wizard route `/gr/quality-improvement/new` also has no gate. Available categories: `clinical`, `operational`, `safety`, `compliance`, `outcomes`. Available statuses: `draft`, `proposed`, `planning`, `active`, `on_hold`, `completed`. ## Who it's for Access follows your organization's role and module configuration. * No special permission is required to view QI projects. * Creating a project requires access to the New Project dialog; SME should confirm RBAC expectations. * The QI module must be enabled (`qi_enabled = true` in Governance Settings). ## Finding a project 1. Go to **Governance & Compliance → Quality Improvement** at `/gr/quality-improvement`. 2. Review summary stats at the top of the page. 3. Use the search bar and Category/Status filters to narrow the project list. 4. Select a project card to open the QI Project Details page. 5. Select **New Project** to create a QI project via the form dialog. | Concept | Description | | ---------------- | ---------------------------------------------------------------------- | | QI project | A structured improvement initiative tracked through lifecycle states | | PDSA | Plan-Do-Study-Act: the methodology used for QI cycles | | Status lifecycle | `draft` → `proposed` → `planning` → `active` → `on_hold` / `completed` | ## Viewing a project The QI Project Details page (`/gr/quality-improvement/:id`) shows a single Quality Improvement project with full lifecycle management. The page is rendered by `QIProjectDetail` and loads data via `useQIProjectDetail`. It provides four URL-synced tabs (`overview`, `cycles`, `metrics`, `improvements`) via `useTabUrlState`. Lifecycle actions — **Activate**, **Hold**, **Complete**, **Cancel** — are available from a dropdown menu and execute mutations via `useQIProjectMutation`. Sub-records (PDSA cycles, metrics, improvements) each have their own form dialogs. No permission gate is declared on this route in `gr.tsx`. Before you start: navigate from the QI Overview page at `/gr/quality-improvement`. A QI project record must exist for the given ID. 1. Go to **Governance & Compliance → Quality Improvement** and select a project. 2. Review the **Overview** tab for title, description, owner, site, category, status, and dates. 3. Open the **Cycles** tab to view and add PDSA cycles; select a cycle to expand its detail. 4. Open the **Metrics** tab to view and record metric measurements. 5. Open the **Improvements** tab to view and add improvement action items. 6. Use the action dropdown to change project status (Activate, Hold, Complete, Cancel). 7. Use **Edit** to open the project form dialog. | Concept | Description | | ------------------ | -------------------------------------------------------------------------------------------------------------------------- | | PDSA cycle | Plan-Do-Study-Act cycle attached to a QI project | | QI metric | A measurable indicator tracked over time for a project | | Improvement | An action item linked to a metric or cycle | | Status transitions | `proposed` → `active` (Activate), `active` → `on_hold` (Hold), `active` → `completed` (Complete), any → cancelled (Cancel) | ## Creating a project The New QI Project page (`/gr/quality-improvement/new`) renders `QiProjectWizardPage`, a full-page wizard powered by `ModuleWizardRenderer` (PF-41) that creates a new `gr_qi_projects` record. The QI module must be enabled (`qi_enabled = true` in Governance Settings). Before you start: have the project title, goal, category, team members, and initial measures identified. 1. Navigate to `/gr/quality-improvement/new` or use the create project action from `/gr/quality-improvement`. The wizard loads from the `qi_project` template. 2. Follow the prompts in `ModuleWizardRenderer`. Steps typically cover project identification, goals, measures, team assignment, and initial PDSA cycle setup. 3. On the final step, submit the wizard. A `gr_qi_projects` record is created. 4. After completion you are navigated to `/gr/quality-improvement`. The new project appears in the list. **ModuleWizardRenderer (PF-41)** — platform component rendering wizard steps from the `pf_wizard_templates` table. **qi\_project** — wizard type identifier for QI project creation. **gr\_qi\_projects** — database table storing QI project records. **qi\_enabled** — module settings flag; must be `true` for QI functionality to be active. **PDSA cycle** — Plan-Do-Study-Act improvement cycle created as part of a QI project. ## Related Governance & Compliance core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/gr.tsx * src/cores/gr/pages/QIProjectList.tsx * src/cores/gr/pages/QIProjectDetail.tsx * src/cores/gr/hooks/useQIProjectList.ts * src/cores/gr/hooks/useQIDashboard.ts * src/cores/gr/hooks/useQIProjectDetail.ts * src/cores/gr/hooks/useQIProjectMutation.ts * src/cores/gr/wizards/qi-project/QiProjectWizardPage.tsx # QI Reports Source: https://docs.encoreos.io/gr/qi-reports Export Quality Improvement project data, PDSA cycles, metrics, and improvement records in PDF or other formats. The QI Reports page provides tabbed export functionality for Quality Improvement data. It is located at route `/gr/quality-improvement/reports`. ## Overview The page is rendered by `QIReports` and uses `useCurrentUser` to scope queries. Four report types are available via tabs: **Projects**, **PDSA Cycles**, **Metrics**, and **Improvements**. Each tab fetches the corresponding dataset from Supabase (tables: `gr_qi_projects`, PDSA cycles, metrics, improvements) and offers an export action. The export format selector supports `pdf` and potentially other formats via the `ExportFormat` type. An inline trend analysis panel (`QITrendAnalysisPanel`) is also rendered. No permission gate is declared on this route in `gr.tsx`. ## Who it's for Access follows your organization's role and module configuration. ## Before you start * QI projects, PDSA cycles, metrics, or improvement records must exist to export meaningful data. * The user session must be active (`useCurrentUser`). ## Steps 1. Go to **Governance & Compliance → Quality Improvement → Reports** at `/gr/quality-improvement/reports`. 2. Select the report type tab: **Projects**, **PDSA**, **Metrics**, or **Improvements**. 3. Choose an export format from the selector. 4. Select the **Download** or export action for the chosen report type. 5. Review the trend analysis panel for a visual summary. ## Key concepts | Concept | Description | | -------------------- | ------------------------------------------------------------------------------------- | | Report types | Projects, PDSA Cycles, Metrics, Improvements — each fetches a distinct dataset | | `ExportFormat` | Export format options (e.g., `pdf`); full list determined by `qiReportExport` utility | | Trend analysis panel | Visual trend chart embedded alongside export options | ## Related Governance & Compliance core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/gr.tsx * src/cores/gr/pages/QIReports.tsx * src/cores/gr/utils/qiReportExport.ts * src/platform/auth/useCurrentUser.ts # QI Templates Source: https://docs.encoreos.io/gr/qi-templates Create, edit, and use reusable Quality Improvement project templates to standardize recurring QI initiatives. The QI Templates page manages reusable QI project templates. Administrators can create, edit, and instantiate templates to start new projects from a standardized structure. It is located at route `/gr/quality-improvement/templates`. ## Overview The page is rendered by `QITemplates` and loads templates via `useQITemplateList` with search and category filters. Templates are displayed as cards with category color badges. Actions per template: **Edit** (opens `QITemplateFormDialog`), **Copy/Use** (opens `CreateProjectFromTemplateDialog`). An **Add Template** button creates a new template. The route is protected by `gr.qi.admin`. Categories: `clinical`, `operational`, `safety`, `compliance`, `outcomes`. ## Who it's for Requires permission: `gr.qi.admin` ## Before you start * Your account must have the `gr.qi.admin` permission. * You should have a clear QI project pattern in mind before creating a template. ## Steps 1. Go to **Governance & Compliance → Quality Improvement → Templates** at `/gr/quality-improvement/templates`. 2. Use the search bar or category filter to find an existing template. 3. Select **Add Template** to create a new template via the form dialog. 4. Select **Edit** on any template to modify its details. 5. Select **Use** (or equivalent copy action) to create a new QI project pre-filled from a template. ## Key concepts | Concept | Description | | -------------- | ---------------------------------------------------------------------------------- | | QI template | A reusable structure for QI projects, including category and default configuration | | Instantiate | Creating a new QI project from a template via `CreateProjectFromTemplateDialog` | | Category color | Semantic color coding for template categories in the card grid | ## Related Governance & Compliance core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/gr.tsx * src/cores/gr/pages/QITemplates.tsx * src/cores/gr/hooks/useQITemplates.ts * src/platform/permissions/constants.ts # Quality Improvement User Guide Source: https://docs.encoreos.io/gr/qi-user-guide Quality Improvement (QI) is a systematic approach to enhancing organizational processes, outcomes, and services. This module helps you participate in improveme… ## Overview Quality Improvement (QI) is a systematic approach to enhancing organizational processes, outcomes, and services. This module helps you participate in improvement initiatives, track your assigned actions, and contribute to continuous improvement efforts. *** ## Getting Started ### Accessing Quality Improvement 1. Navigate to **Governance → Quality Improvement** from the main menu 2. Or use the direct link: `/gr/quality-improvement` ### My QI Dashboard Your personal dashboard at **Governance → My QI** shows: * **My Improvements**: Actions assigned to you * **My Projects**: Projects you own * **My PDSA Cycles**: Cycles you're participating in *** ## Understanding QI Projects ### What is a QI Project? A QI project is a structured initiative to improve a specific aspect of operations, clinical care, safety, or compliance. Each project follows the PDSA (Plan-Do-Study-Act) methodology. ### Project Categories | Category | Description | | --------------- | --------------------------------------------------- | | **Clinical** | Improvements to resident care and clinical outcomes | | **Operational** | Process efficiency and workflow improvements | | **Safety** | Safety enhancements and risk reduction | | **Compliance** | Regulatory compliance improvements | | **Outcomes** | Outcome measurement and improvement | ### Project Status | Status | Description | | ------------- | ----------------------- | | **Planning** | Project is being set up | | **Active** | Project is underway | | **On Hold** | Temporarily paused | | **Completed** | Successfully finished | | **Cancelled** | Project was stopped | *** ## PDSA Cycles ### What is PDSA? PDSA stands for Plan-Do-Study-Act, a four-phase cycle for testing and implementing improvements: 1. **Plan**: Define the change to test, predict outcomes, plan data collection 2. **Do**: Carry out the test, document observations and problems 3. **Study**: Analyze data, compare to predictions, summarize learnings 4. **Act**: Decide next steps - adopt, adapt, or abandon the change ### Participating in Cycles If you're assigned to a PDSA cycle: 1. Review the plan documentation 2. Execute your assigned tasks during the "Do" phase 3. Provide observations and feedback 4. Participate in the "Study" analysis *** ## My Improvements ### Viewing Assigned Improvements Navigate to **Governance → My QI** to see improvements assigned to you. Each improvement shows: * Title and description * Related project * Due date * Current status ### Improvement Status | Status | Description | | --------------- | ----------------------------------------- | | **Planned** | Improvement identified but not started | | **In Progress** | Work is underway | | **Completed** | Successfully implemented | | **Ineffective** | Tried but did not achieve desired results | ### Completing Improvements 1. Navigate to the improvement through My QI or the project detail 2. Update your progress as you work 3. Mark as complete when finished 4. Attach evidence of completion if required *** ## Understanding Metrics ### What are QI Metrics? Metrics track measurable outcomes to determine if improvements are working. Each metric has: * **Baseline**: Starting measurement before improvement * **Goal**: Target value to achieve * **Current Value**: Latest measurement ### Metric Trends | Trend | Meaning | | ------------- | ------------------------- | | **Improving** | Moving toward the goal | | **Stable** | Staying consistent | | **Declining** | Moving away from the goal | *** ## Tips for Success 1. **Check My QI Regularly**: Stay on top of your assigned improvements 2. **Meet Deadlines**: Complete improvements before due dates 3. **Document Everything**: Keep notes on what worked and what didn't 4. **Communicate**: Share observations with project owners 5. **Be Honest**: Report actual results, even if they're not what you hoped *** ## FAQ ### Q: How do I know if I have QI tasks? Check **Governance → My QI**. Any improvements assigned to you will appear there. You'll also receive notifications for new assignments and upcoming due dates. ### Q: What if I can't complete an improvement by the due date? Contact the project owner as soon as possible to discuss extending the deadline or reassigning the task. ### Q: Can I suggest a new QI project? Yes! Talk to your supervisor or compliance officer about improvement ideas. They can help determine if a formal QI project is appropriate. ### Q: What's the difference between a QI improvement and a corrective action? * **QI Improvement**: Proactive enhancement to make things better * **Corrective Action**: Reactive fix for an identified problem or audit finding *** ## Related Documentation * [Risk User Guide](/gr/risk-user-guide) - Understanding organizational risks * [Audit User Guide](/gr/audit-user-guide) - Audit participation * [Compliance User Guide](/gr/compliance-user-guide) - Compliance requirements *** **Need Help?** Contact your QI Coordinator or Compliance Officer. # Regulation mapping Source: https://docs.encoreos.io/gr/regulation-mapping Map regulation citations to compliance requirements and accreditation bodies so submitted regulatory reports auto-file as evidence. Regulation mapping controls where Encore files evidence when an incident's regulatory report is submitted. Two settings pages — **Regulation → Requirement Map** and **Regulation → Accreditation Map** — tell the auto-evidence consumers which compliance requirement and which accreditation bodies a citation belongs to. ## Overview When a regulatory report is submitted, Encore publishes a `regulatory_report_submitted` event. Two consumers act on it: * **Compliance evidence** — looks up the citation in the regulation-to-requirement map and creates one `gr_compliance_evidence` row against the matched requirement. * **Accreditation evidence** — looks up the citation in the regulation-to-accreditation map and creates one `gr_accreditation_evidence` row per active survey for every mapped body. Both rows are stamped with the originating event id and carry the **Auto** badge in their respective evidence lists, which links back to the regulatory report at `/gr/regulatory-reports/:reportId`. Re-delivery of the same event never creates a duplicate. The maps live at: * `/gr/settings/regulation-requirement-map` — citation → compliance requirement * `/gr/settings/regulation-accreditation-map` — citation → accreditation body Platform defaults (seeded by Encore) are listed read-only with a **Platform default** badge. Your organization's rows are scoped to your tenant and take precedence over the platform defaults during lookup. ## Who it's for Requires permission to read or manage the maps: * `gr.regulation_requirement_map.read` / `.write` * `gr.regulation_accreditation_map.read` / `.write` `org_admin` is granted all four by default. ## Before you start * **Auto evidence consumers** must be enabled in [Governance Settings](/gr/governance-settings) (`enable_auto_evidence_consumers`). When disabled, both consumers short-circuit and no evidence is auto-created. * Compliance requirements and accreditations (with active surveys) must exist for the citations you plan to map. * A regulation-to-requirement match is required for compliance evidence; with no match, the consumer logs a `no_requirement_mapping` warning and skips the row. ## Resolution order The compliance consumer resolves the requirement in this order. The first match wins: 1. Your organization's row in **Regulation → Requirement Map** for the citation. 2. The platform-default row for the citation. 3. **Default evidence requirement** in Governance Settings (`default_evidence_requirement_id`). If none of the three match, the consumer skips with `no_requirement_mapping` and no evidence row is created. The accreditation consumer fans out across **every** mapped body — one evidence row per active survey per body — so a citation mapped to both CARF and Joint Commission produces survey-prep evidence under both. ## Add or edit a mapping Go to **Governance & Compliance → Settings → Regulation → Requirement Map** or **Regulation → Accreditation Map**. Select **Add mapping**. Enter the regulation citation exactly as it appears on the report (for example, `42 CFR 483.12`) and pick the target requirement or accreditation body. Use the row actions menu to edit or delete an organization row. Rows badged **Platform default** cannot be edited or removed; add an organization row with the same citation to override the default for your tenant. Submit a test regulatory report on an incident. The matching compliance evidence row appears in the requirement's evidence list with the **Auto** badge, and survey-prep evidence appears under each mapped active survey. ## Key concepts | Concept | Description | | ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | | Regulation citation | The free-text identifier on a `gr_incident_regulatory_reports` row (for example, `42 CFR 483.12`). The consumers match on this exact value. | | Platform default | A row seeded by Encore with `organization_id` null. Read-only; visible to every tenant. | | Organization row | A tenant-scoped row that overrides the platform default for the same citation. | | Source event | The `fw_domain_events.id` for the `regulatory_report_submitted` event. Stamped on auto-created evidence and powers the **Auto** badge click-through. | | Idempotency | The consumers refuse to create a second evidence row for the same `(organization, source_event_id)`. Re-delivery is safe. | ## Related Toggle auto evidence consumers and set the fallback requirement. Browse accreditation evidence, including auto-generated rows. Submit regulatory reports from the incident detail page. Critical and high findings open CAPs automatically. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. # Regulatory Changes Source: https://docs.encoreos.io/gr/regulatory-changes Monitor and review detected regulatory content changes from watched sources, with status tabs and a detail view for approve or dismiss decisions. The Regulatory Changes page displays a feed of regulatory content changes detected from monitored sources, organized by status tabs. It is located at route `/gr/compliance/regulatory-changes`. ## Overview The page is rendered by `RegulatoryChangesPage` and uses `useRegulatoryChangeEvents` to fetch changes, with optional status filter. Tabs correspond to statuses: **All**, **New** (`detected`), **Under Review**, **Approved**, **Dismissed**. Each tab shows a badge count. Severity is displayed via `RegulatoryChangeSeverityBadge`; status via `RegulatoryChangeStatusBadge`. Selecting a row navigates to the regulatory change detail page. The route is protected by `GR_PERMISSIONS.REGULATORY_CHANGE_VIEW` (`gr.compliance.regulatory_change.view`). ## Who it's for Requires permission: `gr.compliance.regulatory_change.view` ## Before you start * Regulatory sources must be registered at `/gr/compliance/regulatory-sources` before changes will be detected. * Sources are polled on their configured cadence; newly detected items appear under **New**. ## Finding a change 1. Go to **Governance & Compliance → Compliance → Regulatory Changes** at `/gr/compliance/regulatory-changes`. 2. Select a status tab (**New**, **Under Review**, etc.) to filter the feed. 3. Review severity badges to prioritize review. 4. Select a row to open the Regulatory Change Detail page. 5. Approved or dismissed changes are updated by users with the appropriate permission. | Concept | Description | | ------------ | -------------------------------------------------- | | Detected | A newly identified content change not yet reviewed | | Under review | Change is being assessed by the compliance team | | Approved | Change has been acknowledged and actioned | | Dismissed | Change was reviewed and deemed non-material | ## Viewing a change The Change Details page (`/gr/compliance/regulatory-changes/:id`) displays the full detail of a single detected regulatory change event. Requires `gr.compliance.regulatory_change.view`. The Approve/Dismiss action is additionally gated by `gr.compliance.regulatory_change.approve`. The page loads a single regulatory change event via `useRegulatoryChangeEvent`. The header shows the event title, detected timestamp, and a `Radar` icon. The page displays a severity badge (`RegulatoryChangeSeverityBadge`), a status badge (`RegulatoryChangeStatusBadge`), and an alert with classification rationale. A per-impact list is shown. When the event has status `detected` or `under_review`, users with `gr.compliance.regulatory_change.approve` see **Approve** and **Dismiss** buttons, which open `RegulatoryChangeReviewSheet` with the corresponding decision pre-set. Before you start: the change event must exist and be in status `detected` or `under_review` for the approve/dismiss actions to appear. 1. From `/gr/compliance/regulatory-changes`, click a change event to navigate to its detail page. 2. Check the title, detection date, severity, and status. 3. Read the classification rationale and per-impact list. 4. If you have `gr.compliance.regulatory_change.approve` and the event is open, click **Approve** or **Dismiss** to open the review sheet and record your decision. **Status `detected`** — newly identified change, not yet reviewed. **Status `under_review`** — change is being evaluated. **Approve** — decision value `'approved'` passed to `RegulatoryChangeReviewSheet`. **Dismiss** — decision value `'dismissed'` passed to `RegulatoryChangeReviewSheet`. ## Related Governance & Compliance core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/gr.tsx * src/cores/gr/pages/RegulatoryChangesPage.tsx * src/cores/gr/pages/RegulatoryChangeDetailPage.tsx * src/cores/gr/hooks/useRegulatoryChangeEvents.ts * src/platform/permissions/constants.ts # Regulatory Sources Source: https://docs.encoreos.io/gr/regulatory-sources Register and manage monitored regulator URLs, with per-source detail showing polling status and detected change events. The Regulatory Sources page lists watched regulator URLs and allows administrators to register, edit, pause, and delete source monitors. It is located at route `/gr/compliance/regulatory-sources`. ## Overview The page is rendered by `RegulatorySourcesPage`. It fetches sources via `useRegulatorySourceList` with an optional search filter. Users with `GR_PERMISSIONS.REGULATORY_SOURCE_ADMIN` (`gr.compliance.regulatory_source.admin`) see a **Register source** button and per-row action menus (edit, pause/resume, delete). Pause/resume is handled by `useToggleRegulatorySource`; deletion by `useDeleteRegulatorySource`. Each row links to the Source Detail page. The route is protected by `GR_PERMISSIONS.REGULATORY_CHANGE_VIEW` (`gr.compliance.regulatory_change.view`). ## Who it's for Requires permission: `gr.compliance.regulatory_change.view` Admin actions (register, edit, pause, delete) additionally require: `gr.compliance.regulatory_source.admin` ## Before you start * You need `gr.compliance.regulatory_change.view` to access this page. * Registering or modifying sources requires the admin permission above. * Changes detected from sources are visible on the Regulatory Changes page. ## Managing sources 1. Go to **Governance & Compliance → Compliance → Regulatory Sources** at `/gr/compliance/regulatory-sources`. 2. Use the search bar to find an existing source. 3. Select a row to open the Source Detail page. 4. To register a new source, select **Register source** and complete the form dialog. 5. To pause a source, open its action menu and select pause. 6. To delete a source, open its action menu and select delete (confirm in the dialog). | Concept | Description | | ------------ | ----------------------------------------------------------------------- | | Source | A registered URL that the system polls for regulatory content changes | | Status | Active vs. paused — paused sources are not polled | | `last_error` | An error flag shown on the Source Detail page when the last poll failed | ## Viewing a source The Source Details page (`/gr/compliance/regulatory-sources/:id`) shows the full record for a single regulatory source, including its polling status, last error (if any), and detected change events. The page is rendered by `RegulatorySourceDetailPage`. It loads the source record via `useRegulatorySource` and associated change events via `useRegulatoryChangeEvents` filtered by `source_id`. The dynamic breadcrumb label is set to `source.name`. If the source has a `last_error` flag, an alert is displayed. The route is protected by `GR_PERMISSIONS.REGULATORY_CHANGE_VIEW`. Displayed fields include: name, URL, status badge, last error (if any), and a list of detected change events for this source. Before you start: navigate from the Regulatory Sources list at `/gr/compliance/regulatory-sources`. A source record must exist for the given ID. 1. Go to **Governance & Compliance → Compliance → Regulatory Sources** and select a source. 2. Review the source name, URL, and status. 3. If an error alert is displayed, review the error and take corrective action (SME to confirm required steps). 4. Scroll to the detected changes list to see change events attributed to this source. 5. Select a change event to open the Regulatory Changes page or change detail. ## Related Governance & Compliance core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/gr.tsx * src/cores/gr/pages/RegulatorySourcesPage.tsx * src/cores/gr/pages/RegulatorySourceDetailPage.tsx * src/cores/gr/hooks/useRegulatorySources.ts * src/cores/gr/hooks/useRegulatoryChangeEvents.ts * src/platform/permissions/constants.ts # Remediation Tracker Source: https://docs.encoreos.io/gr/remediation-tracker Track and manage compliance remediation items, filter by status or overdue flag, and resolve or close open items. The Remediation Tracker page lists compliance remediation items and provides filtering, status updates, and resolution workflows. It is located at route `/gr/compliance/remediation`. ## Overview The page is rendered by `RemediationTracker` and fetches items via `useComplianceRemediationList`. Filters include status (`open`, `in_progress`, `resolved`, `closed`), a search term (deferred), and an overdue toggle. A detail dialog opens on row selection. Resolve and close actions are performed via `useComplianceRemediationMutation`. The route supports a `?status=overdue` query param to pre-filter to overdue items (e.g., from a dashboard link). No permission gate is declared on this route in `gr.tsx`. ## Who it's for Access follows your organization's role and module configuration. ## Before you start * Remediation items are typically created from compliance requirement findings or audit findings. * Navigate from the Compliance section or from a deep-link with `?status=overdue`. ## Steps 1. Go to **Governance & Compliance → Compliance → Remediation** at `/gr/compliance/remediation`. 2. Use the status filter to narrow to open, in-progress, resolved, or closed items. 3. Toggle **Show overdue only** to surface past-due items. 4. Use the search bar to find a specific remediation by keyword. 5. Select a remediation card to open the detail dialog. 6. Use **Resolve** or **Close** actions within the dialog to update status. ## Key concepts | Concept | Description | | ----------------- | -------------------------------------------------------- | | Status lifecycle | `open` → `in_progress` → `resolved` → `closed` | | Overdue flag | Items whose due date has passed and are not yet resolved | | `?status=overdue` | URL param that pre-filters the view to overdue items | ## Related Governance & Compliance core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/gr.tsx * src/cores/gr/pages/RemediationTracker.tsx * src/cores/gr/hooks/useComplianceRemediation.ts * src/cores/gr/components/RemediationCard.tsx # Report a Concern Source: https://docs.encoreos.io/gr/report-concern Anonymously submit a confidential whistleblower report about misconduct, fraud, safety concerns, or policy violations. The Report a Concern page is a public, unauthenticated intake form for submitting confidential reports about potential misconduct, fraud, safety concerns, or policy violations. It is located at route `/gr/whistleblower-report` and is served from the public routes (no authentication required). ## Overview This page requires no authentication and is registered in the public routes (`src/routes/public.tsx`). It renders `WhistleblowerIntakePage`, which submits to the `gr-whistleblower-submit` Supabase edge function with the organization ID supplied via the `?org=` URL query parameter. On successful submission, a **follow-up token** is displayed — the submitter should save this token to check report status later. The form accepts: * **Category**: one of `financial_fraud`, `discrimination`, `safety`, `policy_violation`, or `other` * **Description**: 10–10,000 characters * **Submit Anonymously**: toggle (default: on) ## Who it's for No authentication required. This page is intended for anyone — staff, patients, or third parties — with access to the organization's public URL containing the `?org=` parameter. ## Before you start * The URL must include a valid `?org=` query parameter. Without it, submission will fail. * The submitter should save their follow-up token after submission — it is shown only once. ## Steps 1. Open the Report a Concern URL provided by your organization (includes `?org=` parameter). 2. Select a **Category** from the dropdown. 3. Enter a detailed **Description** (minimum 10 characters, maximum 10,000). 4. Review the **Submit Anonymously** toggle — enabled by default. 5. Select **Submit Report**. 6. On success, copy and save your **Follow-Up Token** before closing the page. ## Key concepts | Concept | Description | | -------------------- | ---------------------------------------------------------------------------------------- | | `?org=` param | Organization identifier required in the URL; links this submission to the correct tenant | | Follow-up token | A unique token returned on submission; used to check report status later | | Anonymous submission | When toggled on, identity is not recorded with the report | | Edge function | Submission goes to `gr-whistleblower-submit` — not directly to the database | ## Related Governance & Compliance core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/public.tsx * src/routes/gr.tsx * src/cores/gr/pages/WhistleblowerIntakePage.tsx * src/integrations/supabase/client.ts # Governance Report Incident Source: https://docs.encoreos.io/gr/report-incident Submit a new incident report using a guided multi-step wizard that creates a record and triggers regulatory classification. The Report Incident page is a guided wizard for submitting a new incident report. It is located at route `/gr/incidents/report`. ## Overview The page is rendered by `IncidentReportingWizardPage`, which uses the PF-41 `ModuleWizardRenderer` for a wizard-type flow identified as `incident_reporting`. On completion, a single `gr_incidents` row is inserted. The `gr_publish_incident_created` database trigger pipeline automatically invokes `gr-classify-incident-reporting-obligations` to determine and create any required regulatory report records — the wizard does not insert regulatory reports directly. Wizard analytics events are tracked via `trackWizardEvent` (start, abandon, completion). The route is protected by `gr.incidents.report`. ## Who it's for Requires permission: `gr.incidents.report` ## Before you start * Your account must have the `gr.incidents.report` permission. * Gather relevant details about the incident (date, time, location, description) before starting. * The wizard auto-classifies regulatory obligations on submission. ## Steps 1. Go to **Governance & Compliance → Incidents → Report Incident** at `/gr/incidents/report`, or select **Report Incident** from the incidents list. 2. Complete each step of the wizard as prompted. 3. Review your entries on the summary/review step. 4. Submit the report — a `gr_incidents` record is created. 5. Note the incident ID for follow-up; regulatory reports are generated automatically by the system. ## Key concepts | Concept | Description | | -------------------------------------------- | --------------------------------------------------------------------------- | | `gr_incidents` | The database table that stores incident records | | Regulatory classification | Automatic post-submission trigger that determines reporting obligations | | `gr-classify-incident-reporting-obligations` | Edge function invoked by the trigger pipeline after incident creation | | Wizard type | `incident_reporting` — drives the `ModuleWizardRenderer` step configuration | ## Related Governance & Compliance core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/gr.tsx * src/cores/gr/wizards/incident-reporting/IncidentReportingWizardPage.tsx * src/platform/wizards/ModuleWizardRenderer.tsx * src/platform/permissions/constants.ts # Governance Requirements Source: https://docs.encoreos.io/gr/requirements Browse and create compliance requirements — category/status/priority filters, tabbed detail with checks and remediations, and a wizard. The Requirements page is the main library for compliance requirements. It supports search, filtering by category/status/priority, and paginated browsing. It is located at route `/gr/compliance/requirements`. ## Overview The page is rendered by `RequirementLibrary` and calls `useRegulatoryRequirementList` with deferred search and multi-dimensional filters. Pagination is rendered via a custom `getPageNumbers` helper. Users can switch between grid and list view. The **Add Requirement** button navigates to `/gr/compliance/requirements/new` (protected separately by `gr.compliance.admin`). An AI wizard button is also present (navigates to the compliance requirement wizard). Reference categories are loaded via `useReferencePicklist`. No permission gate is declared on this route in `gr.tsx`. ## Who it's for Access follows your organization's role and module configuration. * No special permission is required to view the requirement library. * Creating requirements requires `gr.compliance.admin`. ## Finding a requirement 1. Go to **Governance & Compliance → Compliance → Requirements** at `/gr/compliance/requirements`. 2. Use the search bar to find requirements by keyword. 3. Apply Category, Status, and Priority filters to narrow the list. 4. Toggle between grid and list view as preferred. 5. Select a requirement card to open the Requirement Details page. 6. Select **Add Requirement** to create a new requirement (requires `gr.compliance.admin`). | Concept | Description | | ---------- | --------------------------------------------------------------------------- | | Category | Classification of the requirement domain (sourced from reference picklists) | | Priority | `low`, `medium`, `high`, `critical` | | Status | Compliance posture of the requirement (compliant, non-compliant, etc.) | | Pagination | Server-side pagination with ellipsis-aware page number rendering | ## Viewing a requirement The Requirement Details page (`/gr/compliance/requirements/:id`) shows a single compliance requirement record with full context: metadata, compliance checks, remediations, and linked risks. The page is rendered by `RequirementDetail` and loads data via `useRegulatoryRequirementDetail`. Tabs include: **Overview** (metadata, status, category, priority), **Checks** (compliance check history), **Remediations** (linked remediation items), and **Risks** (linked risks via `useRisksByRequirement`). Users with `gr.compliance.admin` can edit, add checks, add remediations, and delete the requirement (via `useRegulatoryRequirementMutation`). A due-date urgency indicator is computed from `differenceInDays`. No permission gate is declared on this route in `gr.tsx`. Admin actions (edit, delete, add checks/remediations) require: `gr.compliance.admin` 1. Go to **Governance & Compliance → Compliance → Requirements** and select a requirement. 2. Review the **Overview** tab for status, category, priority, description, and due date. 3. Open the **Checks** tab to view compliance check history and add new checks (if permitted). 4. Open the **Remediations** tab to view linked remediation items and create new ones (if permitted). 5. Open the **Risks** tab to view risks linked to this requirement. 6. Use the **Edit** button to update requirement details (requires `gr.compliance.admin`). | Concept | Description | | ---------------- | ----------------------------------------------------------------------------- | | Compliance check | An individual evaluation of whether the requirement is met at a point in time | | Remediation | A corrective action item linked to a requirement when it is not met | | Linked risks | Risks in the risk register associated with this requirement | | Priority | `low`, `medium`, `high`, `critical` — used for triage and urgency display | ## Creating a requirement The New Requirement page (`/gr/compliance/requirements/new`) renders `ComplianceRequirementWizardPage`, a full-page wizard powered by `ModuleWizardRenderer` (PF-41). Requires `gr.compliance.admin`. Before you start: have the requirement title, applicable regulatory framework or source reference, responsible owner, check frequency, and any required document types identified. 1. Navigate to `/gr/compliance/requirements/new` or use the add-requirement action from `/gr/compliance/requirements`. The wizard loads from the `compliance_requirement` template. 2. Follow the `ModuleWizardRenderer` prompts. Steps typically cover requirement identification, regulatory source linkage, check schedule, and document evidence configuration. 3. Submit the wizard. The `gr_compliance_requirements` row is created. Non-fatal ancillary inserts (check, evidence) proceed in the background; a warning toast appears if they fail. 4. After completion you are navigated to the compliance requirements list. The new requirement appears there. **ModuleWizardRenderer (PF-41)** — renders wizard steps from the `pf_wizard_templates` table. **gr\_compliance\_requirements** — the authoritative database record created by this wizard. **gr\_compliance\_checks** — ancillary scheduled-check record; failure is non-fatal. **gr\_compliance\_evidence** — ancillary document requirement records; failure is non-fatal. **useRegulatoryRequirementMutation** — hook providing `createRequirement` for the authoritative insert. ## Related Governance & Compliance core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/gr.tsx * src/cores/gr/pages/RequirementLibrary.tsx * src/cores/gr/pages/RequirementDetail.tsx * src/cores/gr/hooks/useRegulatoryRequirement.ts * src/cores/gr/hooks/useLinkedRisks.ts * src/cores/gr/hooks/useRegulatoryRequirementMutation.ts * src/cores/gr/wizards/compliance-requirement/ComplianceRequirementWizardPage.tsx * src/platform/permissions/constants.ts # GR Risk Management - Admin Guide Source: https://docs.encoreos.io/gr/risk-admin-guide This guide covers how to identify, assess, and manage organizational risks including risk creation, assessment scoring, mitigation planning, linking to sources… ## Overview This guide covers how to identify, assess, and manage organizational risks including risk creation, assessment scoring, mitigation planning, linking to sources, and monitoring. > **Required Role:** Compliance Officer or Organization Admin *** ## Initial Setup ### 1. Configure Module Settings 1. Navigate to **GR → Settings** 2. Configure Risk Management settings: * Enable/disable risk reminders * Set default review frequency * Configure risk rating thresholds * Set mitigation reminder intervals 3. Save your settings ### 2. Define Risk Categories The system includes standard risk categories: * Operational, Financial, Clinical, Safety, Compliance, Reputational Custom categories can be configured in module settings if needed. *** ## Risk Identification ### Creating a New Risk 1. Navigate to **GR → Risks** 2. Click **New Risk** 3. Complete the form: | Field | Description | Required | | --------------- | -------------------------------------- | -------- | | **Title** | Clear risk name | Yes | | **Description** | Detailed risk description | Yes | | **Category** | Operational, Financial, Clinical, etc. | Yes | | **Risk Owner** | Person responsible for risk | Yes | | **Site** | Affected site(s) | No | | **Source** | How risk was identified | No | 4. Click **Create Risk** ### Risk Sources Document how risks are identified: | Source | Examples | | ------------------- | ----------------------------------- | | **Audit Finding** | Linked from GR-04 | | **Compliance Gap** | Linked from GR-03 | | **Incident Report** | From incident management | | **Staff Report** | Employee-identified | | **External** | Industry alerts, regulatory changes | ### Linking to Source Entities Risks can be linked to: * **Audit Findings** - Issues discovered during audits * **Compliance Requirements** - Regulatory gaps * **Policies** - Policy-related risks 1. Open the risk detail page 2. Go to **Linked Items** tab 3. Click **Add Link** 4. Select entity type and search for the item 5. Click **Link** *** ## Risk Assessment ### Performing an Assessment 1. Open the risk detail page 2. Click **New Assessment** 3. Rate likelihood and impact: | Likelihood | Score | Description | | ------------------ | ----- | ------------------------- | | **Rare** | 1 | \< 1% chance of occurring | | **Unlikely** | 2 | 1-10% chance | | **Possible** | 3 | 10-50% chance | | **Likely** | 4 | 50-90% chance | | **Almost Certain** | 5 | > 90% chance | | Impact | Score | Description | | ----------------- | ----- | ---------------------------------- | | **Insignificant** | 1 | Minimal effect on operations | | **Minor** | 2 | Small impact, easily managed | | **Moderate** | 3 | Noticeable impact, requires action | | **Major** | 4 | Significant operational impact | | **Catastrophic** | 5 | Severe impact, potential failure | 4. The risk score is calculated automatically (Likelihood × Impact) 5. Add assessment notes 6. Click **Save Assessment** ### Risk Rating Matrix | Score | Rating | Color | Response | | ----- | ------------ | ------ | ----------------------------- | | 1-4 | **Low** | Green | Monitor quarterly | | 5-9 | **Medium** | Yellow | Monitor monthly | | 10-15 | **High** | Orange | Active mitigation required | | 16-25 | **Critical** | Red | Immediate executive attention | ### Assessment History Each risk maintains a complete assessment history: * Track changes in likelihood/impact over time * Document reasons for rating changes * Monitor effectiveness of mitigations *** ## Risk Mitigation ### Mitigation Strategies | Strategy | When to Use | Example | | ------------ | -------------------------- | ----------------------- | | **Avoid** | Eliminate the risk source | Stop high-risk activity | | **Reduce** | Lower likelihood or impact | Add controls, training | | **Transfer** | Shift risk to third party | Insurance, outsourcing | | **Accept** | No action, monitor only | Low-impact risks | ### Creating a Mitigation Action 1. Open the risk detail page 2. Go to **Mitigations** tab 3. Click **Add Mitigation** 4. Complete the form: | Field | Description | Required | | --------------------- | ------------------------------- | -------- | | **Title** | Clear action description | Yes | | **Strategy** | Avoid, Reduce, Transfer, Accept | Yes | | **Description** | Detailed action steps | Yes | | **Responsible Party** | Who will complete it | Yes | | **Due Date** | Deadline for completion | Yes | | **Expected Outcome** | What success looks like | No | 5. Click **Create Mitigation** ### Mitigation Status Workflow ``` Planned → In Progress → Completed → Verified ``` ### Tracking Mitigation Progress 1. Navigate to **GR → Risks** 2. Filter by mitigations or use the dashboard 3. Review status and progress notes 4. Verify completed mitigations ### Residual Risk Assessment After mitigations are implemented: 1. Open the risk 2. Click **New Assessment** 3. Rate the current (residual) risk with controls in place 4. Document how mitigations affected the rating 5. Continue monitoring if risk remains above tolerance *** ## Risk Monitoring ### Risk Dashboard The GR Overview shows: | Metric | Description | | ----------------------- | ------------------------ | | **Total Risks** | Count of active risks | | **Critical Risks** | Risks rated critical | | **High Risks** | Risks rated high | | **Pending Mitigations** | Actions not yet complete | ### Risk Register Views Filter the risk register by: * Status (Active, Mitigated, Resolved, Closed) * Rating (Critical, High, Medium, Low) * Category (Operational, Financial, etc.) * Owner * Site ### Review Cycles Set up periodic risk reviews: 1. Navigate to **GR → Settings** 2. Configure default review frequency 3. Risks will show "Review Due" when period expires 4. Conduct reviews and update assessments *** ## Integration with GR Modules ### GR-03 Compliance Integration Risks linked to compliance requirements: * View linked risks on Requirement Detail page * Create risks from compliance gaps * Track compliance-related risks separately ### GR-04 Audit Integration Risks linked to audit findings: * View linked risks on Audit Detail page * Create risks from high-severity findings * Link findings that indicate systemic risk ### Viewing Linked Risks On RequirementDetail and AuditDetail pages: * **Risks** tab shows all linked risks * View risk ratings and status * Navigate directly to risk detail * Add new risk links *** ## Notifications & Reminders ### Automated Reminders The system sends automatic reminders for: | Reminder | When Sent | Recipients | | ---------------------- | ------------------------ | ------------------------ | | **Risk Created** | On creation | Risk owner | | **High Risk Alert** | When rated high/critical | Risk owner, admins | | **Review Due** | At review interval | Risk owner | | **Mitigation Due** | 7, 3 days before | Responsible party | | **Mitigation Overdue** | When past due | Responsible + supervisor | ### Configuring Reminders 1. Navigate to **GR → Settings** 2. Under **Risk Management**: * Toggle reminder types on/off * Adjust reminder intervals * Set escalation rules 3. Save settings *** ## Risk Reporting ### Available Reports | Report | Description | | --------------------- | ------------------------------- | | **Risk Register** | Complete list with ratings | | **Risk Summary** | High-level statistics | | **Mitigation Status** | Progress on all mitigations | | **Trend Analysis** | Risk patterns over time | | **Heat Map** | Visual likelihood/impact matrix | ### Generating Reports 1. Navigate to **GR → Risks** 2. Click **Reports** 3. Select report type 4. Choose filters (category, rating, date range) 5. Export as PDF or CSV *** ## Customizing Dropdown Values Risk categories and many other risk dropdowns are powered by [picklists](/pf/picklists) under the `gr.risk.*` namespace. The platform ships defaults so risk forms work out of the box, but you can tailor the options to match your risk taxonomy. Common risk picklists to customize: | Picklist | Where it appears | | ------------------ | -------------------- | | `gr.risk.category` | Risk form → Category | To customize: 1. Navigate to **Settings → Picklists** (`/settings/picklists`). 2. Filter or search for the `gr.risk.*` picklist you want to edit. 3. If the picklist shows the **System** badge, select **Duplicate to Org** to create an editable copy. 4. Add, rename, reorder, or deactivate items as needed. 5. Save your changes — risk forms pick up the new values immediately. Likelihood and impact scoring scales, risk status, and risk source stay fixed (or remain free-form) because they drive workflow logic or aren't drawn from a configurable list. The full list of governance picklists and their default values is in the [Picklist Reference](/reference/picklists). *** ## Best Practices ### Risk Identification 1. **Encourage reporting** - Create culture of risk awareness 2. **Regular reviews** - Conduct periodic risk assessments 3. **Learn from incidents** - Create risks from near-misses 4. **Industry awareness** - Monitor external risk sources 5. **Cross-functional input** - Include multiple perspectives ### Risk Assessment 1. **Be objective** - Use consistent criteria 2. **Document rationale** - Explain likelihood/impact ratings 3. **Consider controls** - Factor in existing mitigations 4. **Regular reassessment** - Update as conditions change 5. **Calibrate across organization** - Ensure consistent ratings ### Risk Mitigation 1. **Prioritize by rating** - Address critical risks first 2. **Set realistic timelines** - Allow adequate time 3. **Assign clear ownership** - Single responsible party 4. **Verify effectiveness** - Don't assume mitigations work 5. **Monitor residual risk** - Continue tracking after mitigation ### Common Pitfalls to Avoid * **Incomplete descriptions**: Document risks clearly * **Rating inflation/deflation**: Use objective criteria * **Missing owners**: Every risk needs accountability * **Stale assessments**: Review and update regularly * **Unverified mitigations**: Always verify effectiveness *** ## Troubleshooting ### Common Issues | Issue | Solution | | -------------------------- | ------------------------------------ | | Can't create risk | Verify compliance officer role | | Risk score not calculating | Ensure likelihood and impact are set | | Reminders not sending | Check module settings | | Can't link to finding | Ensure finding exists in GR-04 | | Can't assign mitigation | User must be in organization | ### Getting Help For technical issues: 1. Check this documentation 2. Contact your system administrator 3. Submit a support ticket *** ## Related Guides * [Risk User Guide](/gr/risk-user-guide) - For all staff * [Audit Admin Guide](/gr/audit-admin-guide) - Audit management * [Compliance Admin Guide](/gr/compliance-admin-guide) - Compliance tracking * [GR Documentation Index](/gr/overview) - GR module overview *** **Need Help?** Contact your system administrator. # Risk Assessment Source: https://docs.encoreos.io/gr/risk-assessment AI-powered risk assessment tool that generates mitigation suggestions and analysis for existing risks. The Risk Assessment page provides AI-powered risk assessment and mitigation suggestions for registered risks. It is located at route `/gr/ai/risk-assessment`. ## Overview The page is rendered by `AIRiskAssessment` and checks whether AI compliance features are enabled via `useAIComplianceEnabled`. If disabled, a prompt to enable AI in GR settings is shown. When enabled, the user selects a risk from the `useRiskList` dropdown, triggers generation via `useAIRiskAssessment`, and reviews previous assessments from `useAIRiskAssessmentsList`. An `AIComplianceChatPanel` is available for follow-up conversation. No permission gate is declared on this route in `gr.tsx`. ## Who it's for Access follows your organization's role and module configuration. AI Compliance features must be enabled in GR settings at `/gr/settings`. ## Before you start * AI Compliance features must be enabled in GR settings. * At least one risk must exist in the risk register at `/gr/risks`. ## Steps 1. Go to **Governance & Compliance → AI → Risk Assessment** at `/gr/ai/risk-assessment`. 2. If AI is disabled, navigate to `/gr/settings` and enable AI Compliance features. 3. Select a risk from the dropdown to load any prior assessments. 4. Select **Generate** (or equivalent) to produce a new AI risk assessment. 5. Review the generated assessment and mitigation suggestions. 6. Use the AI chat panel for follow-up questions about the assessment. 7. Navigate to the risk record at `/gr/risks/:id` to apply mitigations. ## Key concepts | Concept | Description | | -------------------------- | -------------------------------------------------------------------------- | | AI Compliance enabled | Feature flag controlled in GR settings; page shows a disabled state if off | | Risk assessment | AI-generated analysis of a risk record, including mitigation suggestions | | Chat panel | `AIComplianceChatPanel` — conversational follow-up on the current risk | | `useAIRiskAssessmentsList` | Fetches prior AI assessments filtered by selected risk ID | ## Related Governance & Compliance core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/gr.tsx * src/cores/gr/pages/AIRiskAssessment.tsx * src/cores/gr/ai/index.ts * src/cores/gr/hooks/useAIComplianceEnabled.ts # Risk Register Source: https://docs.encoreos.io/gr/risk-register Browse and assess organizational risks — category/rating/status filters, tabbed detail for assessments and mitigations, and a wizard. The Risk Register page lists all risks in the organization with search, category, rating, and status filters, plus quick-stats cards. It is located at route `/gr/risks`. ## Overview The page is rendered by `RiskList` and fetches risks via `useRiskList` with search and filter parameters. Quick-stats (total, critical, active, mitigated) are loaded from `useRiskStats`. A **New Risk** button opens `RiskFormDialog`. If an in-progress risk assessment wizard draft exists (`hasRiskAssessmentDraft`), a banner prompts the user to continue. No permission gate is declared on this route in `gr.tsx`. Categories: `operational`, `financial`, `clinical`, `safety`, `compliance`, `reputational`. Ratings: `critical`, `high`, `medium`, `low`. Statuses: `active`, `mitigated`, `resolved`, `closed`. ## Who it's for Access follows your organization's role and module configuration. * No special permission is required to view the risk register. * Creating risks via wizard requires `gr.risks.admin`. ## Finding a risk 1. Go to **Governance & Compliance → Risks** at `/gr/risks`. 2. Review quick-stats at the top of the page. 3. Use the search bar to find a risk by keyword. 4. Apply Category, Rating, and Status filters to narrow the list. 5. Select a risk card to open the Risk Details page. 6. Select **New Risk** to open the risk creation form. 7. For a guided wizard, navigate to `/gr/risks/wizard` (requires `gr.risks.admin`). | Concept | Description | | ----------------- | ------------------------------------------------------------------------------------ | | Rating | Composite of likelihood and impact: `low`, `medium`, `high`, `critical` | | Status | Lifecycle state: `active`, `mitigated`, `resolved`, `closed` | | In-progress draft | A local wizard draft detected by `hasRiskAssessmentDraft` — shown as a banner prompt | ## Viewing a risk The Risk Details page (`/gr/risks/:id`) shows a single risk record with full lifecycle management. The page is rendered by `RiskDetail` and loads data via `useRiskDetail`. Four URL-synced tabs are available: `overview`, `assessments`, `mitigations`, `links`. Status transitions — **Mitigate**, **Resolve**, **Close** — are performed via `useRiskMutation`. Mitigation items are managed via `useRiskMitigationMutation`. Linked items (requirements, audits, etc.) are managed via `RiskLinkManager`. Users with edit access see an **Edit** button; the route itself has no permission gate in `gr.tsx`. Displayed fields include: title, category, rating badge, status badge, owner, site, dates, and description. Before you start: navigate from the Risk Register at `/gr/risks`. A risk record must exist for the given ID. 1. Go to **Governance & Compliance → Risks** and select a risk. 2. Review the **Overview** tab for category, rating, status, owner, and description. 3. Open the **Assessments** tab to view or add risk assessments. 4. Open the **Mitigations** tab to view or add mitigation actions and mark them complete. 5. Open the **Links** tab to view linked requirements, audits, or other items. 6. Use the **Mitigate**, **Resolve**, or **Close** buttons to transition risk status. 7. Select **Edit** to update risk details. | Concept | Description | | ---------------- | ------------------------------------------------------------------------ | | Rating | `low`, `medium`, `high`, `critical` — composite of likelihood and impact | | Status lifecycle | `active` → `mitigated` → `resolved` → `closed` | | Mitigation | An action item planned or completed to reduce the risk | | Risk assessment | A recorded evaluation of likelihood and impact at a point in time | | Links | Connections to requirements, audits, or other GR records | ## Creating a risk Risk creation is performed via the Risk Assessment wizard at `/gr/risks/wizard` (or `/gr/risks/wizard/:riskId` to edit an existing risk). The `/gr/risks/new` route does not exist in the shipped application. Both wizard routes require `gr.risks.admin`. The Risk Assessment wizard (`RiskAssessmentWizardPage`) has 6 steps: 1. **Identification** — Describe the risk 2. **Analysis** — Likelihood × impact scoring 3. **Owner** — Accountability assignment 4. **Current controls** — Existing safeguards 5. **Mitigation plan** — Strategy and actions 6. **Review** — Confirm and submit On submission, `createRisk` → `createAssessment` → `createMitigation × N` are called in blocking order; PF-29 task creation follows as a best-effort operation. Before you start: navigate to `/gr/risks/wizard` (not `/gr/risks/new`). Have risk description, likelihood/impact scores, owner, existing controls, and mitigation strategy ready. 1. Navigate to `/gr/risks/wizard`. The 6-step `WizardShell` loads. 2. **Identification** — enter a title and description for the risk. 3. **Analysis** — select likelihood and impact values to compute the risk score. 4. **Owner** — select the risk owner from available users. 5. **Current controls** — list controls already in place that address this risk. 6. **Mitigation plan** — choose a mitigation strategy and add specific mitigation actions. 7. **Review and submit** — confirm all entries and submit. Records are created in order: risk → assessment → mitigations. Task creation follows. **WizardShell** — horizontal-layout wizard platform component. **useRiskAssessmentWizard** — hook managing form state and submission for the risk wizard. **gr.risks.admin** — the permission required to access either risk wizard route. ## Related Governance & Compliance core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/gr.tsx * src/cores/gr/pages/RiskList.tsx * src/cores/gr/pages/RiskDetail.tsx * src/cores/gr/hooks/useRiskList.ts * src/cores/gr/hooks/useRiskStats.ts * src/cores/gr/hooks/useRiskDetail.ts * src/cores/gr/hooks/useRiskMutation.ts * src/cores/gr/wizards/risk-assessment/RiskAssessmentWizardPage.tsx * src/platform/permissions/constants.ts # GR Risk Management - User Guide Source: https://docs.encoreos.io/gr/risk-user-guide The Risk Management module helps your organization identify, assess, and mitigate risks across operations. This guide covers how to understand risks, view risk… ## Overview The Risk Management module helps your organization identify, assess, and mitigate risks across operations. This guide covers how to understand risks, view risk information, and manage mitigation actions assigned to you. *** ## Getting Started ### Accessing Risk Information 1. Navigate to **GR → Risks** from the main menu 2. View the Risk Register showing all organizational risks 3. Check your assigned mitigations on the dashboard ### What You'll See | Section | Description | | ----------------------- | ------------------------------------------------- | | **Risk Register** | All identified risks with ratings and status | | **High Priority Risks** | Critical and high-rated risks requiring attention | | **My Mitigations** | Mitigation actions assigned to you | | **Recent Assessments** | Latest risk assessment updates | *** ## Understanding Risk Ratings Risks are rated based on likelihood and impact: | Rating | Meaning | Action Required | | ------------ | ---------------------------------------- | ----------------------------- | | **Critical** | Highest risk level, immediate threat | Immediate executive attention | | **High** | Significant risk requiring prompt action | Address within 7-14 days | | **Medium** | Moderate risk requiring monitoring | Address within 30 days | | **Low** | Minor risk, acceptable with monitoring | Monitor quarterly | ### Risk Score Calculation Risk Score = Likelihood × Impact | Likelihood | Description | Score | | ------------------ | ------------------------ | ----- | | **Rare** | Unlikely to occur | 1 | | **Unlikely** | Could occur occasionally | 2 | | **Possible** | Might occur sometimes | 3 | | **Likely** | Will probably occur | 4 | | **Almost Certain** | Expected to occur | 5 | | Impact | Description | Score | | ----------------- | -------------------------------- | ----- | | **Insignificant** | Minimal effect | 1 | | **Minor** | Small impact, easily managed | 2 | | **Moderate** | Noticeable impact, manageable | 3 | | **Major** | Significant impact on operations | 4 | | **Catastrophic** | Severe impact, potential failure | 5 | *** ## Understanding Risk Status | Status | Meaning | | ------------- | --------------------------------------- | | **Active** | Risk is identified and being managed | | **Mitigated** | Controls in place, risk reduced | | **Resolved** | Risk no longer exists | | **Closed** | Risk formally closed after verification | *** ## Risk Categories | Category | Examples | | ---------------- | ------------------------------------- | | **Operational** | Process failures, equipment issues | | **Financial** | Budget overruns, funding loss | | **Clinical** | Resident health and safety | | **Safety** | Workplace safety, physical hazards | | **Compliance** | Regulatory violations, audit failures | | **Reputational** | Public image, stakeholder trust | *** ## Your Role in Risk Management ### Identifying Risks You play a key role in identifying risks: 1. **Report potential risks** to your supervisor 2. **Document near-misses** and incidents 3. **Suggest preventive measures** when you see hazards 4. **Participate in risk assessments** when asked ### Managing Your Assigned Mitigations If you're assigned mitigation actions: #### Viewing Your Actions 1. Navigate to **GR → Risks** 2. Filter by **My Mitigations** 3. Or check the GR Dashboard for pending actions #### Mitigation Status | Status | Meaning | | --------------- | ----------------------------------- | | **Planned** | Action created but not yet started | | **In Progress** | You are actively working on it | | **Completed** | You have finished the action | | **Verified** | Risk manager has verified your work | #### Updating Your Progress 1. Click on the mitigation action 2. Click **Update Status** or **Add Progress Note** 3. Describe what you've done 4. Attach evidence if applicable 5. When finished, mark as **Completed** ### Evidence for Mitigations Provide proof that the mitigation is effective: | Evidence Type | Examples | | -------------------- | -------------------------------------- | | **Documents** | Updated procedures, new policies | | **Photos** | Safety improvements, equipment changes | | **Training Records** | Completed safety training | | **Attestations** | Signed acknowledgments | *** ## Risk Notifications ### Types of Notifications You May Receive | Notification | When | Action Needed | | ------------------------- | --------------------------------- | -------------------------- | | **Risk Alert** | New high-priority risk identified | Be aware | | **Mitigation Assigned** | You're assigned an action | Review and begin work | | **Due Date Reminder** | 7 and 3 days before due | Complete your action | | **Overdue Alert** | Past due date | Immediate attention needed | | **Verification Complete** | Your action was verified | Informational | ### Responding to Notifications 1. Click the notification to see details 2. Review the mitigation action or risk 3. Take required action before the due date 4. Update progress in the system *** ## Risk vs Other GR Features | Risks | Audit Findings | Compliance Issues | | ------------------------- | ------------------------- | ------------------- | | Potential future problems | Issues found during audit | Regulatory gaps | | Proactive identification | Discovered through review | Standards-based | | May never occur | Has occurred | Requirement not met | | Mitigation strategies | Corrective actions | Remediation plans | *** ## FAQ ### I was assigned a mitigation but I don't understand it Contact your supervisor or the risk manager who created the action. They can clarify expectations and provide guidance. ### The due date for my mitigation is unrealistic Contact your supervisor immediately. Due dates can sometimes be extended if there's a valid reason, but this must be approved before the due date passes. ### I completed my mitigation but it still shows "Planned" Make sure you updated the status in the system: 1. Open the mitigation action 2. Update status to **Completed** 3. Add completion notes 4. Attach evidence if required The risk manager will then verify and close it. ### How do I report a new risk? Report potential risks to your supervisor or compliance officer. They can enter it into the Risk Register and ensure proper assessment. ### Who can I ask for help with risk management? * Your direct supervisor * Site compliance officer * Organization risk manager * Department lead for your area *** ## Related Guides * [Risk Admin Guide](/gr/risk-admin-guide) - For risk managers * [Audit User Guide](/gr/audit-user-guide) - Understanding audits * [Compliance User Guide](/gr/compliance-user-guide) - Compliance requirements * [GR Documentation Index](/gr/overview) - GR module overview *** **Need Help?** Contact your risk manager or system administrator. # Risk Wizard Source: https://docs.encoreos.io/gr/risk-wizard Guided six-step wizard for creating or editing a risk: identification, analysis, owner, controls, mitigation plan, and review. The Risk Wizard is a full-page guided workflow for creating a new risk or editing an existing one. It is located at routes `/gr/risks/wizard` (new) and `/gr/risks/wizard/:riskId` (edit existing). Both routes share the same component. ## Overview The page is rendered by `RiskAssessmentWizardPage` using `WizardShell` (horizontal step layout). Six steps are rendered in sequence: 1. **Identification** — Describe the risk (title, description, category) 2. **Analysis** — Likelihood and impact scoring 3. **Owner** — Assign accountability 4. **Current Controls** — Document existing safeguards 5. **Mitigation Plan** — Strategy and planned actions 6. **Review** — Confirm and submit On submission, the wizard creates a risk record, an assessment record, and mitigation items in sequence. PF-29 task creation follows as a best-effort step. When a `riskId` param is present, the wizard loads and edits the existing risk. Both routes are protected by `gr.risks.admin`. ## Who it's for Requires permission: `gr.risks.admin` ## Before you start * Your account must have `gr.risks.admin`. * For editing an existing risk, the risk ID must be provided in the URL. ## Steps 1. Navigate to `/gr/risks/wizard` or select **New Risk (Wizard)** from the risk register. 2. Complete **Step 1 — Identification**: enter title, description, and category. 3. Complete **Step 2 — Analysis**: set likelihood and impact scores. 4. Complete **Step 3 — Owner**: assign the risk owner. 5. Complete **Step 4 — Current Controls**: describe existing safeguards. 6. Complete **Step 5 — Mitigation Plan**: define strategy and action items. 7. Review the summary on **Step 6** and submit. 8. The wizard creates the risk, assessment, and mitigation records, then navigates to the risk register. ## Key concepts | Concept | Description | | ---------------- | ------------------------------------------------------------------------------ | | `WizardShell` | Platform-level wizard container with horizontal step indicator | | Submission order | createRisk → createAssessment → createMitigation(s) → PF-29 task (best-effort) | | `riskId` param | When present, wizard operates in edit mode on the existing risk | ## Related Governance & Compliance core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/gr.tsx * src/cores/gr/wizards/risk-assessment/RiskAssessmentWizardPage.tsx * src/cores/gr/wizards/risk-assessment/useRiskAssessmentWizard.ts * src/platform/permissions/constants.ts # In-Service Compliance Source: https://docs.encoreos.io/gr/service-compliance Monitor mandatory in-service training compliance across employees and courses in a filterable matrix view. The In-Service Compliance page provides a monitoring matrix for mandatory in-service training completion across employees and courses. It is located at route `/gr/compliance/inservice`. ## Overview The page is rendered by `InServiceCompliancePage`. It uses `useInServiceMatrix` (RPC-backed, server-side filtered by site or department) and `useInServiceCompliancePct` (overall percentage). Client-side filters for employee search (via `useDeferredValue`) and completion status further trim the matrix. The layout includes: * **Stat cards** (`InServiceMatrixStatCards`) showing compliance percentages * **Filter bar** (`InServiceMatrixFilters`) for scope mode (site/department), site/department selection, employee search, and status * **Matrix table** (`InServiceMatrixTable`) — employees as rows, courses as columns * **Export** button (visible to users with the export permission) downloads the matrix as CSV via `exportInServiceMatrixToCsv` The route is protected by `GR_PERMISSIONS.COMPLIANCE_VIEW` (`gr.compliance.view`). Export uses `PermissionGate` (permission not visible in the opened file; SME should confirm). ## Who it's for Requires permission: `gr.compliance.view` ## Before you start * Your account must have `gr.compliance.view`. * Courses and employee enrollment data must be configured. ## Steps 1. Go to **Governance & Compliance → Compliance → In-Service Compliance** at `/gr/compliance/inservice`. 2. Select **Scope** (site or department) and choose a specific site or department. 3. Use the employee search to filter to specific staff. 4. Use the status filter to show all employees or only non-compliant ones. 5. Review the stat cards for overall and filtered compliance percentages. 6. Review the matrix table to identify specific employee/course gaps. 7. Select **Export CSV** to download the current filtered view (requires export permission). ## Key concepts | Concept | Description | | --------------------- | ---------------------------------------------------------------------- | | In-service matrix | Employee-row × course-column compliance grid | | Scope mode | Filter by site or department (server-side via RPC) | | Compliance percentage | `useInServiceCompliancePct` — overall rate for the selected site | | CSV export | `exportInServiceMatrixToCsv` — exports visible matrix rows and courses | ## Related Governance & Compliance core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/gr.tsx * src/cores/gr/pages/InServiceCompliancePage.tsx * src/cores/gr/hooks/useInServiceMatrix.ts * src/platform/permissions/constants.ts # Standards Source: https://docs.encoreos.io/gr/standards View and manage accreditation standards for a specific accreditation body via the Accreditation Detail page. The Standards view shows accreditation standards associated with a specific accreditation record. This content is rendered within the **Accreditation Detail** page at route `/gr/accreditations/:id` on the **Standards** tab — there is no dedicated route `/gr/accreditations/:id/standards`. ## Overview Standards are displayed on the **Standards** tab of `AccreditationDetail` (component `AccreditationStandardCard`, dialog `AccreditationStandardFormDialog`). The parent route `/gr/accreditations/:id` has no permission gate in `gr.tsx`. Standards tab access follows the same visibility as the Accreditation Detail page. The `VALID_ACCREDITATION_TABS` constant confirms tab slugs: `overview`, `standards`, `surveys`, `evidence`, `tracer`. Navigation to the standards tab can be achieved by visiting `/gr/accreditations/:id?tab=standards`. ## Who it's for Access follows your organization's role and module configuration. ## Before you start * Navigate to **Governance & Compliance → Accreditations** and open an accreditation record. * Select the **Standards** tab. ## Steps 1. Go to `/gr/accreditations` and select an accreditation. 2. Select the **Standards** tab (URL: `/gr/accreditations/:id?tab=standards`). 3. Review listed standards with their status and details. 4. Use the add/edit action (if permitted) to manage standard records. ## Related Governance & Compliance core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/gr.tsx * src/cores/gr/pages/AccreditationDetail.tsx * src/cores/gr/components/AccreditationStandardCard.tsx * src/cores/gr/components/AccreditationStandardFormDialog.tsx # Governance Surveys Source: https://docs.encoreos.io/gr/surveys View and manage accreditation survey records for a specific accreditation via the Accreditation Detail page. The Surveys view shows accreditation survey records associated with a specific accreditation. This content is rendered within the **Accreditation Detail** page at route `/gr/accreditations/:id` on the **Surveys** tab — there is no dedicated route `/gr/accreditations/:id/surveys`. ## Overview Surveys are displayed on the **Surveys** tab of `AccreditationDetail` (component `AccreditationSurveyCard`, dialog `AccreditationSurveyFormDialog`). The parent route `/gr/accreditations/:id` has no permission gate in `gr.tsx`. Survey tab access follows the same visibility as the Accreditation Detail page. The `VALID_ACCREDITATION_TABS` constant confirms tab slugs: `overview`, `standards`, `surveys`, `evidence`, `tracer`. Navigation to the surveys tab can be achieved by visiting `/gr/accreditations/:id?tab=surveys`. ## Who it's for Access follows your organization's role and module configuration. ## Before you start * Navigate to **Governance & Compliance → Accreditations** and open an accreditation record. * Select the **Surveys** tab. ## Steps 1. Go to `/gr/accreditations` and select an accreditation. 2. Select the **Surveys** tab (URL: `/gr/accreditations/:id?tab=surveys`). 3. Review listed surveys with their status, date, and findings. 4. Use the add/edit action (if permitted) to manage survey records. ## Related Governance & Compliance core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/gr.tsx * src/cores/gr/pages/AccreditationDetail.tsx * src/cores/gr/components/AccreditationSurveyCard.tsx * src/cores/gr/components/AccreditationSurveyFormDialog.tsx # Governance Templates Source: https://docs.encoreos.io/gr/templates Browse and use pre-built procedure templates to quickly start new procedures from standardized structures. The Templates page is the procedure templates library. Users can browse, preview, filter, and instantiate pre-built procedure templates. It is located at route `/gr/procedures/templates`. ## Overview The page is rendered by `ProcedureTemplatesPage`. It loads templates via `useProcedureTemplateList` with category and keyword filters via a sidebar `ProcedureTemplateFilters`. Templates are displayed as cards in `ProcedureTemplateGrid`. Actions per template: **Preview** (opens `ProcedureTemplatePreviewDialog`) and **Use/Instantiate** (opens `ProcedureTemplateInstantiateDialog` to create a new procedure). The route is protected by `gr.procedure_templates.view`. ## Who it's for Requires permission: `gr.procedure_templates.view` ## Before you start * Your account must have `gr.procedure_templates.view`. * Templates are contributed from approved procedures (see Procedure Details) or created by template administrators with `gr.procedure_templates.manage`. ## Steps 1. Go to **Governance & Compliance → Procedures → Templates** at `/gr/procedures/templates`. 2. Use the sidebar filters to narrow by category or keyword. 3. Select a template card to preview its workflow and details. 4. Select **Use** (or instantiate) to create a new procedure pre-filled from the template. 5. Complete the instantiation dialog and confirm to create the procedure. ## Key concepts | Concept | Description | | ------------------------------- | ---------------------------------------------------------------------------------------- | | Template | A reusable procedure structure with pre-defined steps and metadata | | Instantiate | Creating a new procedure record from a template via `ProcedureTemplateInstantiateDialog` | | Contribute | Users with `gr.procedure_templates.contribute` can save approved procedures as templates | | `gr.procedure_templates.manage` | Required to create or manage templates directly | ## Related Governance & Compliance core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/gr.tsx * src/cores/gr/pages/ProcedureTemplatesPage.tsx * src/cores/gr/hooks/useProcedureTemplateList.ts * src/platform/permissions/constants.ts # GR Training & CEU Management - Admin Guide Source: https://docs.encoreos.io/gr/training-admin-guide This guide covers training management administration including creating training courses, managing enrollments, recording completions, tracking CEU credits, an… ## Overview This guide covers training management administration including creating training courses, managing enrollments, recording completions, tracking CEU credits, and monitoring training compliance. *** ## Initial Setup ### Configuring GR Module Settings 1. Navigate to **GR → Settings** 2. Configure the following training options: | Setting | Description | Default | | ------------------------- | -------------------------------------- | ---------- | | Enable Training Reminders | Send automatic training reminders | Yes | | Reminder Days | Days before due date to send reminders | 30, 14, 7 | | Expiration Reminder Days | Days before expiration to remind | 90, 60, 30 | | Default Training Duration | Default course duration estimate | 1 hour | | Enable AI Assistance | AI-powered training recommendations | Yes | ### Setting Up Training Categories Training categories are managed via Picklists: 1. Navigate to **Platform → Picklists** 2. Find or create the `gr_training_category` picklist 3. Add categories as needed: * Clinical * Safety * Compliance * Professional Development * Regulatory * Orientation * Leadership ### Setting Up Course Types 1. Navigate to **Platform → Picklists** 2. Find or create the `gr_training_type` picklist 3. Add course types: * Online * In-Person * Webinar * Self-Paced * On-the-Job * Blended ### Additional Training Picklists Delivery method, completion verification method, CEU credit type, and CEU source are also picklist-driven under the `gr.training.*` namespace. Customize them the same way (Settings → Picklists, duplicate to org if needed, edit values). The full list is in the [Picklist Reference](/reference/picklists). | Picklist | Where it appears | | --------------------------------- | --------------------------------------- | | `gr.training.delivery_method` | Course form → Delivery method | | `gr.training.verification_method` | Completion record → Verification method | | `gr.training.ceu_credit_type` | Completion record → CEU credit type | | `gr.training.ceu_source` | Completion record → CEU source | *** ## Managing Training Courses ### Creating a New Course Training Course Setup wizard on the Course Details step 1. Navigate to **GR → Training** 2. Click **New Course** 3. Complete the form: | Field | Required | Description | | ----------------- | -------- | ------------------------------------------------- | | Title | Yes | Course name (e.g., "HIPAA Privacy Training 2024") | | Description | No | Course objectives and content summary | | Category | Yes | Course category from picklist | | Course Type | Yes | Delivery method (online, in-person, etc.) | | Duration | No | Estimated hours to complete | | CEU Credits | No | Credits awarded upon completion | | CEU Category | No | Credit type (State, Professional, etc.) | | Expiration Period | No | Months until certification expires | | Materials | No | Upload course documents, videos, etc. | | Is Required | No | Whether this is mandatory training | | Prerequisites | No | Courses required before this one | 4. Click **Create Course** (saves as Active) ### Course Types Explained | Type | Description | Completion Method | | ---------- | ------------------------------- | -------------------------- | | Online | Web-based self-paced modules | Auto-tracked or quiz | | In-Person | Classroom or hands-on training | Attendance verification | | Webinar | Live online sessions | Attendance + optional quiz | | Self-Paced | Materials for independent study | Self-attestation | | On-the-Job | Supervised practical training | Supervisor sign-off | | Blended | Combination of methods | Multiple verifications | ### Course Categories | Category | Typical Courses | | ------------------------ | ------------------------------------------------- | | Clinical | HIPAA, medication handling, clinical procedures | | Safety | Fire safety, workplace safety, emergency response | | Compliance | Ethics, fraud prevention, regulatory requirements | | Professional Development | Leadership, communication, time management | | Regulatory | State-mandated training, certification renewals | | Orientation | New employee onboarding | | Leadership | Management training, supervisor development | ### Setting CEU Credits When creating or editing a course: 1. Enter the **CEU Credits** amount (e.g., 2.0) 2. Select the **CEU Category**: * State Licensing (for license renewals) * Professional Certification (for credentials) * Organization Required (internal requirements) 3. Credits are automatically added to employee transcripts upon completion ### Setting Expiration Periods For training that requires periodic renewal: 1. Enter **Expiration Period** in months 2. When an employee completes the course: * Completion date is recorded * Expiration date is calculated (completion + period) * Reminders are scheduled before expiration Common expiration periods: * CPR/First Aid: 24 months * HIPAA: 12 months * Annual safety: 12 months ### Uploading Course Materials 1. In the course form, click **Upload Materials** 2. Supported file types: PDF, DOC, DOCX, MP4, etc. 3. Materials are stored securely and accessible to enrolled employees 4. Multiple files can be attached to a single course ### Archiving Courses When a course is no longer offered: 1. Open the course details 2. Click **Archive** 3. The course is hidden from the library 4. Historical completions are preserved *** ## Training Enrollment ### Enrollment Methods | Method | Description | Use Case | | --------------- | ------------------------------------- | -------------------------- | | Individual | Enroll specific employees | Targeted training needs | | Bulk | Enroll multiple employees | New course rollout | | Role-Based | Enroll by job role | Role-specific requirements | | Department | Enroll by department | Team training | | Site-Based | Enroll by location | Site-specific training | | Auto-Enrollment | Triggered by hire date or role change | Orientation, compliance | ### Creating an Individual Enrollment 1. Open the course details 2. Click **Enroll Employee** or go to the **Enrollments** tab 3. Select the employee(s) 4. Set the **Due Date** for completion 5. Choose **Required** or **Optional** 6. Click **Create Enrollment** ### Bulk Enrollment 1. From the course details, click **Bulk Enroll** 2. Select enrollment criteria: * All employees * By role * By department * By site * By date range (hire date, etc.) 3. Set a uniform **Due Date** 4. Click **Create Enrollments** ### Enrollment Status Workflow ``` ┌─────────────┐ ┌─────────────┐ ┌───────────┐ │ Not Started │ ──> │ In Progress │ ──> │ Completed │ └─────────────┘ └─────────────┘ └───────────┘ │ │ │ │ ▼ ▼ ┌─────────────┐ ┌─────────────┐ │ Overdue │ ──> │ Overdue │ └─────────────┘ └─────────────┘ ``` | Status | Description | Action | | ----------- | ---------------------- | --------------------------- | | Not Started | Assigned but not begun | Send reminder | | In Progress | Employee has started | Monitor progress | | Completed | Successfully finished | No action needed | | Overdue | Past due date | Escalate, extend, or excuse | ### Managing Overdue Training 1. Navigate to **GR → Training** and filter by "Overdue" 2. Review overdue enrollments 3. Options: * **Send Reminder**: Notify employee again * **Extend Due Date**: Grant additional time * **Excuse**: Mark as not required with reason * **Escalate**: Notify supervisor/HR *** ## Recording Training Completions ### Completion Verification Methods | Method | Description | When to Use | | ------------------- | ----------------------- | ----------------------------- | | Self-Report | Employee marks complete | Low-risk, self-paced training | | Quiz Score | Passing score required | Knowledge verification | | Attendance | Instructor verifies | In-person or webinar | | Supervisor Sign-Off | Manager confirms | On-the-job training | | Certificate Upload | External verification | External courses | ### Recording a Completion (Admin) 1. Open the course details 2. Go to the **Enrollments** tab 3. Find the employee's enrollment 4. Click **Record Completion** 5. Enter: * **Completion Date** * **Verification Method** * **Quiz Score** (if applicable) * **Notes** (optional) 6. Click **Save Completion** ### Automatic CEU Credit Calculation When a completion is recorded: 1. System checks course CEU configuration 2. Creates CEU credit record for employee 3. Sets credit expiration (if course has expiration period) 4. Credit appears on employee's transcript ### Recording External Training For training completed outside the system: 1. Navigate to employee's training record 2. Click **Add External Training** 3. Enter: * Course name * Provider/Institution * Completion date * CEU credits (with documentation) * Expiration date (if applicable) * Certificate/proof document 4. Click **Save** *** ## CEU Credit Management ### Understanding Credit Categories | Category | Purpose | Common Uses | | -------------------------- | ---------------------- | -------------------------------- | | State Licensing | License renewal | Social work, counseling, nursing | | Professional Certification | Credential maintenance | CADC, CASAC, LADC | | Organization Required | Internal compliance | Annual training requirements | ### Viewing Employee Transcripts 1. Navigate to **HR → Employees** and select an employee 2. Click the **Training** or **CEU** tab 3. View all credits earned and transcripts 4. Export for license renewals ### Generating Compliance Reports 1. Navigate to **GR → Reports** (or dashboard) 2. Select **Training Compliance Report** 3. Filter by: * Date range * Department * Course * Compliance status 4. Export as needed ### Credit Totals by Period Track credit accumulation for licensing periods: 1. Set the licensing period date range 2. View total credits by category 3. Identify gaps in required credits 4. Generate attestation letters *** ## Tracking Training Compliance ### Training Dashboard The GR Overview dashboard shows: * Total active courses * Pending training assignments * Overdue training count * Completion rate percentage * Upcoming expirations ### Compliance Metrics | Metric | Description | Target | | --------------- | ---------------------------------------- | ------- | | Completion Rate | % of assigned training completed on time | 95%+ | | Overdue Rate | % of training past due | \<5% | | Expiration Risk | Certifications expiring in 30 days | Monitor | ### Department Training Status 1. Navigate to training reports 2. Filter by department 3. View: * Compliance rate by team * Overdue training by employee * Upcoming expirations *** ## Recurring Training ### Setting Up Recurring Requirements For training that must be repeated: 1. Set **Expiration Period** on the course 2. When employees complete: * Expiration date is calculated * Reminders scheduled before expiration * Employee must re-complete when expired ### Expiration Reminders Automatic reminders are sent at: * 90 days before expiration * 60 days before expiration * 30 days before expiration ### Renewal Workflow 1. Employee receives expiration reminder 2. Training coordinator enrolls in renewal course (or auto-enrollment) 3. Employee completes training 4. New expiration date is calculated *** ## Reporting ### Dashboard Metrics Explained | Metric | Calculation | Action | | ---------------- | -------------------------------- | ---------------- | | Active Courses | Count of non-archived courses | Manage catalog | | Pending Training | Enrollments not yet completed | Monitor progress | | Overdue Training | Enrollments past due date | Escalate | | Completion Rate | Completed / Total Enrolled × 100 | Track trends | | Expiring Soon | Completions expiring in 30 days | Plan renewals | ### Standard Reports | Report | Purpose | Frequency | | ------------------- | ---------------------------------- | --------- | | Training Compliance | Overall compliance status | Weekly | | Overdue Training | Employees with past-due training | Daily | | Expiration Report | Upcoming certification expirations | Monthly | | CEU Summary | Credit totals by employee | Quarterly | | Course Completion | Completion rates by course | Monthly | ### Exporting Data 1. Navigate to the relevant list view 2. Apply desired filters 3. Click **Export** to download as CSV or PDF *** ## Notifications & Reminders ### Automatic Notifications | Event | Recipients | Timing | | ------------------ | -------------------- | ---------------------- | | New Assignment | Employee | Immediate | | Due Reminder | Employee | 30, 14, 7 days before | | Overdue | Employee, Supervisor | After due date | | Expiration Warning | Employee | 90, 60, 30 days before | | Completion | Employee | Immediate | ### Configuring Reminders 1. Navigate to **GR → Settings** 2. Adjust reminder schedules: * Due date reminder days * Expiration reminder days * Enable/disable specific notifications ### Sending Manual Reminders 1. Select one or more enrollments 2. Click **Send Reminder** 3. Employees receive immediate notification *** ## Troubleshooting ### Employee doesn't see assigned training 1. Check if the course is **Active** (not Archived) 2. Verify the enrollment exists and is assigned to that employee 3. Check the employee's role and department match criteria 4. Review RLS policies if using custom roles ### Training reminders aren't sending 1. Verify **Enable Training Reminders** is on in GR Settings 2. Check that the scheduled job is running 3. Verify employee has valid notification preferences 4. Check edge function logs for errors ### CEU credits not appearing 1. Verify the course has CEU credits configured 2. Check that the completion was recorded (not just enrollment) 3. Verify the CEU credit record was created 4. Check for errors in the completion workflow ### Quiz scores not recording 1. Ensure quiz integration is configured 2. Verify the completion form includes score field 3. Check that the score meets passing threshold 4. Review completion record for stored score *** ## Best Practices ### Course Naming * Use clear, descriptive titles * Include year for annual training (e.g., "HIPAA 2024") * Indicate level if applicable (e.g., "Basic", "Advanced") * Avoid abbreviations unless standard ### Due Date Recommendations | Training Type | Recommended Lead Time | | --------------------- | ------------------------- | | New Hire Orientation | Within 30 days | | Annual Compliance | 30-60 days notice | | Certification Renewal | 90 days before expiration | | Optional Development | Flexible | ### CEU Documentation * Always record credit category correctly * Maintain documentation for external credits * Keep certificates on file for audits * Verify credit amounts match official requirements ### Enrollment Timing * Stagger enrollments to avoid overwhelming employees * Align with work schedules and busy periods * Consider combining related training * Use automation for recurring requirements ### Compliance Monitoring * Review compliance dashboard weekly * Address overdue training promptly * Track trends over time * Report metrics to leadership monthly *** ## Related Guides * [Training User Guide](/gr/training-user-guide) - For employees * [Policy Admin Guide](/gr/policy-admin-guide) - For policy management * [GR Documentation Index](/gr/overview) - GR module overview * [Notifications Guide](/pf/notifications-guide) - Platform notifications *** **Need Help?** Contact your system administrator or refer to the [GR module documentation](/gr/overview). # Training Library Source: https://docs.encoreos.io/gr/training-library Browse and manage the training course catalog — with search, category and status filters, and a tabbed detail view for enrollments. The Training Library is the main catalog for training courses. It supports search, category/status filtering, pagination, and a creation wizard. It is located at route `/gr/training`. ## Overview The page is rendered by `TrainingLibrary` and calls `useTrainingCourseList` with deferred search and filter parameters. Pagination is supported (page size: 50). View can be toggled between grid and list. A **Create Course** button opens `TrainingCourseWizardDialog`. No permission gate is declared on this route in `gr.tsx`. Available categories: `clinical`, `safety`, `compliance`, `professional_development`, `regulatory`, `operations`, `other`. Available statuses: `active`, `draft`, `archived`. ## Who it's for Access follows your organization's role and module configuration. * No special permission is required to view the training catalog. * Creating courses may require additional permissions; SME should confirm RBAC expectations. Note: The `/gr/training/new` route does not exist in the shipped application. Course creation is launched from the **Create Course** button on this page. ## Finding a course 1. Go to **Governance & Compliance → Training** at `/gr/training`. 2. Use the search bar to find courses by keyword. 3. Apply Category and Status filters to narrow the list. 4. Toggle between grid and list view as preferred. 5. Select a course card to open the Training Details page. 6. Select **Create Course** to launch the course creation wizard. | Concept | Description | | ------------- | --------------------------------------------------------------------------------- | | Category | Domain classification of the course content | | Status | `active` (visible and enrollable), `draft` (in development), `archived` (retired) | | Page size | Fixed at 50 per page; pagination controls navigate between pages | | Wizard dialog | `TrainingCourseWizardDialog` — multi-step course creation flow | ## Viewing a course The Training Details page (`/gr/training/:id`) shows a single training course record with its enrollment history and management actions. The page is rendered by `TrainingDetail` and loads the course via `useTrainingCourseDetail` and enrollments via `useTrainingEnrollmentList`. Tabs include **Overview** (course metadata) and **Enrollments** (enrollment table). The dynamic breadcrumb is set to the course title. Users with edit access see an **Edit** button (opens `TrainingCourseFormDialog`). An **Enroll** button opens `TrainingEnrollmentDialog`. No permission gate is declared on this route in `gr.tsx`. Displayed course fields include: title, category badge, status badge, duration (converted from minutes to hours), and description. Before you start: navigate from the Training Library at `/gr/training`. A training course record must exist for the given ID. 1. Go to **Governance & Compliance → Training** and select a course. 2. Review the **Overview** tab for course details, category, status, and duration. 3. Open the **Enrollments** tab to view enrollment records and completion status. 4. Select **Enroll** to add an enrollment (SME: confirm required permissions). 5. Select **Edit** to update course details (SME: confirm required permissions). | Concept | Description | | ---------- | -------------------------------------------------------------------------- | | Duration | Stored in `duration_minutes`; displayed as rounded hours | | Category | Classification of the training domain (clinical, safety, compliance, etc.) | | Enrollment | A link between an employee and a course, tracking completion | | Status | `active`, `draft`, `archived` — determines visibility in catalogs | ## Related Governance & Compliance core overview. This page documents shipped product behavior. It is not medical, legal, or billing advice. Verify against your organization's policies and applicable regulations before using it for clinical, compliance, or billing decisions. Protected health information (PHI) shown in the product is governed by your tenant's access controls and is never exposed in this documentation. * src/routes/gr.tsx * src/cores/gr/pages/TrainingLibrary.tsx * src/cores/gr/pages/TrainingDetail.tsx * src/cores/gr/hooks/useTrainingCourseList.ts * src/cores/gr/hooks/useTrainingEnrollmentList.ts * src/cores/gr/wizards/training-course/TrainingCourseWizardDialog.tsx # GR Training & CEU Management - User Guide Source: https://docs.encoreos.io/gr/training-user-guide The Training & CEU Management module helps you complete required training, track your progress, and manage your continuing education credits. This guide covers… ## Overview The Training & CEU Management module helps you complete required training, track your progress, and manage your continuing education credits. This guide covers how to view training assignments, complete training, and generate CEU transcripts. *** ## Getting Started ### Accessing the Training Library 1. Navigate to **GR → Training** from the main menu 2. The Training Library shows all available courses for your organization 3. Use search and filters to find specific courses ### Accessing My Training 1. Navigate to **GR → My Training** from the main menu 2. View pending training assignments that require your action 3. Track completed training and history ### Accessing CEU Transcript 1. Navigate to **GR → CEU Transcript** from the main menu 2. View all earned CEU credits 3. Export transcript for license renewal *** ## Viewing Training Courses ### Training Library The Training Library displays all available courses with key information: | Column | Description | | --------------- | ----------------------------------------------------- | | **Title** | Course name and description | | **Category** | Course type (Clinical, Safety, Compliance, etc.) | | **Type** | Delivery method (Online, In-Person, Self-Paced, etc.) | | **Duration** | Estimated time to complete | | **CEU Credits** | Credits awarded upon completion | | **Status** | Active, Archived | ### Using Filters Filter courses by: * **Category**: Clinical, Safety, Compliance, Professional Development, etc. * **Type**: Online, In-Person, Webinar, Self-Paced, On-the-Job * **Status**: Active courses only * **Search**: Find by title or description ### Viewing Course Details 1. Click on a course title to open the detail view 2. View the full course description and objectives 3. See CEU credit information and category 4. Download course materials if available 5. View enrolled employees (if admin) *** ## My Training Assignments ### Understanding Pending Training When you're assigned training, you'll see it in **My Training**: | Column | Description | | ------------ | -------------------------------------------- | | **Course** | Training title and category | | **Assigned** | When you were assigned | | **Due Date** | Deadline for completion | | **Status** | Not Started, In Progress, Overdue, Completed | ### Training Status Workflow ``` ┌─────────────┐ ┌─────────────┐ ┌───────────┐ │ Not Started │ ──> │ In Progress │ ──> │ Completed │ └─────────────┘ └─────────────┘ └───────────┘ │ │ │ │ ▼ ▼ ┌─────────────┐ ┌─────────────┐ │ Overdue │ ──> │ Overdue │ └─────────────┘ └─────────────┘ ``` ### Due Date Reminders You'll receive automatic reminders at: * 30 days before due date * 14 days before due date * 7 days before due date (if still pending) Check your notifications regularly to stay compliant. *** ## Completing Training ### Step-by-Step Process 1. Navigate to **GR → My Training** 2. Find the pending training you need to complete 3. Click **Start Training** or the course title 4. Complete the training requirements: * **View Materials**: Review course content * **Complete Quiz**: Pass required assessment (if applicable) * **Attend Session**: Mark attendance (for in-person training) 5. Once requirements are met, click **Mark Complete** 6. Your supervisor may need to verify completion ### Completion Requirements by Course Type | Course Type | Typical Requirements | | ----------- | ---------------------------------- | | Online | Complete all modules, pass quiz | | Self-Paced | Review materials, self-attestation | | In-Person | Attendance verification | | Webinar | Attendance + quiz (often) | | On-the-Job | Supervisor sign-off | ### What Happens After Completion * Your completion is recorded with timestamp * CEU credits are automatically added to your transcript * The training moves to your "Completed" list * If the training expires, you'll be notified before renewal is due ### Important Notes * Some training has expiration dates (e.g., CPR expires in 2 years) * You'll receive reminders before certifications expire * Quiz scores may be recorded and visible to supervisors *** ## CEU Credit Tracking ### Understanding CEU Credits CEU (Continuing Education Unit) credits track your professional development hours: | Credit Type | Description | | -------------------------- | ------------------------------------ | | State Licensing | Credits for state license renewal | | Professional Certification | Credits for professional credentials | | Organization Required | Internal training requirements | ### Viewing Your Credits 1. Navigate to **GR → CEU Transcript** 2. View all earned credits by course 3. Filter by date range or credit category 4. See running totals by credit type ### CEU Transcript Details For each credit entry, you can see: * Course name and date completed * Credit amount and category * Expiration date (if applicable) * Verification method (quiz score, attendance, etc.) *** ## Generating CEU Transcripts ### Creating Your Transcript 1. Navigate to **GR → CEU Transcript** 2. Set the **Date Range** for the period you need 3. Optionally filter by **Credit Category** 4. Click **Export PDF** or **Export CSV** ### Using Transcripts for License Renewal When renewing your professional license: 1. Generate a transcript for your licensing period 2. Include course names, dates, and credit amounts 3. Some licensing boards may require additional verification 4. Contact your compliance officer for attestation if needed ### Transcript Contents Your transcript includes: * Your name and employee ID * Date range covered * List of completed training with: * Course title * Completion date * CEU credits earned * Credit category * Total credits by category * Organization attestation *** ## Expiring Certifications ### Understanding Expiration Some training has mandatory renewal periods: | Training Type | Typical Expiration | | ----------------------- | ------------------ | | CPR/First Aid | 2 years | | HIPAA | Annual | | Safety Training | Annual or Biennial | | Clinical Certifications | Varies | ### Renewal Reminders You'll receive automatic reminders: * 90 days before expiration * 60 days before expiration * 30 days before expiration ### Renewing Certifications 1. Complete the renewal training when available 2. Update your records with new completion date 3. New expiration date is automatically calculated *** ## Notifications & Reminders ### Types of Notifications | Notification | When | Action Required | | ------------------ | ------------------------- | --------------------- | | New Assignment | When assigned training | Complete by due date | | Reminder (30 days) | 30 days before due | Start training | | Reminder (14 days) | 14 days before due | Complete soon | | Reminder (7 days) | 7 days before due | Urgent - complete now | | Overdue | After due date | Complete immediately | | Expiring (90 days) | 90 days before expiration | Plan for renewal | | Expiring (30 days) | 30 days before expiration | Complete renewal | ### Viewing Notifications 1. Check the notification bell in the header 2. Click to view all pending notifications 3. Click a notification to go directly to the training *** ## FAQ ### Why is my training showing as overdue? Your training due date has passed. Complete the training as soon as possible. Overdue training is reported to supervisors and compliance officers. ### How do CEU credits work? CEU credits are awarded automatically when you complete training. The credit amount is set by the course and represents continuing education hours for your profession. ### Can I complete training on mobile? Yes, the training system works on mobile devices. Navigate to **GR → My Training** on your phone or tablet. Some content (videos, documents) may work better on larger screens. ### What if I have questions about training content? Contact the course instructor listed in the course details, or reach out to your supervisor or training coordinator. ### When do my certifications expire? Check your CEU Transcript for expiration dates. You can filter by courses with expiration dates to see upcoming renewals. ### Can I take training before it's assigned? Some organizations allow self-enrollment in optional training. Check the Training Library for available courses or ask your supervisor. ### What happens if I fail a quiz? This depends on your organization's policy. Typically you can retake the quiz after reviewing the material. Check with your supervisor for specific requirements. ### How do I get credit for external training? Contact your compliance officer or training coordinator. They can add external CEU credits to your transcript with proper documentation. *** ## Related Guides * [Training Admin Guide](/gr/training-admin-guide) - For training coordinators * [Policy User Guide](/gr/policy-user-guide) - For policy acknowledgments * [GR Documentation Index](/gr/overview) - GR module overview *** **Need Help?** Contact your training coordinator, supervisor, or system administrator. # Choosing an Automation Tool Source: https://docs.encoreos.io/guides/choosing-an-automation-tool Which Encore OS automation tool fits your task — automations, workflows, approvals, wizards, or scheduled jobs — in plain language. Encore OS ships several ways to automate work. They overlap just enough to be confusing, so start with the question you're actually trying to answer. ## Quick answer | You want to… | Use | Where | | -------------------------------------------------------------------------------------------- | --------------------- | ----------------------------------------------------------------- | | Do something automatically when an event happens ("when a form is submitted, send an email") | **Automation** | [Automations & Rules](/fw/automations) | | Run a multi-step process with branching, conditions, or several systems involved | **Workflow** | [Workflow Builder](/fw/workflows) | | Route something to people for sign-off, in order | **Approval chain** | [Approval Chains](/fw/approval-chains) | | Collect data from a person across several screens | **Form wizard** | [Wizard Templates](/fw/wizard-templates) | | Walk staff through a guided business process (onboarding, fiscal-year setup) | **Module wizard** | The module's own setup wizard (e.g. HR onboarding, Finance close) | | Run something on a schedule (nightly, monthly) | **Workflow schedule** | [Workflow Schedules](/fw/workflow-schedules) | ## How to decide If the automation is really *data capture* — a person answering questions across multiple screens — you want a **form wizard**, not a workflow. If the person is being *guided through a process* that touches real module records (hiring an employee, closing the books), use that module's **wizard**. "When X happens, do Y" is an **automation**: form submitted → send email, record created → assign a task. Automations are the simplest tool and the right default. If you find yourself wanting branches, waits, or more than a few actions, step up to a workflow. A linear sign-off sequence ("submitter → manager → director") is an **approval chain** — don't rebuild approvals inside a workflow. Conditional routing ("over \$10k adds a VP step") is configured with [approval routing rules](/fw/approval-routing-rules). Multi-step, conditional, long-running, or cross-module logic belongs in the **Workflow Builder** — including anything that should run on a schedule (attach a [workflow schedule](/fw/workflow-schedules)). ## Rules of thumb * **Start with the simplest tool that works.** An automation you can read at a glance beats a workflow with two nodes. * **Reuse before building.** Check the [template marketplace](/fw/template-marketplace) and [workflow examples](/fw/workflow-examples) first; most common patterns already exist. * **Approvals are their own thing.** If the word "sign-off" appears in your requirement, reach for approval chains before anything else. * **Watch what you built.** Workflow and automation runs surface in [Workflow Analytics](/fw/workflow-analytics) and the [Automations](/fw/automations) run history; failures land in the dead-letter queue your admin can replay. Building these yourself requires Forms & Workflow permissions for your role. Developers comparing the underlying engines should use the decision guides in the Engineering tab instead (Workflow / Wizard / Template Selection). # Enhancements Admin Guide Source: https://docs.encoreos.io/guides/cl/cds-enhancements-admin-guide This guide helps administrators configure, manage, and troubleshoot EN-27 (Server-Side CDS Evaluation), EN-28 (Clinical Pathways), and EN-29 (CDS Alert Analyti… > **Purpose:** This guide helps administrators configure, manage, and troubleshoot EN-27 (Server-Side CDS Evaluation), EN-28 (Clinical Pathways), and EN-29 (CDS Alert Analytics). *** ## Overview These three enhancements extend the CL-08 Clinical Decision Support module: | Enhancement | Description | Admin Involvement | | ----------- | ------------------------------------------------- | ---------------------------------------- | | **EN-27** | Server-side drug interaction checks via RxNav API | Monitoring only; auto-deploys | | **EN-28** | Clinical pathway definitions and patient progress | Permission assignment; pathway oversight | | **EN-29** | Alert fatigue analytics dashboard | Permission assignment; metric review | ### Admin Responsibilities | Responsibility | Description | | --------------------- | ---------------------------------------------------------------------------- | | Permission Management | Assign `cl.pathways.*` and `cl.cds_rules.*` permissions to appropriate roles | | Pathway Governance | Review and approve clinical pathway definitions | | Alert Monitoring | Monitor override rates and alert fatigue trends | | Rule Tuning | Adjust CDS rules based on analytics data | | Edge Function Health | Monitor the `evaluate-cds` function for errors or degraded mode | *** ## Prerequisites ### Required Permissions | Permission | Purpose | | --------------------- | ---------------------------------------- | | `cl.pathways.manage` | Create, edit, delete pathway definitions | | `cl.cds_rules.manage` | Full CDS rule and analytics access | | `pf.roles.manage` | Assign permissions to user roles | ### System Requirements * CDS rules must be configured (`cl_cds_rules` table) before EN-27/EN-29 produce data * The `evaluate-cds` Edge Function is auto-deployed — no manual deployment needed *** ## Initial Setup ### Step 1: Assign Permissions Assign permissions based on clinical roles: | Role | Recommended Permissions | | -------------------- | ------------------------------------------------------------------------------------ | | Clinical Supervisor | `cl.pathways.view`, `cl.pathways.manage`, `cl.cds_rules.view`, `cl.cds_rules.manage` | | Licensed Clinician | `cl.pathways.view`, `cl.cds_rules.view` | | Quality/Compliance | `cl.cds_rules.view`, `cl.cds_rules.manage` | | Staff (non-clinical) | No CDS/pathway permissions | **To assign permissions:** 1. Go to **Settings** → **Roles & Permissions** 2. Select the role to modify 3. Under the **Clinical** module, enable the required permissions 4. Save changes ### Step 2: Configure CDS Rules CDS rules drive both EN-27 (evaluation) and EN-29 (analytics). Without active rules, the system generates no alerts. 1. Navigate to **Clinical** → **CDS Rules** 2. Create rules with appropriate types: * `drug_interaction` — Checks for interactions between drug classes * `drug_allergy` — Cross-references medications with allergies * `quality_measure` — Flags missing assessments 3. Set each rule's `trigger_event`, `severity`, and `condition.parameters` 4. Mark rules as **Active** ### Step 3: Review Pathway Definitions If clinical pathways have been created: 1. Navigate to **Clinical** → **Clinical Pathways** → **Pathway Management** 2. Review each pathway for clinical accuracy 3. Deactivate any pathways that are not yet approved for use *** ## Configuration Reference ### EN-27: Edge Function Configuration The `evaluate-cds` Edge Function requires no secrets or environment variables — it uses the public RxNav API (no authentication needed). | Parameter | Value | Notes | | ----------------- | ------------------------------------------------------ | ------------------------------------ | | RxNav API URL | `https://rxnav.nlm.nih.gov/REST/interaction/list.json` | Public, rate-limited | | Timeout | 5 seconds | AbortController-enforced | | Fallback behavior | Fail-open (degraded mode) | Returns `pass: true, degraded: true` | ### EN-28: Database Tables | Table | Purpose | Key Fields | | ------------------------ | ------------------------ | ------------------------------------------------------------------ | | `cl_pathway_definitions` | Pathway templates | `pathway_name`, `condition_type`, `steps` (JSONB), `is_active` | | `cl_pathway_progress` | Patient pathway tracking | `chart_id`, `pathway_id`, `current_step`, `status`, `step_history` | **RLS Policies:** * SELECT/INSERT/UPDATE: `cl_has_org_access(organization_id, auth.uid())` * DELETE: `cl_is_org_admin(organization_id, auth.uid())` — admin only * UPDATE includes `WITH CHECK` to prevent cross-tenant data movement ### EN-29: Analytics Data Source Analytics aggregate from `cl_cds_alerts` with joins to `cl_cds_rules` (rule names) and `pf_profiles` (provider names). | Setting | Value | Notes | | ------------------------ | ----------------------- | ----------------------------- | | Default time window | 30 days | User-selectable: 7d, 30d, 90d | | staleTime | 5 minutes | Data refreshes automatically | | Provider name resolution | `pf_profiles.full_name` | Falls back to truncated UUID | *** ## Routine Administration ### Weekly Tasks * [ ] Review CDS Alert Fatigue Dashboard for override rates > 50% * [ ] Check `evaluate-cds` Edge Function logs for errors or sustained degraded mode ### Monthly Tasks * [ ] Audit pathway definitions for clinical accuracy and relevance * [ ] Review per-provider alert metrics for training opportunities * [ ] Tune or deactivate CDS rules with consistently high override rates ### Quarterly Tasks * [ ] Comprehensive review of all active CDS rules against current clinical guidelines * [ ] Evaluate pathway step content for evidence-based updates * [ ] Generate alert fatigue report using 90-day time window *** ## Monitoring and Reports ### Edge Function Health (EN-27) Monitor the `evaluate-cds` function: | Metric | Target | Where to Check | | ----------------------- | -------------------- | ------------------------------------------------------------------------------------------------------------- | | Error rate | \< 1% | [Edge Function Logs](https://supabase.com/dashboard/project/zkgxozahyczcnzpwhbbf/functions/evaluate-cds/logs) | | Degraded mode frequency | \< 5% of evaluations | Edge Function logs (search for `degraded`) | | Latency | \< 3 seconds (p95) | `latency_ms` in response payloads | ### Alert Fatigue Metrics (EN-29) | Metric | Target | Where to Check | | -------------------------- | ------------ | ----------------------------------------------- | | Overall override rate | \< 30% | CDS Alert Analytics Dashboard | | Avg. acknowledgement time | \< 5 minutes | CDS Alert Analytics Dashboard | | Per-provider override rate | \< 50% | Provider table (requires `cl.cds_rules.manage`) | ### Pathway Usage (EN-28) | Metric | Target | Where to Check | | ----------------------- | ---------------------- | -------------------------------------------- | | Active pathways | ≥ 1 per condition type | Pathway Management page | | Pathway completion rate | > 70% | `cl_pathway_progress` (status = 'completed') | *** ## Troubleshooting ### Issue: Users Can't Access Pathways **Symptoms:** Users see "Access Denied" shield on `/cl/pathways` **Diagnostic Steps:** 1. Check user's role assignments in **Settings** → **Roles & Permissions** 2. Verify role includes `cl.pathways.manage` permission **Resolution:** Assign `cl.pathways.manage` to the user's role. *** ### Issue: No Alerts Generated by EN-27 **Symptoms:** `evaluate-cds` returns `{ alerts: [], pass: true }` even with known interactions. **Diagnostic Steps:** 1. Verify CDS rules exist and are active (`cl_cds_rules.is_active = true`) 2. Check that medications have `status = 'active'` 3. Check if medications include `rxcui` values (required for RxNav checks) 4. Review Edge Function logs for errors **Resolution:** * Ensure active CDS rules with correct `condition.parameters` (`drug_class_a`, `drug_class_b`) * For RxNav interaction checks, medications must have valid `rxcui` codes * For allergy checks, verify patient allergy records exist *** ### Issue: CDS Analytics Shows Stale Data **Symptoms:** Dashboard data doesn't reflect recent alerts. **Cause:** Query cache (5-minute staleTime). **Resolution:** Refresh the page. Data updates automatically after 5 minutes. *** ### Issue: Edge Function in Sustained Degraded Mode **Symptoms:** Logs show repeated `RxNav API unavailable` warnings. **Diagnostic Steps:** 1. Check [RxNav API status](https://rxnav.nlm.nih.gov/) 2. Review Edge Function logs for timeout or network errors 3. Verify Edge Function can reach external URLs **Resolution:** * If RxNav is down, no action needed — the system operates safely in degraded mode * Text-based rule matching continues to function as a fallback * Monitor for when RxNav returns to normal operation *** ### Escalation Path 1. Check Edge Function logs at [Supabase Dashboard](https://supabase.com/dashboard/project/zkgxozahyczcnzpwhbbf/functions/evaluate-cds/logs) 2. Review `cl_cds_alerts` table for recent entries 3. Contact technical support with: * `request_id` from the CDS evaluation response * Time range of the issue * Screenshot of the analytics dashboard *** ## Security Considerations ### Data Access * All CDS data is tenant-isolated via RLS policies with `organization_id` filtering * Provider metrics in analytics resolve names from `pf_profiles` — no PHI exposed * The `evaluate-cds` Edge Function validates JWT auth and org access before processing ### Audit Trail * Every CDS evaluation includes `request_id`, `request_timestamp`, and `latency_ms` * Alert persistence creates records in `cl_cds_alerts` with full provenance * Break-glass access to CDS data follows standard clinical audit patterns ### External API Security * RxNav API is public (no API key) — no secrets to manage * 5-second timeout prevents Edge Function hangs * No PHI is sent to RxNav — only RxCUI codes (standardized drug identifiers) *** ## Best Practices ### Configuration Best Practices * ✅ Start with a small set of high-value CDS rules and expand based on analytics * ✅ Set appropriate severity levels — reserve `critical` for true hard-stop scenarios * ✅ Review override rates monthly and deactivate rules with > 70% override rates * ✅ Define pathways with clear, measurable completion criteria at each step ### Security Best Practices * ✅ Restrict `cl.cds_rules.manage` to supervisors and quality staff * ✅ Review provider-level alert metrics to identify potential compliance gaps * ✅ Ensure all pathway definitions are reviewed by a licensed clinician before activation ### Performance Best Practices * ✅ Keep active CDS rule count reasonable (\< 50 rules per organization) * ✅ Use RxCUI codes on medications for more accurate interaction checks * ✅ Archive completed pathway progress records periodically *** ## Data Management ### Data Retention | Data Type | Retention Period | Notes | | ------------------- | ------------------------ | ----------------------------------- | | CDS Alerts | Indefinite | Required for compliance audit trail | | Pathway Definitions | Indefinite (soft delete) | Soft-deleted definitions preserved | | Pathway Progress | Indefinite | Patient clinical record | ### Soft Delete Pathway definitions use soft delete (`deleted_at` timestamp): * Deleted pathways are hidden from the UI but preserved in the database * Only org admins can delete pathways (RLS policy) * Existing progress records linked to deleted pathways remain accessible *** ## Integration Points | Feature | Integration | Documentation | | ------------------------------ | ------------------------------------------------------ | --------------------------------------------------- | | CDS Rule Management (CL-08) | Rules drive EN-27 evaluation and EN-29 analytics | Navigate to Clinical → CDS Rules | | Medication Management (CL-05) | Medications are the input for drug interaction checks | `specs/cl/specs/CL-05-*.md` | | Patient Charts (CL-01) | Pathway progress is tracked per patient chart | `specs/cl/specs/CL-01-*.md` | | Platform Notifications (PF-10) | CDS alerts can trigger notifications via domain events | `docs/architecture/integrations/EVENT_CONTRACTS.md` | *** ## Change Log | Version | Date | Changes | | ------- | ---------- | -------------------------------------------- | | 1.0.0 | 2026-02-26 | Initial release covering EN-27, EN-28, EN-29 | *** ## Related Documentation * **User Guide:** `docs/guides/cl/cl-08-cds-enhancements-user-guide.md` * **Specification:** `specs/cl/specs/CL-08-ENHANCEMENTS.md` * **Edge Function Logs:** [Supabase Dashboard](https://supabase.com/dashboard/project/zkgxozahyczcnzpwhbbf/functions/evaluate-cds/logs) *** **Last Updated:** 2026-02-26\ **Technical Support:** Contact your organization's system administrator. # Enhancements User Guide Source: https://docs.encoreos.io/guides/cl/cds-enhancements-user-guide This guide helps clinicians and staff use Clinical Pathways (EN-28) and CDS Alert Analytics (EN-29). EN-27 (server-side CDS evaluation) operates automatically… > **Purpose:** This guide helps clinicians and staff use Clinical Pathways (EN-28) and CDS Alert Analytics (EN-29). EN-27 (server-side CDS evaluation) operates automatically and requires no direct user interaction. *** ## Overview The CL-08 Enhancements add three capabilities to Clinical Decision Support: * **EN-27 — Server-Side CDS Evaluation:** Automatically checks drug interactions via the RxNav API when medications are prescribed or reconciled. Operates behind the scenes with fail-open safety. * **EN-28 — Clinical Pathway Guidance:** Structured, step-by-step care pathways that guide clinicians through evidence-based treatment protocols. * **EN-29 — CDS Alert Fatigue Analytics:** Dashboard showing alert override rates, acknowledgement times, and per-provider metrics to identify alert fatigue. ### Who Should Use This Guide | Role | Use Case | | --------------------- | ---------------------------------------------------------------- | | Licensed Clinician | View pathways assigned to patients; follow step-by-step guidance | | Prescriber (MD/NP/PA) | Benefit from automatic drug interaction checks (EN-27) | | Clinical Supervisor | Monitor CDS alert fatigue metrics; review override patterns | | Quality/Compliance | Analyze alert data for quality improvement initiatives | *** ## Prerequisites ### Permissions Required | Permission | Feature | Description | | --------------------- | ------------------------------ | ----------------------------- | | `cl.pathways.view` | Pathway Guidance | View pathway definitions | | `cl.pathways.manage` | Pathway Management | Create, edit, delete pathways | | `cl.cds_rules.view` | CDS Analytics | View alert fatigue dashboard | | `cl.cds_rules.manage` | CDS Analytics (Provider table) | View per-provider metrics | > **Note:** Contact your organization administrator if you don't have the required permissions. *** ## EN-27: Server-Side CDS Evaluation ### How It Works The server-side CDS engine runs automatically when medications are evaluated. You do not need to take any action — it operates transparently. **Key behaviors:** 1. **Drug Interaction Checks:** When a patient has 2+ active medications with RxCUI codes, the system queries the NLM RxNav API for known interactions. 2. **Drug-Allergy Checks:** Active medications are cross-referenced against the patient's allergy list using organization-defined CDS rules. 3. **Fail-Open Safety:** If the RxNav API is unavailable (timeout, network error), the system falls back to text-based rule matching. It will **never block** a workflow due to an API outage — alerts are generated on a best-effort basis. 4. **Audit Trail:** Every evaluation includes a `request_id`, timestamp, and latency measurement for compliance auditing. ### What You'll See * **Alerts appear** in the patient chart's CDS alert panel when interactions or allergy conflicts are detected. * **Alert severity** ranges from `moderate` to `critical` based on RxNav severity data or rule configuration. * **Degraded mode indicator:** If the system operated in fallback mode, the evaluation response includes `degraded: true` (visible in audit logs, not directly in UI). *** ## EN-28: Clinical Pathway Guidance ### Accessing Clinical Pathways 1. Navigate to **Clinical** in the main sidebar 2. Expand **Clinical Pathways** 3. Click **Pathway Management** ### Understanding the Interface The Pathway Management page displays all defined care pathways as expandable cards: | Element | Description | | ------------------- | -------------------------------------------------------------------------------- | | **Pathway Name** | The title of the care pathway (e.g., "New SUD Intake Protocol") | | **Condition Type** | The clinical condition this pathway applies to (e.g., `new_sud`, `co_occurring`) | | **Status Badge** | Shows **Active** (green) or **Inactive** (gray) | | **Step Count** | Number of steps in the pathway | | **Expand/Collapse** | Click a card to reveal the step-by-step details | ### Viewing Pathway Steps 1. Click on any pathway card to expand it 2. Each step shows: * **Step number and title** * **Description** of what to do at this step * **Recommendations** — clinical best practices * **Criteria** — what must be true to consider this step complete ### Creating a New Pathway > Requires `cl.pathways.manage` permission. 1. Click **New Pathway** in the top right 2. Fill in the required fields: * **Pathway Name:** A descriptive name (e.g., "Opioid Use Disorder — MAT Initiation") * **Condition Type:** The clinical condition category * **Description:** Optional overview of the pathway's purpose 3. Add steps: * Each step includes a title, description, recommendations, and completion criteria * Steps are ordered by step number 4. Click **Save** **Result:** The pathway appears in the list and can be assigned to patient charts. *** ## EN-29: CDS Alert Fatigue Analytics ### Accessing the Dashboard 1. Navigate to **Clinical** in the main sidebar 2. Expand **CDS Analytics** (under Admin section) 3. Click **Alert Fatigue Dashboard** ### Understanding the Dashboard #### Summary Cards Four cards at the top provide at-a-glance metrics: | Card | What It Shows | | ------------------- | -------------------------------------------------------------------- | | **Total Alerts** | Number of CDS alerts triggered in the selected time window | | **Override Rate** | Percentage of alerts overridden by clinicians (flagged red if > 50%) | | **Total Overrides** | Raw count of overridden alerts | | **Avg. Ack Time** | Average time from alert trigger to clinician acknowledgement | #### Time Window Selector Use the dropdown in the top right to filter data: * **Last 7 days** — Recent activity * **Last 30 days** — Default view, monthly trends * **Last 90 days** — Quarterly analysis #### Override Rate by Rule Chart A bar chart showing the override rate for each CDS rule. Higher bars indicate rules that clinicians frequently override — a potential sign of alert fatigue or overly sensitive rules. #### Alerts by Rule Table Detailed breakdown per rule: * **Rule name** * **Alert count** and **Override count** * **Override Rate** (highlighted red if > 50%) * **Avg. Ack Time** — How quickly clinicians respond #### Alerts by Provider Table > Requires `cl.cds_rules.manage` permission. Shows per-provider metrics with display names (resolved from user profiles): * **Provider name** * **Alert count**, **Override count**, **Override Rate** * **Avg. Ack Time** ### Interpreting the Data | Metric | Healthy Range | Action if Out of Range | | -------------------------- | ------------- | ----------------------------------------------------------- | | Override Rate | \< 30% | Review rule sensitivity; consider deactivating noisy rules | | Avg. Ack Time | \< 5 minutes | Investigate workflow bottlenecks; ensure alerts are visible | | Total Alerts (high volume) | Varies | May indicate over-broad rules or high patient acuity | *** ## Tips and Best Practices ### Do's * ✅ Review the Alert Fatigue Dashboard weekly to catch emerging patterns * ✅ Use pathway steps as a checklist during patient encounters * ✅ Report false-positive alerts to your admin so rules can be tuned * ✅ Check the Override Rate by Provider to identify training opportunities ### Don'ts * ❌ Don't override alerts without reading the alert message * ❌ Don't ignore high override rates — they may indicate configuration issues * ❌ Don't create duplicate pathways for the same condition type *** ## Troubleshooting ### Issue: "Access Denied" on Pathways Page **Symptoms:** Shield icon with "You don't have permission to access this page" **Cause:** Your role doesn't include `cl.pathways.manage` permission. **Solution:** Contact your organization administrator to assign the `cl.pathways.manage` permission to your role. *** ### Issue: CDS Analytics Shows No Data **Symptoms:** All summary cards show 0, empty state messages appear. **Cause:** No CDS alerts have been triggered in the selected time window, or CDS rules are not yet configured. **Solution:** 1. Verify CDS rules are configured at **Clinical** → **CDS Rules** 2. Try expanding the time window to **Last 90 days** 3. Confirm rules are set to **Active** *** ### Issue: Provider Table Shows UUID Instead of Name **Symptoms:** Provider column shows truncated identifiers like "4832659c…" **Cause:** The provider's profile doesn't have a `full_name` set. **Solution:** Ask your administrator to update the provider's profile name in **Settings** → **Users**. *** ## Related Documentation * **Admin Guide:** `docs/guides/cl/cl-08-cds-enhancements-admin-guide.md` * **Specification:** `specs/cl/specs/CL-08-ENHANCEMENTS.md` * **CDS Rule Management:** Navigate to Clinical → CDS Rules in the application *** ## Glossary | Term | Definition | | ----------------- | --------------------------------------------------------------------------------------- | | **CDS** | Clinical Decision Support — automated alerts that help clinicians make safer decisions | | **Override** | When a clinician acknowledges an alert but proceeds with the flagged action | | **Alert Fatigue** | Desensitization to alerts due to high volume, leading to important alerts being ignored | | **RxNav** | NIH National Library of Medicine API for drug interaction data | | **RxCUI** | RxNorm Concept Unique Identifier — a standardized drug code | | **Pathway** | A structured, step-by-step clinical protocol for a specific condition | | **Degraded Mode** | When the external API is unavailable; the system falls back to local rule matching | *** **Last Updated:** 2026-02-26\ **Questions?** Contact your organization administrator. # Clinical Audit & Compliance Dashboard — Admin Guide Source: https://docs.encoreos.io/guides/cl/clinical-audit-dashboard-admin Administrators can configure the Clinical Audit & Compliance Dashboard behavior through CL Module Settings. ## Overview Administrators can configure the Clinical Audit & Compliance Dashboard behavior through CL Module Settings. ## Configuration Settings All settings are in **Clinical → Settings** under the Audit Dashboard section. | Setting | Default | Range | Description | | ----------------------------- | ------- | ----- | -------------------------------------------------------- | | Break-Glass SLA Hours | 24 | 1–168 | Hours within which break-glass events must be reviewed | | Default Audit Date Range | 7 days | 1–365 | Default date range for audit log queries | | Anomaly High-Volume Threshold | 50 | — | Access count per user/day triggering high-volume flag | | Business Hours Start | 08:00 | — | Start of normal business hours for after-hours detection | | Business Hours End | 17:00 | — | End of normal business hours | | Same-Patient Repeat Threshold | 10 | — | Repeated access count triggering same-patient flag | ## Permissions | Permission | Description | | --------------------------------------- | ------------------------------------- | | `cl.audit_dashboard.view` | View the audit dashboard and all tabs | | `cl.audit_dashboard.break_glass_review` | Review and close break-glass events | Assign these permissions via **Platform → Roles & Permissions**. ## Break-Glass Review Workflow 1. Emergency access event is logged automatically 2. Event appears in the Break-Glass Review Queue 3. Compliance officer reviews within SLA window 4. Officer adds justification notes and confirms review 5. Review is recorded as an immutable audit record ## Regulatory Calendar Deadlines are configurable per organization. Default deadlines include: * HIPAA Risk Assessment (annual) * Joint Commission Survey Prep (per survey cycle) * CARF Review (per accreditation cycle) * 42 CFR Part 2 Audit (annual) > **Note:** Jurisdiction-specific deadlines will be driven by PF-96 jurisdiction profiles in a future enhancement. ## Related Documentation * User Guide: [clinical-audit-dashboard-user.md](/guides/cl/clinical-audit-dashboard-user) * Specification: [CL-25](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-25-clinical-audit-compliance-dashboard.md) # Clinical Audit & Compliance Dashboard — User Guide Source: https://docs.encoreos.io/guides/cl/clinical-audit-dashboard-user The Clinical Audit & Compliance Dashboard provides compliance officers and clinical administrators with real-time visibility into PHI access patterns, break-gl… ## Overview The Clinical Audit & Compliance Dashboard provides compliance officers and clinical administrators with real-time visibility into PHI access patterns, break-glass events, consent compliance, documentation quality, 42 CFR Part 2 adherence, and regulatory deadlines. ## Accessing the Dashboard Navigate to **Clinical → Audit & Compliance** in the sidebar. You must have the `cl.audit_dashboard.view` permission. ## Dashboard Tabs ### Break-Glass Review Queue Displays emergency PHI access events awaiting review. Each entry shows the user who accessed records, timestamp, and SLA status (hours remaining). Break-glass events exceeding the configured SLA (default: 24 hours) are flagged as overdue. **To review an event:** Click "Review" on any pending event, add justification notes, and confirm. Requires `cl.audit_dashboard.break_glass_review` permission. ### Audit Log Viewer Filterable list of all PHI access events from `pf_audit_logs`. Use the date range selector and search to narrow results by user, action type, or resource. ### Consent Compliance Shows consent expiration buckets: expired, expiring within 30 days, and active. Helps identify patients needing consent renewal. ### Documentation Quality Per-provider documentation completeness metrics. Shows finalized vs. draft note ratios and identifies providers with documentation gaps. ### Part 2 Compliance Tracks 42 CFR Part 2 SUD consent coverage and access patterns for substance use disorder records. ### Regulatory Calendar Configurable deadlines for compliance activities (HIPAA risk assessment, Joint Commission survey prep, CARF review, etc.). Deadlines are organization-configurable. ## Anomaly Detection The dashboard automatically flags unusual access patterns: * High-volume access (exceeding configured threshold) * After-hours access outside business hours * Repeated same-patient access Anomaly alerts appear in the **Anomalies Detected** card on the dashboard. ## Related Documentation * Admin Guide: [clinical-audit-dashboard-admin.md](/guides/cl/clinical-audit-dashboard-admin) * Specification: [CL-25](https://github.com/Encore-OS/encoreos/blob/development/specs/cl/specs/CL-25-clinical-audit-compliance-dashboard.md) # ConfigurableForm Integration Guide Source: https://docs.encoreos.io/guides/configurable-form-guide The ConfigurableForm component provides a dynamic, configuration-driven form renderer that eliminates the need for hardcoded forms. It supports: ## Overview The `ConfigurableForm` component (PF-17) provides a dynamic, configuration-driven form renderer that eliminates the need for hardcoded forms. It supports: * **Standard fields** from entity table columns * **Custom fields** from `pf_custom_field_definitions` * **Picklist-based selects** from `pf_picklists` * **Lookup fields** for entity references (accounts, customers, etc.) * **Field visibility** based on roles and conditional rules * **Configurable layouts** with sections and column spans ## Quick Start ### Basic Usage ```tsx theme={null} import { ConfigurableForm } from '@/platform/field-config'; function MyEntityForm({ entity, onSubmit, onCancel }) { return ( ); } ``` ### Props | Prop | Type | Required | Description | | -------------- | --------------------- | -------- | --------------------------------------------------------------------------------------- | | `entityType` | `string` | Yes | Entity type key (e.g., `fa_customers`, `hr_employees`) | | `viewContext` | `ViewContext` | No | One of: `create_form`, `edit_form`, `detail_view`, `list_view`. Defaults to `edit_form` | | `initialData` | `Record` | No | Initial values for form fields | | `onSubmit` | `(data) => void` | Yes | Callback when form is submitted | | `onCancel` | `() => void` | No | Callback when Cancel button is clicked | | `userRole` | `string` | No | Current user's role for field visibility checks | | `isSubmitting` | `boolean` | No | Shows loading state on submit button | | `submitLabel` | `string` | No | Custom text for submit button | ## Field Types ### Standard Field Types The following types are supported in `STANDARD_FIELDS`: | Type | Renderer | Description | | ---------- | ------------------------------- | ---------------------------- | | `text` | `` | Basic text input | | `email` | `` | Email input with validation | | `number` | `` | Numeric input | | `date` | `` | Date picker | | `datetime` | `` | Date and time picker | | `boolean` | `` | Toggle switch | | `textarea` | `